Automatically-adjust-PID-parameters 用来根据控制响应数据给出下一轮 PID 参数建议。
它更适合这样使用:
- 先用本地分析确认数据和环境没问题
- 再用仿真模式熟悉调参流程
- 最后把同一套流程接到真实 MCU 串口上
这个项目不是 MCU 控制器本体,而是一个调参助手。
它会做这些事:
- 读取一段控制响应数据
- 计算超调量、调节时间、稳态误差等指标
- 把当前 PID、目标要求和历史记录交给模型
- 给出下一轮
Kp / Ki / Kd建议 - 在在线模式下把新参数发回设备
你可以把它理解成:
- 仿真模式下的调参练习工具
- 离线模式下的数据分析工具
- 在线模式下的串口调参工具
这个项目强调先把每一层单独跑通,再进入下一层:
- 先本地分析
- 再仿真
- 再监看串口
- 最后在线调参
这样更容易判断问题到底出在:
- 数据本身
- API key
- 串口链路
- 设备侧实现
项目围绕最常见的串口接入方式组织流程。
你可以直接使用:
monitor_serial.py做串口联调collect_data.py先采一份数据- 离线模式先看指标和建议
docs/mcu_reference.c作为 STM32 HAL 参考
对 STM32 来说,参考代码已经把这些入口提成宏:
- UART 句柄
- TX/RX 引脚
- 控制环名字
这个项目默认不是“算完就直接改参数”,而是先控制风险。
当前默认策略包括:
- 参数上下限限制
- 单次变化率限制
- 历史记录辅助判断
- 在线模式默认人工确认
- 等待设备
ACK确认
第一次使用前,至少确认这几项:
- 复制
config.example.json为config.json - 配置
DEEPSEEK_API_KEY,或者把 key 写进本地config.json - 如果你要接在线模式,把默认
COM3改成你电脑上的实际串口 - 如果你要接真实设备,确认 MCU 发出的控制环名字和本地配置一致
git clone https://github.com/Zw-awa/Automatically-adjust-PID-parameters.git
cd Automatically-adjust-PID-parameterspython -m pip install --upgrade pip
pip install -r requirements.txt建议使用 Python 3.10 或更高版本。
copy config.example.json config.jsonpython scripts/offline_analyze.py --file data/raw/example_speed_data.csv这一步最适合先做,因为它不依赖:
- API key
- 串口
- MCU
python main.py simulate --loop speed --iterations 1如果 API key 还没配好,这一步可能会在最后的 LLM 调用时报错。先看前面的分析输出是否正常。
python main.py simulate --loop speed --iterations 3适合:
- 第一次上手
- 没有硬件时先看流程
- 想先确认参数建议长什么样
python main.py offline --file data/raw/example_speed_data.csv --loop speed适合:
- 你已经采到一份数据
- 想先分析数据再决定是否在线调参
python main.py online --port COM3 --loop speed --interval 10说明:
COM3只是默认示例- 运行前改成你电脑上的实际串口
python scripts/monitor_serial.py --port COM3COM3 只是默认示例,运行前改成你的实际串口。
python scripts/collect_data.py --port COM3 --loop speed --duration 20COM3 只是默认示例,运行前改成你的实际串口。
python scripts/offline_analyze.py --file data/raw/example_speed_data.csvpython scripts/visualize.py --file data/raw/example_speed_data.csv先在 data/logs/ 里选一份历史文件,再把它传给 --history。
python scripts/convert_to_code.py --loop speed
python scripts/convert_to_code.py --all --format structAutomatically-adjust-PID-parameters/
├── core/ 核心逻辑
├── scripts/ 辅助脚本
├── docs/ 使用文档和 STM32 参考代码
├── data/ 示例数据和运行数据目录
├── site/ 静态说明页
├── tests/ 本地测试
├── main.py 主入口
├── config.example.json 示例配置
├── requirements.txt 依赖列表
└── README.md
如果你要接 STM32:
- 先看
docs/MCU集成指南.md - 再看
docs/mcu_reference.c
docs/mcu_reference.c 已经按 STM32 HAL 风格写成参考实现,UART 句柄、TX/RX 引脚和环名字都可以通过宏统一改。
通常表示:
- API key 无效
- 没配置 key
- 程序没有读到 key
通常先检查:
- 端口号是否正确
- 波特率是否一致
- 是否被其他程序占用
通常先检查:
- MCU 是否持续发送
DATA: loop名称是否一致- 串口监看脚本里有没有正常数据
本项目使用 MIT License。详见 LICENSE。