完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
本帖最后由 将军问鼎 于 2016-8-20 23:06 编辑 收到板子有一段时间了,近几日一直在研究两轮平衡车,废话少说,先展示我的一张产品图,接着我在给大家细细介绍:
先看一下结构下部是两个带有霍尔传感器的电机可以用来测速,使用的是交叉编码方式,电机驱动采用的是,TB6612驱动,还有在供电上,使用了一个降压模块,电机部分使用12V供电,开发板部分使用3.3V供电,陀螺仪采用MPU6050,
下面进行程序部分的讲解:
这部分是主程序,主要实现的功能是,5ms一次中断,来读取陀螺仪的数值,即采集当前平衡车的状态,同时,为了显示状态,添加了LED显示,LED显示采用的是计数方式来改变LED的亮灭,类似于PWM的模式。 小车的直立使用的是PD算法来处理的,小车的行走使用的是PID以及编码器反馈来精确定位,最后电机的控制采用MM32的PWM输出功能。
这部分是角度的换算,当单片机从陀螺仪读取到当前角度时,需要对原始值进行换算,并且需要进行滤波,这里,我采用的是卡尔曼滤波,加一介滤波,从而保证了数据的准确性,以及根据当前角度以及加速度对下次状态的预测来得到当前需要的调整数值, 关于PID算法的调整,还是很费时间的,大致过程是这样,先调P,首先确定PWM的输出最大值,即确定一个合理的P值取值范围,然后依次选择P值,观察小车状态,当小车开始振荡时,略微减小P值是小车不振荡,最终的P值即为当前值的0.6倍,然后调节微分参数D,调节的原则也是类似的,最后就是积分I,我首先说一下各部分的作用,比例P 的作用是让小车获得最后的力量来抵消当前即将不平衡的状态,D的作用是,在当前状态发生突变时,给系统一个很大的力量来消除外部的干扰,而积分I 的作用是 是小车以一种无限接近平衡状态的方式进行调整,当积分时间太长时,就容易造成小车短时间内如无法回复平衡状态,太短又容易有过调, 好了,本人水平也有限,希望大家批评指正,下面附上这次平衡车的代码:
MM32Balance.zip
(4 MB, 下载次数: 64
)
|
|
相关推荐
10 个讨论
|
|
只有小组成员才能发言,加入小组>>
2298个成员聚集在这个小组
加入小组896 浏览 0 评论
灵动微电子MM32全系列MCU产品应用手册,库函数和例程和选型表
13290 浏览 4 评论
【MM32 eMiniBoard试用连载】+基于OLED12864的GUI---U8G2
7191 浏览 1 评论
【MM32 eMiniBoard试用连载】移植RT-Thread至MM32L373PS
11713 浏览 0 评论
【MM32 eMiniBoard测评报告】+ 开箱 + 初探
4933 浏览 1 评论
896浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 23:10 , Processed in 1.184604 second(s), Total 74, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
11692