
简介一套基于STM32的非接触式转速测量仪完整工程资源面向嵌入式开发学习者、电子设计竞赛备赛者以及需要实现旋转体测速方案的技术人员。系统以STM32为主控搭配OLED显示、L298电机驱动和带编码器的三线电机通过按键调节转速并以非接触方式实现精准测速适用于工业、科研等场景。资源共272个文件压缩包约12.17MB主要包括C/H源程序、Proteus8.15仿真工程、Hex固件、PDF说明文档以及d、crf、o等编译中间文件目录结构清晰便于对照学习与二次开发。已有115人学习浏览。通过该资源可掌握STM32定时器/编码器接口、PWM调速、OLED显示驱动等关键模块的编程思路获得一套可直接运行的仿真与硬件参考设计还附有Proteus环境下的调试记录有助于快速搭建同类测速系统并理解非接触测速的完整流程。1. 给设备装一只“眼睛”YTCB2509 非接触式转速测量仪要解决什么问题在电机、水泵和输送线的日常巡检里大部分转速数据其实是用接触式转速表顶着轴心测出来的。手一抖、弹簧压力不够表头就打滑读数能偏出几十转碰上转速高过 3000 r/min 的场合摩擦生热还会让橡胶头加速磨损。YTCB2509 这类非接触式转速测量仪就是为这个场景准备的——它不碰转轴靠光电反射或磁感应对准齿轮、键槽或贴片反光纸把机械转速变成一列脉冲再换算成每分钟转数。型号里的 2509 只是该系列的一个固件基线号后面那串 20250323 通常对应出厂校准日期说明这台设备的标定点是在 2025 年春季重新校准过的里面包含了该批次传感器的灵敏度修正系数。这类设备适合三类人一是工厂设备科要装在线监测把转速信号送进 PLC 或 DCS二是在实验室做电机动态测试需要连续记录启停过程的转速曲线三是做自动化改造的工程师想在旋转机构上取速度反馈又不想改动原机械结构。它测量的是转速但真正考校的是“探头怎么对准、齿数怎么设、脉冲怎么处理”这三件细活下面我会按这条线把整个链路拆开讲。2. 从“转了多少圈”到“输出多少脉冲”非接触式转速测量的原理与探头选型2.1 三种常见非接触传感方式的取舍光电反射、霍尔磁感与电涡流非接触式转速测量的前提是“让转轴主动发出一个可识别的物理信号”。常见的做法有三种各对应不同的现场工况。光电反射式是在转轴上贴一小片反光纸探头内置红外 LED 和光敏三极管轴每转一圈反光纸掠过探头一次输出一个脉冲。优点是安装简单、像素级调试门槛低缺点是反光纸怕油污和粉尘而且必须在轴表面找一块能贴的位置。霍尔磁感式利用霍尔元件感知导磁体表面齿或槽引起的磁场变化适合直齿齿轮、联轴器齿盘这类带齿结构。它不怕油但要求目标材质能被磁化纯铝、铜件上不好使。电涡流式通过高频振荡衰减来感知金属接近对铁、铝、铜都有效是测量齿轮模数和安装间隙兼容性最好的方案但电路贵一些探头价格通常是霍尔式的两倍以上。选型时的判断标准很简单现场有没有现成的齿距离能不能控制在探头要求的间隙内YTCB2509 机身面板上一般有“探头类型”选择开关出厂默认按霍尔探头标定切到光电档位后内部放大增益会变化切换后必须重新做一次转速校准不能只改开关不标定。2.1.1 探头安装间隙和偏心是第一步误差来源探头到齿轮齿顶的距离一般有明确上限霍尔类不要超过 2 mm电涡流类可以放宽到 3 mm 但不同齿形差异很大这个距离在工作时要保持不变。工业现场最常见的问题是安装支架刚性不足开机后因振动把探头越带越远直到丢波或者幅值掉到比较器门限以下。装好后要手动盘车一圈用示波器看探头输出波形。波形并不是规整的方波而是像山峰一样的正弦波包络齿顶高时幅值大、齿槽处幅值小随转速升高峰的形状基本不变但频率变快。这一步不是为了看速度而是确认每个齿都产生了可触发的电平跳变。2.2 齿数 Z 是换算公式里的关键常量转速、频率与齿数的关系非接触式转速仪不会直接测量每分钟转数它测得的是脉冲频率 f。齿轮有 Z 个齿转一圈就会输出 Z 个脉冲于是转速 n 和频率 f 之间是线性关系n 60 · f / Z比如一个 20 齿的链轮探头输出频率 1000 Hz转速就是 60 × 1000 / 20 3000 r/min。这套换算逻辑是整个测量仪的基本盘。测量误差的最大来源其实不是计时晶振而是这个 Z 设错了。盖板或端盖是 30 齿你按 18 齿设进去读数会偏大 66%而且偏得极其稳定——这种“稳定的错误”最难排查。所以拿到设备后的第一件事不是接电源而是确认被测齿轮的实际齿数然后通过面板按键或者配置软件写进去。2.2.1 当齿数未知时如何估算 Z有时齿轮被防护罩包住拆罩子又违反停机规定那就要用外部手段估齿数。常见做法是在低速下用霍尔探头测出脉冲频率 f_low再用另一台接触式转速表同时读出实际转速 n_low用公式 Z 60 · f_low / n_low 反推齿数。取整后写进仪器再回到工作转速验证。注意反推出来的数值要接近整数才可靠。如果算出 19.4那说明原转速读数本身就漂了或者测量期间转速在波动需要换个更稳的工况重新取值。3. 信号调理与三种测速算法的选型区间从脉冲到稳定读数的必经之路3.1 比较器整形和滤波是探头信号的“清理工”传感器出来的原始信号通常是与转速相关的交变信号电压幅值随探头间隙和齿形深浅变化很大不能直接送入单片机定时器。仪器内部会先经过一个带通滤波器把齿面毛刺引起的高频噪声和 50 Hz 工频干扰一起衰减掉然后再进入迟滞比较器整形为 TTL 方波。比较器的迟滞量不能盲目加大。迟滞太大小信号齿会整体丢失迟滞太小信号边缘在临界幅值处会来回抖动造成额外脉冲显示转速会偶然跳高。厂家在出厂时会将迟滞设在标称探头最大安装间隙的 60% 幅值处现场若改动安装距离实际留出的迟滞裕度就会变化。3.1.1 判断整形质量的两个波形观察点用示波器观察比较器输出波形确认两个要点一是每个转速周期内的方波数是否正好等于齿数二是占空比是否稳定。转速越高比较器输出占空比变化越大若观察到两侧不对称超过 30%需要检查探头是否装歪、齿形是否磨损不均。3.2 M/T 法自动切换低速测周期、高速测频率是通用策略转速测量芯片内部算法决定了低频和高频段的精度分布任何固定算法都无法在全量程表现均衡。低速段频率低用测频法测得的脉冲数极少误差肉眼可见高速段测周法响应慢实时性跟不上。因此 YTCB2509 默认采用 M 法测频与 T 法测周自动切换的混合策略。M 法适用于较高转速区间在一个固定闸门时间 t_gate常见为 1 s 或 0.5 s内数上升沿得到计数值 N然后计算 f N / t_gate。转速越低N 越小误差相对越大。T 法用于较低转速区间测量相邻两个脉冲的时间间隔 T_pulse用 f 1 / T_pulse 得到频率。转速越高T_pulse 越短定时器量化误差的影响越大。3.2.1 两种算法衔接段的迟滞保护自动切换节点设在 600 r/min 附近并且在切换点留了 30 r/min 的迟滞缓冲区防止转速在节点附近轻微波动时算法来回切换导致显示值小幅跳动。这个缓冲区间不是固定不变的出厂设定值未必适合所有应用如果在节点附近观察到转速读数反复抖可以尝试把切换点调低或调高 50 r/min 来避开工作区。算法测量对象适用转速区间误差特点响应速度M 法闸门内脉冲数600 r/min 以上低速段误差大高速段误差小1 s 更新T 法相邻脉冲间隔600 r/min 以下高速段误差大低速段误差小单周期更新M/T 法同步测量时间与脉冲数全速段中速段最平滑切换点需供电无切换延迟3.3 闸门时间与刷新率的权衡面板上可设闸门时间或叫积分时间常见选项有 0.5 s、1 s、2 s。闸门越长M 法计得的脉冲数越多分辨率更高但转速读数的刷新延迟也越大转速突变时会感到明显的迟滞。对瞬态要求高的电机测试我通常设 0.5 s显示略有跳动但能跟上加速度对长期趋势监测或 DCS 记录设 2 s 能把微小波动滤平。设定闸门后如果现场对实时性要求高可以配合仪器的模拟量输出接口。模拟量输出的刷新率比前面板显示快得多适合接 PLC 的模拟量模块做闭环控制。4. 用定时器输入捕获跑通最小测速固件硬件接法与参数设定4.1 最小硬件连接霍尔探头、脉冲输出与电源地YTCB2509 背面常规配置是一组 12–24 V DC 电源端子、一组信号输出端子NPN 集电极开路或推挽输出和一组 4–20 mA 模拟量输出端子。接 PLC 时注意数字量输出是 NPN 型负载公共端要接正极输出端接 PLC 输入模块的输入端两者共地。探头的三根线定义依次是电源、信号、地和屏蔽层。屏蔽层应在仪表端单点接地不能两端同时接地否则会产生地环路。4.2 STM32 输入捕获测频代码框架M 法计数与 1 Hz 刷新下面用 STM32 定时器输入捕获的惯例写法展示如何实现 M 法测频。假设齿数 Z 为 20更新周期 1 s。#define TEETH_COUNT 20 static volatile uint32_t g_pulse_cnt 0; static volatile uint8_t g_measure_flag 0; void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim-Instance TIM2) { g_pulse_cnt; } } void rpm_calculate_task(void) { uint32_t cnt_now 0; float freq 0.0f, rpm 0.0f; if (g_measure_flag) { cnt_now g_pulse_cnt; g_pulse_cnt 0; g_measure_flag 0; freq (float)cnt_now / 1.0f; // 1 秒闸门 rpm freq * 60.0f / TEETH_COUNT; // n 60*f/Z } }代码里g_pulse_cnt在每次上升沿触发时自增rpm_calculate_task每秒读一次并清零。闸门时间在定时器中断里用另一路定时器控制代码中简化为 1.0 s。若想改闸门把除数同步改掉即可。参数要点TIM2 的预分频决定计数分辨率输入捕获不需要预分频直接设置为 1计数边沿选上升沿捕获中断必须先清标志再处理业务逻辑防止中断重入导致计数丢失。闸门不能低于一个脉冲周期否则会出现整秒内没有捕捉到脉冲的情况。4.2.1 引入缺失齿补偿齿轮在安装时大概率不是完全等分个别齿可能少一两毫米。这会导致每个旋转周期内脉冲间距不均M 法计数 1 秒内可能多算一个周期转速产生周期性波动。补偿策略是把最近一个完整旋转周期的脉冲间隔存储下来以它为标准对单个齿距做归一化。补偿逻辑的简化表述是正常情况下每转的脉冲数恒等于 Z缺失齿脉冲间隔会明显偏大超过平均间隔的 1.5 倍此时不增加计数而是将其视为两个正常齿的合并信号。4.3 齿数 Z 的写入与校准操作流程仪器调到设置模式进入 Z 参数项用数字键输入实际齿数保存后退出。校准步骤固定在设备通电预热 15 分钟之后进行因为内部参考电压在冷机状态下还没稳定。校准一般在两个转速点做低速点 300 r/min高速点 1500 r/min。用频闪仪或标准转速源作为参考基准分别记录显示值和参考值的偏差然后写入两点偏移量。这样中间段的非线性误差会被压住。提示更换探头型号后必须重新校准两点因为不同探头的敏感区长度和响应带宽不同原校准数据已失去参照意义。5. 现场排障与“低成本偏心诊断法”一个不用拆机的实用技巧5.1 读数忽大忽小别急着排查电路转速显示跳变大多不是仪表本身故障而是机械信号的问题。把仪表切到测频模式直接用听诊器式的频率计监听脉冲间隔。同一旋转周期内如果连续两个齿的脉冲间隔一长一短交替出现说明探头轴线和回转轴线不平行或者联轴器端面偏斜。这类偏心与齿轮本身缺陷的区别缺齿是偶发的间隔突增偏心是每半圈交替变化的规律性波动。5.2 用脉冲间隔极差做实时偏心预警很多场合不需要专门的振动分析仪转速仪自己就能当偏心粗筛用。在 T 法测周模式下连续采集 500 个脉冲间隔计算最大值 T_max、最小值 T_min 和平均值 T_avg然后定义偏心指标 DD (T_max - T_min) / T_avg正常装配的齿轮 D 值通常小于 0.1。若 D 值在 0.1–0.2 之间说明轴线存在明显不对中超过 0.2多半是齿轮啮合间隙过大或齿面局部缺损。整套逻辑在仪表内做一个统计页签就能实现不需要增加任何硬件。补偿启用前先确认偏心指标处于正常水平。如果 D 值本身异常补偿只会把机械问题“翻译”成更平滑的读数掩盖现场缺陷正确顺序是先恢复机械状态再启用软件补偿。5.3 把转速仪当成“诊断探头”使用检修涡轮泵时我习惯同时接上转速仪的脉冲输出和 4–20 mA 模拟量输出脉冲接 PLC 高速计数器看实时频率模拟量接 DCS 趋势记录看长期漂移。转速出现缓慢下漂但频率没变实际是齿数被改错频率和模拟量同时缓慢下降才是轴承阻力增大的早期信号。这两个输出端的联动判断比单看一个数的趋势可靠得多。最后提一个很实用但常常被忽略的做法当现场不便拆齿轮数齿时把转速仪切到 T 法测周模式在低速稳定工况下记录相邻脉冲间隔间隔数乘以转速就能反推出齿数误差在半个齿以内。这一招在不少检修现场救过急。本文还有配套的精品资源点击获取