采样电压去控制PWM脉冲宽度 使输出电压稳定程序怎么写呢?(msp430x14x)

2024-11-03 04:15:54
推荐回答(3个)
回答(1):

首先要明确的怎么样才能使电压稳定?
假设:开关器件高电平导通
输出电压低于设定值的时候,PWM脉冲宽度增大,提高输出电压;
输出电压高于设定值的时候,PWM脉冲宽度减小,减小输出电压;
由于是高频率,两个过程交替,使得输出电压保持。
一般的控制思路使得输出电压有静态误差。所以发一个PI调节器以供参考:
/******************
定义PID参数结构体
*******************/
typedef struct PI //结构体定义
{
uint Given; //设定值
uint Feedback; //反馈值
int NewError; //误差值
float Proportion; //Proportion 比例系数
float Integral; //Integral 积分系数
float LastError; //e(k-1) 前一拍误差
float uk; //PI输出值
float uk_1; //PI上一个输出值
}PI;
idata PI PII[5];

//启动PWM
void PWMStart(void)
{
//CMOD=0x04; //PWM时钟用定时器0溢出
//AUXR=AUXR|0x80; //定时器0时钟工作于1T模式
//TMOD=(TMOD&0xF0)|0x02; //定时器0工作于8位自动重装模式
//TH0=0xF9; //0xF9->PWM 18KHz
//TL0=0xF9;
//TR0=1; //启动定时器0 此时PWM输出频率18.4KHz
CMOD = 0x02; //PWM输出频率39.0625KHz
CL = 0x00;
CH = 0x00;
CCAP3L = 0x8d; //第2路辅助PWM占空比
CCAP3H = 0x8d;
CCAPM3 = 0x42;
PCA_PWM3 = 0x00;
CCAP2L = 0x0D; //第1路辅助PWM占空比
CCAP2H = 0x0D;
CCAPM2 = 0x42;
PCA_PWM2 = 0x00;
CCAP1L = PWM1First; //第1路PWM占空比
CCAP1H = PWM1First;
CCAPM1 = 0x42;
PCA_PWM1 = 0x00;

CCAP0L = PWM0First; //第2路PWM占空比
CCAP0H = PWM0First;
CCAPM0 = 0x42;
PCA_PWM0 = 0x00;
CR=1;
}

/*******增量式PI算法程序************
输入:给定值与反馈值相减的误差
输出:u(k)为PI调节器输出
*********************************************************************/
void PIRegulation(PI *kk) //增量式PI算法
{
float pGain,iGain,uk_Gain; //pGain比例相,iGain积分相,uk_Gain
pGain = 0;
iGain = 0;
uk_Gain = 0;
kk->NewError = kk->Given - kk->Feedback; //误差=给定值-反馈值
pGain = kk->NewError - kk->LastError; //P部分:e(k)-e(k-1)
iGain = kk->NewError; //I部分:e(k)
uk_Gain = kk->Proportion*pGain + kk->Integral*iGain; //增量
kk->uk = kk->uk_1 + uk_Gain;
kk->uk_1 = kk->uk;
kk->LastError = kk->NewError; //更新上一次误差
PWM1D = (uint)(kk->uk);

if(PWM1D > PWM1Max)
{PWM1D = PWM1Max;} //不能超过最大值

if(PWM1D < PWM1Min) //不能小于最小值
{PWM1D = PWM1Min;}
PWM0D = PWM1D + 0x80;
CCAP0L = PWM0D;
CCAP1L = PWM1D;
CCAP0H = PWM0D;
CCAP1H = PWM1D;
}

为了保证系统的稳定以及消除静态误差,如果会的话建立系统的数学模型,求出极点与零点,如果是高级系统,加零点补偿,不会的话,慢慢学,或者用实验的方法凑出好的P,I参数。系统稳定是最重要的。

回答(2):

采样电压去控制PWM脉冲宽度,可以使输出电压稳定,思路。
1 设定一个需要输出 的 电压 值( 当然这个电压 应该在运行状态下可调)
2 在输出 端 进行 采样 用 AD 转换 得到这个 采样 电压。
3 用设定 电压 与 采样 电压 进行 比较,
设定 电压 > 采样 电压 则 输出电压低了, 调节 PWM 使 输出电压 升高
设定 电压 < 采样 电压 则 输出电压高了, 调节 PWM 使 输出电压 降低

回答(3):

任天堂的一天的公共工程法规规范非呵护和步步高