Arduino通过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 | 地线 |
线路图
实物连线图
驱动代码
/*
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 的速度范围则可控制电机的转速。