Forum: Mikrocontroller und Digitale Elektronik Arduino Programm


von tur (Gast)


Angehängte Dateien:

Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.