Forum: Mikrocontroller und Digitale Elektronik Arduino Motor steuern via L293D


von Hans Peter (Gast)


Lesenswert?

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?

von Volker K. (tobel)


Lesenswert?

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 ...

von M. K. (sylaina)


Lesenswert?

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.

von Hans Peter (Gast)


Angehängte Dateien:

Lesenswert?

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.

von M. K. (sylaina)


Lesenswert?

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.

von Hans Peter (Gast)


Lesenswert?

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

von M. K. (sylaina)


Lesenswert?

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? ;)

von Hans Peter (Gast)


Lesenswert?

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 ?

von M. K. (sylaina)


Lesenswert?

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)

von Hans Peter (Gast)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Hans Peter (Gast)


Lesenswert?

Hab den Code so gemacht , wenn ich einen Poti drehe soll der andere 
sofort auf 0 gehen, und umgekehrt.

von Michael B. (laberkopp)


Lesenswert?

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.

von Hans Peter (Gast)


Lesenswert?

Ok ok, muss ich weiter überlegen.

Man lernt ja nie aus :)

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.