PWM

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 :slight_smile:

Ich weiß nicht was passiert wenn Du andauend, alle Bruchteile von Millisekunden die Analogausgabe von neuen startest.
Versuch mal ein "delay(10000);" nach dem "digitalWrite(R2,LOW);" zu schreiben.
Grüße Uwe

Danke für deine Antwort aber mit dem delay hats leider auch nicht geklappt...
Der Motor springt gar nicht an un ehrlich gesagt versteh ich es net, laut dem programm müsste alles wunderbar gehen.

Gibt es einen Link damit man sich das Fahrzeug mal genauer anschauen kann ?

Motorsteuerung direkt per Arduino:
http://www.arduino-tutorial.de/2010/06/motorsteuerung-direkt-per-arduino/

Hallo Kemal
Kannst du das Schaltbild posten oder welche Motorsteuerung Du verwendest?
Grüße Uwe

Würd ich gern aber ich weiß grad nicht, wie man hier eine pdf datei hochladen kann :slight_smile:

Würd ich gern aber ich weiß grad nicht, wie man hier eine pdf datei hochladen kann

In diesem Forum gar nicht. Du mußt es wo anders deponieren und dann verlinken.

Korman

Da gibt es z.B. die Möglichkkeit des Webhostings. Da kannst DU dann die Datei hochladen und den Download-Link im Forum posten !

http://rapidshare.com/

http://www.megaupload.com/

Danke wusste ich nicht....

Hier ist die Schaltung:

http://rapidshare.com/files/424569752/dfrobotshop-rover-schematic.pdf

Welches Teil von den folgenden ist es den ?

http://www.dfrobot.com/index.php?route=product/category&path=37

Damit man sich mal die Funktionsbeschreibung des Fahrwerks durchlesen kann.

Handelt es sich vielleicht um dieses Fahrwerk ?

DFRobotShop Rover Robot Kit Review Part 1 - 3:

DFRobotShop Rover Assembly:

DFRobotShop Rover Tank Robot:

DFRobotShop Rover Tank Robot:

Genau dieses Teil hab ich gekauft...

DFRobotShop Rover - Arduino Compatible Tracked Robot (Basic Kit):
http://www.robotshop.com/dfrobotshop-rover-tracked-robot-basic-kit.html

DFRobotShop Rover Manual:
http://www.robotshop.com/content/PDF/dfrobotshop-rover-user-guide.pdf

Auf Seite 14 des Manuals befindet sich der Sketch 'DFRobotShop Rover Sample Sketch #1'. Den solttest Du mal ausprobieren.

Auf Seite 6 Step 5 steht geschrieben:
Insert the motors into the gearbox and connect the wires from the motors to the screw
terminals on the PCB (try not to cross the wires. You can trim the wires so they do not interfere with the
tracks. Connect the wires from each motor to the closest terminals. Please refer to the important note
above once again.

Überprüf am besten erst mal ob Du die Batterien und die beiden Motoren an der richtigen Stelle angeschlossen hast !

Den Arduino selber kannst Du mit dem 'Blink' Example testen !
Befindet sich im Verzeichnis 'Expamples/2. Digital/BlinkWithoutDelay'.

Hmm...

Mit dem DFRobotShop Rover Sample Sketch #1' laufen die Motoren problemlos. Also müsste mein Programm falsch sein aber ich finde leider den Fehler nicht.

Der einzige Unterschied der mir auffällt ist die Reihenfolge der Zeilen:

void loop()
{
analogWrite(M2,255); //Maximum Speed
digitalWrite(R2,LOW); //Forward
analogWrite(M1,255); //Maximum Speed
digitalWrite(R1,LOW); //Forward
while(1);
}

Einfach mal ausprobieren !

In beiden Sketches werden für den einen Motor die Pins 5,7 und für den anderen die Pins 6,8 benutzt ! Also in deinem und dem DFRobot Sketch. Das gleiche gilt für die Steuerung der Motorgeschwindigkeit und die Drehrichtung. In beiden Pin identisch !

Danke vielmals jetzt geht es :smiley:

Die Zeile
while(1);
bewirkt das die Befehle
analogWrite(M2,255); //Maximum Speed
digitalWrite(R2,LOW); //Forward
analogWrite(M1,255); //Maximum Speed
digitalWrite(R1,LOW); //Forward
nur einmal ausgeführt werden !

Dementsprechend müsste dies eigentlich auch funktionieren:

void loop()
{
   analogWrite(M2,255);  //Maximum Speed
   digitalWrite(R2,LOW);  //Forward
   analogWrite(M1,255);  //Maximum Speed
   digitalWrite(R1,LOW);  //Forward
   delay(3000);
   analogWrite(M2,0);  //Stop - Schont die Getriebebox
   analogWrite(M1,0);  //Stop
   delay(3000);
   analogWrite(M2,255);  //Maximum Speed
   digitalWrite(R2,HIGH); //Backward
   analogWrite(M1,255);  //Maximum Speed
   digitalWrite(R1,HIGH); //Backward
   delay(3000);
   analogWrite(M2,0);  //Stop - Schont die Getriebebox
   analogWrite(M1,0);  //Stop
   delay(3000);
}

Hallo Megaionstorm

Ich sehe auch keinen Unterschied.

Uwe