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.
EN1 auf dauer 5V ? Und auf IN1 bzw. IN2 darf ich also ein PWM Signal hängen ? Für links bzw. RECHTS schneller oder langsamer drehen.
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: |
12 | [pre] |
13 | Freilaufdiode |
14 | +---|<|----+ |
15 | | | |
16 | +12V +------------------+--Motor---+ |
17 | | +----+ | |
18 | +--+-----|>|--+----+---+--|7805|--+----+ VCC | |
19 | | | | | | +----+ | | | |
20 | o | +--|>|--+ + | | | | +----+ | |
21 | 9V~ | | Elko 100n | 100n | uC |--R--|< NPN Schalttransistor |
22 | o +--(--|<|--+ - | | | | +----+ |E |
23 | | | | | | | | | | |
24 | +-----+--|<|--+----+---+----+-----+----+ GND | |
25 | Gleichrichter | | |
26 | +-----------------------------+ Masseleitung |
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.
Hab den Code so gemacht , wenn ich einen Poti drehe soll der andere sofort auf 0 gehen, und umgekehrt.
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.
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.