Forum: Mikrocontroller und Digitale Elektronik L298N und Arduino PWM Problem


von Rick W. (theflash)


Lesenswert?

Ich bin gerade dabei ein kleines RobotCar auf Basis von einem Arduino 
Uno sowie einem Raspberry Pi.
Der Arduino soll sich um die Ansteuerung der Motoren kümmern.
Ich hab dann alles wie in diesem Video beschrieben angeschlossen:
https://www.youtube.com/watch?v=kv-9mxVaVzE

Also wie folgt angeschlossen:
Am L298N ist ein DC Motor angeschlossen und ein Netzteil mit 5V.
Dazu vom Arduino zwei Pins auf In1 und In2. Dann habe ich die Jumper bei 
EnA entfernt und auf EnA einen Pin vom Raspi verbunden (PWM)
Mein verwendeter Code:
1
void setup() {
2
  pinMode(7, OUTPUT);
3
  pinMode(8, OUTPUT);
4
  pinMode(11, OUTPUT);
5
}
6
7
void loop() {
8
  digitalWrite(8, HIGH);
9
  digitalWrite(7, LOW);
10
  analogWrite(11, 150);
11
  delay(2000);
12
  
13
  digitalWrite(8, LOW);
14
  digitalWrite(7, HIGH);
15
  analogWrite(11, 150);
16
  delay(1000);
17
}

Leider schaffe ich es nicht den Motor zum Laufen zu kriegen.
Wenn ich aber auf PWM verzichte und den Pin 11 nicht auf out setze und 
statt analogWrite() mit digitalWrite(11, HIGH) setze, dann kann ich den 
Motor einschalten, sonst nicht.

Habe es an dem gleichen Bauteil wie im Video probiert.
Danach noch ein anderes L298N Modul getestet (von SainSmart, blaue 
Grundplatte) probiert und dort kann ich den Motor mit PWM ansteuern.

Jemand eine Idee was ich falsch mache?

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Bauteil 'rot' kaputt?

Die gezeigte rote Platine erzeugt zumindest aus einer höheren 
Versorgungsspannung 5V selber, um den L298 selber zu versorgen.
Wenn Du nur mit 5V rein gehst, könnte ich mir vorstellen, daß di 
5V-Logik nicht generiert werden - dazu muß der Jumper an dem 
3er-Anschluß gesteckt sein - wenn man den Jumper zieht, verweigert der 
L298 den Dienst und an der Schraubklemme in Bordmitte liegen keine 5V 
mehr an (dort greife ich Diese gerade ab zur Versorgung eines ATtiny, 
versorgt mit 12V).

Bei externer Speisung der 5V muß der Jumper wohl entfernt/gezogen 
werden, da sonst der interne Spannungsregler gegen die externen 5V 
arbeiten dürfte.

MfG

PS: Bei meiner Platine vergaß der Versender, ein Datenblatt/o.Ä. 
beizulegen - wobei ich 'die Landessprache' wohl auch nicht hätte lesen 
können ;)


PPS: Du hast aber die IN-Pins per PWM bestromt und nicht die 
'Zusatz-Pins', Die nur die 5V liefern?
(also die 5V bei LOW runtergezogen ?)

: Bearbeitet durch User
von Rick W. (theflash)


Lesenswert?

Das mit der kaputten Platine dachte ich auch schon und hab gerade noch 
eine zweite getestet (die ich damals zur Sicherheit mitbestellt hatte).
Funktioniert auch nicht.

Wie meinst du das mit dem Jumper?
Ich hab nur die zwei Jumper für EnA und EnB gezogen, der andere hinter 
dem 3er Block der ist noch drinnen.

Die blaue Platine sieht eigentlich genauso aus, nur hat sie noch einen 
Einschaltknopf und bei der klappt es ohne Probleme
Bei dem blauen handelt es sich um dieses Bauteil:
http://blog.mkme.org/wp-content/uploads/2014/03/20131114_151845.jpg

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Mach bitte das gleiche Bild vom roten Modul.

Versorgst Du jetzt die Elektronik mit den 5V vom L298N-Modul, oder hast 
Du 5V, Die Du an die 5V-Klemme anschließt?
Externe 5V -> Jumper hinter 3er Klemme kommt raus

MfG

: Bearbeitet durch User
von Rick W. (theflash)


Lesenswert?

So ist es aktuell verkabelt:
http://img5.fotos-hochladen.net/uploads/p1030707ldvyt1s6ou.jpg

Aktuell hab ich das 5V Netzteil am VCC und GND des L298N. (Im GND steckt 
noch der Ground des Arduino)
Der Arduino Uno wird über USB versorgt.
Dazu der Jumper bei EnA gezogen, der andere Jumper hinter den 3 
Anschlüssen ist drauf.

Jetzt hatte ich gerade mal den Jumper bei EnA wieder draufgemacht, also 
dass die Motoren immer enabled sind und ich sie nur in der Richtung 
schalten kann (bzw. mit LOW, LOW ausschalten) und habe nun die zwei Pins 
einmal an PWR Pins angeschlossen und dann statt für den Motor 
writeDigital(motorPin1, HIGH), writeDigital(motorPin2, LOW) ein 
writeAnalog(motorPin, x) ausgeführt und hier kann ich nun die 
Geschwindigkeit der Motoren anpassen. Bei 50 sehr langsam, bei 250 dann 
Vollgas.

Laut den Tutorials die ich im Netz gesehen hatte, haben die aber alle 
die Geschwindigkeit über die Enable Pins gesetzt und nicht wie bei 
meiner "Lösung" jetzt.
Hab ich eine "komische" Version des L298N erwischt?

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Wie ich das Bild deute, ist die rechte Schraubklemme des 3er-Block nicht 
benutzt - da kommen die 5V Logik 'raus', wenn der Jumper gesetzt ist - 
da der Motor bei gesetztem ENa läuft, ist die Logik-Spannung wohl 
vorhanden :)

Da bei HIGH der Motor läuft, reicht die anliegende Spannung aus.
Bei der analogen Spannung sollte ein PWM auf den Pin gehen ...

Oszi vorhanden?

Hast Du auf den Analog-Outs 5V PWM-Pegel, oder verwäscht irgend was das 
Signal zu einer geringeren Gleichspannung, Die dann nicht mehr erkannt 
wird?

Verschiedene Frequenzen probiert? (kA, wo im Arduino man da drehen muß, 
um die PWM-Frequenz, NICHT das Verhältnis, zu verändern)

Hätte ich jetzt auch so angeschlossen - hilft Dir aber nur bedingt :/

MfG

von Rick W. (theflash)


Lesenswert?

Ich hab jetzt gerade mal ein 12V Netzteil an den L298N gehängt und 
folgenden Code verwendet:
1
void setup() {
2
  pinMode(5, OUTPUT);
3
  pinMode(6, OUTPUT);
4
  pinMode(10, OUTPUT);
5
}
6
7
void loop() {
8
  digitalWrite(5, HIGH);
9
  digitalWrite(6, LOW);
10
  analogWrite(10, 20);
11
  delay(2000);
12
  
13
  digitalWrite(5, LOW);
14
  digitalWrite(6, HIGH);
15
  analogWrite(10, 250);
16
  delay(1000);
17
18
  digitalWrite(5, LOW);
19
  digitalWrite(6, LOW);
20
  exit(1);
21
  
22
}

Und nun kann ich auch über den Enable mit PWM steuern!
Nur unter 20 sollte ich nicht gehen, da dreht sich dann der Motor nicht 
mehr.

Also lag es tatsächlich daran, dass ich zu wenig Volt angesteckt hatte. 
Da wäre ich ja nie draufgekommen.
Das blaue hingegen kam auch mit weniger 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.