探索台式Segway的自动平衡控制

2013-08-22 06:29葛汶鑫张文燕
科技视界 2013年12期
关键词:台式马达小车

葛汶鑫 张文燕

(江苏省常州技师学院,江苏 常州 213032)

图1 Segway

Segway是一种可自动平衡的两轮单人车。它是由美国发明家Dean Kamen和他的公司DEKA R&D Corp(DEKA Research and Development Corp)发明,并随之创建了Segway有限责任公司。 Segway也被称为站立式滑行车。与传统的两轮滑行车区别在于Segway的两个小轮都在一条轴心线上。“Segway”这个名称源于单词“Segue”意思是流畅地流动。

图2 原理图解

Segway的运作主要是以动态平衡原理为基础,让小车能调节自身平衡。小车内嵌精密回转仪用来判断小车的即时状态,再由高速中央处理器计算出正确的指令来开动小车使之达到平衡状态。假设我们把整个车和驾驶员与地面垂直时的重力中心线作为参考轴线。当小车向前倾斜时(θ>0),小车内部的电动马达就会提供一个向前的动力。如此让小车平衡,然而与此同时,它也制造出了一个让小车向前的加速度。反之亦然。因此,驾驶员只需通过向前或向后倾倒来改变身体与参考轴线的角度,便能控制Segway向前或是向后行驶,并且Segway的行驶速度与驾驶员的身体倾斜度成正比。理论上,在有充足的电能的前提下,驾驶员不会有摔倒的危险。

探索台式Segway的自动平衡控制,首先要制作一个台式Segway。制作台式Segway需要一个连有两个小轮的电动马达和一个控制电动马达的嵌入式系统。在此次台式Segway的制作中,用到了Arduino,嵌入式系统L293D-H Bridge和传感器IMU 5DOF。Arduino是由一个意大利公开的硬件工程资源衍生出来的。其平台包括一个有简单I/O电路板的微处理器和一个与其对应的完整高效的软件环境。Arduino可以作为一个外部装置与个人电脑相连,并在电脑上运行Arduino软件来相互影响。L293D-H Bridge是一个有16个引脚的单片电路装置。它有两个驱动通道和转能晶体管,可用来改变马达转动的方向。除此之外,每个驱动通道都有一个使能输入,如ENABLE 1。L293D能通过内部逻辑产生使能信号来调整PWM (脉宽调制)从而控制马达的速度。传感器IMU 5DOF的作用是给控制算法提供反馈,它由双轴回转仪IDG-500和三轴加速度测量仪ADXL335组成。可读取被测物体的即时角速度和位置并把这些数据传输给处理器。台式Segway的系统图解如图5所示。

图3 Arduino

图4 IMU 5DOF

图5 台式Segway系统图解

图6是控制直流马达的电路连接图。引脚9是Arduino的6个I/O引脚中的一个,把它与L293D的使能引脚1连接起来控制马达的发动与停止。L293D的引脚8与外部电源的阳极相连为马达提供电能。L293D的引脚2和引脚7分别与Arduino的引脚6和引脚7相连,来接受Arduino中央处理器的发出的命令来转换马达的旋转方向。L293D的引脚4和引脚5与Arduino的GND(接地)相连最终接到电源的负极。图7是此次设计中台式Segway的最终模型。

图6 直流马达控制电路图

图7 台式Segway最终模型

Segway是控制倒立摆的典型例子。所以首先要找到可以补偿倒立摆动力学的控制原理。在这个项目中,我用了简单的bang-bang控制来实现了小车的自动平衡。Bang-bang控制应用在很多方面,如自动调温器。当室内温度太低时,火炉就开始发动加热;当室内温度过高时,空调便开启。此类控制就叫做bang-bang控制。Bang-bang控制是一个注重控制运算法则可靠性的控制器设计方法。其目标是确保控制系统在实际环境中安全运行的同时为控制系统找到最小的控制要求。控制器一旦被设计好,其参数就不再变化,控制性能也得到保障。一般来说,bang-bang控制系统的设计都是基于系统最坏的状态。很多系统都可以用bnag-bang控制来设计,尤其是有大量不确定范围或有很小的稳定边缘的系统。

图8 bang-bang控制自动调温器

如图7所示,固定在小车上的传感器ADXL335不断读取即时数据并将这些数据传送给Arduino处理。这里用ADXL335的引脚YAcc,其读取的数据反应了小车的即时倾斜角度。当小车平衡时,传感器读到的即时数据的范围是342到345,考虑到系统在实际环境中的最坏状态,为了使之更稳定,我适当扩大此数据的范围,在编写程序时将这个平衡范围设置为339到348。这样,当小车向前倾斜时,Y-Acc读到的数据就大于348,此时,Arduino下命令让L293D控制马达向前转动。当小车向后倾斜时,Y-Acc读到的数据就小于339,此时,Arduino下命令让L293D控制马达向后转动。如此,来控制小车实现平衡。脉宽调制PWM设定为185来发动马达。以上所选用的数据都来自于大量的测试。用Arduino软件所编的实现小车自动平衡的程序见附录I。

截取由传感器ADXL335的引脚Y-Acc读取的部分即时数据,调入Matlab经处理后生成一个反馈小车倾斜角度的图表。此图表展示了用bang-bang控制设计的台式Segway系统在实际环境中的工作状态。如图9所示,蓝色的线(几乎保持水平)表示了小车平衡时的状态,此时小车不受任何干扰,一直维持在平衡状态,倾斜角始终为0度。红色的线(呈波形状)表示了小车在受到外界干扰下的工作状态。此时,小车的倾斜角始终在以0度为中心,5度的幅度为范围内来回摇摆。由此可见,bang-bang控制成功地实现了台式Segway的自动平衡。

图9 Segway实际环境中工作状态

最终,一个用马达,传感器和嵌入式系统制造的台式Segway成功地实现了自动平衡。Bang-bang控制的使用使小车在实际环境中达到了稳定。

附录I

[1]https://www.sparkfun.com/products/9268,最后一次进入时间 2013.03.30[OL]

[2]http://www.fourmilab.ch/hackdiet/www/subsection1_2_3_0_5.html,最后一次进入时间 2013.03.30[OL].

[3]http://resources.metapress.com/pdf-preview.axd?code=xuq34u56204 74264&size=largest,最后一次进入时间 2013.03.30[OL].

[4]https://www.sparkfun.com/datasheets/Components/SMD/Datasheet_IDG 500.pdf,最后一次进入时间 2013.03.30[OL].

[5]http://hearth.com/econtent/index.php/wiki/8d1e6930d8db3a522ab33b88366567a 7/,最后一次进入时间 2013.03.30[OL].

[6]http://www.ecs.shimane-u.ac.jp/~kyoshida/Swing-up_control.pdf,最后一次进入时间 2013.03.30[OL].

猜你喜欢
台式马达小车
大车拉小车
自制小车来比赛
两轮自平衡小车的设计与实现
一种面向育种家的新型台式棉籽脱绒机
平潭石头厝里的“台式创业梦”
“马达”外公
枰中侠侣
马达螺纹水壶后盖注塑模具设计
台式恤压计测量结果不确定度评定