野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9168|回复: 5

我想用AD采样,经过PID调节,控制PWM占空比

[复制链接]
发表于 2020-5-20 11:13:38 | 显示全部楼层 |阅读模式
我想模拟一个开关电源,采集输出的电流然后经过PID计算占空比然后再调节电路。我现在ADC采样和PWM都已经配置好了也可以运行,但是这个主函数怎么利用这个PID再改变占空比不太清楚,有没有大佬有类似的主函数我想参考下,谢谢了
回复

使用道具 举报

发表于 2020-5-20 16:29:22 | 显示全部楼层
  1. int adc_flag = 0;
  2. float vol = 0.0f;
  3. float pwm = 0.0f;

  4. void isr_adc(void) {
  5.         vol = adc_read();
  6.         adc_flag = -1;
  7. }

  8. void isr_pwm(void) {
  9.         pwm_set(pwm);
  10. }

  11. int main(void) {
  12.         for ( ; ; ) {
  13.                 if (adc_flag) {
  14.                         pwm = pid_cal(vol);
  15.                         adc_flag = 0;
  16.                 }
  17.         }
  18. }
复制代码

回复 支持 反对

使用道具 举报

发表于 2020-5-20 16:31:26 | 显示全部楼层
大概框架就是以上这样,但是水很深
回复 支持 反对

使用道具 举报

发表于 2020-5-20 16:33:22 | 显示全部楼层
一般在中断中收集/输出数据,然后进行flag标记
主函数循环中根据flag标记进行次相应的运算处理
回复 支持 反对

使用道具 举报

发表于 2020-5-20 16:57:23 | 显示全部楼层
如果是搞充电器还可以,如果是电源响应太慢了。
回复 支持 反对

使用道具 举报

发表于 2022-11-18 14:45:14 | 显示全部楼层
请问楼主的问题解决了吗,我也有同样的问题
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-25 23:22 , Processed in 0.046420 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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