智能小车吧 关注:8,374贴子:21,851
  • 2回复贴,共1

原创:电子罗盘控制智能小车旋转90度

取消只看楼主收藏回复

小车是52单片机四驱,[url]http://电子罗盘[/url]用的是GY-271模块, 芯片是HMC5883系列。花了一段时间摸索,用这种型号或类似的电子罗盘,大概需要3个步骤完成对智能小车方向的控制
1. 安装[url]http://电子罗盘[/url]。这个比较简单,注意的是电子罗盘怕磁场干扰,装的时候注意位置适当屏蔽,我用的是香烟盒铝箔纸包裹了一层,安放在车头底盘下面
2. [url]http://电子罗盘[/url]角度公式校正。这个网上有很多,因为从芯片读取的角度值旋转一圈轨迹并非标准圆,参考这篇文章(http://wenku.baidu.com/link?url=vDBgrSSNoT2GjW8uS9jMfupwUUrnZjcFlYeL1hVxhnpX4hoVBd3I2PxASPGry3YOHrij3JVKKqI5BFZPNubI7AmM4Of_3BvOPwlPIJ9wmiG)用matlab拟合曲线完成基本的校正,代入到程序计算角度(0-360度)的公式中
3. 方向旋转控制。 0-270度是线性变化的角度值,用判断就可以了。270-360度右旋转或0-90度左旋转,角度值不是线性递增或递减,处理的时候考虑用了sin[url]http://正弦函数[/url](用弧度)。开始怕单片机计算吃不消,不过还好,略有点延迟。
4. 最后的程序纠偏。 前面[url]http://电子罗盘[/url]校正得到的只是近似圆,如果需要再高一点的精度,可以用单片机程序进行校正。360度分成4个区间,根据测试旋转角度大小调整目标角度偏移。
另外如果使用PWM调速,因为52单片机的模拟IIC与PWM冲突(尚未解决),采取的是当需要改变小车方向时,关PWM中断及定时器。可以在操作完了重新打开。
[url]http://电子罗盘[/url]读取数据延迟是不可避免的,所以需要考虑在每次读取的时候增加延迟时间。
演示视频:
视频来自:土豆



IP属地:湖北1楼2014-09-22 10:21回复
    另外一个 前进一段时间右转90度的视频:
    视频来自:土豆


    IP属地:湖北2楼2014-09-22 10:22
    回复
      2026-02-14 06:51:08
      广告
      不感兴趣
      开通SVIP免广告
      上几张gy-271电子模块的安装图:


      IP属地:湖北通过百度相册上传3楼2014-09-25 09:02
      回复