Arduino三轮全向小车(一):编码马达

Arduino三轮全向小车(一):编码马达

​  近期准备做一个三轮全向平台,用来搞各种事情。于是先用Solidworks建了一个模型,运动算例搞了一番,还是不知所以然,干脆直接开始动手,变搞边学习。然而查阅网上各种资料高深莫测,看得我云里雾里,初学很是艰辛。所以就写几篇博客记录一下自己的学习过程。作为菜鸡,第一次发博,还请各位大佬多指正。

马达的选用

​  如果是要做小车的,选用什么样的马达是很重要的,需要考虑的一个方面。之前用Arduino做小车一般直接用减速直流电机,就是那种小黄马达。说实在的效果不是很好,所谓便宜没好货,拿去比赛各种问题接踵而至,但若不考虑其控制的精确性,只是用来实现移动,还算可以接受。

​  其实这算是一个开环控制系统,信号单向流通,由驱动板传向马达,马达没有反馈,因此其控制精度不会很高。就算它转速的控制很精准,但如果电池供电忽大忽小,或是地面阻力时强时弱,这些外界输入依旧会给小车的运动带来极大的不确定性。这种方案在要求稍微高一点的情况下,就是应当舍弃的。

​  为了解决开环控制的问题,人们自然而然地就想到了在马达上加一个传感器,让它可以返回它的各种运动参数。而我们一般用编码器来做这样的传感器。

编码器把角位移或直线位移转换成电信号

  这是百度对编码器的解释,简单来说,编码器可以把马达的转速转变为电压值传回,达到了闭环控制的目的。而装了编码器的电机,也就升级成为了编码电机。

  一般还有另一种选择,就是步进电机,步进电机也是开环控制电机,但它和我们平常见到的减速电机不同之处在于,它通过电磁学原理,能够精准地转过一个角度,实际上,它内部也有控制电路,会把当前的转角与目标转角进行比较,最终实现精确的控制,从原理上看,更像是舵机。

编码马达原理介绍

  讲了以上三种电机,到底该用哪一种呢?综合控制精度和实现难度来考虑,不论是独轮车,还是二轮车,还是三轮车,或是四轮车,一般我们都会选用编码马达。要会用编码马达,一定要学习一下编码器原理。下面就来做详细介绍:

角位移测量

如图所示

这张图分别展示了码盘的结构

  把码盘上面那个器件想象成一个光电传感器,能够侦测到每一道狭缝经过,这样返回的波形就是一个周期性方波,如下图。这样的话,数一数共有多少周期,就能计算出转动过的角度。而电机轴转过一圈有多少周期就称为编码器的分辨率。显然,分辨率越高,编码器测出的转角就越精准。当然不能一味地通过刻槽来提高分辨率,为了达到目的,一般将码盘安装在减速电机未经减速的一端,甚至理论上可以通过齿轮组使其转速更快。这样一来,轮子转过一圈,码盘就转了好几圈。比如一个减速比30的减速电机,其分辨率就增加到30倍。
  另外还有一种办法,能够注意到下面图中有两个方波,也就是相当于有两个光电传感器,或者是有两圈槽,测出的波形分别称为A B相,其相位差90度。若A相上行下行各计一次,B相同样,这样分辨率就又提高到四倍,效果立竿见影。

速度测量

  速度测量原理其实就很明了了,只要在测角位移的同时记录时间,位移除以时间即为速度。这里的难点在于用Arduino实现涉及到中断函数和计时函数,这会在下一篇详细进行介绍。

转动方向测量

  对于双相编码器,其目的主要并不是为了提高分辨率,而是为了测出电机转动方向。
在这里插入图片描述
原理是这样的:比如图中所示的情况,我们关注A相,当A相上行时可以看到B相是高电平,我们定义这时电机为正转,反转时,它们的相位差是原来的相反数,也就是负九十度。这是,A相上行时B相为低电平,这样即可简单地判断出电机转动方向。

总结

  关于马达就这么多了吧,编码马达一直在用,但直到最近才搞得比较清楚,本人也不是机械专业的,肯定有很多认识是存在偏颇的。若有不足,欢迎指正。
  下一篇会有Arduino控制编码马达的代码实现。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Arduino全向移动小车的软件系统设计主要涉及以下几个方面: 1. 控制板程序设计 控制板程序设计是整个系统的核心部分,主要负责与硬件进行通信,控制电机转动以及读取传感器信息等功能。在程序设计中,需要考虑到小车的运动控制方式,如采用差速驱动还是全向驱动,以及小车的传感器种类和数量等因素。 2. 远程控制程序设计 远程控制程序设计是指通过无线通信方式,通过其他设备控制小车的运动。该程序需要支持多个控制方式,如手动控制、语音控制、手机APP控制等,同时需要对控制命令进行解析和转换,发送到控制板进行处理。 3. 传感器数据采集和处理程序设计 传感器数据采集和处理程序设计是指对小车上的传感器进行数据采集和处理,如超声波传感器测距、红外线传感器检测障碍物等。该程序需要实现数据的实时采集和处理,以及数据的可视化展示。 4. 自主导航程序设计 自主导航程序设计是指通过算法实现小车的自主导航功能,如SLAM算法、路径规划算法等。该程序需要根据传感器数据实时更新小车的位置和环境信息,同时根据目标位置规划路径并控制小车运动。 综上所述,Arduino全向移动小车的软件系统设计需要考虑到小车的运动控制、传感器数据采集和处理、远程控制和自主导航等方面,需要综合运用多种编程语言和算法实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值