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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4616|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:329016 發(fā)表于 2019-7-12 16:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
電路原理圖如下:



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

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

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:668361 發(fā)表于 2021-1-20 12:39 | 只看該作者
請問一下前輩,有整套PCB嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久精品毛片 | 一本一道久久a久久精品综合蜜臀 | 一区二区三区精品视频 | 亚洲精品456 | 在线播放国产一区二区三区 | 视频一区二区三区中文字幕 | 伊人爽 | 一区二区三区日 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 亚洲精品久久久一区二区三区 | www.国产精品 | 激情欧美一区二区三区中文字幕 | 九九导航 | 欧美激情欧美激情在线五月 | 夜久久 | www4虎| 91精品久久久久久久久久入口 | 亚洲欧美日韩成人在线 | 精品欧美| 午夜视频大全 | 久久久久久国产 | 精品国产一区二区三区性色av | 欧美一区二区三区日韩 | 国产精品久久久久久久久久三级 | 蜜桃av一区二区三区 | 一区二区在线 | 国产精品国产精品国产专区不卡 | 做a视频| 日韩综合网 | 一区二区在线 | 成人欧美一区二区三区在线播放 | 国产精品美女久久久av超清 | 国产中文字幕在线观看 | 欧美成人久久 | 精品久久电影 | 噜噜噜噜狠狠狠7777视频 | 久久久精品一区二区三区四季av | 久草新在线| 久久久久久久一级 | 欧美老妇交乱视频 | 日本不卡一区二区三区在线观看 |