OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5971|回复: 6

直流电机PID定速控制研究

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2019-3-26
在线时间
1 小时
发表于 2019-3-26 09:40:38 | 显示全部楼层 |阅读模式
直流电机PID定速控制研究
最近在研究有刷直流电机的PID转速控制,在网上买了学习套装就开始了各种学习。
具备的基础知识:
(1)PID的基础理论;如p,I,d的含义等等。
(2)理论PID与单片机离散式PID的区别,如何在单片机实现离散PID。
(3)STM32单片机的基本操作;如端口定义、按键、串口、定时器的PWM输出、定时器编码器模式操作等等。
在具备了以上知识后,当然我以前也用过STM32,也用过51和AVR单片机,对单片机的基本操作还是有基础的。
按照学习套件的源码进行了解析,我知道要想对电机转速进行定速控制,需要实时转速的反馈,所以第一个问题是找出源码中如何实现转速反馈的。
系统用了定时器的编码器模式实现转速的测量,其实这种模式无非就是能实现4倍频,和51单片机的计数器差不多。即先用一个定时器定时20ms,然后到时去取定时器的值,读完后清零。这个是和其它测速法是一样的。假定目标转速设定为50,即20ms内读取50个脉冲,但要记住此50个脉冲是编码器发出的,有4倍频的关系才能计算出真正的转速。
第二个问题:PID程序放的位置。这个其实就是利用其中一个定时器定时10ms进行中断,采集实时转速,然后计算应该输出的PWM值 。当时,为了减轻单片机负担,一般定时20ms检测一次。
第三个问题:PWM的输出和调制。利用定时器PWM的输出,轻松可以实现。但在实际操作中,还是有很多问题。好好看看STM32定时器在PWM模式下的操作。这里面,我们设定的PWM频率是10KHz,ARR定义为7199,即72000000/7200=10000Hz。所以为了调制PWM,此方波高电平的时间,最多就是7200。
我在研究这个问题的时候就是卡在了输出量上,因为在输出PWM时,肯定要限值,因为最大是7200,当通过PID计算后的PWM大于7200或者小于-7200时,都要调整为7200。
我就是想实时看一看输出的PWM是多少?
结果这个问题困扰了我三天。在我的想象中,PWM输出的值 肯定在7200以内,不可能比这个大。但是用串口发出的数据显示,这个数据大极了,一直是FFEA差不多。
后来,经过仔细研究发现,在KEIL中int定义的数是有符号的整型数,数据位数是32位。负数在存储器中存的是补码。由于眼瞎没看出来实际发送时用的是绝对值,而串口发送的是原值,导致送到电机控制芯片的是正值,而串口发的是负数,即补码,取反加一。所以串口中一直是比较大的数据。
研究明白后,不禁松了一口气。写了以上文字以示纪念。
总结:细心,耐心,不放弃。同时身边的器材要齐全,比如好的示波器、万用表等等。

dalei1999@163.com

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-5-21
在线时间
9 小时
发表于 2019-6-1 18:11:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2015-6-23
在线时间
112 小时
发表于 2020-6-14 07:27:33 | 显示全部楼层
经验难得,谢谢分享。
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1440
金钱
1440
注册时间
2020-12-21
在线时间
89 小时
发表于 2021-1-14 16:56:56 | 显示全部楼层
学到了
回复 支持 反对

使用道具 举报

3

主题

36

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1440
金钱
1440
注册时间
2020-12-21
在线时间
89 小时
发表于 2021-1-14 16:58:13 | 显示全部楼层
楼主能把代码资料发我一份看下吗,1250683837@qq.com
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3413
金钱
3413
注册时间
2015-4-19
在线时间
372 小时
发表于 2021-5-8 10:47:53 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2020-10-29
在线时间
13 小时
发表于 2021-6-1 16:29:20 | 显示全部楼层
??代码有吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 07:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表