- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
思卡尔两轮平衡车直立研究.doc
思卡尔两轮平衡车直立研究
摘 要 文章设计的是以飞思卡尔公司的MC9S12XS128单片机为主控制器,以陀螺仪和角速度传感器来获取小车的实时姿态,介绍了小车保持平衡的设计以及实现的方法,以及各个模块的使用缘由及使用的方法。
关键词 飞思卡尔;直立;平衡
中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2013)20-0028-01
本文介绍了以飞思卡尔单片机为控制核心的平衡直立车的设计方法以及直立算法的实现思路,其中有各个硬件模块以及软件各个函数的实现方法。实验证明小车能够稳定地保持平衡并在外界干扰的情况下能快速地做出反应,始终保持平衡。
1 系统总设计
本设计以飞思卡尔单片机MC9S12XS128为主控制器,主要由电源模块、电机驱动模块、加速度传感器陀螺仪模块、显示模块、串口调试模块构成。
2 硬件设计
2.1 电源模块
由于单片机、传感器模块、驱动模块的使能端用到的都是5 V的直流电,而本设计用到的是飞思卡尔的7.2 V、2000 mAh的飞思卡尔竞赛专用电池作为总电源,设计中各个模块所需的5 V直流电都使用稳压芯片LM2940来搭建。分别向单片机、加速度传感器陀螺仪、显示模块及串口调试模块供电。
2.2 微控制器
本设计是利用飞思卡尔公司的MC9S12XS128为控制核心,主要利用该单片机的A/D转换模块以及脉宽调制模块(PWM)、TIM定时器模块、PIT周期性中断定时器等模块。由单片机采集加速度传感器和陀螺仪的信号以及对这些信号的处理和相关运算将运算的结果传递给脉宽调制模块。最后由脉宽调制模块产生PWM控制电机的转动及转向来使小车保持直立。
2.3 加速度传感器以及陀螺仪
本设计利用陀螺仪ENC-03和加速度MMA7361二合一传感器模块来实现对小车状态的实时监控和采样。该模块自带有硬件滤波模块能由该模块的J口直接输出小车的角度值不用通过角速率对时间的积分来获取,也就是说软件方面我们只需要对采集回来的角度信号进行简单的处理,就能得到相应的角度变化,该模块的X口输出的是实时的角速度值,采集回来的数据经过简单的处理就能得到相应的角速度变化。
2.4 电机驱动
由于该车用的是直流电机且单片机输出的PWM脉冲因电流小而无法直接驱动直流电机所以需要用到驱动模块来驱动电机。本车采用的是直流电机驱动芯片BTS7970。直立车用到的是两轮驱动,且是两个电机分别带动一个车轮所以必须用到两个电机驱动模块,小车直立就相当于一个倒立摆所以需要电机能够前后转动,一块驱动芯片只能使电机向一个方向转动而小车需要前后都能转动就必须的用到四片驱动芯片来驱动两个电机,经过PID算法对电机的转向机转动速度进行控制达到使小车保持直立的效果。
2.5 显示模块
该模块用到的是OLED显示屏该模块主要用来显示小车的实时角度及加速度,更能和键盘模块配合直观方便地的直接调试系统的角度、角速度零点等各个参数以便小车能达到理想的效果。
3 软件设计
3.1 系统主函数
系统主函数主要是对显示模块的初始化以及单片机的A/D转换模块、PWM输出模块、PIT周期性定时中断模块、TIM定时器模块、锁环超频模块的初始化。
3.2 中断函数
小车不需要实时地姿态和控制电机,在本设计中我们就确定了一个控制周期和一个采集周期我们就用到了单片机中的PIT周期性定时中断我们把软件中用到的函数在中断中调用,本设计的采集周期为5毫秒电机的控制周期为100毫秒。
3.3 滤波算法
滤波算法是针对加速度传感器和陀螺仪的输出信号经过单片机的A/D转换之后的数值进行处理以减少数值的脉动对小车的平衡造成影响。因为本设计用到的传感器模块自带有硬件滤波,所以我们只需对A/D转换后的数据进行简单的处理,不需要复杂的卡尔曼滤波或者互补滤波,这里我们选择了均值滤波。分别把角度和陀螺仪的值传递给平衡控制函数,他们的准确性、稳定性和实时性就决定了小车保持平衡的稳定性。
3.4 平衡控制函数
该函数就是通过获取的角度和陀螺仪的信号经过PID算法得到的数据控制电机的转动。在本设计中用到的是PD算法,比例P使电机能快速地做出反应,微分D使小车能够消除抖动。
3.5 电机转速及转向控制函数
本设计中用到的是四个电机驱动,就要用到四个I/O口输出PWM控制电机其中每两个控制一个电机。每两个I/O口的其中一个输出由控制函数输出的PWM值另一个输出零就能控制电机的转动和转向。
由以上说明可知在电机的转速控制函数中我们就可以根据PWM值得正负来控制电机的转向了,电机的转速控制输出函数如下所示:
void Output() {
floa
原创力文档


文档评论(0)