Forum: Mikrocontroller und Digitale Elektronik L298N und Arduino PWM Problem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rick W. (theflash)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.