Einen Gleichstrommotor steuernEinen Motor kann man nicht direkt an einen Arduino anschießen. Der Strom ist zu hoch und würde ihn sofort zerstören.
Verkabelung |
Motortreiber L298N![]()
HinweiseJumper:Die Jumper 7 und 12 müssen entfernt werden.Befehle:digitalWrite(PIN, WERT), analogWrite(PIN, WERT); pinMode(PIN, OUTPUT); pinMode(PIN, INPUT); Drehrichtung:Dabei sehen die Drehbewegungen folgendermaßen aus:LOW bedeutet = 0 HIGH bedeutet = 1 IN1=LOW / IN2=LOW = Der Motor steht still IN1=LOW / IN2=HIGH = Der Motor dreht vorwärts IN1= HIGH / IN2=LOW = Der Motor dreht rückwärts Geschwindigkeit:Über den Eingang ENA wird mit einem PWM-Signal (Impulsbreitensteuerung) die Geschwindikeit geregelt.
digitalWrite(mo_v_L_IN1, LOW); digitalWrite(mo_v_L_IN2, 1); analogWrite(mo_v_L_ENA_pwm, speed); |
Lösungsansatz:
| AufgabeSchreibe ein Unterprogramm für die Motorsteuerung
Hinweiseabs(speed):Die Funktion 'abs(speed)' liefert den absoluten Wert.abs(60) = 60 abs(-60) = 60
move(speed):move(int speed) { if(speed > 0) { digitalWrite(mo_v_L_IN1, LOW); digitalWrite(mo_v_L_IN2, HIGH); } else { ... } analogWrite(mo_v_L_ENA_pwm,abs(speed)); }Uno-Pinout Nano-Pinout ESP32-Pinout LösungEs ergibt sich folgende mögliche Lösung. |
Lösungsansatz:
| AufgabeÄndere das Unterprogramm so ab, damit 4 Motore gesteuert werden könnenFüge eine Umkehr der Drehrichtung ein. Hinweisevon MOTOR VORNE LINKS an IN1 dann nach Pin 2 wird: #define mo_v_L_IN1 2 move(int speed) { if(speed > 0) { digitalWrite(mo_v_L_IN1, LOW); digitalWrite(mo_v_L_IN2, HIGH); } else { digitalWrite(mo_v_L_IN2, HIGH); digitalWrite(mo_v_L_IN1, LOW); } analogWrite(mo_v_L_ENA_pwm, abs(speed)); }... ein eigenes Unterprogramm!
if(invert_li_v) {speed =* -1;} LösungEs ergibt sich folgende mögliche Lösung. |