完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我一直试图使用PWM来控制加热器,使用来自热敏电阻的反馈。我曾经问过一个类似的主题,关于实现PID控制器,但想知道是否有人知道一种更简单的方式来调节输出。目前,我所做的所有代码都是使用减少的PWM占空比作为设定点,并且测量得到更接近彼此。这要么导致过冲,要么不完全达到设定值。 有什么建议吗? 谢谢 |
|
相关推荐
14个回答
|
|
|
|
|
|
我只能推荐遵循“改进初学者PID”系列教程。它是相当全面的-我从那里学习PID,它并不完全复杂(读取你想要控制的值,做一些计算,写值到控制你的设置的外围设备)。
棘手的部分是找出正确的P,I和D值。为了调谐Ziegler Nichols方法(TL;DR:SET I和D到0),开始增加P直到控制环振荡。用这个频率,你计算P,I,D)。 |
|
|
|
谢谢你的快速回复。假设我只使用p项来进行初始测试和理解,然后输出= kp*错误。
另一个问题是如何将输出与PWM占空比联系起来?使用8位PWM的范围为0~255 谢谢大家 |
|
|
|
|
|
|
|
Hi鲍伯,pWMWRead EngPoPARE()函数被用来驱动H桥,此时随机选择0和255之间的值,比例输出如何改变PWM占空比?我是否需要将输出函数与比例函数关联到PWM的占空比,因为它应该考虑到他在温度上的超调并补偿它?
IV有一个设定点,它是摄氏度的温度读数,反馈来自温度传感器。 对不起,如果我的问题有点多余 谢谢 |
|
|
|
|
|
|
|
你好,鲍伯,谢谢你的回复。我读了HLI发送给我的链接,它只是我仍然有一个问题与你所说的。这很有道理。我知道255将等于100%占空比,128将是50%。它是我有问题的PID输出函数。我知道它可以通过读取SETIOTMOP和实际温度之间的差异来获得误差项。但是,我称之为PID的输出函数需要乘以还是以某种方式控制PWMLRead EngPARE()函数中的占空比?
我有PID输出,它目前只是错误* Kp,但是输出函数是否需要在WPMLRead EngPoApple()函数中?在写比较函数中设置的值直接控制占空比,因此加热器。 我一直在做类似这样的PWMWRead CeopPrPARE(192),大约占75%的占空比。我有两个PWMX写函数,因为这两个PWM输出连接到使用的Hyb1 IM的IN1和IN2。我可以通过给一个写比较函数赋予一个占空比值来反转这个方向,并使另一个PWM写比较功能连接到地上。 这两个PWMLWrreCopMoPro函数是我唯一的输出。 如果有简单的if语句,我知道会导致超调。 其简单 如果(StIdPosit & Gt;Stural-Typ)/ /冷却方向 { PWMWRead EngRePopRePAR1(192); PWMX RealEngopopar(0); } 然后加热加热器/珀耳帖,我用写比较来做相反的操作。 PID输出函数如何与PWMLRead EngPoPARE函数交互? 很抱歉发布了一个愚蠢的问题,谢谢你的帮助,我非常感激。 |
|
|
|
PWM有两个输出,可以用适合H桥的死区编程。因为珀尔帖的特性对于加热和冷却是不同的,所以您可能需要两个不同的PID连接到两个PWM。您可以使用MUX选择哪一个是活动的。
惯常称为输出的PID函数需要乘以还是以某种方式控制PWMLRead CeopPARE()函数中的占空比?这是KP执行的。您可以使用占空比的限制函数gt;=0和lt=100%。 鲍勃 |
|
|
|
好啊,
那会是这样吗?目前,我只具有比例,我将限制PWM,以及实现积分和衍生泛函。 输出= kp*错误;pWMWRead EngPoPARE1(00000);pWMWRead EngPoPARE2(输出); 非常感谢你的帮助。 |
|
|
|
|
|
|
|
好的,谢谢。我的PWM配置是8位分辨率,两个PWM输出,带死区2-4个时钟周期。一个周期为2.56Ms的100kHz时钟。它也小于类型计数。
我的占空比在0到255之间,它的输出函数误差*kp如何增加我的占空比? IF最初将KP设置为1,错误可能是SET Poto StimalLayTimp。 给定一个30C的设定点和一个21C的测量温度,误差为9,输出等于9。这是否意味着PWM占空比为9/255?PWMWRead EngPrimaPARE1(输出或9/255) 这个值只会随着使用全公式,即积分和导数而增加吗? 对不起,它的输出功能控制占空比IM有问题。 谢谢你的帮助 |
|
|
|
一个纯的P控制器总是有一个(小)误差。
I组件将确保没有长期误差增加。 D组分允许短的反应时间(不能用于加热或冷却的慢反应时间)。 上面的例子是正确的,占空比将是900/255=4%。当温度上升太慢时,可以增加KP。 假设kp=50,所以在上面的例子中,你得到9×50=450。限制在0…255你得到255,系统正在升温。当差仅为1°C时,得到1×50,即5000/255=~20%占空比。当这是关于辐射冷却你的系统,你有一个稳定的情况。 鲍勃 |
|
|
|
嗨,鲍伯,
谢谢你的回复。我现在看到它是如何控制占空比的。简单,但聪明,因为你和HLI一直把它给我。 我知道,导数可能不适用于加热冷却情况,特别是考虑到加热/冷却的缓慢时间常数。 我在看积分分量。 这被定义为: 其中错误和等于错误*Timechange。 无符号long=毫秒();double TimeChchange =(double)(现在-ListTimes);它给出一个变量“现在”,它等于毫秒(),IM只是想知道这是如何计算的,或者是一个随机毫秒数。 即米利(100),是否是相同的,以某种方式说, 谢谢 |
|
|
|
PID的I部分确保在更长的时间内误差可能变为零。一个副作用是,总和误差将被纠正,随后产生一些不想要的方差在那个时候。当两个化学部件和两个控制泵混合时,I部分是好的。最后,所有的误差都消失了,在所得到的储层中,浓度恰好是所需的。你在设计什么?DNA乘数?
鲍勃 |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2106 浏览 1 评论
1853 浏览 1 评论
3672 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1788 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
574浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
426浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
439浏览 2评论
389浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
920浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 05:28 , Processed in 1.358647 second(s), Total 105, Slave 88 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号