Motordrehrichtung programmmäßig ändern

OP #4453952
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!
Angehängte Dateien:
Gast #4453966
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?
Gast #4453976
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.
OP #4454022
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.
Gast #4454049
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
Gast #4454101
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.
OP #4454124
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");
    }
}
Gast #4454298
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
Gast #4454301
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.
Gast #4454345
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.
Gast #4454366
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!
Gast #4454392
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 :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren