Tafuta Msimbo

Kodi ya Arduino kwa Moduli ya Kidhibiti cha Motor ya DC ya L9110

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

MtengenezajiSTMicroelectronics
Nambari ya sehemuL9110
Voltage ya Logic/IO2.5–5.5 V
Voltage ya usambazaji2.5–12 V
Mkondo wa pato (kwa kila chaneli)1 A
Mkondo wa kilele (kwa kila chaneli)2 A
Mwongozo wa mzunguko wa PWM10 kHz
Viwango vya kuingiza mantiki0.8 V (chini), 2.0 V (juu)
Kushuka kwa voltage / RDS(on) / kueneza0.3 V kwa 1 A
Mipaka ya joto150 °C
KifurushiDIP-16
Vidokezo / lahajaInatumika 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.
Arduino-wirign-for-L9110-motor-driver

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).

Bilder

L9110_motor_driver_module-1
L9110_motor_driver_module-1
L9110_motor_driver_module-12
L9110_motor_driver_module-12
L9110_motor_driver_module-3
L9110_motor_driver_module-3
Arduino-wirign-for-L9110-motor-driver
Arduino-wirign-for-L9110-motor-driver
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

Resurser och referenser

Inga resurser än.

Filer📁

Datablad (pdf)

  • L9110 Motor driver module datasheet
    L9110 motor driver module datasheet covering pinout, specifications, and application circuit for driving DC motors.
    robojax_L9110_datasheet.pdf 0.20 MB

Fritzing-fil