OpenEdv-开源电子网

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

STC8A8K64S4A12单片机PID调速调试记录

[复制链接]

2

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2019-4-24
在线时间
78 小时
发表于 2019-8-15 19:11:13 | 显示全部楼层 |阅读模式
    最近在家做电机的PID调速,制作成功,特此将调试过程分享出来。
    单片机使用的是STC8A8K64S4A12单片机(程序有兴趣的可以移植),使用的是普通的12v有刷电机,加上淘宝购买的红外对管加码盘反馈就构成了
QQ截图20190815180719.png IMG_20190815_180050.jpg
    原理图如下所示
QQ截图20190815181736.png
    整个硬件如上所示,我直接就开始了写程序,使用定时器1ms间隔模拟PWM输出(当然单片机自身带硬件PWM的),因为红外对管反馈回来的是方波,所以使用中断1进入中断的次数计算电机转速,调了好久发现电机总是抖动,pid计算程序如下所示
QQ截图20190815182145.png
    调pid调的我怀疑人生,最后开始反思自己的全部过程,就想从源头(电机的反馈频率数值)开始调一下,就用单片机串口输出测得的电机转速数值,发现在同样的转速下采集回来的数据抖动很大,有0xff的有0的有正常的,于是使用示波器测试反馈回来的波形,发现是这样的
IMG_20190815_175305.jpg IMG_20190815_175259.jpg
    也就是以上原因,在电机抖动的石油会有这样的抖动,导致单片机频繁进入中断,造成数据波动,于是想滤波,两种方法,一是使用软件滤波,在进入中断后适当延时100us,只是考虑这样占用运算时间,并且进入中断的时间太长,也不利于程序后期的移植,因为如果程序比较大的话这个100us还是很关键的,又想一进入中断马上关闭中断1,在main函数的主循环结束的位置打开中断1,又考虑到主函数运行时有时任务少,有时占用时间比较久(有运算有串口发送数据处理),所以使用硬件滤波,就使用了最简单的RC,经过测试波形发现,此时已经没有了杂波的影响,只是在频率比较高的时候,该信号直接成为了模拟量,所以又添加了二极管用来泄放电容上面的电压,之所以用SS14是因为正向导通压降低,如果使用4007或4148,压降0.7V,单片机会认为是1,也就不会有下降沿了,具体电路在原理图中有画,实测的波形如下所示。之所以先尖是RC滤波导致电压没有突变,当输出0后二极管器作用泄放电容上面的电荷,所以后面部分值直线下降。
IMG_20190815_174911.jpg
    得到稳定的输出脉冲后,用串口再次返回电机转速,发现此时速度已经没有大的波动,较小的波动也是在±1变化,为了达到最稳定添加了一个去最大值最小值求平均的方法。此时的电机转速就是很平的一根线了。我原来为了数据的平滑性是PID的采样周期设置的比较大,然后求平均,再缩小,在这个过程中产生了一个问题缩小的时候是对folat型数据做除法我将结果返回给了u16型数据,这样folat计算的小数直接存在了u16里面就是一个不确定大小的数,一般是比较大的数,因为folat不能使用左移的方法所以用了除,发现此问题后我本来想将除数设置为2的n次方的数字,达到左移的效果,后来一想输出的数据已经很平均了,想要缩小数据于是直接缩短了PID的采样周期,这样脉冲的计数值也直接小了下来。
    因为在13V的时候电机全速旋转,在我的硬件条件中,电机反馈回来的最大值为96,所以我将PWM的计数周期设置为了100,也是为了方便调整,让PID在运算的时候可以超调,开始调试之后先是使i参数d参数为0,只改变p,使电机有抖动在缩小p达到稳速,然后又调节i同样的方法,调整完毕后发现电机在电压比较高并且全速运行的时候稍微有点抖动所以添加了d参数,在电压改变的时候电机的转速返回值如图所示。
QQ截图20190815175913.png
    在调整的时候我是供电电压突然升高,发现电机也能很快的回到设定值,如下所示。该波形显示软件使用的@杜洋工作室出品的上位机,使用单片机对串口发送u8型数据就显示图形。
QQ截图20190815175955.png


程序.zip

59.67 KB, 下载次数: 270

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

使用道具 举报

2

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2019-4-24
在线时间
78 小时
 楼主| 发表于 2019-8-15 19:24:43 | 显示全部楼层
经过杜洋老师同意,特将杜洋工作室出品的上位机分享出来

串口波形分析V1.0@杜洋工作室.zip

16.53 KB, 下载次数: 300

回复 支持 反对

使用道具 举报

0

主题

131

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-1
在线时间
6 小时
发表于 2019-8-23 13:31:08 | 显示全部楼层
谢谢楼主分享
IIS7站长  http://www.iis7.com/
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-4-8
在线时间
3 小时
发表于 2020-4-25 10:02:37 来自手机 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2021-7-12
在线时间
7 小时
发表于 2021-7-12 21:03:49 | 显示全部楼层
谢谢楼主分享!
回复 支持 反对

使用道具 举报

5

主题

305

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1690
金钱
1690
注册时间
2018-11-28
在线时间
214 小时
发表于 2022-4-2 18:13:50 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 20:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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