• 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于51单片机的直流电机PID调速电压电流功率控制系统设计

11/27 17:45
4025
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1. 系统功能介绍

点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/91926477

本设计基于 51 单片机实现直流电机 PID 调速电压电流功率控制系统。系统采用按键输入目标转速值,通过速度采集模块实时检测电机实际转速,并利用 PID 控制算法调节驱动 PWM 占空比,使实际转速快速且稳定地追踪设定目标。为提高系统可视化与可操作性,设计中加入 LCD 显示模块,用于实时显示电机运行参数,包括目标转速、实际转速、电流、电压及当前输出功率,便于用户监控电机运行状态与负载变化情况。

整个系统兼顾精度、稳定性与可扩展性,通过 PID 控制保证电机在不同负载变化下保持稳定速度。同时在电压电流测量基础上计算出实时功率,使系统不仅具备调速能力,还具备运行状态监测和能耗分析能力,适用于教学实验、智能风机、自动化设备以及电机性能测试平台等场合。


2. 系统电路设计

系统硬件整体由单片机最小系统、直流电机驱动电路、霍尔测速模块、电压采样电路、电流检测模块(如 ACS712)、按键输入模块、LCD1602 显示模块、电源调理模块等部分组成。本节将从各模块的功能与电路原理出发,详细介绍设计细节。

2.1 单片机最小系统电路

系统核心采用 STC89C52(兼容 51 架构),负责整个控制逻辑的执行、数据采集、PID 运算与显示驱动。

其最小系统包括:

单片机提供 PWM 输出端用于控制电机驱动器的占空比,同时需通过外接计数输入脚读取霍尔测速信号。

2.2 直流电机驱动模块(L298N 或 BTS7960)

为了驱动直流电机,系统选择常用 H 桥驱动模块:

  • L298N 驱动器
    • 支持直流电机正反转
    • PWM 控制占空比调节电机速度
    • 最大电流 2A,可满足一般实验需求
  • BTS7960 驱动器(大电流场景)
    • 双全桥结构,持续电流可达 43A
    • 驱动效率更高,适合大功率电机

驱动模块输入 PWM 信号即可调节电机转速,通过 OUTA、OUTB 输出端连接电机两极,内部包含续流保护二极管

2.3 霍尔测速模块

为了获取实际转速,系统采用霍尔式测速模块或红外光电测速模块。

其原理:

  • 电机轴端安装磁铁或测速盘
  • 模块检测磁场变化或光闸变化
  • 输出方波信号给单片机计数器
  • 根据单位时间脉冲数计算实际转速

测速模块输出为 TTL 数字电平,可直接输入 51 计数器 T0 或 T1 的计数口。

测速公式示例:

实际转速 RPM = (脉冲数 / 每转脉冲数) × 60 / 测量周期

2.4 电压采样模块

为了计算电机运行状态中的电压值,本设计通过分压电路将电机供电电压采样并输入 ADC 模块:

  • 采用电阻分压,如 R1=10kΩ、R2=2kΩ
  • 将电机端较高电压降至 0–5V 以下
  • 再输入至 ADC 芯片ADC0832 或单片机带 ADC 扩展模块

采样值将还原为原始电机电压用于功率计算。

2.5 电流检测模块(ACS712)

系统采用霍尔电流传感器 ACS712 用于电流测量:

  • ACS712-5A 型:适合小功率电机
  • 输出模拟电压与电流线性对应
  • 需输入 ADC 执行采样

采样到的电流值用于:

  • 功率计算(P = U × I)
  • 保护策略(如过流提示)

2.6 按键输入模块

按键主要用于:

  • 设置目标转速
  • 调节参数(可选:PID 参数调节)
  • 切换显示页面(可选)

按键采用上拉输入结构,按下为低电平,配合软件去抖处理。

2.7 LCD1602 显示模块

采用 LCD1602 或带 I²C 扩展的 LCD1602:

  • 实时显示:
    • 目标转速
    • 实际转速
    • 电压值、电流值
    • 输出功率
  • 显示稳定、直观

模块通过 4 位或 I²C 接口与单片机通信。

2.8 电源模块

整套系统电源包含两部分:

  • 电机供电(如 12V)
  • 控制系统供电(5V DC-DC 稳压)

同时加入滤波电容抑制电机电磁干扰,保证安全与稳定性。


3. 系统程序设计

程序以单片机为核心,采用循环查询 + 中断计数方式,完成数据采集、PID 计算、电机驱动、按键处理与显示等功能。系统采用模块化结构,便于维护升级。

3.1 主程序整体结构

主函数负责初始化与循环调度:

void main()
{
    Init_All();
    while(1)
    {
        Key_Process();
        Read_Speed();
        Read_Voltage();
        Read_Current();
        Calculate_Power();
        PID_Calc();
        Update_PWM();
        LCD_Update();
    }
}

程序按照固定周期读取传感器、计算 PID 并刷新 PWM,实现闭环控制

3.2 速度采集程序

利用定时器计数功能测量每一周期脉冲数:

void Read_Speed()
{
    pulse = Get_Pulse_Count();
    speed = pulse * 60 / Pulse_Per_Turn;
}

通过测得 speed 与目标转速 targetSpeed 比较,为 PID 提供输入。

3.3 电压采集程序

unsigned int Read_Voltage()
{
    adc = ADC_Read(0);
    voltage = adc * Vref / 1023 * Divider_Ratio;
    return voltage;
}

通过分压比恢复真实电压。

3.4 电流采集程序(ACS712)

float Read_Current()
{
    adc = ADC_Read(1);
    float Vout = adc * 5.0 / 1023;
    current = (Vout - 2.5) / 0.185; 
    return current;
}

公式依据 ACS712 输出特性(每 A 电流对应 185mV)。

3.5 功率计算程序

void Calculate_Power()
{
    power = voltage * current;
}

用于显示与负载分析。

3.6 PID 调节程序

PID 控制核心:

float PID_Calc()
{
    error = targetSpeed - speed;
    integral += error;
    derivative = error - lastError;

    output = Kp*error + Ki*integral + Kd*derivative;

    lastError = error;

    return output;
}

为防止积分过大,可加入积分限幅:

if(integral > 200) integral = 200;
if(integral < -200) integral = -200;

3.7 PWM 输出更新程序

void Update_PWM()
{
    if(output > 255) output = 255;
    if(output < 0) output = 0;

    PWM_SetDuty(output);
}

输出限制防止 PWM 越界。

3.8 按键程序设计

void Key_Process()
{
    if(KEY_UP == 0) { Delay(10); if(KEY_UP == 0) targetSpeed += 10; }
    if(KEY_DOWN == 0) { Delay(10); if(KEY_DOWN == 0) targetSpeed -= 10; }
}

用户可通过按键灵活设置目标转速。

3.9 LCD 显示程序

void LCD_Update()
{
    LCD_ShowString(0,0,"T:");
    LCD_ShowNum(2,0,targetSpeed);

    LCD_ShowString(8,0,"S:");
    LCD_ShowNum(10,0,speed);

    LCD_ShowString(0,1,"U:");
    LCD_ShowNum(2,1,voltage);

    LCD_ShowString(6,1,"I:");
    LCD_ShowNum(8,1,current);

    LCD_ShowString(12,1,"P:");
    LCD_ShowNum(14,1,power);
}

清晰显示各关键运行参数。


4. 总结

本设计构建了基于 51 单片机的直流电机 PID 调速电压电流功率控制系统,利用霍尔测速模块实现转速采集,通过 PID 控制算法实时计算电机 PWM 输出信号,稳健实现直流电机的精确调速。同时通过电压、电流测量模块实现运行参数监测,并在 LCD 上实时显示,使系统具备监控、分析、调节三合一的完整功能结构。

系统具有结构清晰、控制精准、扩展性强等特点,可用于教学、实验、电机测试平台以及智能电机调速应用场景。

相关推荐