Search Code

የ Arduino ኮድ ለ L9110 ባለሁለት የዲሲ ሞተር መቆጣጠሪያ ሞጁል

የ Arduino ኮድ ለ L9110 ባለሁለት የዲሲ ሞተር መቆጣጠሪያ ሞጁል

በዚህ ትምህርት ውስጥ፣ L9110 ባለሁለት ሞተር መቆጣጠሪያ ሞጁል ከአርዱኖ ጋር በመጠቀም ሁለት የዲሲ ሞተሮችን እንዴት መቆጣጠር እንደምንችል እንመረምራለን። ይህ ፕሮጀክት የእ প্রতিটি ሞተርን አቅጣጫ እና ፍጥነት እንዲያስተዳድሩ ያስችልዎታል፣ ይህም እንደ ሮቦቲክስ እና አውቶሜሽን ላሉ ሁለገብ አፕሊኬሽኖች ያገለግላል። በዚህ መመሪያ መጨረሻ ላይ፣ ክፍሎቹን እንዴት ማገናኘት እና ሞተሮችዎን በተቀላጠፈ ሁኔታ እንዲሰሩ ለማድረግ አስፈላጊውን ኮድ እንዴት መጻፍ እንደሚችሉ ግልጽ ግንዛቤ ይኖርዎታል። ማብራሪያ ከፈለጉ፣ ቪዲዮውን (በቪዲዮው 00:00 ላይ) መመልከትዎን ያረጋግጡ።

ሃርድዌር ተብራርቷል

የL9110 ባለሁለት የዲሲ ሞተር መቆጣጠሪያ ሞጁል ሁለት ሞተሮችን በአንድ ጊዜ እንዲቆጣጠሩ ያስችልዎታል። የሞተር ቮልቴጅን ፖላሪቲ እንዲቀይሩ የሚያስችሉዎት ሁለት የH-ብሪጅ ወረዳዎች አሉት። ይህ ማለት የመቆጣጠሪያ ፒኖቹን በመቀያየር የእያንዳንዱን ሞተር አቅጣጫ በቀላሉ መቀየር ይችላሉ ማለት ነው። ሞጁሉ አራት ቁልፍ ፒኖች አሉት፡ ለእያንዳንዱ ሞተር ሁለት የመዞሪያ አቅጣጫን ለመቆጣጠር። አንዱን ፒን ከፍ አድርገው ሌላውን ዝቅ ሲያደርጉ፣ ሞተሩ በአንድ አቅጣጫ ይሽከረከራል፤ የፒን ሁኔታዎችን መቀልበስ በተቃራኒ አቅጣጫ እንዲሽከረከር ያደርገዋል። ይህ ተለዋዋጭነት ትክክለኛ የሞተር እንቅስቃሴ ቁጥጥር ለሚያስፈልግዎት እንደ ሮቦቲክስ ላሉ አፕሊኬሽኖች አስፈላጊ ነው።

የዳታሼት ዝርዝሮች

አምራችSTMicroelectronics
የክፍል ቁጥርL9110
የሎጂክ/IO ቮልቴጅ2.5–5.5 ቮ
የአቅርቦት ቮልቴጅ2.5–12 ቮ
የውጤት ኤሌክትሪክ (በአንድ ቻናል)1 ኤ
ከፍተኛ ኤሌክትሪክ (በአንድ ቻናል)2 ኤ
የPWM ድግግሞሽ መመሪያ10 kHz
የግቤት ሎጂክ ገደቦች0.8 ቮ (ዝቅተኛ)፣ 2.0 ቮ (ከፍተኛ)
የቮልቴጅ ጠብታ / RDS(on) / ሳቹሬሽን0.3 ቮ በ1 ኤ
የሙቀት ገደቦች150 °C
ፓኬጅDIP-16
ማስታወሻዎች / ልዩነቶችበትንሽ የሮቦቲክስ ፕሮጀክቶች ውስጥ በብዛት ጥቅም ላይ ይውላል።

  • ለቀጣይ አሠራር ትክክለኛ የሙቀት መስጫ (ሒትሲንክ) ያረጋግጡ።
  • ለተሻለ አፈጻጸም የPWM ሲግናሎችን ከ10 kHz በታች ያቆዩ።
  • ጫጫታን ለመቀነስ በኃይል ግንኙነቶች አጠገብ የዲኮፕሊንግ ካፓሲተሮችን ይጠቀሙ።
  • የተገላቢጦሽ ፖላሪቲ ግንኙነቶችን ይጠንቀቁ፤ ሞጁሉን ሊጎዱ ይችላሉ።
  • ከመጠን በላይ ሙቀትን ለማስቀረት ሁልጊዜ የተመዘገበውን የኤሌክትሪክ ገደብ ያረጋግጡ።

የሽቦ ግንኙነት መመሪያዎች

የL9110 ባለሁለት የዲሲ ሞተር መቆጣጠሪያ ሞጁልን ከአርዱኖ ጋር ለማገናኘት፣ የኃይል ፒኖቹን በማገናኘት ይጀምሩ። በL9110 ላይ ያለውን የVCC ፒን ከአርዱኖው 5V ውጤት ጋር ያገናኙ፣ እና የGND ፒንን ከአርዱኖው የመሬት (ግራውንድ) ፒኖች አንዱ ጋር ያገናኙ። በመቀጠል፣ ለሞተር A፣ የA1A ፒንን ከአርዱኖው ዲጂታል ፒን 2 ጋር እና የA1B ፒንን ከዲጂታል ፒን 3 ጋር ያገናኙ። ከዚያም፣ ለሞተር B፣ የB1A ፒንን ከዲጂታል ፒን 8 እና የB1B ፒንን ከዲጂታል ፒን 9 ጋር ያገናኙ። ሞተሮቹ በL9110 ሞጁል ላይ ካሉት የየራሳቸው ውጤቶች ጋር በትክክል መገናኘታቸውን ያረጋግጡ።
Arduino-wirign-for-L9110-motor-driver

የኮድ ምሳሌዎች እና ማብራሪያ

በሴትአፕ (setup) ተግባር ውስጥ፣ የመቆጣጠሪያ ፒኖቹን እንደ ውጤት (output) መግለጽ አለብን። ይህ አርዱኖ የሞተር አቅጣጫዎችን በብቃት እንዲቆጣጠር አስፈላጊ ነው፡
void setup() {
  pinMode(B1A,OUTPUT);// ፒንን እንደ ውጤት ይግለጹ
  pinMode(B1B,OUTPUT);
  
  pinMode(A1A,OUTPUT);
  pinMode(A1B,OUTPUT);    
  delay(3000);
}
ይህ የኮድ ቁራጭ የሞተር መቆጣጠሪያ ፒኖቹን ያዘጋጃል፣ አርዱኖ ለL9110 ሞጁል ሲግናሎችን መላክ እንዲችል ያረጋግጣል። የፕሮግራሙ ዋና ሉፕ (loop) ሞተሮቹን የሚቆጣጠረው `motorA` እና `motorB` ተግባራትን አቅጣጫዎችን ለመቀየር በተለያዩ መለኪያዎች በመጥራት ነው፡
void loop() {
  motorA('R');// ሞተር Aን ወደ ቀኝ ያዙሩ
  delay(2000);
  motorA('L');// ሞተር Aን ወደ ግራ ያዙሩ
  delay(2000);   
  motorA('O');// ሞተር Aን ያጥፉ
  delay(2000); 
  ...
}
በዚህ ቁራጭ ውስጥ፣ ሞተሮቹ ወደ ቀኝ እና ግራ እንዲዞሩ ይደረጋሉ፣ በመካከላቸው የአቅጣጫ ለውጦችን ለመመልከት መዘግየቶች አሉ። የ`motorA` ተግባር ሞተር Aን በግቤት አቅጣጫ መሰረት ለመቆጣጠር ይገለጻል፡
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);    
  }
}
ይህ ተግባር የተሰጠውን አቅጣጫ ይፈትሻል እና ሞተሩን በተፈለገው አቅጣጫ ለማዞር ወይም ለማጥፋት የመቆጣጠሪያ ፒኖቹን በዚሁ መሰረት ያዘጋጃል።

ማሳያ / ምን እንደሚጠበቅ

ኮዱን ሲያስኬዱ፣ ሞተሮቹ በግራ እና በቀኝ መዞሪያዎች መካከል ሲቀያየሩ ማየት ይኖርዎታል። መዘግየቶቹ የአቅጣጫ ለውጦችን በግልጽ እንዲመለከቱ ያስችሉዎታል። እንደ የተገላቢጦሽ ግንኙነቶች ያሉ የተለመዱ ስህተቶችን ይጠንቀቁ፣ እነዚህ ያልተጠበቀ ባህሪ ወይም የክፍሎች ጉዳት ሊያስከትሉ ይችላሉ። በተጨማሪም፣ የኃይል አቅርቦትዎ ለሚጠቀሙባቸው ሞተሮች በቂ መሆኑን ያረጋግጡ (በቪዲዮው 00:00 ላይ)።

ምስሎች

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
ቋንቋ: 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

እንደሚያስፈልግዎት ይችላል

ምንጮች እና ምንጮች

አሁን ምንም ምንጮች የለም።

ፋይሎች📁

የዳታ ማዕከል (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

ፍሪትዚንግ ፋይል