FC-03光电测速模块怎么测转速?Arduino脉冲计数喂给闭环

云台四足控硬件DIY 2026-10-15 08:49:58 4阅读 举报

想让小车走直线走稳、跑闭环PID,第一步往往是先知道轮子转得多快。FC-03是个U型槽光电测速模块,原理很简单:轮轴上装一个带齿或带孔的编码盘,让它从U型槽中间穿过,齿挡住光线时输出电平翻转一次,数这些脉冲就能算出转速。这篇文章讲清接线和计数方法。

先看模块结构:对射光电加比较器

FC-03内置一个对射式光电开关和一个LM393电压比较器。光路没被挡时,光敏管导通,比较器输出一种状态;编码盘的齿转过来挡住光路,输出就翻成另一种状态。所以它输出的是数字方波,每过一个齿就是一个脉冲,接Arduino的数字脚直接就能读。

模块一般引出VCC、GND、DO三个脚,有的还带AO。DO是数字输出,接主控数字脚;AO在很多板上是悬空没用的。供电给3.3V到5V都行,COMS电平,和Arduino直接兼容。

接线和测速逻辑

把编码盘套在电机(或车轮)输出轴上,让盘片的齿能自由穿过U型槽,别蹭到侧壁,然后把模块的VCC、GND、DO分别接到Arduino的5V、GND和一个数字脚。这一步共地一定要做好,否则信号不稳。

测速的关键是数固定时间里的脉冲数再乘回来。一般做法是:在loop里用millis计时,每秒统计一次引脚上电平变化的次数,记下编码盘的齿数(比如一圈20个齿),转速r/min就等于每秒钟脉冲数除以齿数再乘以60。比如1秒数到20个脉冲、一圈20齿,那就是1转每秒,也就是60转每分钟。

还有个细节:编码盘是装在电机轴上还是车轮轴上,算出来的转速含义不一样。装在电机轴上看到的是电机自身转速,装在车轮上能拿到车轮实际线速度;想知道小车跑多远,再用轮径把转速转成线速、对时间积分。闭环PID要控制的是哪个位置,反馈源就放在那个位置,所以底盘比例不同要记得换算。

算转速和三个高频坑

想把读数做准,用中断比轮询靠谱。把DO接到支持中断的引脚(比如Arduino UNO的2号或3号脚),用attachInterrupt配上上升沿,每次进入就计数,这样高速转动也不丢脉冲。有的编码盘直接印在车轮辐条上,属于自己画的“齿”,齿距不均会让转速略有抖动,闭环时加个滤波就行。

常见坑:一是编码盘没垂直穿过槽中心,光路切不干净,会少数脉冲;二是供电和共地没做好,输出毛刺多;三是齿数要把“一整圈的齿”数清楚再填公式,填错转速直接差了一个倍率。闭环PID要的就是真实转速反馈,FC-03这类模块成本低、响应够快,是入门小车很合适的选择。

版权声明:
作者:云台四足控
链接:https://www.aiddithome.com/p/6803a4b0cd66d.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
探头看一眼
1楼 · 1天前

共地没做好毛刺一堆,接好地线之后就干净了,闭环PID读数也稳了

阿强焊点总飞
2楼 · 1天前

用中断计数确实比轮询准,高速转的时候轮询会漏脉,这个建议实用

一圈齿数填对才不翻倍,我第一次以为一圈10个,实际20个,转速直接差一倍

板砖搬不动
4楼 · 1天前

编码盘没垂直穿过槽导致少数脉冲,我装歪了转速忽高忽低,摆正就稳了