Forum: Mikrocontroller und Digitale Elektronik Motordrehrichtung programmmäßig ändern


von Werner S. (drlecter)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich stehe zurzeit vor einem Problem bei meinem Projekt. Die Drehrichtung 
meines Linearmotors muss durch ein Programm geändert werden können.
Dabei habe ich Werte von 0-255 genutzt. 0=Motor stheht still, 255=Motor 
voll ausgefahren. Der Motor drückt mit einer art Metallplatte gegen 
einen Sandhaufen, der weggeschoben werden soll. Das ausfahren des Motors 
geschieht durch drücken des analogen Schalters (Fernbedienung).

Jetzt das Problem. Ich muss mit den selben Kanal und den selben 
Zahlenwerten beim langsamen loslassen des Schalters die Drehrichtung des 
Motors ändern.
Wie kann ich das Programmmäßig machen?

Ich hatte mir gedacht, dass ich den Motortreiber L298N nehme.
Da kann ich an den Eingängen (In1, In2) die Drehrichtung ändern. Aber 
wie mache ich das programmmäßig?

Grüße aus dem Zillertal!

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hannibal L. schrieb:
> Ich habe keinerlei Idee dazu.

Und wir erst... Da wir keinerlei Ahnung von
*Schaltung
*Aufbau
*Motorcharakteristik

haben, solltest du evtl. mal Unterlagen zur Verfügung stellen.

von Der Andere (Gast)


Lesenswert?

Einfach 0 bis -255 nutzen

SCNR

von Werner S. (drlecter)


Lesenswert?

Guten morgen,

ich habe gerade eine Idee gehabt. Hab den Oberen Beitrag dementsprechend 
editiert.

von Joe (Gast)


Lesenswert?

Doppelklick auf Schalter erkennen ändert die Drehrichtung.

Wie weit kann die bisherige Ansteuerung des Motors überhaupt geändert 
werden?

Ist das ein echter Linearmotor oder steckt doch ein rotierender Motor in 
der Kiste drin?

von Werner S. (drlecter)


Lesenswert?

Also du meinst wenn ich den Schalter wieder loslasse, dann die Werte 
0--255 einlesen?
Was hälst du von meiner Idee oben mit den Motortreiber?

von Werner S. (drlecter)


Lesenswert?

Bis jetzt kann ich den Motor nur ausfahren.
Die Polung muss lediglich nur geändert werden.

von Joe (Gast)


Lesenswert?

Wenn du von Drehung sprichst, dann ist doch kein echter Linearmotor 
verbaut.

beim programmieren müssen einfach nur die Bits getauscht werden, die In1 
und In2 ansteuern.

von ReinHerR (Gast)


Lesenswert?

Indem Du abfragst, ob die Werte größer oder kleiner werden. Wenn der 
aktuelle Wert kleiner ist als der vorherige, muss sich der Motor 
umdrehen.
Wir in der Praxis aber zu Motorzittern kommen können. Und zu der Gefahr, 
dass er sich nicht ganz ausschiebt bzw. einfährt, wenn Werte verloren 
gehen.

von Joe (Gast)


Lesenswert?

Welche Leistung hat der Motor?

Für einen Sandhaufen ist schon Leistung erforderlich, die mit dem L298 
nicht zu machen ist.

von Joe (Gast)


Lesenswert?

Ich habe mal H-Brücken gesucht und mit

H-Brücke Segway Platine

bei Google starke H-brücken gefunden.

von Werner S. (drlecter)


Lesenswert?

@Joe  Genau, da ist erstmal ein DC motor drin, der aud ein Getriebe 
geht.

@ReinHerR Das ist auch meine Theorie. Ich weiß nur nicht, wie man das 
programmiert. Die Werte müssen ja irgendwo zwischengespeichert werden, 
oder?

von Werner S. (drlecter)


Lesenswert?

@Joe Die Kraft beträgt 250N, also ich hatte vor die H-Brücke parallel zu 
schalten weil ich etwa 8A bei Vollast benötige.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Hannibal L. schrieb:
> Dabei habe ich Werte von 0-255 genutzt. 0=Motor stheht still, 255=Motor
> voll ausgefahren.

Woher weisst du das? Hast du einen Sensor für die Position oder rätst du 
nur?

Georg

von Werner S. (drlecter)


Lesenswert?

@Georg Endschalter

von Joe (Gast)


Lesenswert?

Auf der Seite:

http://www.elektroroller-forum.de/E-Roller-Forum/viewtopic.php?t=1385

gibt's unten einen Link, auch für eine kräftige H-Brücke und Hinweise 
zur Ansteuerung.

von Georg (Gast)


Lesenswert?

Hannibal L. schrieb:
> @Georg Endschalter

Ok, aber was soll dann der Wert 0..255? Das System hat nur 3 Zustände:

Ausgangslage (wenn da auch ein Endschalter ist).

In Bewegung

Endlage

mehr ist aus den(?) Endschaltern nicht zu entnehmen.

Georg

von Werner S. (drlecter)


Lesenswert?

@Joe Cool, danke

@Georg Ne der Zylinder soll analoge Zustände annehmen und auch gesteuert 
werden können. Also bei Wert 0 ist er ganz eingefahren bei wert 1 fährt 
der etwas raus bei wert 20 isser schon eiter ausgehaften etc bis 255. 
Das geschieht über ein Funkmodul. Die Endschalter sagen meinem Programm 
nur, dass die Endlage halt erriecht ist.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Hannibal L. schrieb:
> @Georg Ne der Zylinder soll analoge Zustände annehmen und auch gesteuert
> werden können. Also bei Wert 0 ist er ganz eingefahren bei wert 1 fährt
> der etwas raus bei wert 20 isser schon eiter ausgehaften etc bis 255.

Ganz was neues. Nur nicht von Anfang an alle Karten offenlegen!

Also, nächste Pokerrunde: das soll wohl heissen, du zählst langsam von 
1..255 und gibst das einfach an den Zylinder aus?

Falls das so ist und nicht wieder ganz anders: dann musst du doch bloss, 
wenn der Schalter losgassen wird, wieder langsam zurückzählen bis auf 0 
und das weiter ausgeben.

Georg

von Ralf G. (ralg)


Lesenswert?

Hannibal L. schrieb:
> isser schon eiter ausgehaften

Jetzt kann man sich schon eher vorstellen, wie das funktionieren soll 
:-)

Das bekommst du mit einem Motor nicht hin. Wie ich das verstanden habe, 
sollen die Werte 0 .. 255 eine Position des 'Schiebers' darstellen. 
Sowas kann ein Servo.

von Ralf G. (ralg)


Lesenswert?

Georg schrieb:
> Falls das so ist und nicht wieder ganz anders:
wahrscheinlich :-(

Nur:
Hannibal L. schrieb:
> beim langsamen loslassen des Schalters
wie macht man sowas??

von oszi40 (Gast)


Lesenswert?

Ralf G. schrieb:
> 0 .. 255 eine Position des 'Schiebers'

z.B.
0------>125----|Peng auf Randkontakt dann Rückfahrt nach Hause
126------<------249
Wenn Dir die Hälfte der Schritte reicht, dann ist die andere Hälfte für 
die "Rückfahrt". Ein paar Schritte Luft für mechanische Differenzen.

Frage ist dann eher, wie Du die Rückfahrt STARTEN möchtest. Im 
einfachsetn Fall: die Zeit des Kopfducks mit 555 oder Programm 
auswerten.

von Werner S. (drlecter)


Lesenswert?

Der Zylinder soll niemals von alleine fahren und auch nich in den Werten 
hochgezählt werden.
Es soll wirklich jede Position mit der Fernsteuerung erreicht werden 
können.

Die Idee mit den Wertevergleich im Programm war schon gut.
Ich habe mal ein Programmabschnitt dazu geschrieben. Was sagt ihr dazu?:


int y=PWM+1;

if (PWM>0 && PWM<=255)
{
analogWrite(4, PWM);  //Auf In1 (Zylinder fährt aus)
digitalWrite(5, HIGH);  //Auf EnA (Drehung aktiviert)
digitalWrite(6, LOW);   //Auf In2 (Drehrichtungssperre)
Serial.print("Zylinder ausfahren");
  else if(PWM<y)
    {
    digitalWrite(4, LOW);     //Auf In1 (Drehrichtungssperre)
    digitalWrite(5, HIGH);    //Auf EnA (Drehung aktiviert)
    analogWrite(6, PWM);    //Auf In2 (Zylinder fährt ein)
    Serial.println("Zylinder eiinfahren");
    }
}

von Werner S. (drlecter)


Angehängte Dateien:

Lesenswert?

@Ralf G.

Das ist ein analoger Schalter, also ein potentiometer nur als 
Pistolen-Version.
Also sowas hier:
siehe Bild

von Ralf G. (ralg)


Lesenswert?

Hannibal L. schrieb:
> Das ist ein analoger Schalter, also ein potentiometer

:-/

von Werner S. (drlecter)


Lesenswert?

Hmm... keiner, der schlauer ist als ich? :D

von Georg (Gast)


Lesenswert?

Hannibal L. schrieb:
> Hmm... keiner, der schlauer ist als ich? :D

Doch, viele, aber es scheint unmöglich das zu dir rüberzubringen. Da 
fehlen nicht nur Grundlagen, sondern schon das logische Denken: dein 
Programm hat nur Ausgabebefehle, weiss also nichts über die böse Welt da 
draussen. Weder über die ausgefahrene Länge noch ob Endschalter 
ansprechen. Und von der Geschwindigkeit des Ausfahrens wollen wir lieber 
garnicht reden, sonst ist alles zu spät.

Georg

von Sascha (Gast)


Lesenswert?

Aus irgendeinem Grund läuft das in diesem Forum immer aufs Gleiche raus: 
Jemand mit eindeutig mangelhaften Kenntnissen stellt eine Frage, bekommt 
nicht ausreichend geholfen oder versteht die Hilfestellung nicht.

Danach dann immer die schlecht kaschierte Bitte, dass das doch bitte 
jemand im Forum programmieren soll.

von Bernd (Gast)


Lesenswert?

Georg, ich glaube du verstehst ganz einfach die Fragestellung nicht. Wie 
man an deinen Antworten schon sehen kann.
Bevor du sowas von dir gibst so stelle demnächst doch sicher, dass du 
alles richtig verstanden hast.

Zum Fragensteller> Du muss die Werte von vorher mit nachher vergleichen, 
also der Weg ist schon ganz gut.

von Dans0 (Gast)


Lesenswert?

Moinsen,
der Georg ist wohl etwas auf Krawall gebürstet?
Ich denke, Georg, dass der "DrLecter" das gut erklärt hat.

Zu dir "DrLecter" kann ich folgendes sagen. Dein Programm sieht bisher 
schon so aus, als könne man damit was anfangen. Aber wenn ich das 
richtig verstehe wird der Zylinder nicht langsam wieder reingefahren?
-Dan!

von Werner S. (drlecter)


Lesenswert?

@Georg Sieht wohl manch anderer anders als du.

@Sascha Wofür ist ein Forum da? Zum eierkochen?

@Bernd Nur bekomme ich den ansatz da nicht, also wie das geht.

@Dans0 Ja, genau, das ist noch mein Problem und wie das 
funktioniert-also programmäßig-weiß ich noch nciht so genau.

von Der Andere (Gast)


Lesenswert?

Dann lassen wir Hannibal mal in Dans und Bernds kompetenten Händen.

ich habe nämlich auch nicht verstanden was er hat und was genau daraus 
werden soll.
Wobei, wenn ich jetzt im Zillertal wäre würde ich meine Freizeit eher 
nutzen um Ski zu fahren :-)

von Ralf G. (ralg)


Lesenswert?

Hannibal L. schrieb:
> @Georg Sieht wohl manch anderer anders als du.
Also, ich seh's wie Georg.

von Bernd (Gast)


Lesenswert?

An 'DerAndere(Gast)'
Nicht jeder ist so faul wie du.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.