[DSP编程] 求教!28335实现电机PID控制

[复制链接]
 楼主| DODU 发表于 2023-2-21 20:59 | 显示全部楼层 |阅读模式
本人最近在TMS320F28335上实现BLDC的位置环PID控制,现在是在TI官网上用了他的PID代码,但是这个参数很多,而且网上对这个代码没有解释,而且PID调参又该怎么做呢,需要做系统辨识来仿真吗?求教!
  1. void pidcontrol(int position_expected, int position_actual)        //## 写成位置环,10kHz
  2. {
  3. //     #include "pid_grando.h"                         // PID头文件

  4. //        SP_normal=0.1;//先按照之前使电机旋转的值给pwm赋值

  5.         float output = 0;
  6.         ///*## 应该要采用增量式PID。这个代码看结构图应该是属于增量式PID。这个属于串级PID。
  7.         pid.param.Kp = 0.5;
  8.         pid.param.Ki = 0.005;
  9.         pid.param.Kd = 0;
  10.         pid.param.Kr = 1.0;
  11.         pid.param.Km = 1.0;
  12.         pid.param.Umax = 1.0;
  13.         pid.param.Umin = -1.0;

  14.         pid.term.Ref = position_expected;
  15.         pid.term.Fbk = position_actual;
  16.         PID_MACRO(pid);
  17.         output = pid.term.Out;        //## PID的输出改变占空比

  18.         SP_normal += output;        //## -=还是+=?

  19.         //##限定最大最小占空比,现在是随便定的阈值,需要修改
  20.         SP_normal = (SP_normal > 0.7) ? 0.7 : SP_normal;
  21.         SP_normal = (SP_normal < 0.01) ? 0.01 : SP_normal;
  22.         //##*/

  23. }
1426684678 发表于 2023-3-1 17:13 | 显示全部楼层
看不懂的小白路过,学习一些。
GlenX 发表于 2023-3-5 17:49 | 显示全部楼层
知道各种PID的使用和调试。
但不懂"DSP"。
有现象和结果可以参与讨论。
ColeYao 发表于 2023-5-10 13:42 | 显示全部楼层
本帖最后由 ColeYao 于 2023-5-10 13:46 编辑

  如图,灰色2为目标新位置(手动推杆),紫色3为电机实时位置,使用PID方式控制步进电机运行到新位置。红色和绿色为速度曲线,黄色为加速度曲线。从图中可以看出在光标处的设定位置为261120,电机的实际位置为261120,无运行偏差,并且位置曲线无震荡,速度曲线近似梯形。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
mbutterfly 发表于 2023-6-2 16:16 | 显示全部楼层
感觉,大公司的运动控制器都用ADI的DSP呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部