
开源协议
:CC BY-NC-SA 3.0
(未经作者授权,禁止转载)描述
项目介绍
基于立创·天猛星 MSPM0G3507 开发板制作的简易 PID 入门项目。对带编码器的电机,使用 PID 控制算法,实现 定速功能 和 定距功能,再通过屏幕显示出 PID 参数以及当前值与目标值的动态曲线变化。
传统PID教学常止步于理论,缺乏可视化调试与实时参数优化的实战训练,该项目以“简化复杂理论、突出实践应用”为特色,是缩短PID学习曲线、提升竞赛实战能力的优质资源。
硬件使用立创·天猛星 MSPM0G3507 开发板作为主控,BDR6126D 作为电机驱动,屏幕使用1.9寸中景园SPI屏幕。电机接口适配市场上大多数编码器电机接口。
定速与定距功能说明
-
定速: 获取当前电机速度,然后根据设定的目标速度,让电机通过 PID 控制算法,使电机当前实时速度以最快的速度接近设定的目标速度。
-
定距: 根据电机旋转一圈的编码器脉冲数,确定电机旋转一圈为多少个 x 脉冲(x脉冲/圈),通过当前脉冲数和目标脉冲数,通过 PID 控制算法,使电机当前实时脉冲以最快的速度接近设定的目标脉冲,达到定距移动的效果。(简单来说就是让电机固定走多少步,走多了就退回,走少了就再走几步)
功能实现流程
功能实现流程:按键——按键事件——按键事件回调函数——事件(事件管理函数)——控制状态机
该项目在硬件上,除开发板外,仅使用一个编码器电机 + 电机驱动 + 屏幕 + 按键 + 电源。元器件全插件,方便焊接入门与练习。
焊接说明表
焊接组装完成展示(这里忽略了电机的安装孔与pcb板的开孔对齐,导致电机固定不了,大家引以为鉴)
项目在软件方面,使用裸机的方式编写驱动和逻辑,通过 轮询 + 中断 + 状态机 的架构完成项目。PID 部分不会大篇幅介绍背景、由来、模型等学术说明,将直接告诉你如何使用PID。最终可像 1 + 1 = 2 一样,直接将参数无脑带入公式,应用PID。

功能需求
- 屏幕显示二级菜单,通过按键选择;
- 屏幕显示PID曲线变化;
- 按键长短按控制和调参;
- 实现电机PID的实时定速调整;
- 实现电机PID的实时定距调整;
复刻过程
硬件部分
电源模块
type-c的EP引脚的作用是固定元件,开关也有两个固定引脚(可以接到地,将静电引到地)
两个电容:大电容(储能和滤低频波),小电容(滤高频波);电机开启瞬间会抢电(电源电压骤然降低),电容放电可以减轻这个变化
R1电阻:限流
电机驱动
BDR6126D芯片:接BI,FI两个pwm输入引脚,BO,FO(各两个)四个输出引脚;
可编码电机编码器:M+,M-连电机驱动芯片两个输出引脚,A,B相引脚接mcu的gpio(编码器测速),vcc接3.3v
电机3d模型:模型还是比较重要的,可以看到实际放置效果,器件之间会不会因为冲突放不下,随便找个元件,绑定一个和实际所要器件相似的封装(修改封装尺寸),再找商家要3d模型绑定
软件部分
1.9寸tft彩屏
使用四线SPI:SCLK,MOSI,MISO,CS
SCL时钟线,SDA数据线,RES复位线,
CS片选线,DC读写控制线,BLK屏幕背光控制线

驱动移植:
移动例程文件(协议层,驱动层,应用层)到新工程对应的文件目录下,在工程添加对应.c和.h文件
1.配置引脚,将TFT屏幕引脚适配SPI和GPIO;
2.配置底层硬件代码,适配软件SPI或硬件SPI发送和接收数据函数;
3.移植厂家驱动,适配厂商屏幕驱动函数;
(详见工程)
扩展--修改显示方向:
1.修改lcd初始化函数中写入0x36寄存器(控制显示方向)的值
2.修改协议层中行、列地址的起始地址和结束地址
3.修改宏定义中屏幕的宽度和高度
按键驱动
可以移植开源按键库
按键功能:
右键单击进一步(选择定距定速功能,进入调参状态,选择参数)左键退一步
右键长按开启关闭电机
上键,下键单击实现功能切换,调查状态下的参数切换,参数大小调节,长按实现参数大小快速调节
只有不处于调参状态才能切换电机状态(开启或关闭)
电机驱动和编码器驱动
这个比较简单,这里就不赘述了
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。









