搜索
bottom↓
回复: 107

一份完整的平衡车制作文档 [uC-OS II, Virtual COM,MFC C++, OpenGL]

  [复制链接]

出0入0汤圆

发表于 2012-6-5 21:32:25 | 显示全部楼层 |阅读模式
本帖最后由 xymeng 于 2012-6-5 21:54 编辑

我是学计算机的,闲暇之余也会做一些和电路有关的东西。去年暑假我对平衡车产生了兴趣,开始搜集各方面的资料,在这个论坛也学习了不少前辈的经验。下面我就分享一下我的成果吧。

对平衡车的制作,主要问题是车体状态的获取和PID参数的设置。在车体状态的获取方面,我使用的是基本的MMA7260加速度计和X3500W陀螺仪。X3500W我个人不推荐,因为没有官方的datasheet,不过由于其特性与ENC-03相似,我也就进行了些测试来估算其参数。事实证明效果还是比较理想的。PID的选取我参考了NXT-Way GS的模型。具体的应用请看源代码。

下面我简要介绍一下整个系统各部分的硬件和软件架构和实际的图片。
由于我非电子专业,身在国外受条件所限,有些零件的选择我不得不做出取舍。很多元件其实有更好的替代,大家不妨以批判性的眼光来看待。

首先是平衡车本身:

有经验的朋友通过这张图应该能够了解车是如何工作的。你可以对照源代码和原理图来验证。
有几点大家可能有兴趣:
(1) 我用了AD7899作为ADC。其实7899很贵,而且其精度和STM32自带的差不多(AD7899是5v 14bit版本)。为什么我要用这个呢?其实我用这个很大程度上是为了测试。在自带ADC下,我发现无线通信会影响ADC的读数大概十几个单位,所以我想外部ADC会受到较小干扰。鉴于我是免费得到的样片,所以焊接上后也无意再取下。
其实到现在我仍然很好奇是什么因素使得无线通信会影响ADC。由于手头无示波器,所以也很难找出原因。
(2) 我用了一个STM8S作软开关。其实用一些基本的零件也应能做到。但是考虑到手头零件不全,也就拿STM8S充数了。不过从另一方面,STM8S增加了扩展性。
(3) 我用了STM8S来作为马达控制器。这主要是参考了乐高NXT的设计,使得马达控制模块可以不加修改地用到其他地方。
(4) 我用了MMA7260和ADXL203分别作了测试,感觉实际效果差不太多。
(5) NRF905使用DMA模式与主控制器通信,是为了提高效率。
(6) 主控制器使用uC-OS II,以便于扩展。代码结构也更为清晰。

车体图片:

主控制器


马达控制器


电源


装配在一起测试


加装外壳




电池为Dual Sky 14.8v 1.7Ah 锂聚合物电池,装在车子的底座上。


下面是PC通信部分


通信部分我仍使用了一颗STM32F103ZE,通过DMA与NRF905相接,通过虚拟串口与PC相连。虚拟串口的好处是高的数据吞吐率和更强的稳定性,因为实际的传输格式是USB。
当然,你完全没有必要使用STM32103ZE这种级别的MCU,但由于我当时只有这种,所以也没办法。




PC端调试软件

其实我相当大的一部分精力都放在这里了。一个实时调试的软件对于平衡车这样的动态系统是相当重要的。为此需要设计一份通信协议和编写一些可视化的程序。另外通信部分必须放在另一个线程里,这样才不会干扰UI的更新。
这个调试软件的优点在于可以在任意时刻启动和断开通信,而不会影响车体本身。所有参数都可以随时调整,以实时观察车体的状态变化。
程序的稳定性经过考验,运行3个小时直到车体没电也没有出现问题。
整个程序是用MFC C++写的,使用的都是Windows底层API,可视化部分用了OpenGL 和 FreeType。程序有着良好的构架,而且比较简洁,有兴趣可以参考。


源代码和原理图(注意,原理图是不完整的,只包括必要部件。所有电路都是我手工焊接,画原理图主要是有助于我参考连线方式。)
另:马达控制的STM8S源代码我找不到了,等找到了再发上来。其实通过看通信协议自己写一个并不难。
PC调试软件请用Visual Studio 2010打开。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-12-16 13:46:08 | 显示全部楼层
整体成本并不高。

外壳+电路板 60 元
两个马达 200 元
陀螺仪 30 元
加速度计 30 元
控制器 两个STM32 80 * 2 = 160 元
子控制器 三个STM8 2 * 3 = 6 元
通信 两个 NRF905 55 * 2 = 110 元
开关降压 8 元
运放,电阻,电容等 30 元
AD7899 很贵,但是可以用自带的ADC,成本忽略

材料总体成本 634元

出0入0汤圆

 楼主| 发表于 2012-12-16 14:09:51 | 显示全部楼层
有人想看视频,所以我上传了一段。

用PS3的无线控制器遥控。

注意:这个是改进过的,与上传的程序稍有不同。

http://v.youku.com/v_show/id_XNDg5MDMwMjcy.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 05:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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