1. 程式人生 > >Arduino通過L9110進行電機控制

Arduino通過L9110進行電機控制

L9110

L9110S是為控制和驅動電機設計的兩通道推輓式功率放大專用積體電路器件,將分立電路整合在單片IC之中,使外圍器件成本降低,整機可靠性提高。

該晶片有兩個TTL/CMOS相容電平的輸入,具有良好的抗干擾性;兩個輸出端能直接驅動電機的正反向運動,它具有較大的電流驅動能力,每通道能通過750~800mA的持續電流,峰值電流能力可達1.5~2.0A;同時它具有較低的輸出飽和壓降與靜態電流;內建的鉗位二極體能釋放感性負載的反向衝擊電流,使它在驅動繼電器、直流電機、步進電機或開關功率管的使用上安全可靠。
L9110S被廣泛應用於玩具汽車電機驅動、自動閥門電機驅動、電磁門鎖驅動等電路上。

基本引數:

  • 極限引數:800mA / 2.5V-12V
  • 低靜態工作電流: 0.00 uA
  • 寬電源電壓範圍:2.5V-12V ;
  • 每通道具有800mA 連續電流輸出能力,精確快速的正反轉控制;
  • 超低的飽和電壓降;
  • TTL/CMOS 輸出電平相容,可直接連CPU ;
  • 輸出內建鉗位二極體,適用於感性負載;
  • 精確的脈寬控制和後級驅動集成於單片IC 之中;
  • 具備管腳高壓保護功能;
  • 工作溫度:-30 ℃-80 ℃。

管腳

引腳

序號 符號 功能
1 OA A路輸出管腳
2 VCC 電源
3 VCC 電源
4 OB B路輸出
5 GND 地址
6 IA A路輸入
7 IB B路輸入
8 GND 地線

廠家Datasheet

線路圖

線路圖

實物連線圖

fritzing

驅動程式碼

/*
 L9110 控制小型直流電機實驗

 實驗目的:通過L9110的簡單連線控制直流電機的 方向 與 速度
 實驗設計:Joystick 充當油門與前向後方向的控制,控制桿隨著方向上將速度由小至大推進
 注意:一個L9110只能控制一個電機,且需要將 IA 與 IB 與 Arduino 連線
*/

const int IA = 5;  //  pin 5 connected to pin IA
const int IB = 6;  //  pin 6 connected to pin IB


byte speed = 255;  // change this (0-255) to control the speed of the motor

void setup() {
  pinMode(IA, OUTPUT); // set pins to output
  pinMode(IB, OUTPUT);
  Serial.begin(9600);
}

void loop() {

  int offsetX=525; //當控制桿位於中位時的模擬輸入值,不同的控制桿可能有不同的偏差。
  
  int x =analogRead(A0);

  bool isFoward = x <= offsetX;  
  speed = x==offsetX ? 0: (isFoward ? (255- map(x,0,offsetX,0,255)): map(x,0,1024,0,255));
  Serial.println(speed);
  isFoward ? forward() : backward();  
}

void backward()
{
  analogWrite(IA, 0);
  analogWrite(IB, speed);
}

void forward()
{
  analogWrite(IA, speed);
  analogWrite(IB, 0);

}

L9110控制電機速度和方向非常簡單,按上述真值表中的定義,只要向輸入端IA/IB輸入高電平則為轉動,IA 正轉,IB為反轉。

速度是通過調幅PWM 訊號進行控制,也就是對IA/IB 寫入 1~255 的速度範圍則可控制電機的轉速。