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