KY-010槽型光电开关怎么接线?Arduino测电机转速避坑

2026-10-18 09:39:50 44阅读

想给直流电机加个转速反馈、做个计数装置,或者检测有没有物体从某个位置通过,槽型光电开关(也叫光遮断器)是很方便的方案。KY-010就是这类模块,靠红外光遮断产生脉冲。这篇文章讲接线和用它测转速的讲究。

槽型光电开关与Arduino电机测速接线图

三根线,数字输出

KY-010模块一般引出VCC、GND和信号S三个脚,槽缝宽度约5毫米。槽内一侧是940nm的红外LED,另一侧是光电三极管,物体从槽缝穿过遮断光线时,输出就会从一种电平翻转到另一种电平。

接线很简单:VCC接3.3V或5V,GND共地,S接Arduino的一个数字输入脚。不同批次模块逻辑相反——有的遮断时输出低电平、有的输出高电平,首次接线先用串口打印确认一下电平方向,别想当然。

部分需要上拉:如果发现悬空时信号乱跳,就在程序里把这个数字脚设为INPUT_PULLUP,或外接10K上拉电阻,让空闲状态稳定。

槽型光电开关测量电机转速RPM应用场景

测转速:数脉冲,换算RPM

测电机转速的标准做法:在电机轴上装一个带缺口的编码测速盘,让它从槽缝穿过。转一圈时,每个缺口会让光线一通一断,产生N个脉冲。用中断来数脉冲,再用公式换算转速。

在Arduino里,把信号脚接到中断引脚(Uno上用D2或D3),用attachInterrupt在上升沿计数;每隔一秒读一次计数值,rpm等于(脉冲数/每转缺口数)×60。比如一个编码盘有20个缺口,一秒内数到100个脉冲,对应转速就是(100/20)×60=300转/分钟。

为什么要用中断而不是延时轮询?因为电机转速高、脉冲频率快,轮询容易漏数,中断能保证一个不落。

三个高频坑提前避开

坑一:编码盘没对中槽缝,蹭到外壳产生摩擦或抖动误触发。要让盘居中、留足间隙再固定。

坑二:强光干扰。正午直射阳光或强红外环境会让槽内光敏误判,做户外项目给槽缝加个遮光罩就能避免。

坑三:高低频漏数。别在循环里用delay轮询,务必接中断计数。

跑通后,给小车加个速度闭环、做传送带计件、或者给打印机做个断线检测,都是很顺手的场景。


作者:野生极客一枚
链接:https://www.aiddithome.com/p/1c34bfae7ec91a.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
默默点赞的路人
1楼 · 2026-10-18 09:39:52

强光直射会误判,户外给槽缝加个遮光罩就稳了

好说好说
2楼 · 2026-10-18 09:39:51

编码盘要对中槽缝,蹭到外壳会抖动误触发,固定要留间隙

学生党玩机
3楼 · 2026-10-18 09:39:51

有的板逻辑相反,遮断时高低电平不一样,先串口打印确认一下

周五下班搞一搞
4楼 · 2026-10-18 09:39:50

测转速一定要用中断别轮询,转速一高轮询就漏数