Kod Arduino dla modułu sterownika dwusilnikowego prądu stałego L9110
W tym samouczku przyjrzymy się, jak sterować dwoma silnikami prądu stałego za pomocą modułu sterownika dwusilnikowego L9110 z Arduino. Ten projekt umożliwi Ci zarządzanie kierunkiem i prędkością każdego silnika, co pozwoli na wszechstronne zastosowania, takie jak robotyka i automatyka. Po ukończeniu tego przewodnika będziesz mieć jasne zrozumienie, jak podłączyć komponenty i napisać kod niezbędny do płynnego uruchomienia silników. Jeśli potrzebujesz wyjaśnień, koniecznie sprawdź wideo (na wideo w 00:00).
Wyjaśnienie sprzętu
Moduł sterownika dwusilnikowego L9110 pozwala na jednoczesne sterowanie dwoma silnikami. Posiada dwa obwody mostka H, które umożliwiają odwrócenie polaryzacji napięcia silnika. Oznacza to, że możesz łatwo zmienić kierunek każdego silnika, przełączając piny sterujące. Moduł ma cztery kluczowe piny: po dwa dla każdego silnika do sterowania kierunkiem obrotów. Gdy ustawisz jeden pin wysoko, a drugi nisko, silnik obraca się w jednym kierunku; odwrócenie stanów pinów spowoduje obrót w przeciwnym kierunku. Ta elastyczność jest niezbędna w zastosowaniach takich jak robotyka, gdzie potrzebujesz precyzyjnej kontroli nad ruchami silników.Szczegóły z karty katalogowej
| Producent | STMicroelectronics |
|---|---|
| Numer części | L9110 |
| Napięcie logiczne/IO | 2,5–5,5 V |
| Napięcie zasilania | 2,5–12 V |
| Prąd wyjściowy (na kanał) | 1 A |
| Prąd szczytowy (na kanał) | 2 A |
| Zalecana częstotliwość PWM | 10 kHz |
| Progi logiczne wejścia | 0,8 V (niski), 2,0 V (wysoki) |
| Spadek napięcia / RDS(on) / nasycenie | 0,3 V przy 1 A |
| Limity termiczne | 150 °C |
| Obudowa | DIP-16 |
| Uwagi / warianty | Często używany w małych projektach robotycznych. |
- Zapewnij odpowiednie odprowadzanie ciepła do ciągłej pracy.
- Utrzymuj sygnały PWM poniżej 10 kHz dla optymalnej wydajności.
- Używaj kondensatorów odsprzęgających w pobliżu połączeń zasilania, aby zminimalizować szumy.
- Uważaj na odwróconą polaryzację połączeń; może uszkodzić moduł.
- Zawsze sprawdzaj limity prądu znamionowego, aby uniknąć przegrzania.
Instrukcje podłączenia
Aby podłączyć moduł sterownika dwusilnikowego L9110 z Arduino, zacznij od podłączenia pinów zasilania. Podłącz pin VCC na L9110 do wyjścia 5V na Arduino, a pin GND do jednego z pinów masy Arduino. Następnie, dla silnika A, podłącz pin A1A do pinu cyfrowego 2 na Arduino, a pin A1B do pinu cyfrowego 3. Następnie, dla silnika B, podłącz pin B1A do pinu cyfrowego 8, a pin B1B do pinu cyfrowego 9. Upewnij się, że silniki są prawidłowo podłączone do odpowiednich wyjść na module L9110.
Przykłady kodu i omówienie
W funkcji setup musimy zdefiniować piny sterujące jako wyjścia. Jest to niezbędne, aby Arduino mogło skutecznie sterować kierunkami silników:void setup() {
pinMode(B1A,OUTPUT);// zdefiniuj pin jako wyjście
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
Ten fragment kodu konfiguruje piny sterujące silnikami, zapewniając, że Arduino może wysyłać sygnały do modułu L9110.
Główna pętla programu steruje silnikami, wywołując funkcje `motorA` i `motorB` z różnymi parametrami, aby zmieniać kierunki:
void loop() {
motorA('R');// Obróć silnik A w PRAWO
delay(2000);
motorA('L');// Obróć silnik A w LEWO
delay(2000);
motorA('O');// Wyłącz silnik A
delay(2000);
...
}
W tym fragmencie silniki są obracane w prawo i w lewo, z opóźnieniami pomiędzy, aby zaobserwować zmiany kierunku.
Funkcja `motorA` jest zdefiniowana do sterowania silnikiem A na podstawie podanego kierunku:
void motorA(char d) {
if(d =='R'){
digitalWrite(A1A,LOW);
digitalWrite(A1B,HIGH);
} else if (d =='L'){
digitalWrite(A1A,HIGH);
digitalWrite(A1B,LOW);
} else {
digitalWrite(A1A,LOW);
digitalWrite(A1B,LOW);
}
}
Ta funkcja sprawdza podany kierunek i odpowiednio ustawia piny sterujące, aby obrócić silnik w pożądanym kierunku lub go wyłączyć.
Demonstracja / Czego się spodziewać
Po uruchomieniu kodu powinieneś zobaczyć, jak silniki naprzemiennie obracają się w lewo i w prawo. Opóźnienia pozwalają wyraźnie zaobserwować zmiany kierunku. Uważaj na typowe błędy, takie jak odwrócone połączenia, które mogą prowadzić do nieoczekiwanego zachowania lub uszkodzenia komponentów. Dodatkowo upewnij się, że zasilanie jest wystarczające dla używanych silników (na wideo w 00:00).
107-Arduino code for an L9110 dual DC motor controller module
Język: C++
/*
* Display number on a seven-segment display with Arduino
* Written by Ahmad Shamshiri for Robojax.com
Date modified: Jun 11, 2018 at 17:20 in Ajax, Ontario, Canada
Watch video instructions for this code: https://youtu.be/-g6Q9lSHDzg
Code is provided for free AS IS without warranty.
You can share this code as long as you keep the above note intact.
*/
const int A1A = 2;//define pin 2 for A1A
const int A1B = 3;//define pin 3 for A1B
const int B1A = 8;//define pin 8 for B1A
const int B1B = 9;//define pin 9 for B1B
void setup() {
pinMode(B1A,OUTPUT);// define pin as output
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
void loop() {
motorA('R');// Turn motor A to RIGHT
delay(2000);
motorA('L');// Turn motor A to LEFT
delay(2000);
motorA('O');// Turn motor A OFF
delay(2000);
motorB('R');// Turn motor B to RIGHT
delay(2000);
motorB('L');// Turn motor B to LEFT
delay(2000);
motorB('O');// Turn motor B OFF
delay(2000);
motorA('R');// Turn motor A to RIGHT
motorB('R'); // Turn motor A to RIGHT
delay(2000);
motorA('L');// Turn motor A to LEFT
motorB('L');// Turn motor B to LEFT
delay(3000);
motorA('O');// Turn motor A OFF
motorB('O');// Turn motor B OFF
delay(5000);
}
/*
* @motorA
* Activation rotation of motor A
* d is the direction
* R = Right
* L = Left
*/
void motorA(char d)
{
if(d =='R'){
digitalWrite(A1A,LOW);
digitalWrite(A1B,HIGH);
}else if (d =='L'){
digitalWrite(A1A,HIGH);
digitalWrite(A1B,LOW);
}else{
//Robojax.com L9110 Motor Tutorial
// Turn motor OFF
digitalWrite(A1A,LOW);
digitalWrite(A1B,LOW);
}
}// motorA end
/*
* @motorB
* Activation rotation of motor B
* d is the direction
* R = Right
* L = Left
*/
void motorB(char d)
{
if(d =='R'){
digitalWrite(B1A,LOW);
digitalWrite(B1B,HIGH);
}else if(d =='L'){
digitalWrite(B1A,HIGH);
digitalWrite(B1B,LOW);
}else{
//Robojax.com L9110 Motor Tutorial
// Turn motor OFF
digitalWrite(B1A,LOW);
digitalWrite(B1B,LOW);
}
}// motorB end
Rzeczy, których możesz potrzebować
-
Amazon
-
Allegro
-
AliExpressPurchase L9110 motor driver from AliExpress-2s.click.aliexpress.com
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Karta katalogowa (pdf)
-
L9110 Motor driver module datasheetL9110 motor driver module datasheet covering pinout, specifications, and application circuit for driving DC motors.
robojax_L9110_datasheet.pdf0.20 MB
Plik Fritzing
-
L9110 H-bridge Motor driver module
L9110 H-bridge module.fzpz0.04 MB