yifabin023 发表于 2012-12-14 21:26:12

用arduino做闭环buck电源,反馈搞不定,大家有什么好算法没?

本帖最后由 yifabin023 于 2012-12-14 21:33 编辑

用arduino做闭环buck电源,反馈搞不定,大家有什么好算法没?
C语言基础差,加上刚接触arduino,有点懵。闭环反馈实在高不定了,上来问问他家怎么弄。。
贴个电路图,


我写的代码,自己都搞晕了,就是不闭环。
int Out_V = 0; //设置模拟口A0为电压采样输入端口
int Out_Vkeep = 1;//电压设置
long val; //定义一个变量
int Out_Vkeep1;//
char w1ord;
int k=0;

void setup()
{
      Serial.begin(9600);//串口波特率
      pinMode(3, OUTPUT);//PWM输出1 对应单片机的OC2B5脚
      pinMode(11, OUTPUT);//PWM输出2 对应单片机的OC2A17脚
      pinMode(Out_V, INPUT);//电压采样端口为A0口
      pinMode(Out_Vkeep, INPUT);//设定电压端口
       //analogReference(INTERNAL); //调用板载1.1V基准源
   //TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20);
      //16M时钟产生相位修正的PWM频率为32Khz左右
   TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM20)| _BV(WGM21);
      //16M时钟PWM频率为62.66Khz
      TCCR2B = _BV(CS20);//时钟未分频
      OCR2B = 0;//数字端口D3输出,占空比为0-255
      OCR2A = 0;//数字端口D11输出,占空比为0-255
   
}

void loop()
{   
int i ,j;
    //Out_Vkeep1 = analogRead(Out_Vkeep);//读取设定电压
    Out_Vkeep1 = 1023-400;//
    val = analogRead(Out_V);   //val变量为从A0口读取到输出电压的数值
    j = Out_Vkeep1+(Out_Vkeep1-val);
    i = j / 4;
      if(i >= 255) i = 255;
      if (i <= 0) i = 0;
    OCR2B = i;//数字端口D3输出,占空比为0-255
    OCR2A = i;//数字端口D11输出,占空比为0-255
    k++;
    if(k >= 2500)
    {k=0;
   
      //if (Serial.available() > 0) //判断串口缓冲器是否有数据装入
            {
                  w1ord = Serial.read(); //读取串口
                  //if(w1ord=='a') //判断输入的字符是否为a
                      {
                        Serial.print(""); //从串口发送字符串
                         Serial.print(val); //从串口发送字符串
                        Serial.print(""); //从串口发送字符串
                           Serial.print(j); //从串口发送字符串                           
                        Serial.println(); //从串口发送字符串并换行
                        }
                }
}
}
先在这里谢谢了!

yifabin023 发表于 2012-12-14 21:52:50

论坛人气有点 地,没人回答啊:dizzy:

cai_mouse 发表于 2012-12-14 22:44:59

使用PID控制吧

yifabin023 发表于 2012-12-14 23:03:54

cai_mouse 发表于 2012-12-14 22:44 static/image/common/back.gif
使用PID控制吧

不懂pid,能不能举个例子呢?

珜羽 发表于 2012-12-17 01:06:34

电感偏小了吧。。程序看着也不对劲。

shidoukou 发表于 2012-12-17 09:33:10

本帖最后由 shidoukou 于 2012-12-17 09:39 编辑

是不是PWM 驱动能力问题?R1=10K,会影响MOSfet 的导通能力?
还有对电路图有一些不解的地方! 电路中是否要加反馈回路?

对你的设计比较感兴趣,祝福早点实现!加油{:soso_e179:}

cai_mouse 发表于 2012-12-18 20:57:49

你是采用pwm方式还是pfm工作方式阿?设计好工作电感才做反馈回路
页: [1]
查看完整版本: 用arduino做闭环buck电源,反馈搞不定,大家有什么好算法没?