找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1737|回复: 4
收起左侧

关于单片机PID驱动步进电机控制阀门的思路

[复制链接]
ID:997026 发表于 2023-1-3 16:30 | 显示全部楼层 |阅读模式
大家好,

我现在需要做一个产品,该产品主要用来稳定气体流量,也就是通过一个步进电机来控制阀门开合,流量大了,就把阀门开小一点,流量小了,就把阀门开达一点,通过步进电机不断调节阀门开度来把气体流量最终稳定在某一个值。
这个阀门是自带流量检测传感器的,可以实时测量从阀门流过的气体流量。

比如我现在要把流量稳定在10L/min,阀门传感器检测到当前流量是5L/min,那么单片机需要控制步进电机把阀门开大一点,这里是闭环控制,10L是目标值,5L是测量值,通过PID算法控制步进电机,进而控制阀门开合。

这里有个问题,这种应用场景,我理解是不是不需要计算步进电机的转动角度了?也就是不需要计算步进电机当前在什么位置,然后转动多少位置了?所以也不需要编码器之类的东西来记录步进电机位置了?不知道我的理解对不对?

因为我的最终被控对象是流量大小,当单片机接收到设置流量与当前流量的差值后,将差值反馈给单片机PID,PID根据这个差值计算出一个值,然后用这个值去控制步进电机驱动阀门转过一定角度,所以这里要把这个流量误差值转换为对应的阀门转动的角度值,这里不知道怎么对应起来?

假设我的阀门的最大开度是720度(开度范围0~720度),如果0开度对应流量是0,720度开度对应流量20L,此时PID计算后得到的增量值为X, 设阀门需要转动的角度为Y,那么20/720=X/Y,通过这个式子可以计算出Y的值,也就是步进电机驱动阀门转动的角度。不知道我的理解对不对?

所以总结下,
应该全程都不需要记录步进电机的位置,只需要计算流量误差值与阀门转动的角度的对应关系就行了。
比如这次我把流量稳定在10L,然后我关机了,然后再开机,设置流量稳定到15L,那么上一次电机和阀门应该停在10L位置,这次设置到15L后,PID启动,检测到误差值,PID会不断调整电机位置然后让其稳定在15L。所以我理解是,不管什么应用场景,我应该都不需要管步进电机的位置了,不知道这个理解对不对?

以前没用PID算法,写了大量代码来检测步进电机的位置,也就是电机转过多少角度对应多少流量,这个对应关系是死的。现在用了PID,我想了下,好像不需要检测电机位置了,因为PID会根据测到的流量误差来调整阀门开度,位置好像不重要了。刚开始做PID,理解不是很深入,希望给位前辈不吝赐教!
回复

使用道具 举报

ID:891041 发表于 2023-1-3 17:10 | 显示全部楼层
是 你把自己当成PID。 你能看到反馈流量的话。  你就知道流量不够该往哪个方向拧。 这个过程你并不需要知道绝对位置。
回复

使用道具 举报

ID:883242 发表于 2023-1-3 17:19 | 显示全部楼层
步进电机本来就是个低成本方案,当然不需要位置检测,如果真的需要位置检测,闭环控制,请换伺服电机。

当然,步进电机在系统里面往往还是要有个初始位置检测,上电后先运转到初始位置,以后就完全靠开环控制,单片机或PLC等控制器内部计算实际位置,并不检测。
回复

使用道具 举报

ID:401564 发表于 2023-1-3 20:42 | 显示全部楼层
气体通过阀门之后,要先有一个缓冲,其实就是一节大点的管子,然后再检测.作用相当于滤波
先看看整体有反应速度,如果不是太慢的话,用PI控制就行了,很多时候没有必要用PID的
步进电机不需要检测位置的,你只管控制就行了,流量大了就减小角度,流量小了就增加角度
PID控制代码,来去就是那几行,但更多的是实际参数的调节
回复

使用道具 举报

ID:1060215 发表于 2023-1-4 11:00 | 显示全部楼层
第一、其实这个并不一定要用PID控制  直接检测流量然后调整步进就行了。
第二、步进电机也要有初始位置检测或者最大位置检测,另外步进电机容易丢步,要考虑到丢步情况,最后,当供气故障或者气流最大值小于设定值时,若没有最大位置检测,会造成步进或设备的损坏,建议加一个编码器来增加稳定性。
第三、有个东西叫比例阀,感觉比你这个步进控制方式好一些,并且直接用电信号控制阀的开度,控制更简单,可以发挥PID的优势。
第四、我去年做了一款相同的产品,有需要可以进一步交流。
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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