久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4493|回復: 1
收起左側

單片機水位控制雙位+PID源程序+電路圖

[復制鏈接]
ID:329016 發(fā)表于 2019-7-12 16:09 | 顯示全部樓層 |閱讀模式
電路原理圖如下:
0.png

0.png
1  整機設計
1.1 設計要求
1.1.1設計任務
以實驗室的過程對象為控制對象,設計控制系統(tǒng),完成單容液位的定值控制。要求能夠顯示當前液位。
1.1.2性能指標要求
(1)設計制作系統(tǒng)硬件電路                                                                          
(2)實現(xiàn)控制、信號檢測(顯示)及調節(jié)器控制規(guī)律;                                 
(3)參數(shù)整定,使系統(tǒng)能夠快速克服擾動作用;                                            
(4)其他功能。                     
1.2 整機實現(xiàn)的基本原理及框圖
1.2.1基本原理
測量變送器為壓力式液位變送器,輸出信號為0~10V電壓,執(zhí)行器采用電動調節(jié)閥,接收0~10V信號。設計調節(jié)器(模擬或數(shù)字式),能夠根據(jù)用戶設定,將液位控制在要求值(采用雙位控制,PID或PI控制規(guī)律)。

具體請下載觀看吧,有說明。

單片機源程序如下:
  1. #include "stc15.h"
  2. #include<TM1638.h>
  3. #include<delay.h>
  4. #include<KeyPro.h>
  5. #include<STC15_AD.h>
  6. #include<STC15_pca_pwm.h>

  7. //定時器初始化
  8. void T0_init(void)                  
  9. {
  10.         TMOD=0x01;
  11.         TH0=(0-1000)/256;
  12.         TL0=(0-1000)%256;
  13.         TR0=1;
  14.         ET0=1;
  15.         EA=1;
  16. }
  17. unsigned char u;
  18. unsigned char BI_POSCTR(void)  //雙位控制
  19. {
  20.         if(Para_V[1]<Para_V[2]-2) //當前值<設定值-2
  21.           {
  22.            u = 200;                 //開200,最大可到255
  23.           }
  24.         else if(Para_V[1]>Para_V[2]+2)
  25.           {
  26.            u = 0;
  27.           }
  28.          else
  29.                  u=100;                        //保持開度為100
  30.          return u;
  31. }

  32. float kp,ki,kd;
  33. int ek,ek_1,ek_2;
  34. int uk,uk_1;
  35. unsigned char PID(void)
  36. {
  37.    kp=(float)Para_V[3]/10;
  38.    ki=(float)Para_V[4]/10;
  39.    kd=(float)Para_V[5]/10;
  40.    ek_2=ek_1;
  41.    ek_1=ek;
  42.    ek=(int)Para_V[2]-(int)Para_V[1];
  43.    uk_1=uk;
  44.    uk=uk_1+kp*(ek-ek_1)+ki*ek+kd*(ek-2*ek_1-ek_2);        //增量型PID公式
  45.         if(uk>255) uk=255;        //限制溢出
  46.         if(uk<0) uk=0;
  47.    return (unsigned char)uk;
  48. }

  49. unsigned int OneusCNT=0;
  50. unsigned int Ones=0;
  51. unsigned char x=1;
  52. unsigned char s=1;
  53. unsigned char key_value;
  54. float H=0;
  55. float num=0;
  56. void main()
  57. {       
  58.         P2M0=0;
  59.         P2M1=0;       
  60.         PWM_Init();
  61.         InitADC();
  62.         T0_init();
  63.         delay_ms(10);
  64.         delay(10);
  65.    while(1)
  66.    {
  67.         key_value=Read_key();
  68.         if(key_value!=0)
  69.         {
  70.         KeyPro(key_value-1);
  71.         Cur_V[0]=Para_V[2];                 //顯示區(qū)域讀取設定值
  72.         while(key_value==Read_key()); //按一次限制只執(zhí)行一次
  73.         }

  74.            if(Para_V[0]==0&&x)          //對象為0且采樣時間到,運行
  75.         {
  76.           SetPWM0(0);
  77.           x=0;           //初始化時間
  78.       Para_V[1]=Cur_V[2]=GetADCResult(0);//讀取adc

  79.           switch(Para_V[6])                //控制方式選擇
  80.           {
  81.                   case 0:
  82.                           SetPWM1(Para_V[7]);
  83.                          break;
  84.                 case 1:
  85.                          BI_POSCTR();
  86.                          SetPWM1(u);
  87.                          break;                                  
  88.                 case 2:
  89.                         PID();
  90.                         SetPWM1(uk);
  91.                         break;

  92.                 default:  break;
  93.           }
  94.         }
  95.         if(Para_V[0]==1&&s)         //同上
  96.         {
  97.           SetPWM1(0);
  98.           s=0;
  99.           num=(float)GetADCResult(6);//獲取adc
  100.                 H=1314*num-428; //轉化成測量值,
  101.       Para_V[1]=Cur_V[1]=(unsigned int)(H*10);
  102.           switch(Para_V[6])
  103.           {
  104.                   case 0:
  105.                           SetPWM0((unsigned char)Para_V[7]);
  106.                          break;
  107.                 case 1:
  108.                          BI_POSCTR();
  109.                          SetPWM0(u);
  110.                          break;                                  
  111.                 case 2:
  112.                         PID();
  113.                         SetPWM0(uk);
  114.                         break;
  115.           }
  116.         }
  117.         if(Setting)           //顯示
  118.                 Display(ptPra,Para_V[ptPra],11,SetV);
  119.         else
  120.                 Display(ptPra,Para_V[ptPra],ptCur,Cur_V[ptCur]);
  121.    }
  122. }

  123. void T0_IRQ() interrupt 1//采樣時間
  124. {
  125.         TH0=(0-1000)/256;
  126.         TL0=(0-1000)%256;
  127.         OneusCNT++;
  128.         Ones++;

  129.         if(OneusCNT>=50)
  130.         {
  131.          x=1;
  132.          OneusCNT=0;       
  133.         }
  134.         if(Ones>=300)
  135.         {
  136.          s=1;
  137.          Ones=0;       
  138.         }
  139. }
復制代碼

所有資料51hei提供下載:
水位控制雙位+PID.7z (1.17 MB, 下載次數(shù): 67)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久免费精品视频 | 免费视频中文字幕 | 国产精品久久国产精品久久 | 国产一区二区三区四区在线观看 | 成人亚洲精品久久久久软件 | 看a网站| 亚洲欧洲在线观看视频 | 国产在线一 | 古装三级在线播放 | 久草新在线 | 久久99精品久久久 | 岛国av免费观看 | 阿v视频在线观看 | 国产一区二区三区四区 | 青青草视频免费观看 | 亚洲精品99久久久久久 | 国产一区二区在线91 | www国产亚洲精品久久网站 | av黄色免费| av大全在线观看 | 中文字幕一区二区三区在线乱码 | 精品久久久久久久久久 | 91久久精品日日躁夜夜躁国产 | 欧美一级在线视频 | 天堂久久天堂综合色 | 日韩精品视频一区二区三区 | 免费在线播放黄色 | 国产成人短视频在线观看 | 亚洲一区二区三区在线观看免费 | 精品久久九九 | 国产色在线 | 超级黄色一级片 | hsck成人网| jizz视频| 午夜一级大片 | 色婷婷综合成人av | 日本不卡一区二区三区在线观看 | 成人欧美一区二区三区在线播放 | 91精品一区 | 亚洲成av人片在线观看无码 | 麻豆久久久久 |