找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5164|回复: 2
收起左侧

数控稳压电源 PID闭环控制 带仿真 源码 51单片机制作

[复制链接]
ID:169702 发表于 2017-5-16 15:30 | 显示全部楼层 |阅读模式
带有PID闭环控制,存在问题是调整率低,51单片机制作
0.png 0.png

单片机源程序如下:

  1. void    PWMProcess(void)
  2. {
  3.     uint16 idata temp;
  4.     uint16 idata UKTemp;
  5.           temp = 0;
  6.     UKTemp = 0;
  7.    
  8.     if( Pwm.ChangeFlag_Uint8 != 0 )   //???????????
  9.                 {                  //????????????????????
  10.                         Pwm.ChangeFlag_Uint8 = 0;
  11.         
  12.                         UKTemp = PID.Uk_Uint16 + SwIn.AddValue_Uint16;//??UK???
  13.                         //????????????????,????????????????????????????
  14.                         if(UKTemp>999)
  15.                         {
  16.                                 UKTemp = 999;
  17.                         } //??????999?????1024???????PWM??????12V???
  18.                         while(1)//????????????? Delta,????????,???????
  19.                         {
  20.                                 ADChPro(UPWMADCH);          //??????
  21.                                 if( ADPool.Value_Uint16[UPWMADCH] == UKTemp)
  22.                                 {
  23.                                         return;
  24.                                 }
  25.                                 if( ADPool.Value_Uint16[UPWMADCH] > UKTemp)   //????????????,?????
  26.                                 {
  27.                                         if( ( ADPool.Value_Uint16[UPWMADCH] - UKTemp ) > UDELTA )
  28.                                         {
  29.                                                 temp = ADPool.Value_Uint16[UPWMADCH] - UKTemp;  //
  30.                                                 temp = temp / 2;       //????????,????????  -----/*PWM????UK/4*/
  31.                                                 if( Pwm.DutyCycle_Uint8 > temp )
  32.                                                 {
  33.                      Pwm.DutyCycle_Uint8 = Pwm.DutyCycle_Uint8 - temp;
  34.                                                 }
  35.                                                 else
  36.                                                 {
  37.                     Pwm.DutyCycle_Uint8 = 0;
  38.                                                 }
  39.                                         }
  40.                                         else
  41.                                         {
  42.                   return;
  43.                                         }
  44.                                 }
  45.                                 else           //????????????
  46.                                 {
  47.                                         if( ( UKTemp - ADPool.Value_Uint16[UPWMADCH] ) > UDELTA )
  48.                                         {
  49.                                                 temp = UKTemp - ADPool.Value_Uint16[UPWMADCH];
  50.                                                 temp = temp / 4;  //????????,?????+??
  51.                                                 if( (255-Pwm.DutyCycle_Uint8) > temp )
  52.                                                 {
  53.                     Pwm.DutyCycle_Uint8 += (temp/2);
  54.                                                 }
  55.                                                 else
  56.                                                 {
  57.                     Pwm.DutyCycle_Uint8 = 255;
  58.                                                 }
  59.                                         }
  60.                                         else
  61. ……………………

  62. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
BUCK_adj.zip (156.28 KB, 下载次数: 161)
回复

使用道具 举报

ID:135835 发表于 2017-5-16 21:23 | 显示全部楼层
千呼万唤始出来,谢谢楼主!

评分

参与人数 1黑币 +100 收起 理由
admin + 100

查看全部评分

回复

使用道具 举报

ID:282095 发表于 2019-7-12 08:57 | 显示全部楼层
厉害了 感谢分享
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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