站内搜索
发作品签到
专业版

电赛PID

工程标签

68
0
0
0

简介

基于 立创·天猛星 MSPM0G3507 开发板制作的简易 PID 入门项目。对带编码器的电机,使用 PID 控制算法,实现 定速功能 和 定距功能,再通过屏幕显示出 PID 参数以及当前值与目标值的

简介:基于 立创·天猛星 MSPM0G3507 开发板制作的简易 PID 入门项目。对带编码器的电机,使用 PID 控制算法,实现 定速功能 和 定距功能,再通过屏幕显示出 PID 参数以及当前值与目标值的
电赛TI训练营-简易PID项目

开源协议

GPL 3.0

创建时间:2025-05-22 10:03:43更新时间:2025-06-10 11:15:09

描述

基于 MSPM0G3507 开发板的简易 PID 控制入门项目

一、项目背景与目标

PID(比例 - 积分 - 微分)控制是自动化领域的基础算法,广泛应用于电机调速、温度控制等场景。本项目基于立创・天猛星 MSPM0G3507 开发板,结合 BDR6126D 电机驱动与 0.96 寸 IIC 彩屏,实现带编码器电机的定速控制定距控制,帮助初学者通过硬件实践掌握 PID 算法原理与工程应用。

二、硬件设计

1. 主控选型:MSPM0G3507 开发板

  • 核心优势
    • 低功耗架构,支持休眠模式下 μA 级电流消耗,适配电池供电场景
    • 集成高精度 ADC(12 位,1MSPS)与多路定时器,满足编码器采样与 PWM 输出需求
    • 宽工作电压(1.8V~3.6V),兼容 3.3V 逻辑电平
    • 内置 FPU 浮点运算单元,提升 PID 算法计算效率

2. 电机驱动电路:BDR6126D

  • 芯片特性
    • 双通道 H 桥驱动,支持最大 1.2A 连续电流,适配中小功率编码器电机
    • 逻辑电平兼容 2.7V~5.5V,可直接与 MSPM0G3507 的 3.3V IO 口连接
    • 内置过流、过热保护,支持待机模式降低功耗
  • 电路设计
    • PWM 输入接口(IN1/IN2)连接主控定时器输出,实现转速调节
    • 使能端(EN)控制驱动电源通断,保障安全调试

3. 编码器电机接口

  • 适配类型:AB 相增量式编码器电机(推荐 100~500 线 / 圈)
  • 信号处理
    • AB 相正交信号接入主控定时器,利用正交解码功能计算转速与位置
    • 独立 GND 与 5V 电源引脚,通过 LC 滤波减少电机干扰

4. 显示单元:0.96 寸 IIC 彩屏

  • 技术参数
    • 分辨率 128×64,支持 RGB 色彩显示,实时绘制 PID 曲线
    • IIC 通信接口,仅需 2 个 IO 口(SDA/SCL),节省硬件资源
    • 背光亮度可调,适应不同环境光照条件
  • 显示内容
    • 实时速度 / 位置值、目标值、PID 参数(P/I/D)
    • 动态曲线展示当前值与目标值的偏差趋势
    • 工作模式(定速 / 定距)与故障状态指示

5. 按键控制电路

  • 按键配置:3 个功能键(模式切换、参数调节、确认)
  • 电路设计
    • 按键一端接 IO 口,另一端接地,利用内部上拉电阻简化电路
    • 软件防抖处理(延时 10ms),避免误触发

6. 电源模块:USB 5V 输入

  • 供电方案
    • 通过 Micro-USB 接口输入 5V,经板载 LDO(如 AMS1117-3.3)转为 3.3V 给主控供电
    • 电机驱动独立供电接口(5V~12V),支持外接电源适配器,避免主控与电机电源互相干扰
  • 电源管理
    • 电源指示灯(红色 LED)与工作状态灯(绿色 LED)
    • 防反接保护电路(肖特基二极管)

三、功能实现

1. 定速控制

  • 原理
    通过编码器实时采集电机转速(rpm),与设定目标值比较,经 PID 算法计算 PWM 占空比,调节电机转速至目标值。
  • 关键参数
    • 采样周期:100ms(可通过代码配置)
    • 速度范围:0~3000rpm,精度 ±1%
    • 动态响应:启动超调≤5%,负载突变时转速波动≤2%

2. 定距控制

  • 原理
    根据编码器脉冲数计算电机旋转圈数或位移,通过 PID 控制实现精准定位(如 “旋转 10 圈” 或 “移动 50mm”)。
  • 关键参数
    • 脉冲分辨率:支持自定义编码器线数(如 100 线 / 圈对应 100 脉冲 / 圈)
    • 定位范围:0~65535 脉冲,精度 ±1 脉冲
    • 应用场景:传送带定长输送、机械臂关节定位

3. 人机交互系统

  • 显示界面
    • 一级界面:实时速度 / 位置值、目标值、模式图标(定速 / 定距)
    • 二级界面:PID 参数调节(P/I/D 值分步显示)、参数保存提示
  • 按键操作逻辑
    • 短按 “模式键”:切换定速 / 定距模式
    • 长按 “调节键”:进入 PID 参数修改状态(P→I→D 循环切换)
    • 短按 “确认键”:保存参数并返回主界面

四、软件设计

1. 系统架构

  • 运行模式:裸机编程(无操作系统),采用 “中断 + 状态机” 架构
  • 核心模块
    • 主循环:界面刷新、按键扫描、模式判断
    • 定时器中断:PID 算法计算(100ms 周期)、编码器采样
    • IIC 中断:彩屏数据更新
    • 状态机:区分 “运行”“调参”“故障” 等状态

2. PID 算法实现(简化版)

  typedef struct

{

  float kp, ki, kd;       // 三个静态系数

  float change_p, change_i, change_d;           // 三个动态参数

  float error, last_error;   // 误差、之前误差

  float max_change_i;   // 积分限幅

  float output, max_output;       // 输出、输出限幅

  int target;                                     // 目标

}PID;

 

/****************************************************

功能:PID计算

参数:pid = pid的参数输入

     target = 目标值

     current = 当前值

返回:PID计算后的结果

****************************************************/

float pid_calc(PID *pid, float target, float current)

{

    //用上一次的误差值更新 之前误差last_error

    pid->last_error = pid->error;

    //获取新的误差 = 目标值 - 当前值

    pid->error = target - current;

 

    //计算比例P = 目标值与实际值之间的误差e

    float pout = pid->error;

    //计算积分I = 误差e的累加

    pid->change_i += pid->error;

    //计算微分D = 当前误差e - 之前的误差last_e

    float dout = pid->error - pid->last_error;

 

    //积分I 限制不能超过正负最大值

    if(pid->change_i > pid->max_change_i)

    {

      pid->change_i = pid->max_change_i;

    }

    else if(pid->change_i < -pid->max_change_i)

    {

      pid->change_i = -pid->max_change_i;

    }

 

    //计算输出PID_OUT = (Kp x P)+ (Ki x I)+(Kd x D)

    pid->output = (pid->kp * pout) + (pid->ki * pid->change_i) + (pid->kd * dout);

 

    //输出 限制不能超过正负最大值

    if(pid->output > pid->max_output) pid->output = pid->max_output;

    else if(pid->output < -pid->max_output) pid->output = -pid->max_output;

 

    //返回PID计算的结果

    return pid->output;

}

五、项目亮点与学习价值

1. 硬件亮点

  • 低功耗设计:MSPM0G3507 休眠电流 < 1μA,适配电池供电场景(如移动机器人)
  • 集成度高:IIC 彩屏仅需 2 个 IO 口,BDR6126D 驱动无需额外逻辑电路
  • 全插件封装:所有器件支持手工焊接,适合新手练习硬件调试

2. 学习价值

  • PID 控制:通过实际调参理解 P/I/D 参数对响应速度、超调量的影响
  • 电机驱动:掌握编码器测速、PWM 调速的硬件连接与代码实现
  • 嵌入式系统:学习裸机编程中中断、状态机、实时控制的设计方法
  • 工程实践:从硬件焊接到软件调参的全流程体验,培养故障排查能力

3. 扩展方向

  • 多电机协同:扩展至 2 轴差速驱动(如小车底盘)
  • 无线通信:增加蓝牙模块,通过手机 APP 远程调节 PID 参数
  • 自适应控制:实现参数自整定算法(如 Ziegler-Nichols 法)
  • 传感器融合:加入陀螺仪实现姿态控制(如平衡车)

六、适合人群

  • 单片机入门者:掌握 MSPM0G3507 定时器、ADC、IIC 等外设应用
  • 自动化爱好者:理解闭环控制原理,学习 PID 算法工程化应用
  • 学生 / 创客:完成课程设计、科创比赛的基础控制模块
  • 硬件开发者:练习低功耗电路设计与传感器接口调试

七、项目资源

  • 硬件资料:原理图、PCB 文件、BOM 清单(含立创商城采购链接)
通过本项目,学习者可直观理解 “目标值 - 反馈值 - 控制输出” 的闭环逻辑,为进阶学习工业自动化、机器人控制等领域打下基础。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
c74ad40585648f0312fb64b070b22441.mp4
0
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航