电机驱动电路
智能小车电机的驱动芯片采用L293D。L293D是一款单片集成的高电压、高电流、4通道电机驱动,设计用于连接标准DTL或TTL逻辑电平,驱动电感负载(诸如继电线圈、DC和步进电机)和开关功率晶体管等等。L293D有4个通道,每个电机需要用到两个通道,以实现电机的正反转。4个电机就需要用到8个通道。本小车需要2片L293D电机驱动芯片。
为了简化为双桥应用,L293D每个通道对都配备了一个使能输入端。L293D逻辑电路具有独立的供电输入,可在更低的电压下工作。
L293D具有如下特性:
1、L293D每个通道的电流输出能力达600 mA
2、L293D每个通道的峰值输出电流达1.2 A(非重复)
3、便于使能
4、L293D具有过温保护
5、逻辑“0”输入电压高达1.5 V(高抗噪性)
6、内置箝位二极管
智能小车的调速
智能小车的部分实验中,电机不能时刻保持在全速运转的状态,需要控制小车速度才能完成一些特定的功能。比如在“智能小车循迹实验”中,如果小车速度过快,来不及反应做出方向的调整,小车会很容易跑离轨迹。PWM调速是目前电机的主流调速方式。
智能小车采用脉宽调制(PWM)的办法来控制电机的转速,从而控制智能小车的速度。在此种情况下,电池电源并非连续地向直流电机供电,而是在一个特定的频率下为直流电机提供电能。
不同占空比的方波信号,调节对直流电机的通断电,能起到对直流电机调速作用。这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上。
这样,改变L293D始能端EN1和EN2上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了直流电机转速。
电路中用微处理机来实现脉宽调制,通常的方法有两种:
(1)用软件方式来实现:
通过执行软件延时交替改变EN1和EN2输出逻辑状态来产生脉宽调制信号,设置不同的延时时间得到不同的占空比。
(2)用硬件方式实现:
硬件自动产生PWM信号,不占用CPU处理的时间。这就要用到具有硬件PWM功能的芯片,在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值可以调节。
智能小车控制板采用STC89C52RC芯片,不具备硬件PWM波形发生器,我们采用定时器中断来产生固定占空比的脉冲信号,定时器的作用是准确的计算脉冲时间。采用定时器中断来产生PWM波形,而不是软件延迟的方法,可以有效的提升CPU的工作效率。
智能小车PWM调速前进
有时候我们需要控制智能小车的速度,不希望智能小车全速前进。比如在“智能小车循迹实验”中,如果小车速度过快,来不及反应做出方向的调整,小车会很容易跑离轨迹,这样就需要调整控制智能小车的速度了。
那么怎么样实现智能小车前进速度的调节呢?调节智能小车的速度,实际上是调节电机的运转速度,PWM调速是目前电机的主流调速方式。智能小车采用脉宽调制(PWM)的办法来控制电机的转速,从而控制智能小车的速度。在此种情况下,电池电源并非连续地向直流电机供电,而是在一个特定的频率下为直流电机提供电能。不同占空比的方波信号,调节对直流电机的通断电,能起到对直流电机调速作用。这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上。这样,改变L293D使能端EN1和EN2上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了直流电机转速。
智能小车PWM调速前进程序源代码
unsignedchar pwmval_left = 0; //变量定义
unsignedchar pwmval_right = 0; //变量定义
unsignedchar pwmval_left_init = 10;
//左电机占空比调节,调节值在0到20之间,调节此值可以调节小车的速度。
unsignedchar pwmval_right_init = 10;
//右电机占空比调节,调节值在0到20之间,调节此值可以调节小车的速度。
bitright_pwm = 1; //右电机PWM开关,为1时打开
bitleft_pwm = 1; //左电机PWM开关,为1时打开
voidleft_moto(void)
{
if(left_pwm)
{
if(pwmval_left <= pwmval_left_init){EN1 =1; }
else{EN1 = 0;}
if(pwmval_left >= 20){pwmval_left = 0;}
}
else{EN1 = 0;}
}文章来源:https://www.toymoban.com/news/detail-418352.html
voidright_moto(void)
{
if(right_pwm)
{
if(pwmval_right <= pwmval_right_init){EN2= 1;}
else if(pwmval_right > pwmval_right_init){EN2= 0;}
if(pwmval_right >= 20){pwmval_right = 0;}
}
else{EN2 = 0;}
}
voidtimer0()interrupt 1 using 2
{
TH0=0xfc;TL0=0x66; //1Ms定时
pwmval_left=pwmval_left+1;pwmval_right=pwmval_right+1;
left_moto();right_moto();
}
voidtimer_init()
{
TMOD=0x01;
TH0=0xfc;TL0=0x66; //1ms定时
TR0=1;ET0=1;EA=1; //开总中断
}
voidmain()
{
timer_init();delay(10,100);
BEEP_IO=0;delay(100,100);BEEP_IO=1;
forward(); //调用前进函数
while(1);
}
从控制程序中我们可以知道,调节pwmval_left_init和pwmval_right_init的值就可以调节EN1和EN2上信号的占空比,从而调节左电机和右电机的运转速度,最终完成智能小车的运动速度。文章来源地址https://www.toymoban.com/news/detail-418352.html
到了这里,关于智能小车PWM调速原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!