【ROS2机器人入门到实战】从编码器说起-速度测量原理介绍

7.从编码器说起-速度测量原理介绍

写在前面

  1. 当前平台文章汇总地址:ROS2机器人从入门到实战
  2. 获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取
  3. 教程配套机器人开发平台:两驱版| 四驱版
  4. 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn

你好,我是小鱼。上节做完小车,遥控时小车前进时你应该会发现,小车很难走一条直线,但明明我们给到两个电机的PWM占空比都是相同的,原因在于每一个电机的硬件参数并不能完全的保证一致,所以当我们采用开环控制时,即使我们给到每个电机相同的电压,也不能让两个电机保持相同的转速。

要解决这个问题我们就要把开环控制改成闭环控制,我们要实现的是速度闭环,所以第一步我们要实现的是对电机速度的测量。

一、轮速测量原理

第一节中介绍过,我们采用的是AB磁编码器,编码器直接连接到了我们的单片机IO上,当电机转动时,IO上的电平高低就会产生变化,我们称这种电平从低到高再到低的过程称作一个脉冲。

因为有减速机的存在,当减速器的输出轴(轮胎)转动了一圈,我们会检测到多个脉冲。所以要想通过编码器得出轮子的速度,我们需要知道检测到一个脉冲时,轮子行走多远距离。

我们FishBot上的电机轮子直径为65mm,当轮子转一圈时产生N个脉冲,那么一个脉冲轮子前进的距离D可以这样计算,单位是mm。
D = 65 ∗ P I / N D = 65*PI/N D=65PI/N
下面我们将通过实际的测试确定D的值,已知D的情况下,我们测得,某一段时间 Δ T \Delta T ΔT(ms)内测得脉冲数为 P T P_T PT,则此时电机的转速为 V T V_T VT(m/s)
V T = ( ( P T ∗ D ) / 1000 ) / ( Δ T / 1000 ) = ( P T ∗ D ) / Δ T V_T = ((P_T*D)/1000)/(\Delta T/1000) \\ =(P_T*D)/\Delta T VT=((PTD)/1000)/(ΔT/1000)=(PTD)T

二、轮速测量原理

你可能会好奇,为什么我们的电机后面有两个霍尔传感器,用一个不就可以对电机进行测速了吗?原因是使用两个会更精准,同时可以测量方向。

我们把磁铁看作小汽车,AB两个传感器是一条路上前后两个摄像头,如果汽车是正着行驶的,你会发现总是A摄像头先看到汽车,然后再是B,但如果反过来行驶,则是B摄像头先看到设备。

			[A]  		[B]
-------------------------------------------------------------
	[汽车-->]								[<--汽车]
-------------------------------------------------------------

为了更加直观小鱼也分别用逻辑分析仪测量了两段轮子正转和反转时,AB编码器上电平的变化。

在这里插入图片描述

放大正转时,当A(通道0)电平为高电平后(A摄像头先看到了汽车),过了一段时间B(通道1)才变为高电平(B摄像头看到了汽车)。

在这里插入图片描述

放大反转部分,当A(通道0)电平为高电平后(A摄像头看到了汽车),在A之前B(通道1)已经为高电平了(B摄像头先看到了汽车)。

在这里插入图片描述

所以在代码中我们可以检测到当A通道从低电平变成高电平时,B通道的电平值,如果为低则表示正转,为高则表示反转。

三、总结

有了理论基础,下一节我们尝试编码验证。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值