智能小车PWM调速原理 |
您所在的位置:网站首页 › 车子转速和速度的比例 › 智能小车PWM调速原理 |
电机驱动电路
智能小车电机的驱动芯片采用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 = 20){pwmval_left = 0;} } else{EN1 = 0;} } voidright_moto(void) { if(right_pwm) { 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上信号的占空比,从而调节左电机和右电机的运转速度,最终完成智能小车的运动速度。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |