基于 51 单片机配合霍尔传感器实现计数 + 转速测量

简介: 基于 51 单片机(AT89C52 / STC89C52 / STC12C5A60S2 等) 配合 霍尔传感器(A3144 / 44E / OH137 等) 实现 计数 + 转速测量,这是最经典、最稳定的入门级测速方案,广泛用于 电机测速、风扇转速、小车轮速 等场景。

基于 51 单片机(AT89C52 / STC89C52 / STC12C5A60S2 等) 配合 霍尔传感器(A3144 / 44E / OH137 等) 实现 计数 + 转速测量,这是最经典、最稳定的入门级测速方案,广泛用于 电机测速、风扇转速、小车轮速 等场景。


一、系统工作原理

金属齿轮 / 磁铁 → 经过霍尔传感器 → 输出脉冲 → 51 单片机外部中断计数 → 计算转速


二、硬件设计

1、 霍尔传感器选型(必须选对)

型号 类型 输出
A3144 / 44E 开关型霍尔 高/低电平(最常用 )
OH137 开关型 同 A3144
SS495 线性霍尔 模拟量(不适合本方案)

本方案只用开关型霍尔


2、典型接线(5V 系统)

霍尔传感器 51 单片机 说明
VCC 5V
GND GND
OUT P3.2 / INT0 接外部中断

OUT 口建议加上拉电阻(10kΩ)


3、测速安装方式

  • 电机轴贴 1 颗小磁铁
  • 或齿轮每转 1 个齿触发一次
  • 每触发一次 = 1 个脉冲

三、测速原理与公式

1、计数方式

  • 使用 外部中断 0(INT0)
  • 每来一个脉冲,计数变量 +1

2、 转速计算公式

1 秒测速法(简单直观)

转速(RPM)= 脉冲数 × 60

多磁铁 / 多齿修正公式

RPM = (脉冲数 / 每圈脉冲数) × 60

四、完整示例代码(Keil C)

main.c(可直接烧录)

#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

sbit LED = P1^0;      // 指示灯
uint pulse_cnt = 0;   // 脉冲计数
uint speed_rpm = 0;   // 转速

/* 定时器0:1秒定时 */
void Timer0_Init(void)
{
   
    TMOD &= 0xF0;
    TMOD |= 0x01;     // 模式1
    TH0 = 0x3C;       // 50ms
    TL0 = 0xB0;
    ET0 = 1;
    EA  = 1;
    TR0 = 1;
}

/* 外部中断0:霍尔脉冲 */
void Int0_Init(void)
{
   
    IT0 = 1;   // 下降沿触发
    EX0 = 1;
    EA  = 1;
}

/* 外部中断服务函数 */
void Int0_ISR(void) interrupt 0
{
   
    pulse_cnt++;
    LED = ~LED;   // 每来一个脉冲翻转一次
}

/* 定时器中断:1秒计算一次转速 */
void Timer0_ISR(void) interrupt 1
{
   
    static uchar cnt = 0;
    TH0 = 0x3C;
    TL0 = 0xB0;

    if (++cnt >= 20)   // 20×50ms = 1s
    {
   
        cnt = 0;
        speed_rpm = pulse_cnt * 60; // 1个脉冲/转
        pulse_cnt = 0;
    }
}

void main(void)
{
   
    Timer0_Init();
    Int0_Init();

    while (1)
    {
   
        // speed_rpm 即为当前转速
    }
}

五、串口输出转速

void UART_Init(void)
{
   
    SCON = 0x50;
    TMOD |= 0x20;
    TH1 = 0xFD;   // 9600bps
    TL1 = 0xFD;
    TR1 = 1;
    EA  = 1;
}

void UART_SendByte(uchar dat)
{
   
    SBUF = dat;
    while(!TI);
    TI = 0;
}

void Send_Speed(void)
{
   
    UART_SendByte(speed_rpm / 100 + '0');
    UART_SendByte(speed_rpm % 100 / 10 + '0');
    UART_SendByte(speed_rpm % 10 + '0');
    UART_SendByte('\r');
    UART_SendByte('\n');
}

六、提高精度的 3 个关键点

1、消抖(非常重要)

霍尔信号在边缘可能产生抖动:

void Int0_ISR(void) interrupt 0
{
   
    static uint last_time = 0;
    uint now = TH0;

    if (now - last_time > 5)  // 5ms 消抖
    {
   
        pulse_cnt++;
    }
    last_time = now;
}

2、多磁铁测速

磁铁数 公式
1 RPM = 脉冲 × 60
2 RPM = 脉冲 × 30
N RPM = (脉冲 / N) × 60

3、低速用“周期法”,高速用“频率法”

转速 方法
< 30 RPM 测周期(定时器捕获)
> 30 RPM 测频率(本方案 )

参考代码 基于51单片机控制霍尔传感器实现计数测速(附仿真) www.youwenfan.com/contentali/182295.html

七、常见问题排查

问题 原因
计数不准 未消抖 / 磁铁太近
转速跳动 定时器误差
无反应 霍尔接反 / 磁铁极性不对
一直触发 磁场干扰 / 上拉缺失

八、可扩展方向

LCD1602 / OLED 显示转速
多路霍尔(双电机测速)
PID 电机恒速控制
超低速周期法测速
改成 STC12 / STC15(1T 更快)

相关文章
|
1月前
|
传感器 算法 安全
基于STM32的测障测角小车设计与Proteus仿真
基于STM32的测障测角小车设计与Proteus仿真
Altium Designer如何设定/修改PCB板边框外形
Altium Designer如何设定/修改PCB板边框外形
4611 0
|
1月前
|
存储 物联网 BI
RFID车辆无感识别通行效率秒过
RFID车辆无感识别基于射频技术,通过车载电子标签与读写器毫秒级通信,实现3–10米远距离、非接触、免停车自动核验,通行仅需1–2秒,识别率≥99.9%,支持智慧停车、园区门禁、高速ETC等多场景,真正“秒过”无忧。(238字)
|
1月前
|
人工智能 搜索推荐 决策智能
从工具使用到智能体搭建:AI 能力全层级进阶体系
本文提出AI能力五级进阶体系(入门→专业),涵盖工具使用、场景组合、流程自动化、智能体搭建到定制开发,每层明确学习重点与能力标准。体系源自智能体来了×OPC中国多年实践,助力用户系统化成长,兼顾自学、教学与培训
|
1月前
|
人工智能 运维 数据可视化
非结构化数据处理,为什么是Dataphin?
Dataphin V6.1重磅推出非结构化数据处理能力,支持文档、音视频、图片等多模态数据的一站式资产化治理:提供7类50+开箱即用算子、可视化DAG编排、文件+元数据混合管理、细粒度权限与动态脱敏,实现与结构化数据统一治理、血缘追踪和版本管控。
286 2
|
1月前
|
存储 人工智能 弹性计算
阿里云产品与AI产品组合购活动更新:最新套餐配置与组合购价格参考
阿里云产品组合购活动更新,涵盖AI产品与云产品两大板块,覆盖90%+上云场景。AI产品组合购包含Open Claw经典套餐(78元起)、AI Agent搭建全套餐(112元起)、PAI ArtLab生图套餐(112.98元起)等,支持从个人助理到企业级Agent的快速部署。云产品组合购包含经典"99"计划、0代码建站套餐(域名低至1元)、安全加速全家桶、视频直播全链路服务等,适合个人开发者及企业用户按需选购。
|
1月前
|
人工智能 API 网络安全
如何在阿里云上部署Hermes Agent和Claude Code 配置 Token Plan 教程
在阿里云上部署 **Hermes Agent + Claude Code**,核心是先准备云服务器与百炼Token Plan,再分别完成安装、模型配置与协同对接,全程可在同一台轻量应用服务器完成,稳定且成本可控。
365 0
|
人工智能
Hi3DGen:2D照片秒变高精度模型,毛孔级细节完爆Blender!港中文×字节×清华联手打造3D生成黑科技
Hi3DGen是由香港中文大学、字节跳动和清华大学联合研发的高保真3D几何生成框架,通过法线图中间表示实现细节丰富的3D模型生成,其双阶段生成流程显著提升了几何保真度。
1594 32
Hi3DGen:2D照片秒变高精度模型,毛孔级细节完爆Blender!港中文×字节×清华联手打造3D生成黑科技
|
11月前
|
弹性计算 云计算
阿里云服务器如何实现自动伸缩
阿里云服务器(ECS)的自动伸缩功能可以通过弹性伸缩服务(Auto Scaling)实现,该服务能够根据业务需求动态调整计算资源。 **一、准备工作:** 在实现自动伸缩配置之前,需完成以下准备工作: 1.创建阿里云账号并完成实名认证。(登录账号过程中有不懂的可以看小编的教程帖) 2.开通弹性伸缩服务(ESS),使用弹性伸缩服务(ESS)实现ECS实例的自动伸缩, 弹性伸缩服务(ESS)可以根据业务需求自动创建或移除ECS实例,实现计算能力的动态调整。 3.创建专有网络VPC和安全组,以提高网络的安全性和隔离性。
|
传感器
示例四、 开关式霍尔传感器测转速
示例四、 开关式霍尔传感器测转速
1384 0
示例四、 开关式霍尔传感器测转速