打印

关于PID的一个问题,想了几个小时,没想通。

[复制链接]
1252|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
star21|  楼主 | 2015-4-1 07:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用单片机实现pid做buck反馈的问题,采集ad输出的电压控制pwm的占空比实现反馈。问题如下
AD采集了一个电压,假设是10位AD(1024),AD的参考电压是3V,这个被采集电压转化成了一个 “3V对应1024” 下这个等级的数,比如说是1.5V=1.5/3*1024=512
然后设定一个预给定电压是2V,也是在AD的那个电压等级下进行模数转换,2V=683
然后进行PID计算,这个时候pid输出的一个值,不应该是一个电压的值么,(当然是数字化的),这个数字化的模数转换也是在AD的模数转换规则下的
那我这个时候想要的应该是能控制pwm占空比的那个比较寄存器的值,但是怎么能把pid输出的值转化成这个寄存器的值呢?这两个数字都不是在一个规则下进行量化的啊
我不知道我说没说明白,感觉我陷入进去了,想了两三个小时都没想明白

相关帖子

沙发
gx_huang| | 2015-4-1 08:35 | 只看该作者
PWM值和输出电压的值,没有必然的对应关系,输出电压和以下有关:
输入电压、PWM值也就是占空比、输出电流大小。
你肯定要预置一个PWM值,使输出电压小于设定值,然后根据反馈PID算法调整PWM。
就好比温度控制一样,最终温度,不仅和加热功率有关,而且和散热有关,和热容量和延时有关。

使用特权

评论回复
板凳
star21|  楼主 | 2015-4-1 12:57 | 只看该作者
gx_huang 发表于 2015-4-1 08:35
PWM值和输出电压的值,没有必然的对应关系,输出电压和以下有关:
输入电压、PWM值也就是占空比、输出电流 ...

我要问的不是你说的那个意思,我是说,计算出PID值后,怎么样转换后将PID输出的值赋给pwm比较寄存器(就是控制占空比的那个寄存器)?,不能直接赋值啊,因为不是在一个数量及上

使用特权

评论回复
地板
xmuhwei| | 2015-4-1 13:31 | 只看该作者
本帖最后由 xmuhwei 于 2015-4-1 13:33 编辑

调节PID参数不就能在一个数量级上嘛,如果PID输出必须要很大或者很小才可控,那说明你控制对象没弄好,还得有功率放大啊什么的。

使用特权

评论回复
5
lphaff| | 2015-4-1 14:00 | 只看该作者
这个好理解啊。
你看PWM输出50%的时候,寄存器的数值是多少嘛
然后测出该占空比下的输出电压
这个输出电压跟PWM的寄存器值不就存在对应关系了吗

使用特权

评论回复
6
gx_huang| | 2015-4-1 14:43 | 只看该作者
上面的很多都回答了,我不好意思再回答了。
范围是自己定的,不合适,可以放大缩小的。

使用特权

评论回复
7
star21|  楼主 | 2015-4-1 19:26 | 只看该作者
gx_huang 发表于 2015-4-1 14:43
上面的很多都回答了,我不好意思再回答了。
范围是自己定的,不合适,可以放大缩小的。 ...

我是这个意思,我觉得不能直接给啊,你看单片机里有两个寄存器,一个是控制pwm的频率的那个也是确定的啊,假设输出50Khz时候是1500,那如果pid输出一个2000(对应2V),怎么办?你说的范围是指什么范围?

使用特权

评论回复
8
gx_huang| | 2015-4-1 20:15 | 只看该作者
PWM,你调节的应该是占空比,频率应该是基本固定的。
我不知道你想描述的是什么意思,一会频率,一会2V的,看不懂。
假设有2个寄存器,一个是控制周期的,一个是控制占空比的,你只需要调节占空比的。
如果是8bit的PWM,范围就是0-255。
比如,电压需要输出2V,PWM默认输出0,输出电压是0V,根据PID计算,PWM慢慢增加,电压也慢慢增加,直到输出电压等于2V。
当负载变化时,输出电压会波动,根据PID,及时调整PWM值。
很简单的事情呀。

使用特权

评论回复
9
gx_huang| | 2015-4-1 20:23 | 只看该作者
只有当占空比最小时,输出电压还是高,会关闭PWM,也就是占空比是0,会变成间歇的工作。
如果输出接一个小负载,占空比就不会是0了。

使用特权

评论回复
10
xwuzi| | 2015-4-2 21:45 | 只看该作者
LZ 能不能共享下你的 BUCK电路呀。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

70

帖子

0

粉丝