你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何在STM32上实现增量式PID转  

[复制链接]
又是一年春来到 发布时间:2016-6-14 13:52
虽然PID不是什么牛逼的东西,但是真心希望以后刚刚接触这块的人能尽快进入状态。特地分享一些自己如何实现的过程。
首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异。
资料上比较多的是:
111111.jpg



还有一种的算法是:

11112.jpg


这里主要介绍第二种,具体会分析比例、积分、微分三个环节的作用。

硬件部分:
控制系统的控制对象是4个空心杯直流电机,电机带光电编码器,可以反馈转速大小的波形。电机驱动模块是普通的L298N模块。
芯片型号,STM32F103ZET6

软件部分:
PWM输出:TIM3,可以直接输出4路不通占空比的PWM波
PWM捕获:STM32除了TIM6 TIM7其余的都有捕获功能,使用TIM1 TIM2 TIM4 TIM5四个定时器捕获四个反馈信号
PID的采样和处理:使用了基本定时器TIM6,溢出时间就是我的采样周期,理论上T越小效果会越好,这里我取20ms,依据控制对象吧,如果控制水温什么的采样周期会是几秒几分钟什么的。

上面的PWM输出和捕获关于定时器的设置都有例程,我这里是这样的:
TIM3输出四路PWM,在引脚 C 的 GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9输出
四路捕获分别是TIM4  TIM1  TIM2  TIM5   ,对应引脚是:  PB7 PE11 PB3 PA1
高级定时器tim1的初始化略不同,它的中断”名称“和通用定时器不同。具体的内容,请大家看一下我分享的代码就明白了。

程序.zip (2.51 KB, 下载次数: 147)
1 收藏 12 评论23 发布时间:2016-6-14 13:52

举报

23个回答
哈佛祖安智 回答时间:2016-6-14 16:30:49
那个4.6875怎么计算的呢?有什么理论依据没有?
jtc_88 回答时间:2016-6-14 17:10:20
恩 顶 不错的帖子
z258121131 回答时间:2016-6-14 21:49:20
学习啦,谢谢楼主
那片清茶 回答时间:2016-6-14 21:50:48
不错,赞 一个。
加拿大 回答时间:2016-6-15 10:13:39
,谢谢分享,学习一下!
zero99 回答时间:2016-6-15 15:37:33
谢谢楼主分享
lzts 回答时间:2016-6-15 18:40:38
谢谢分享, 学习了
mogogomo 回答时间:2016-8-5 17:21:00
学习中.....
sunnydevil 回答时间:2016-8-5 19:44:30
赞一个
123下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版