标题:
数控稳压电源 PID闭环控制 带仿真 源码 51单片机制作
[打印本页]
作者:
lessen_li
时间:
2017-5-16 15:30
标题:
数控稳压电源 PID闭环控制 带仿真 源码 51单片机制作
带有PID闭环控制,存在问题是调整率低,51单片机制作
0.png
(66.84 KB, 下载次数: 116)
下载附件
2017-5-16 18:25 上传
0.png
(56.93 KB, 下载次数: 92)
下载附件
2017-5-16 18:26 上传
单片机源程序如下:
void PWMProcess(void)
{
uint16 idata temp;
uint16 idata UKTemp;
temp = 0;
UKTemp = 0;
if( Pwm.ChangeFlag_Uint8 != 0 ) //???????????
{ //????????????????????
Pwm.ChangeFlag_Uint8 = 0;
UKTemp = PID.Uk_Uint16 + SwIn.AddValue_Uint16;//??UK???
//????????????????,????????????????????????????
if(UKTemp>999)
{
UKTemp = 999;
} //??????999?????1024???????PWM??????12V???
while(1)//????????????? Delta,????????,???????
{
ADChPro(UPWMADCH); //??????
if( ADPool.Value_Uint16[UPWMADCH] == UKTemp)
{
return;
}
if( ADPool.Value_Uint16[UPWMADCH] > UKTemp) //????????????,?????
{
if( ( ADPool.Value_Uint16[UPWMADCH] - UKTemp ) > UDELTA )
{
temp = ADPool.Value_Uint16[UPWMADCH] - UKTemp; //
temp = temp / 2; //????????,???????? -----/*PWM????UK/4*/
if( Pwm.DutyCycle_Uint8 > temp )
{
Pwm.DutyCycle_Uint8 = Pwm.DutyCycle_Uint8 - temp;
}
else
{
Pwm.DutyCycle_Uint8 = 0;
}
}
else
{
return;
}
}
else //????????????
{
if( ( UKTemp - ADPool.Value_Uint16[UPWMADCH] ) > UDELTA )
{
temp = UKTemp - ADPool.Value_Uint16[UPWMADCH];
temp = temp / 4; //????????,?????+??
if( (255-Pwm.DutyCycle_Uint8) > temp )
{
Pwm.DutyCycle_Uint8 += (temp/2);
}
else
{
Pwm.DutyCycle_Uint8 = 255;
}
}
else
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
BUCK_adj.zip
(156.28 KB, 下载次数: 168)
2017-5-16 15:29 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
uaeng
时间:
2017-5-16 21:23
千呼万唤始出来,谢谢楼主!
作者:
鹏博士PBs
时间:
2019-7-12 08:57
厉害了 感谢分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1