Hallo Leute, Ich habe mir seit kurzem ein Arduiono kompatibles Kettenfahrzeug gekauft. Ich habe dann ein Programm geschrieben das mittels PWM Motoren steuern sollte aber aus irgendeinem Grund krieg ich es nicht zum Laufen. Im Anhang könnt ihr euch die Schaltung anschauen, vielleicht habe ich ja die falschen Pins verwendet. Wäre toll wenn mir einer aushelfen könnte.... Hier ist das Programm: /*-------PWM-Test------*/ int M1 = 5; //Speed-Control int M2 = 6; //Speed-Control int R1 = 7; //Direction-Control int R2 = 8; //Direction-Control void setup() { int i; for(i=5;i<=8;i++) pinMode(i,OUTPUT); } void loop() { analogWrite(M1,255); //Maximum Speed analogWrite(M2,255); //Maximum Speed digitalWrite(R1,LOW); //Forward digitalWrite(R2,LOW); //Forward } Danke im Vorraus :) lg Chris
Dein Code sieht für mich OK aus, wenn ich mir die Doku im Netz betrachte. http://www.robotshop.com/dfrobotshop-rover-tracked-robot-basic-kit.html Ich habe noch eine Änderung eingefügt, damit das Vorwärts nicht ständig sondern nur einmal gegeben wird. Möglicherweise verschluckt sich die Ansteuerung, wenn die PWM ständig d.h. bei jedem loop() Durchlauf neu initialisiert wird.
1 | int M1 = 5; // Motor 1 Speed-Control (ENA am L293B) |
2 | int M2 = 6; // Motor 2 Speed-Control (ENB am L293B) |
3 | int R1 = 7; // Motor 1 Direction-Control (IN1/2 am L293B) |
4 | int R2 = 8; // Motor 3 Direction-Control (IN3/4 am L293B) |
5 | |
6 | void setup() |
7 | {
|
8 | int i; |
9 | for(i=5;i<=8;i++) |
10 | pinMode(i,OUTPUT); |
11 | }
|
12 | |
13 | void forward() |
14 | {
|
15 | // Motor 1
|
16 | analogWrite(M1,255); // Speed (255=MAX) über PWM an ENA |
17 | digitalWrite(R1,LOW); // Forward |
18 | |
19 | // Motor 2
|
20 | analogWrite(M2,255); // Speed (255=MAX) über PWM an ENB |
21 | digitalWrite(R2,LOW); // Forward |
22 | }
|
23 | |
24 | void loop() |
25 | {
|
26 | static char laeuft = 0; |
27 | if ( laeuft == 0 ) |
28 | {
|
29 | laeuft = 1; |
30 | forward(); |
31 | }
|
32 | }
|
L293 Tutorials http://robotika.yweb.sk/skola/H-brigde/IC%20L293%20and%20Its%20avr%20%20interface%20v1.0.pdf 74HC00 Quad 2-input NAND gate: digitalWrite(R1,LOW) => Motor runs anti-clockwise => Forward Jetzt zur eigentlichen Fehlersuche: Bei der Aufbauanleitung sind zwei IMPORTANT NOTES angegeben. Hast du die beachtet? Hast du Tools für eine Fehlersuche? Ein Multimeter zum Messen von Spannungen wäre ganz gut. Zur Not geht als Spannungsspion auch eine LED. Man könnte die LED_SEL Brücke rausnehmen und dort an der Seite bei den LEDs einen Draht einstecken. Wenn die zweite Drahtseite dann mit einer spannungsführenden Stelle verbunden ist, leuchten die LEDs 5 bis 10. Damit kannst du an Pin D5 und D6 auf Jumperleiste J1 die Funktion der PWM überprüfen (Spion leuchtet). Bei Änderung des Wertes 255 im Programm ändert sich die Intensität der LED (statt 255 z.B. 100 probieren). Die Änderung ist u.U. schwer zu sehen, wenn nur geringe Wertänderungen gemacht werden (das liegt an der Anpassung des Auges). Um die Pins D7 und D8 auf Jumperleiste J1 bzw. J2 zu überprüfen, kannst du den Rover rückwärts fahren lassen (Spion leuchtet) // Motor 1 analogWrite(M1,255); // Speed (255=MAX) über PWM an ENA digitalWrite(R1,HIGH); // Rückwärts // Motor 2 analogWrite(M2,255); // Speed (255=MAX) über PWM an ENB digitalWrite(R2,HIGH); // Rückwärts oder bei Vorwärtsfahrt dürfen D7 und D8 die LEDS nicht zum Leuchten bringen. Beide Tests würden zeigen, ob das Programm im µC überhaupt arbeitet. Wenn das der Fall ist, geht es im nächsten Schritt an den Test des 74HC00 und des L293 und der Motoren. Aber melde dich erstmal wieder mit dem ersten Ergebnis.
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.