编号 | 名称 | 功能 |
1 | A1 | 1通道正转逻辑输入 |
2 | A2 | 1通道反转逻辑输入 |
3 | B1 | 2通道正转逻辑输入 |
4 | B2 | 2通道反转逻辑输入 |
5 | OB2 | 2通道反转输出 |
6 | OB1 | 2通道正转输出 |
7 | OA2 | 1通道反转输出 |
8 | OA1 | 1通道正转输出 |
9 | VCC | 电源正(2-8V) |
10 | GND | 电源地 |
MX1508采用H桥电路结构设计,采用高可靠性功率管工艺,特别适合驱动线圈、马达等感性负载。电路内部集成N沟道和Р沟道功率MOSFET,工作电压范围覆盖2v到8v。在27℃,VDD=6.5v的情况下,若两个通道同时工作,2通道最大持续输出电流达到0.8A,最大峰值输出电流达到1.5A;1通道最大持续输出电流达到1.5A,最大峰值输出电流达到2.5A。
1、低待机电流(小于0.1uA)
2、低导通内阻 MOSFET功率开关管
——采用MOS工艺设计功率管
——1通道1500毫安功率管内阻0.28欧姆
——2通道800毫安功率管内阻0.39欧姆
3、内部集成续流二极管
——无需外接续流二极管
4、较小的输入电流
——集成约15K对地下拉电阻
——3V驱动信号平均200uA输入电流
5、内置带迟滞效应的过热保护电路(TSD)
6、抗静电等级:3KV(HBM)
在待机模式下,INAx=INBx=L。包括驱动功率管在内的所有内部电路都处于关断状态。电路消耗极低的电流。此时马达输出端OUTAx和OUTBx都为高阻状态。
正转模式的定义为:INAx=H,INBx=L,此时马达驱动端OUTAx输出高电平,马达驱动端OUTBx输出低电平时,马达驱动电流从OUTAx流入马达,从OUTBx流到地端,此时马达的转动定义为正转模式。
反转模式的定义为:INAx=L,INBx=H,此时马达驱动端OUTBx输出高电平,马达驱动端OUTAx输出低电平时,马达驱动电流从OUTBx流入马达,从OUTAx流到地端,此时马达的转动定义为反转模式。
刹车模式的定义为:INAx=H,INBx=H,此时马达驱动端OUTAx以及 OUTBx都输出低电平,马达内存储的能量将通过OUTAx端NMOS管或者OUTBx端NMOS管快速释放,马达在短时间内就会停止转动。注意在刹车模式下电路将消耗静态功耗。
当输入信号INAx为PWM信号,INBx=0或者INAx=0,INBx为PWM信号时,马达的转动速度将受PWM信号占空比的控制。在这个模式下,马达驱动电路是在导通和待机模式之间切换,在待机模式下,所有功率管都处于关断状态,马达内部储存的能量只能通过功率 MOSFET的体二极管缓慢释放。
注意:由于工作状态中存在高阻状态,因此马达的转速不能通过PWM信号的占空比精确控制。如果PWM信号的频率过高,马达会出现无法启动的情况。
当输入信号INAx为PWM信号,INBx=1或者INAx=1,INBx为PWM信号时,马达的转动速度将受到PWM信号占空比的控制。在这个模式下,马达驱动电路输出在导通和刹车模式之间,在刹车模式下马达存储的能量通过低边的NMOS管快速释放。
注意:由于工作状态中存在刹车状态,马达能量能快速释放,马达的转速能通过PWM信号的占空比精确控制,但必须注意如果PWM信号频率过低会导致马达因进入刹车模式而出现无法连续平滑转动的现象。为减小电机噪音,建议PWM信号频率大于10KHz,小于50KHz。
PWM占空比可以实现对电机转速的调节,我们知道,占空比是高电平在一个周期之中的比值,高电平的所占的比值越大,占空比就越大,对于直流电机来讲,电机输出端引脚是高电平电机就可以转动,但是是一点一点的提速,在高电平突然转向低电平时,电机由于电感有防止电流突变的作用是不会立即停止的,会保持原有的转速,以此往复,电机的转速就是周期内输出的平均电压值,所以实质上我们调速是将电机处于一种,似停非停,似全速转动又非全速转动的状态,那么在一个周期的平均速度就是我们占空比调出来的速度了。
直流电机调速主要依赖于电压,以24V直流电机为例,在电机两端接上24V的直流电源,电机会以满速转动,如果将24V电压降至2/3即16V,那么电机就会以满速的2/3转速运转。由此可知,想要调节电机的转速,只需要控制电机两端的电压即可。因此,只要单片机输出占空比可调的方波,即PWM信号即可控制电机两端的电压发生变化,从而实现电机转速的控制。
代码如下:
/****
*******T1计时中断函数
*****/
void Timer0_Handler(void) interrupt 1
{
static uint motor_count;
static uint timer0_count;
TH0 = (65535-921)/256; //重新赋初值
TL0 = (65535-921)%256;
motor_count++;
if(motor_count >= 10) //定义一段周期
{
motor_count = 0;
}
if(motor_count < pwm_num) //调节占空比,从而调速
{
MOTOR_IN0 = 1;
MOTOR_IN1 = 0;
}
else
{
MOTOR_IN0 = 0;
MOTOR_IN1 = 0;
}
}
首先初始化引脚,然后初始化定时器,在定时器中断函数中定义一个周期,调节周期内高电平的占空比,从而调整速度。
在每间隔一段时间内,通过外部中断,下降沿触发的方式,计算触发了多少次中断,即有多少个脉冲,通过速度计算公式:
速度 = 脉冲数/转一圈的脉冲数 * 周长 / 时间
如果用霍尔传感器来获取脉冲,需要用到磁铁。
如果用光电对射传感器来获取脉冲,需要用到20栅格测速码盘。
首先初始化外部中断,配置成下降沿触发,初始化定时器,定时一段时间,在这段时间内,获取总的脉冲数。通过计算公式从而获取速度值。