Ovládání DC motorů

Stejnosměrné (DC) motory jsou pro Arduino příliš velkou výkonovou zátěží. Z toho důvodu musí být napájeny z externího zdroje napětí, např. z baterií.

Dále je vhodné řídit směr otáčení motorů a jejich rychlost otáčení. Řešit to lze opět více způsoby. Jedním z nich je použít H-můstek. Pro dva motory pak dvojitý H-můstek. Takovou součástkou je i L298N s pasivním chladičem (při větších výkonech se H-můstek značně zahřívá).

Díky PWM lze upravovat rychlost otáčení motorů, ale protože v našem případě budeme napájet pouze +6 V, není třeba otáčky snižovat. Řídicí piny ENA a ENB tak mohou být trvale v logické 1. Piny IN1 – 4 slouží pro určení směru otáčení motorů.

Pro správnou funkčnost zapojení je třeba nezapomenout spojit GND (-) Arduina s H-můstkem. Bez toho se neuzavře elektrický okruh a motory se neroztočí, i když jsou zapojeny do H-můstku a ten k bateriím.

Zapojení DC motorů přes H-můstek L298N

Kód

#define ENA 11
#define IN1 10
#define IN2 9
#define IN3 8
#define IN4 7
#define ENB 6

void vpred(){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void vzad(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void vlevo(){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void vpravo(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void stat(){
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}

void setup() {
for (byte i=6; i<=11;i++) {
pinMode(i,OUTPUT);
}
digitalWrite(ENA,HIGH);
digitalWrite(ENB,HIGH);
}

void loop() {
vpred();
delay(5000);
vlevo();
delay(5000);
vpravo();
delay(5000);
vzad();
delay(5000);
stat();
while(true){};
}