Arduino通过L9110进行电机控制

摘要:
L9110S是一种用于控制和驱动电机的双通道推挽式功率放大器专用集成电路器件。它将分立电路集成到单个IC中,降低了外围设备的成本,提高了整机的可靠性。L9110S广泛应用于玩具车电机驱动、自动阀电机驱动、电磁门锁驱动等电路。forward():向后();}voidbackward(){analogWrite;analogWrite;}voidforward(){analogWrite;analogWrite;}L9110控制电机速度和方向非常简单。根据上面真值表中的定义,只要高电平输入到输入IA/IB,它就是旋转,IA是正向旋转,IB是反向旋转。速度由幅度调制PWM信号控制,即,写入IA/IB的速度范围从1到255可以控制电机速度。

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 ℃。

管脚

引脚

序号符号功能
1OAA路输出管脚
2VCC电源
3VCC电源
4OBB路输出
5GND地址
6IAA路输入
7IBB路输入
8GND地线

厂家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 的速度范围则可控制电机的转速。

免责声明:文章转载自《Arduino通过L9110进行电机控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇提高Interface Builder高效工作的8个技巧SlimDX的DirectSound模块下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【雕爷学编程】Arduino动手做(60)---WS2812直条8位模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感...

BLDC开发笔记1.原理及硬件部分

最*有个项目用到了BLDC,正好我也对电机驱动很感兴趣。在这里整理一下学习笔记。 此笔记会持续更新。 BLDC工作原理 BLDC工作原理网上已经很多资料,这里不再详细累述,推荐鹏芃科艺的相关无刷直流永磁电动机工作原理(这是我见过最好的3D模型解剖):http://www.pengky.cn/yongciDJ/04-wushuaYCDDJ-YL11/wush...

「雕爷学编程」Arduino动手做(26)——4X4矩阵键盘模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。 【Arduino】108种传感器模块系列实验(资料+代...

复制MySQL数据库A到另外一个MySQL数据库B(仅仅针对innodb数据库引擎)

方案一:(不用太大的变化my.ini文件) copy 原数据库A中的   数据库(database)  ib_logfile1  ib_logfile0   ibdata1; 关闭目的数据库B;  备份目的数据库B中的  ib_logfile1  ib_logfile0   ibdata1 三个文件,防止更改后不能使用数据库; 将copy 来的原数据库A...

Arduino—运算符

赋值运算符: =    +=   -+     *=      /= %=       取余等于 &=    与等于 &=(与等于)对某个变量的值按位进行与运算,例如:G&=x,将G变量的值与x变量的值做AND运算,其结果放入G变量,与G=G&x表达式相同。 |=     (或等于)对某个变量的值按位进行或运算,例如:HI...

【C#上位机必看】你们想要的练手项目来了

​        最近有越来越多做电气的小伙伴开始学习C#来做上位机开发,很多人在学习一段时间后,都有这种感觉,似乎学到了很多知识,但是不知道怎么应用,因此我找了一个真实的上位机小项目,让大家来练练手。这篇文章主要对这个项目案例及开发过程做个整体介绍。 1. 项目案例介绍         很多人对单片机有一种特殊的情怀,总是感觉单片机很神秘或很复杂。单片机...