最近一直在学习PID的相关知识, 上有很多心得和口诀,看完过后感觉自己好像是懂了一些,但让自己实践一下又感觉无从下手,举手无措。所以今天我决定,直接上手一个简单的电机速度PID试试。
准备阶段
-
一块主控板子 我这里刚好有一块原子的mini开发板,所以就用它了。其实任何一块最简单的STM32核心板都能完成功能。
-
一块电机驱动
电机驱动这里用的是L298N,使用非常简单。方向控制,其中一个高电平一个低电平就能控制电机转了,假设左边高是正转,那么右边高便是反转,同时为高或同时为低则不转。实际我们是输入两个脉冲波进行控制,脉冲的占空比决定转速。
电路搭建
串口初始化比较简单,不过串口通信协议需要按照匿名上位机的写,这个在上位机里有相关协议和例程。
-
定时器初始化
假定10ms控制一次
-
简单的PID程序
这大概是最简单的PID了
之后,加一些d,你会发现它没那么震荡了,这时候再稍稍调高一下p,如果对系统要求不高,就ok了。
这里加一句,p参数形象的理解就是响应速度,d就是阻尼。一个好的系统,既要有不错的响应,也应有适当的阻尼,稳定性才好。至于i,在pd调完之后,加一点,比如p参数的1/100,主要用于减少静态误差,但实际上我们都是动态控制,它可有可无。声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!