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
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.
Guten morgen, ich habe gerade eine Idee gehabt. Hab den Oberen Beitrag dementsprechend editiert.
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?
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?
Bis jetzt kann ich den Motor nur ausfahren. Die Polung muss lediglich nur geändert werden.
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.
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.
Welche Leistung hat der Motor? Für einen Sandhaufen ist schon Leistung erforderlich, die mit dem L298 nicht zu machen ist.
Ich habe mal H-Brücken gesucht und mit H-Brücke Segway Platine bei Google starke H-brücken gefunden.
@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?
@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
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
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.
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
@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
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
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.
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??
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.
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"); } }
@Ralf G. Das ist ein analoger Schalter, also ein potentiometer nur als Pistolen-Version. Also sowas hier: siehe Bild
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
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.
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.
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!
@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.
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.