找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15601|回复: 22
打印 上一主题 下一主题
收起左侧

自己用单片机做的双轮自平衡小车

  [复制链接]
跳转到指定楼层
楼主












控制器:ATmega16;8MHz;
加速度传感器:MMA2260;陀螺仪:EWTS82;
传感器的融合:卡尔曼滤波;
马达:EN_2342CR(速比64)+双路12脉冲编码器+CD40106对信号整形;
驱动板芯片:CD4001+IR2111+IRF1404(驱动电流可以很大);
注意事项:
1:IR2111的PWM不能到100%,否则不能充电;
2:由于轮速编码器精度不是很高,取得的信号要滤波,不然增强速度控制会发抖,不易控制;
建模、控制算法及PD调节的取值参考:

视频 :
http://v.youku.com/v_show/id_XMTgxNTAxOTA4.html
http://v.youku.com/v_show/id_XMTgxNTAzMTI4.html




其实控制很简单,利用定时器产生10ms中断,每次中断进行如下工作:
1:AD采样加速度传感器和陀螺仪,然后卡尔曼滤波得出角度与角速度;(滤波模块借鉴老外的)(互补滤波效果感觉不是很好);
2:计算车轮的速度,积分得出位置;
3:利用PD算法得出PWM值=K1*angle + K2*angle_dot + K3*speed + K4 * position;
4:前进后退给定参考速度计算即可;
注:
1:增量式轮速传感器A相中断,读取B相电位判断前进还是后退,在10ms的时间内累加,计算车轮的速度;
2:由于10ms累加的轮速信号不多,直接计算车体会发抖,所以增加了低通滤波,解决问题;
3:我在外面增加4个电位器可以手动调节4个K值,方便调试;
以上;

程序: 平衡小车.rar (1.44 MB, 下载次数: 461)

评分

参与人数 1威望 +5 黑币 +5 收起 理由
瑞雪 + 5 + 5

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:65771 发表于 2014-9-3 22:38 | 只看该作者
没想到这么复杂。。。。
回复

使用道具 举报

板凳
ID:65937 发表于 2014-9-11 18:52 | 只看该作者
给力,学习学习
回复

使用道具 举报

地板
ID:63427 发表于 2014-9-14 22:46 | 只看该作者
学习学习
回复

使用道具 举报

5#
ID:65585 发表于 2014-9-29 09:21 | 只看该作者
牛人啊,学习了!
回复

使用道具 举报

6#
ID:67152 发表于 2014-10-9 21:04 | 只看该作者
参考参考
回复

使用道具 举报

7#
ID:67214 发表于 2014-10-11 12:48 | 只看该作者
略显高大上。。!
回复

使用道具 举报

8#
ID:71012 发表于 2014-12-24 11:52 来自手机 | 只看该作者
也想做一个,不过得学习arm才行……
回复

使用道具 举报

9#
ID:72053 发表于 2015-1-12 13:11 | 只看该作者
研究研究
回复

使用道具 举报

10#
ID:76789 发表于 2015-4-13 00:10 | 只看该作者
高手在民间
回复

使用道具 举报

11#
ID:78077 发表于 2015-4-28 23:16 | 只看该作者
我像下载,没有币哦,怎么弄到币呢?
回复

使用道具 举报

12#
ID:78178 发表于 2015-4-29 06:30 | 只看该作者
技术范
回复

使用道具 举报

13#
ID:95068 发表于 2015-11-21 18:34 | 只看该作者
好贴,加精。我最近也打算做一个,希望能交流下,QQ478377690
回复

使用道具 举报

14#
ID:96613 发表于 2016-2-16 18:24 | 只看该作者
厉害。太厉害啦
回复

使用道具 举报

15#
ID:115056 发表于 2016-4-18 21:05 | 只看该作者
太棒了
回复

使用道具 举报

16#
ID:115056 发表于 2016-4-18 21:05 | 只看该作者
没有黑币怎么拿资料
回复

使用道具 举报

17#
ID:25103 发表于 2016-4-30 18:15 | 只看该作者

 给力,学习学习
回复

使用道具 举报

18#
ID:127462 发表于 2016-6-22 09:04 | 只看该作者
学习,学习一下,谢谢啦
回复

使用道具 举报

19#
ID:225422 发表于 2017-8-14 09:04 | 只看该作者
你好,你的那句“3:利用PD算法得出PWM值=K1*angle + K2*angle_dot + K3*speed + K4 * position;”,这句话中的这个PID公式是直接针对两个电机的,还是只针对一个电机,然后两个电机分别有这个公式,并且每个电机的PID三个参数是不一样的?
回复

使用道具 举报

20#
ID:232588 发表于 2017-9-12 22:13 | 只看该作者
头文件找不到啊
回复

使用道具 举报

21#
ID:232588 发表于 2017-9-12 22:16 | 只看该作者
这个里面程序的头文件,显示无法找不到呢
回复

使用道具 举报

22#
ID:237210 发表于 2017-10-4 11:29 | 只看该作者
好东东
回复

使用道具 举报

23#
ID:1092949 发表于 2023-9-8 09:38 | 只看该作者
以前只是看了一下架构,现在有详细的资料,学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表