基于AVR单片机的两轮自平衡小车设计
2013-11-20张飞云
张飞云 ,胡 静
(1.许昌学院 电气信息工程学院,河南 许昌 461000; 2.南召县电业局,河南 南召 474650)
移动机器人技术是目前科学技术发展最活跃的领域之一,而两轮自平衡小车又是移动机器人研究中的一个重要领域[1].两轮自平衡小车是一个高度不稳定的两轮机器人,它两轮同轴、车身中心位于车轮轴的上方、独立驱动、靠运动保持平衡[2].本研究从最基本的单轴动态平衡着手,通过优化PI算法,最终实现了仅用角速度传感器的多轴动态平衡达到在价格敏感产品中低成本、高效率,在价格不十分敏感的产品中和加速度相结合的效果.
1 系统Matlab仿真
为了保证方案的可行性,首先利用Matlab[3]里的simulink组件对系统的机械部分、传感器部分和PI控制器算法部分建立仿真模型,得到仿真系统运行效果图、系统对输入信号的跟随效果图和执行机构信号波形图分别如图1、图2和图3所示.
图1 仿真系统运行效果图Fig.1 Operation rendering of simulation system
图2 系统信号跟随效果图Fig.2 Follow rendering of system signal
图3 执行机构信号波形Fig.3 Signal waveform of actuator
在图1中,运动模型的底部水平部分可以左右移动.斜立的杆和底部运动部分的中点相连接,斜立的杆在仿真时可以左右摆动.在斜立杆的顶端是传感器信号采集点,系统整体姿态依靠对此点传感器信号的采集计算.在系统仿真时,斜立的杆左右摆动,完成对正弦波信号的跟踪,不会出现倒向一个方向的情况.由图2可知,传感器输出信号稍滞后于输入信号.执行机构得到的信号波形图和系统对输入信号的跟随效果图是同时基的.将两图结合起来发现,当传感器信号为正半周时,执行机构的信号刚好为负半轴,这证明了系统对偏差的纠正.当结构整体朝一个方向倾斜时,执行机构会产生反向力矩去矫正系统偏差并维持系统平衡.
图4 系统总体框图Fig.4 System overall diagram
综上可知,在上述系统硬件基础上利用比例与积分算法可以实现对传感器输入信号的跟随,使系统达到动态平衡.
2 硬件设计
2.1 所用器件
采用日本村田制作所制造的ENC-03R系列角速度传感器与ATMEL公司生产的AVR mega8单片机作为控制核心,以ST公司生产的L298芯片作为电机的驱动芯片,得到系统总体框图,如图4所示.
图5 角速度传感器电路图Fig.5 Circuit diagram of angular velocity sensor
2.2 电路模块
2.2.1 角速度传感器电路
角速度传感器采用日本村田制作所制造的ENC-03R系列传感器,系统角速度传感器电路见图5.该电路未采用官方提供的带低通滤波器的电路,而是直接对输出信号进行积分后输出.实验证明,ENC-03R传感器不采用官方提供的滤波放大电路而直接采集输出电压,传感器所需外围器件少,PCB布线也方便.经测量,此电路静态输出电压为1.35 V,最高电压不超过1.48 V,达到了很好的实验效果.
图6 基准电压源电路Fig.6 Circuit of reference voltage source
2.2.2 ADC基准电压源
系统采用LM317为ADC提供电压基准.该器件输出电压从1.2~37 V可调,并且有很高的输出线性度(0.01%),非常适合作电压基准源.由于传感器的最高输出电压为1.48 V,故选择1.48 V作为基准电压.基准电压源电路如图6所示,输出电压的计算公式如下:
AREF=1.25(1+R8/R9).
当R8=39 Ω,R9=220 Ω时,输出电压最接近1.48 V,符合系统要求.
图7 串行通信接口电路Fig.7 Interface circuit of serial communication
2.2.3 串行通信接口
由于AVR mega8单片机无JTAG接口,而系统需要根据实际情况调节一些参数,所以需要留出串行通信端口,串行通信接口电路见图7.
2.2.4 电机驱动电路
电机驱动芯片采用ST公司生产的L298,由于L298内部没有续流二极管,为了消除电机反向电动势对内部晶体管的伤害,所以外围电路中加入8支二极管来实现续流.图8中R1,R2均为3 W,0.5 Ω的电流采样电阻,方便后期的电流监控.
图8 电机驱动电路Fig.8 Drive circuit of motor
2.3 电机空载最低启动电压测量
自平衡小车系统使用maxon motor公司生产的伺服直流电机RE35,为确保系统响应趋于收敛,减少超调量,电机的调速应尽量平滑,设计中使用7.68 kHz的PWM来调节电机的转速.实验证明,直流电机存在空载最低启动电压.也就是说,如果电压低于它的启动电压,电枢绕组中虽然有电流,但产生的安培力不足以克服定子磁铁对转子的定向吸附力和转子转轴与定子接触面得摩擦力,以至于电机不转动[4].
为克服以上因素造成的影响,需要知道电机在多高电压器时启动,为此基于实验板编写了一段测试程序,将小车连接电脑,电机驱动板电压为7.2 V,经实验发现:(1)当PWM占空比为75%时,电机会发出刺耳的啸叫,但不会旋转,此时机端电压U=7.2×0.75=5.4 V;(2)当PWM占空比为77%时,电机开始运行,此时机端电压U=7.2×0.77=5.544 V.
图9 系统主流程图Fig.9 The main diagram of the system
以上实验结果表明,采用这种电机空载的最低启动电压为 5.6 V,在使用中,应该以这个电压为起点,否则电机将停转.
3 软件设计
3.1 PID控制算法
由于两轮自平衡小车系统是一个惯性环节,电机执行机构相对于传感器信号滞后,再加上没有使用加速度传感器,只使用微分环节可能导致系统的不稳定,所以在经典的PID控制理论中使用P(比例)和I(积分)来控制系统的平衡.
3.2 系统主流程图
系统主流程图见图9.
4 结束语
首先利用Matlab对两轮自平衡小车控制系统进行仿真,确定算法的可行性.然后,采用日本村田制作所的角速度传感器ENC-03R来组建陀螺仪系统,通过AVR mega8单片机完成对其信号采集与计算,并向电机驱动器发送信号去执行相应的动作,从而实现小车动态平衡的功能.
参考文献:
[1] 徐国华,谭民.移动机器人的发展现状及其趋势[J].机器人技术与应用,2001,14(3):7-14.
[2] 刘斌.两轮自平衡小车软硬件研发与基于模糊线性化模型的变结构控制研究[D].西安:西安电子科技大学,2009.
[3] 侯媛彬,汪梅,王立琦.系统辨识及其MATLAB仿真[M].北京:科学出版社,2004.
[4] 唐介.电机与拖动[M].2版.北京:高等教育出版社,2010.