freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于pid算法的鍋爐恒溫控制系統(tǒng)畢業(yè)設(shè)計論文-資料下載頁

2025-08-19 18:45本頁面

【導(dǎo)讀】設(shè)計(論文)題目:基于PID算法的鍋爐恒溫控制系統(tǒng)。金陵科技學(xué)院學(xué)士學(xué)位論文目錄

  

【正文】 { //P1ASF = 0xff。 //Open 8 channels ADC function P1ASF = 0x01。 //設(shè)置 bit0 為模擬輸入功能 ADC_RES = 0。 //Clear previous result ADC_CONTR = ADC_POWER | ADC_SPEEDLL。 delay_ms(2)。 //ADC poweron and delay } //獲得一個 AD 的值 // int GetADCResult(uchar ch) 金陵科技學(xué)院學(xué)士學(xué)位論文 第 5 章 軟件部分設(shè)計 23 { ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START。 _nop_()。 延時 //Must wait before inquiry _nop_()。 _nop_()。 _nop_()。 //判斷 AD 轉(zhuǎn)換是否完成 // while (!(ADC_CONTR amp。 ADC_FLAG))。//Wait plete flag ADC_CONTR amp。= ~ADC_FLAG。 //Close ADC //return ADC_RES。 //Return ADC result return ((int)ADC_RES * 4) + ADC_LOW2 。 //模擬量經(jīng)過 AD 模塊轉(zhuǎn)化為數(shù)字量的值 } 本課題的 AD 轉(zhuǎn)換采用的是輸出 10 位的數(shù)字信號。該段程序?qū)崿F(xiàn)的是上面流程圖中的從開始到判定轉(zhuǎn)換是否完成的階段。 ? 鍵盤掃描程序: 按鍵模塊的設(shè)計主要考慮的是按鍵的延時,只是按一次則溫度提升或是降低的單位是 攝氏度,若是長時間按鍵,則一次溫度的提升或是降低的單位為 1攝氏度。其流程圖如圖 所示。 是 否 有 按 鍵是 否 有 按 鍵按 鍵 已 釋 放延 時 大 于 1 0 m s獲 鍵 值 , 鍵 值 處 理YYNN開 始結(jié) 束 圖 按鍵檢測與處理流程圖 金陵科技學(xué)院學(xué)士學(xué)位論文 第 5 章 軟件部分設(shè)計 24 在按鍵的過程中由于單按一次只能進行 攝氏度的調(diào)節(jié),整體調(diào)節(jié)過程較慢,所以在按鍵的模塊中添加一個程序,當(dāng)我長時間按鍵的時候,溫度調(diào)節(jié)能夠以 1攝氏度為單位進行調(diào)節(jié)??偝绦蛉缦?。 //key int key_scan(void) { int key_temp = 0。 //先判定是否有按鍵,即流程圖的第一個判定框中的內(nèi)容 // if(!(key_1_status)) { //該階段只要是為了判斷按鍵的時間的長短,通過延時從而達到效果 // delay_ms(10)。 //該階段對應(yīng)流程圖,即為若是按鍵效果沒有 10ms,則直接進行輸出 ,即為第一個判定框 N的走向 // if(!(key_1_status)) { //該階段是按鍵慢慢增長的過程,對應(yīng)課題中就是顯示屏顯示的溫度以 攝氏度為單位開始增長 // key_perss_counter++。 //下面的程序,是判定的如果通過按鍵所給的溫度超過量程的最大值,則系統(tǒng)將自己進行保護的效果 // if(( key_perss_counter key_perss_long_max_num ) amp。amp。 ( key_perss_counter key_perss_long_long_max_num )) { key_temp = 11。//長按 } else if( key_perss_counter = key_perss_long_long_max_num ) { lcd_s_12864_light_0。 delay_ms(50)。 lcd_s_12864_light_1。//報警 delay_ms(50)。 key_temp = 111。//超長按 } 金陵科技學(xué)院學(xué)士學(xué)位論文 第 5 章 軟件部分設(shè)計 25 //else 后面的內(nèi)容就是長時間按鍵后, LCD 顯示屏上的溫度升高按單位為 1 攝氏度提升 // else { if( key_once_active_flag == 1 ) { key_once_active_flag = 0。 key_temp = 1。 } } } } ? 溫度采集程序: 本次的課題采用的是 PT100 的溫度,該溫度傳感器有個重要的 特點,就是其阻值會隨著溫度的改變而改變,所以本次課題溫度的采集可以利用這一特性通過阻值的改變進行溫度的實時監(jiān)控。其計算阻值的方法先算出輸入端的電壓,再除以電流,就能得到其該時刻的電阻,其程序如下。 float get_k_j_abs_temp(int k_j_flag, int in_data)// k_j_flag_flag 為 1 是 K in_data 為輸入的具體 ad值 得到 K 的絕對溫度 // { float k_j_temp = 。 int kk_index = 0。 int i。 if( k_j_flag == 1 )//K { for(i = 0。 i 10。 ++i) { if( in_data = k_data_buffer[i] ) { kk_index++。 } } if( kk_index == 0 )//說明處于最低溫度下 { k_j_temp = k_value_buffer[0]。//按照最低溫度處理 金陵科技學(xué)院學(xué)士學(xué)位論文 第 5 章 軟件部分設(shè)計 26 } else//高于最低溫度按照分段線性處理 如果大于了最 高溫度 認為高溫區(qū)也是線性區(qū) { k_j_temp = (((float)(in_data k_data_buffer[kk_index 1])) * ( (k_value_buffer[kk_index] k_value_buffer[kk_index 1]) / (float)(k_data_buffer[kk_index] k_data_buffer[kk_index 1]))) + k_value_buffer[(kk_index 1)]。//這段公式 的效果是為了通過 AD算出此時的溫度 // } } if( k_j_temp )//大于最大溫度 按照最大溫度處理 // { k_j_temp =。 } return k_j_temp + 。//四舍五入 // }//對數(shù)值進行運算處理 得出實際溫度 // ? PID處理程序: 在本次的課題中,輸入的溫度跟給定的溫度進行比較后得到的偏差通過 PID 后得到的PWM 波的脈寬。在開始的過程中會給定 PID 的三個值。本課題進行 PID不是直接在剛開始就直接進行 ,而是當(dāng)實時溫度值跟給定值達到一定的偏差的時候開始進行 PID 自整定,本課題的偏差范圍在 10攝氏度內(nèi),開始進行 PID 自整定程序如下。 int pid_calc(float set_temp ,float now_temp )// pid 計算 set_temp 為設(shè)定的溫度 now_temp 代表實際輸入的當(dāng)前溫度值 0 100 的輸出值 { Error = set_temp now_temp。 // 給定值跟實時的溫度所得的偏差// if(( Error max_value_error ) amp。amp。 ( Error (min_value_error) ))//只有在一定的溫差范圍內(nèi)才 pid 計算 // { SumError += Error。 dError = LastError PrevError。 // 當(dāng)前微分 PrevError = LastError。 LastError = Error。 temp_pid =(int)((Proportion * Error) + (Integral * SumError) + (Derivative * 金陵科技學(xué)院學(xué)士學(xué)位論文 第 5 章 軟件部分設(shè)計 27 dError))。 } ? 功率輸出程序: 本次課題采用的時間比例輸出來進行功率的控制,控制系數(shù)只有 0 跟 1 之分, 0 的時候沒有功率輸出, 1 的時候有功率的輸出,根據(jù) pidresult 的值進行判斷,若恒等于 0 則這一秒內(nèi)沒有功率的輸出,若恒等于 100,則有功率的輸出。程序如下。 void pid_con(void)//由計算結(jié)果控制輸出 { //0 全關(guān) //100 全開 if( pid_result == 0)//當(dāng) pid_result 的結(jié)果恒為 0時全關(guān) // { ssr_con_0。//此時無功率的輸出 // } else if( pid_result == 100)//當(dāng) pid_result 的結(jié)果恒為 1 時全開 // { ssr_con_1。//此時已最大的功率的輸出 // } else//其他值進行不同份數(shù)的加熱 ,控制周期為 1秒即 1s 計算一次 pid 的值 ,而控制的話10ms 為一次 ,用來控制功率大小的輸出 // { if( pid_con_10ms_flag == 1 )//10ms 秒 1次 { pid_con_10ms_flag = 0。 pid_con_counter++。 if( pid_con_counter 99 ) { pid_con_counter = 0。 } if( pid_con_counter pid_result) { ssr_con_1。 } else { 金陵科技學(xué)院學(xué)士學(xué)位論文 第 5 章 軟件部分設(shè)計 28 ssr_con_0。 } } } } 金陵科技學(xué)院學(xué)士學(xué)位論文 第 6章 調(diào)試與結(jié)論 29 6 調(diào)試與結(jié)論 在完成硬件設(shè)計跟軟件后開始進行調(diào)試,調(diào)試結(jié)果如下。 在給一個 220V電壓后, LCD 顯示屏顯示 ℃ (未經(jīng)過處理的),如圖 所示。 圖 啟動時的 LCD屏 的顯示 然后通過 KEY2 鍵升高溫度,直到 LCD 顯示屏顯示 80℃后,在按 KEY1 鍵讓其進行自整定, LCD 顯示屏能夠?qū)崟r的顯示當(dāng)前的水溫很 PID 自整定的參數(shù)與自整定所用的時間。如圖 所示。 圖 自整定 LCD屏顯示 在剛開始的時候加熱的時間偏長,同時降溫的時間也偏長,最高溫度達到 87℃,隨著時間的推移(大約 15 分鐘左右)溫度開始降至 80℃左右,在降至 ℃時,可以發(fā)現(xiàn)水壺的電源顯示燈又開始亮了,證明此時又開始有功率的輸出。然后又開始升溫這次的升溫大約最高升至在 ℃時,水壺的電源顯示燈又滅掉 了,水溫開始進行自然冷卻。等再次降至 ℃時又開始加熱這次溫度最高只升至 ℃,再自然降溫后低于 80℃后加熱,這次溫度最高知道了 81℃,然后可以發(fā)現(xiàn)系統(tǒng)的自整定過程結(jié)束,顯示屏顯示出此時的金陵科技學(xué)院學(xué)士學(xué)位論文 第 6章 調(diào)試與結(jié)論 30 PID 的三個參數(shù)。繼續(xù)觀察發(fā)現(xiàn)溫度一直保持在 ℃,最高溫度不超過 81℃,就是最大誤差沒超過 1℃,如圖 所示。 圖 從本次的設(shè)計中明顯感到自己的不足,在做本次的課題中遇到了一些問題,比如在設(shè)計功率控制的過程中總是不能夠?qū)崿F(xiàn)將單片機的電壓控制在 5V,總是不停
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1