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

如何在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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版