Die Programmierung des Motortreibers
Ein TLE5206 Motortreiber Sketch ohne Geschwindigkeitssteuerung:
// Motorsteuerung ohne Geschwindigkeitsregelung !
void setup()
{
pinMode(5, OUTPUT); // Linker Kettenantrieb (Motortreiber 1 - IN1)
pinMode(6, OUTPUT); // (Motortreiber 1 - IN2)
pinMode(10, OUTPUT); // Rechter Kettenantrieb (Motortreiber 2 - IN1)
pinMode(11, OUTPUT); // (Motortreiber 2 - IN2)
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
void loop()
{
digitalWrite(5, LOW); // Vorwärts
digitalWrite(6, HIGH);
digitalWrite(10, LOW); // Vörwärts
digitalWrite(11, HIGH);
delay(10000);
digitalWrite(5, LOW); // Stop
digitalWrite(6, LOW);
digitalWrite(10, LOW); // Stop
digitalWrite(11, LOW);
delay(2000);
digitalWrite(5, HIGH); // Rückwärts
digitalWrite(6, LOW);
digitalWrite(10, HIGH); // Rückwärts
digitalWrite(11, LOW);
delay(10000);
digitalWrite(5, LOW); // Stop
digitalWrite(6, LOW);
digitalWrite(10, LOW); // Stop
digitalWrite(11, LOW);
delay(2000);
}
Ohne Geschwindigkeitssteuerung müssen die Arduino Pins welche mit IN1 und IN2 der Motortreiber verbunden werden nicht PWM fähig sein !
Die Motoren drehen sich hierbei immer mit der Höchstgeschwindigkeit !
Ein TLE5206 Motortreiber Sketch mit Geschwindigkeitsregelung:
// Motorsteuerung mit Geschwindigkeitsregelung !!!
// 255 = Stllstand, 1 = Höchstgeschwindigkeit
// 150 ist der Mindestwert, da die Motoren des Panzers sonst nicht anlaufen !!!
#define Motortreiber1_IN1_Pin 5 // PWM
#define Motortreiber1_IN2_Pin 6 // PWM
#define Motortreiber2_IN1_Pin 10 // PWM
#define Motortreiber2_IN2_Pin 11 // PWM
byte Speed;
void setup()
{
pinMode(Motortreiber1_IN1_Pin, OUTPUT); // Linker Kettenantrieb (Motortreiber 1 - IN1)
pinMode(Motortreiber1_IN2_Pin, OUTPUT); // (Motortreiber 1 - IN2)
pinMode(Motortreiber2_IN1_Pin, OUTPUT); // Rechter Kettenantrieb (Motortreiber 2 - IN1)
pinMode(Motortreiber2_IN2_Pin, OUTPUT); // (Motortreiber 2 - IN2)
digitalWrite(Motortreiber1_IN1_Pin, LOW);
digitalWrite(Motortreiber1_IN2_Pin, LOW);
digitalWrite(Motortreiber2_IN1_Pin, LOW);
digitalWrite(Motortreiber2_IN2_Pin, LOW);
}
void loop()
{
for (Speed = 150; Speed >= 1; Speed--) // Muss mindestens 1 sein, sonst läuft Motor nicht mehr an !!!
{
analogWrite(Motortreiber1_IN1_Pin, Speed);
digitalWrite(Motortreiber1_IN2_Pin, HIGH); // Linker Kettenantrieb vorwärts
analogWrite(Motortreiber2_IN1_Pin, Speed);
digitalWrite(Motortreiber2_IN2_Pin, HIGH); // Rechter Kettenantrieb vorwärts
delay(200);
}
delay(1000);
analogWrite(Motortreiber1_IN1_Pin, 255); // Linker Kettenantrieb stop
digitalWrite(Motortreiber1_IN2_Pin, HIGH);
analogWrite(Motortreiber2_IN1_Pin, 255); // Rechter Kettenantrieb stop
digitalWrite(Motortreiber2_IN2_Pin, HIGH);
delay(2000);
for (Speed = 150; Speed >= 1; Speed--) // Muss mindestens 1 sein, sonst läuft Motor nicht mehr an !!!
{
digitalWrite(Motortreiber1_IN1_Pin, HIGH);
analogWrite(Motortreiber1_IN2_Pin, Speed); // Linker Kettenantrieb rückwärts
digitalWrite(Motortreiber2_IN1_Pin, HIGH);
analogWrite(Motortreiber2_IN2_Pin, Speed); // Rechter Kettenantrieb rückwärts
delay(200);
}
delay(1000);
digitalWrite(Motortreiber1_IN1_Pin, HIGH);
analogWrite(Motortreiber1_IN2_Pin, 255); // Linker Kettenantrieb stop
digitalWrite(Motortreiber2_IN1_Pin, HIGH);
analogWrite(Motortreiber2_IN2_Pin, 255); // Rechter Kettenantrieb stop
delay(2000);
}
Bei der Benutzung der Geschwindigkeitssteuerung müssen die Arduino Pins welche mit IN1 und IN2 der Motortreiber verbunden werden auf jeden Fall alle PWM fähig sein !
Es ist vom Minimum bis zum Maximum eine stufenlose Geschwindigkeitsregelung möglich !
Ein Video des ersten Test der beiden Motortreiber: