Kodi ya Arduino kwa Moduli ya Kidhibiti cha Motor ya DC ya L9110
Katika mafunzo haya, tutachunguza jinsi ya kudhibiti motor mbili za DC kwa kutumia moduli ya kidhibiti cha motor mbili ya L9110 pamoja na Arduino. Mradi huu utakuwezesha kusimamia mwelekeo na kasi ya kila motor, ikiruhusu matumizi mbalimbali kama vile robotiki na otomatiki. Kufikia mwisho wa mwongozo huu, utakuwa na uelewa wazi wa jinsi ya kuunganisha vipengele na kuandika msimbo unaohitajika ili motor zako ziendeshe vizuri. Ikiwa unahitaji ufafanuzi, hakikisha umeangalia video (katika video saa 00:00).
Maelezo ya Vifaa
Moduli ya kidhibiti cha motor mbili ya DC ya L9110 inakuwezesha kudhibiti motor mbili kwa wakati mmoja. Ina mizunguko miwili ya H-bridge, ambayo inakuwezesha kubadilisha polarity ya voltage ya motor. Hii inamaanisha unaweza kubadilisha mwelekeo wa kila motor kwa urahisi kwa kubadilisha pin za udhibiti. Moduli ina pin nne muhimu: mbili kwa kila motor kudhibiti mwelekeo wa mzunguko. Unapoweka pin moja juu na nyingine chini, motor inazunguka upande mmoja; kubadilisha hali za pin kutafanya izunguke upande mwingine. Unyumbufu huu ni muhimu kwa matumizi kama robotiki, ambapo unahitaji udhibiti sahihi wa harakati za motor.Maelezo ya Datasheet
| Mtengenezaji | STMicroelectronics |
|---|---|
| Nambari ya sehemu | L9110 |
| Voltage ya Logic/IO | 2.5–5.5 V |
| Voltage ya usambazaji | 2.5–12 V |
| Mkondo wa pato (kwa kila chaneli) | 1 A |
| Mkondo wa kilele (kwa kila chaneli) | 2 A |
| Mwongozo wa mzunguko wa PWM | 10 kHz |
| Viwango vya kuingiza mantiki | 0.8 V (chini), 2.0 V (juu) |
| Kushuka kwa voltage / RDS(on) / kueneza | 0.3 V kwa 1 A |
| Mipaka ya joto | 150 °C |
| Kifurushi | DIP-16 |
| Vidokezo / lahaja | Inatumika kwa kawaida katika miradi midogo ya robotiki. |
- Hakikisha ukipoza vizuri kwa uendeshaji wa kuendelea.
- Weka ishara za PWM chini ya 10 kHz kwa utendaji bora.
- Tumia capacitors za kutenganisha karibu na viunganisho vya nguvu ili kupunguza kelele.
- Jihadharini na viunganisho vya polarity vilivyogeuzwa; vinaweza kuharibu moduli.
- Angalia kila wakati mipaka ya mkondo iliyokadiriwa ili kuepuka kupasha joto kupita kiasi.
Maelekezo ya Kuunganisha
Ili kuunganisha moduli ya kidhibiti cha motor mbili ya L9110 na Arduino, anza kwa kuunganisha pin za nguvu. Unganisha pin ya VCC kwenye L9110 kwenye pato la 5V kwenye Arduino, na unganisha pin ya GND kwenye moja ya pin za ardhi za Arduino. Ifuatayo, kwa motor A, unganisha pin ya A1A kwenye pin ya dijiti 2 kwenye Arduino na pin ya A1B kwenye pin ya dijiti 3. Kisha, kwa motor B, unganisha pin ya B1A kwenye pin ya dijiti 8 na pin ya B1B kwenye pin ya dijiti 9. Hakikisha motor zimeunganishwa vizuri kwenye matokeo yake husika kwenye moduli ya L9110.
Mifano ya Msimbo na Maelezo
Katika kazi ya setup, tunahitaji kufafanua pin za udhibiti kama matokeo. Hii ni muhimu kwa Arduino kudhibiti mwelekeo wa motor kwa ufanisi:void setup() {
pinMode(B1A,OUTPUT);// fafanua pin kama pato
pinMode(B1B,OUTPUT);
pinMode(A1A,OUTPUT);
pinMode(A1B,OUTPUT);
delay(3000);
}
Kipande hiki cha msimbo kinaweka pin za udhibiti wa motor, kuhakikisha Arduino inaweza kutuma ishara kwenye moduli ya L9110.
Kitanzi kikuu cha programu kinadhibiti motor kwa kuita kazi za `motorA` na `motorB` na vigezo tofauti kubadilisha mwelekeo:
void loop() {
motorA('R');// Zungusha motor A KULIA
delay(2000);
motorA('L');// Zungusha motor A KUSHOTO
delay(2000);
motorA('O');// ZIMA motor A
delay(2000);
...
}
Katika kipande hiki, motor zinafanywa kuzunguka kulia na kushoto, na kucheleweshwa katikati ili kuona mabadiliko ya mwelekeo.
Kazi ya `motorA` imefafanuliwa kudhibiti motor A kulingana na mwelekeo ulioingizwa:
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);
}
}
Kazi hii inaangalia mwelekeo uliotolewa na kuweka pin za udhibiti ipasavyo ili kuzungusha motor katika mwelekeo unaotakiwa au kuizima.
Maonyesho / Nini cha Kutarajia
Unapoendesha msimbo, unapaswa kuona motor zikibadilishana kati ya mzunguko wa kushoto na kulia. Kucheleweshwa kunakuwezesha kuona mabadiliko ya mwelekeo kwa uwazi. Jihadharini na makosa ya kawaida kama viunganisho vilivyogeuzwa, ambavyo vinaweza kusababisha tabia isiyotarajiwa au uharibifu wa vipengele. Zaidi ya hayo, hakikisha usambazaji wako wa nguvu unatosha kwa motor unazotumia (katika video saa 00:00).
107-Arduino code for an L9110 dual DC motor controller module
Språk: 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
Tänker att du kanske behöver
-
Amazon
-
eBay
-
AliExpressPurchase L9110 motor driver from AliExpress-2s.click.aliexpress.com
Resurser och referenser
Inga resurser än.
Filer📁
Datablad (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
Fritzing-fil
-
L9110 H-bridge Motor driver module
L9110 H-bridge module.fzpz0.04 MB