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

TI训练营-简易PID项目

工程标签

164
0
0
0

简介

复刻立创PID训练营

简介:复刻立创PID训练营
电赛TI训练营-简易PID项目

开源协议

GPL 3.0

创建时间:2025-05-03 23:18:29更新时间:2025-11-17 16:15:42

描述

0 链接:

## 项目简介 本项目是基于MSPM0G3507(立创天猛星)的电机控制实验板,速度环,转速环双环串级PID控制。电流环预留功能。

1 项目功能

  • UI绘制
  • Flexible按键库扫描
  • 波形显示
  • 电机PID控制

2 原理解析(硬件说明)

2.1 输入防反接

输入使用NCE30P30K做防反接MOS,当Vgs<-1.6V时,MOS正向导通

(1)数据手册

1.栅极源极能承受耐压30V
2.持续漏极电流30A
(2)并联多电容,降低电容的寄生电阻,提高系统稳定性

2.2 电机驱动A4950

(1)A4950芯片带有限流保护措施
a.应用:只需要在芯片LSS和接地之间放置一个低阻值电阻
b.原理:低阻值电阻与VREF/10作比较,当电阻上电压大于VREF/10时,所有桥臂强制关断,由二极管续流,通过这种方法限制电流,类似运动控制系统中学到的,电流截止负反馈,因此此限的效果是比ACR电流调节器差的

芯片原理图

(2)

上图中两种调制方式电流纹波不同,是由于电流续流路劲的不同造成的
电流续流路径的不同导致 快衰减(Fast Decay)慢衰减(Slow Decay)

(a)红色左半部分特征为:一个PWM信号,一个0信号,得到的电流波形为脉动程度较大的
(b)红色有半部分特征为:一个PWM信号,一个1信号,得到的电流波形为脉动程度较小的


续流路径全为二极管回路时,电流续流路劲阻抗小,电流下降速度快,纹波大。

续流路径为二极管回路和MOS导通阻抗,电流续流路劲阻抗大,电流下降速度慢,纹波小。

(3)参考PCB LAYOUT

2.3 电流传感器INA199x1(预留电流环功能)

(1)原理解析
由于磁传感器的价格过于昂贵,所以本项目采用的传感器为运算放大器搭建的加法电路
带宽:80kHZ
增益: 50

可得到输出

Vo = 50 * (deltaV)+Vref

3. 软件代码

3.1 程序框架

3.1.1 后台定时器任务

  • 按键刷新,按键状态检测->绑定事件回调函数,刷新静态UI
  • 编码器数据读取

3.1.2 前台任务:执行高速任务while(1)

  • 波形绘制、PID计算
  • 参数页长按按键调参
  • PID参数显示

3.2 重点代码解析

  1. 在20ms定时器中判断任务是否使能(防止打断SPI通信、PID计算)
    if(get_task_status() ==  TASK_ENABLE)
    {//防止前台绘制波形时按键扫描打断SPI通信
        flex_button_scan();
    }
  1. 每个按键绑定回调函数,不同事件有不同回调,静态UI在此显示,动态UI改变标志位在while(1)循环中做处理
void btn_up_cb(flex_button_t *btn)
{
    switch(btn-&gt;event)
    {
        case FLEX_BTN_PRESS_CLICK://单击事件
            break;
        case FLEX_BTN_PRESS_LONG_HOLD://长按抬起事件
            break;
        case FLEX_BTN_PRESS_LONG_HOLD_UP://长按保持事件
            break;
        default:
            break;
    }

}

  • 绘制波形函数
uint16_t draw_speed_curve(int window_start_x,int window_start_y,int window_w,int window_h,int curve_color,int background_color,short int rawValue)  
  • UI状态机管理
    不同状态下对事件改变状态机
/**
 * @brief:
 * @parameter:statuss:    状态
 * @parameter:Event:      事件
                    -&gt;ENTER_EVENT
                    -&gt;QUIT_EVENT
                    -&gt;MOTOR_EVENT
                    -&gt;LONG_PRESS_ADD_START_EVENT
                    -&gt;LONG_PRESS_SUBTRACT_START_EVENT
                    -&gt;LONG_PRESS_END_EVENT
*/
void event_manager(SystemStatus *status, SystemEvent Event)
  • 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
typedef struct
{
    PID inner; //内环
    PID outer; //外环
    float output; //串级输出
}CascadePID;

注意事项

实物图

图1:3D结构图俯视图 图2:3D结构图侧视图 图3:运行视图

设计图

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

BOM

暂无BOM

3D模型

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

附件

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

工程成员

知识产权声明&复刻说明

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

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

评论

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

底部导航