Guten Morgen ,
Wollte gestern mit dem Arduino einen Motor steuern mit dem L293d.
Und zwar sollte mein Programm den Motor so steuern indem ich zwei Potis
hatte, wenn ich den Linken Poti drehe soll sich der Motor nach Links
drehen und das so schnell wie ich es halt mit dem Poti einstelle
(AnalogRead und danach PWM auf linkslauf-PIN ), selbiges auch für
Rechts.
Am Enable PIN hab ich dauer-5V angehängt.
Iergendwie funkt das nicht, hat alles verrückt gespielt.
Hab danach recherchiert im Netz und da steht das man auf den L293d auf
Input1 und Input 2 nur High oder Low anlegen muss, also Links oder
Rechts drehen. Und am ENABLE PIN kommt dann die PWM hin. Das heißt dann
kann nicht so funken wie ich es mir dachte ?
Stimmt das so oder kann ich auf den INPUTS für LINKS bzw. RECHTS-Lauf
auch eine PWM anschliessen?
Hans Peter schrieb:> Hab danach recherchiert im Netz und da steht das man auf den L293d auf> Input1 und Input 2 nur High oder Low anlegen muss, also Links oder> Rechts drehen. Und am ENABLE PIN kommt dann die PWM hin.
Damit hast du dir doch jegliche Frage selber beantwortet. Wo ist dein
Probelem?
ps: Ist schon wieder Freitag ...
Hans Peter schrieb:> Und am ENABLE PIN kommt dann die PWM hin.
Auf keinen Fall kommt die PWM auf den Enable-Pin. Grund hierfür: Ist
Enable Low dann sind die Ausgänge hochohmig => Der Motor dreht sich dann
praktisch unkontrolliert weiter.
Richtig ist z.B.:
Enable1,2 auf High
Eingang 1 auf High oder Low (je nach Drehrichtung)
Eingang 2 auf PWM
Es kommt natürlich auf die konkrete Beschaltung an, ein L293D ist
eigentlich ein IC mit vier Halbbrücken, durch geschickte Beschaltung
kann man daraus 2 Vollbrücken machen mit denen man dann 2 Motoren
ansteuern kann.
Ja, genau.
Enable 1,2 schaltet die Halbbrücken 1 und 2 frei
Input 1 auf High führt zu einem High bei Output 1
Input 2 auf PWM => Die PWM erscheint auch beim Output 2
Motor an Output 1 und Output 2 anschließen. Die PWM bestimmt die
Geschwindigkeit, der Pegel (High/Low) an Input 1 bestimmt die
Drehrichtung.
Ich dachte mir das wenn auf IN1 ein High und auf IN2 ein LOW dann dreht
sich der Motor nach Rechts zB, und wenn am IN2 ein High und auf IN1 ein
LOW dann halt nach Links.
Dann war ich ja komplett daneben :O
Hans Peter schrieb:> Dann war ich ja komplett daneben :O
Nein, warst du nicht. Ist ja völlig richtig. Aber wohin dreht der Motor
wenn z.B. Input 1 low ist und Input 2 auch low ist? ;)
Ja aber wenn ich an IN1 eine PWM und an IN2 LOW anlege dann dreht sich
der Motor angenommen nach rechts, schneller oder halt langsamer.
Andersrum dreht sich der Motor dann nach links wenn ich auf IN2 das PWM
Signal und auf IN1 ein LOW anlege.
Und Enable ist nur die Freigabe, also da soll immer HIGH sein, hier
keine PWM.
Hab ichs jetzt richtig verstanden ?
Ja, so kann man das machen. Noch einfacher geht es, wenn man die PWM nur
an einem Pin lässt, z.B.
Enable 1,2: High
Input 1: PWM
Input 2: High - Motor dreht links rum; Low - Motor dreht rechts rum
Zum Anhalten dann z.B.
Input 1: High (oder Low)
Input 2: High (oder Low)
Enable 1,2: High - Motor wird aktiv gebremst (Kurzschluss der Wicklung);
Low - Motor läuft aus bis ihn die Reibungskräfte u.a. zum Anhalten
bringen (oder gar in die andere Richtung drehen lassen, Signale an Input
1 und 2 dann irrelevant)
Jetzt hab ichs, danke dir :)
Wenn ich jedoch nur einen Motor ansteuere dann brauch ich die zweite
Seite des IC´s nicht berücksichtigen ? Enable 2,die Inputs und OUTPUTS
sind dann egal oder müssen die auf GND gezogen werden damit man ihm sagt
das hier KEIN zweiter Motor hängt.
Hans Peter schrieb:> Und zwar sollte mein Programm den Motor so steuern indem ich zwei Potis> hatte, wenn ich den Linken Poti drehe soll sich der Motor nach Links> drehen und das so schnell wie ich es halt mit dem Poti einstelle> (AnalogRead und danach PWM auf linkslauf-PIN ), selbiges auch für> Rechts.
Was soll das bitte werden, und wenn beide Potia auf halb stehen, dreht
die Hälfte vom Motor mit halbem Tempo linksrum und die andere Hälfte vom
Motor mit halbem Tempo rechtsrum ?
Wer so verquere Logik im Kopf hat, muss sich über nicht funktionierende
Logikschaltungen nicht wundern.
Hans Peter schrieb:> hat alles verrückt gespielt.
Das kann bei Motorsteuerungen durchaus passieren, schliesslich
produzieren Gleichstrommotoren an ihren Bürsten Funken und Funken stören
bekanntlich alles besonders gut. Da gehört mindestens eine Entstörung an
den Motor
1
+--47uH--+---+---+
2
| | | |
3
| | 47nF |
4
----------------+ | | |
5
verdrillte Zuleitung 47nF +--(M)
6
----------------+ | | |
7
| | 47nF |
8
| | | |
9
+--47uH--+---+---+
10
[</pre]
11
wie ihn schon billigste Spielzeuggeräte haben, und eine saubere Trennung der Stromversorgung von Arduino und Motor damit Störungen nicht über die Leitungen kommen, hier gezeigt für einen Motor der nur eine Drehrichtung kennt:
Hans Peter schrieb:> Und auf IN1 bzw. IN2 darf ich also ein PWM Signal hängen ?
Ja, wenn es langsam genug ist, für Mottoren reicht 50Hz locker.
> Für links bzw. RECHTS schneller oder langsamer drehen.
Siehe oben. Knoten im Kopf.
Hans Peter schrieb:> Hab den Code so gemacht , wenn ich einen Poti drehe soll der andere> sofort auf 0 gehen, und umgekehrt.
Weitgehend Unsinn, denn der A/D-Wandler liefert auch bei einem nicht
bewegten Poti manchmal zufälligerweise durch Störungen und Schwankungen
andere Werte, zumindest um +/-1 unterschiedliche Werte, und schon
glaubst du es wäre bewegt worden.
Verabschiede dich von deiner unlogischen Theorie der Bedienung, dann
giubt es auch keine nachfolgenden Logikprobleme mehr, denn RATEN was du
willst kann ein Computerprogramm nicht.