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

正文內(nèi)容

基于凌陽61單片機(jī)的數(shù)據(jù)采集系統(tǒng)(編輯修改稿)

2024-12-18 15:00 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 11bit 模式,帶有奇偶校驗(yàn)控制 SPI: ? 全雙工( FullDuplex) /半雙工( HalfDuplex)同步通訊端口 ? 支持 Master/Slave 模式 CRC: ? CRC 功能由 SPCP825A 芯片硬件電路產(chǎn)生 —— CRC16/CRCCCITT Memory: ROM(OTP)、 192B RAM 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 19 頁 19 I/O: 17 個(gè)可編程普通 I/O(GPIO),可獨(dú)立編程為 pullup/pulldown Timer: ? Timer0: 14bit 獨(dú)立 Timer,可產(chǎn)生溢出( Overflow)中斷和實(shí)時(shí)( Real Time)中斷 ? Timer1:可工作在自動(dòng)重載的 8bit Timer 模式或串聯(lián)成 12/16bit Timer模式。當(dāng) UART 允許時(shí)專用于波特率的產(chǎn)生 ? Timer2:可自動(dòng)重載的 8bit Timer Capture: 8 個(gè) Cpature 輸入寄存器,支持 PA0PA5 六路 Capture,可設(shè)置 Capture 邊沿,用于脈沖度( Pulse)和周期( Period)的測(cè)量 EXT Interrupt: 17 個(gè) GPIO 皆可以獨(dú)立的引起外中斷,中斷邊沿可編程 Reset: Power On Reset(POR) SPCP825A 芯片封裝如 下圖 所示: 下圖為 USB/UART 模塊的程序流程圖和中斷流程圖: 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 20 頁 20 系統(tǒng)的主要功率器件為一個(gè)交流 220V1000W 的電加熱器,采用繼電器來驅(qū)動(dòng)該加熱器。繼電器選擇 OMRON G6B1174P 型繼電器,該繼電器具有觸發(fā)電壓低( DC 5V),可控功率大( AC: 8A250V, DC: 8A30V),以及反應(yīng)時(shí)間短等優(yōu)點(diǎn)。繼電器采用 NPN8050 三極管驅(qū)動(dòng),并在三極管的基極加一 個(gè) 470 歐的電阻,當(dāng)三極管的基極加載高電平信號(hào)時(shí),三極管導(dǎo)通繼電器工作,當(dāng)三極管的基極為低電平東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 21 頁 21 信號(hào)時(shí),三極管截止繼電器停止工作。并在繼電器的周圍添加了續(xù)流保護(hù)電路和工作指示電路,功率驅(qū)動(dòng)部分電路如 下 圖所示。 軟件設(shè)計(jì) 軟件總體設(shè)計(jì) 程序的控制思想:通過對(duì)數(shù)據(jù)信息(包括預(yù)設(shè)溫度,當(dāng)前溫度,歷史偏差等信息)進(jìn)行 PID 運(yùn)算產(chǎn)生 fOut 輸出參數(shù),通過該參數(shù)控制加熱時(shí)間,從而調(diào)節(jié)加熱器的功率,實(shí)現(xiàn)系統(tǒng)的 PID 控制。系統(tǒng)軟件部分包括主程序和中斷服務(wù)子程序,主程序和中斷服務(wù)程序流程分別對(duì)應(yīng)圖 61和圖 62。 主程序流程: 系統(tǒng)運(yùn)行首先初始化 IO, Timer, Uart 部件,同時(shí)初始化鍵盤和顯示等,并初始化系統(tǒng)狀態(tài)設(shè)定狀態(tài),等待輸入設(shè)定溫度。初始化完成之后進(jìn)入主程序循環(huán)體,在循環(huán)體內(nèi)不停的掃描按鍵是否有觸發(fā),是否 進(jìn)行 AD 轉(zhuǎn)換,如果已經(jīng)完成 AD 轉(zhuǎn)換,則對(duì) AD 結(jié)果進(jìn)行處理轉(zhuǎn)化為溫度值,將溫度值傳送給上位機(jī),之 后對(duì)溫度值進(jìn)行 PID 運(yùn)算。運(yùn)算產(chǎn)生結(jié)果 fOut,如果 fOut 0,證明當(dāng)前溫度低于設(shè)定溫度,開啟加熱器;如果 fOut = 0 證明當(dāng)前溫度等于或者略超過設(shè)定溫度,關(guān)閉加熱器。然后再重復(fù)執(zhí)行上述過程,周而復(fù)始。 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 22 頁 22 中斷服務(wù)流程: 中斷服務(wù)包括 IRQ5_2Hz 中斷, IRQ2_TimerB 中斷以及 IRQ6_TMB2(1024Hz)中斷三個(gè)中斷服務(wù)子程序。其中 IRQ5_2Hz 用以提供 1s時(shí)間以確定 AD采樣的時(shí)間間隔,服務(wù)程序流程如圖 62 ( 1)所示 ; IRQ2_TimerB 提供溢出頻率為 64Hz的中斷信號(hào),配合主程序 PID 運(yùn)算結(jié)果 fOut 確定加熱時(shí)間,間接實(shí)現(xiàn)加熱器功率調(diào)節(jié),程序流程如圖 62( 2)所示; IRQ6_TMB2 為 1KHz 時(shí)基,在此中斷中完成 LED 的動(dòng)態(tài)刷新,程序流程如圖 62( 3)所示。 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 23 頁 23 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 24 頁 24 主函數(shù) 部分 //======================================================== // 工程名稱: temperature_ctrl // 功能描述: 水溫的采集,轉(zhuǎn)換,控制等 // 涉及的庫: 無 // 組成文件: // 硬件連接: 見數(shù)據(jù)采集系統(tǒng)使用說明書 // 維護(hù)記錄: 20201125 //======================================================== include include 本設(shè)計(jì)利用了上面所 介紹的位置式 PID 算法,將溫度傳感器采樣輸入作為當(dāng)前輸入,然后與設(shè)定值進(jìn)行相減得偏差 ,然后再對(duì)之進(jìn)行 PID 運(yùn)算產(chǎn)生輸出結(jié)果 fOut,然后讓 fOut 控制定時(shí)器的時(shí)間進(jìn)而控制加熱器。為了方便 PID 運(yùn)算,首先建立一個(gè) PID 的數(shù)據(jù)類型,該類型用于保存 PID 運(yùn)算所需要的 P、 I、 D 系數(shù),以及設(shè)定值,歷史誤差的累加和等信息: typedef struct PID 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 25 頁 25 { float SetPoint。 // 設(shè)定目標(biāo) Desired Value float Proportion。 // 比例常數(shù) Proportional Const float Integral。 // 積分常數(shù) Integral Const float Derivative。 // 微分常數(shù) Derivative Const int LastError。 // Error[1] int SumError。 // 誤差累計(jì)值 } PID。 PID stPID。 int fOut = 0。 // PID 計(jì)算結(jié)果 float fT,K,B。 enum system_status { system_temperature_set,system_temperature_control}。 enum system_status status。 float PIDCalc( PID *pp, int NextPoint )。 // PID 計(jì)算函數(shù) void ADC_temperature(void)。 // AD 轉(zhuǎn)換值的數(shù)值處 理 void Send_temperature(void)。 // AD 轉(zhuǎn)換值的通信 void Control_temperature(void)。 // AD 轉(zhuǎn)換值的結(jié)果處理 void PIDinit(void)。 // PID 初始化 int adc_data_cmp()。 // ADC 結(jié)果處理 void key_value_process(int key)。 unsigned int giADC_DataSave[18] 。 //ADC 轉(zhuǎn)換 的數(shù)據(jù) unsigned int guiLED_Value[3] ={0,0,0}。 //保存顯示的 LED 數(shù)字 unsigned int iAddrSpeech。 unsigned int G_ADC_flag = 0。 //============================================================ 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 26 頁 26 // 語法格式: int main(void)。 // 實(shí)現(xiàn)功能: 主函數(shù) // 參數(shù): 無 // 返回值: 無 //============================================================ int main(void){ int iKeyValue。 unsigned int uiTime = 5。 System_Initial()。 //系統(tǒng)初始化 status = system_temperature_set。 while(1) { System_ServiceLoop()。 //鍵盤掃描 iKeyValue = SP_GetCh()。 //取鍵值 if(iKeyValue!=0) key_value_process(iKeyValue)。 //鍵值處理 if(status == system_temperature_control amp。amp。 G_ADC_flag == 1) { //控制狀態(tài)下執(zhí)行以下操作 ADC_temperature()。 //測(cè)量溫度結(jié)果處理 Send_temperature()。 //測(cè)量溫度結(jié)果通信 Control_temperature()。 //執(zhí)行控制 } *P_Watchdog_Clear = 0x0001。 //清看門狗 } } //============================================================ // 語法格式: void PIDinit(void)。 // 實(shí)現(xiàn)功能: PID 初始化 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 27 頁 27 // 參數(shù): 無 // 返回值: 無 //============================================================ void PIDinit(void) { = 0。 = 0。 } PID 簡(jiǎn)介: PID( Proportional Integral Derivative)控制是控制工程中技術(shù)成熟、應(yīng)用廣泛的一種控制策略,經(jīng)過長(zhǎng)期的工程實(shí)踐,已形成了一套完整的控制方法和典型的結(jié)構(gòu)。它不僅適用于數(shù)學(xué)模型已知的控制系統(tǒng)中,而且對(duì)于大多數(shù)數(shù)學(xué)模型難以確定的工業(yè)過 程也可應(yīng)用,在眾多工業(yè)過程控制中取得了滿意的應(yīng)用效果。 PID 工作基理:由于來自外界的各種擾動(dòng)不斷產(chǎn)生,要想達(dá)到現(xiàn)場(chǎng)控制對(duì)象值保持恒定的目的,控制作用就必須不斷的進(jìn)行。若擾動(dòng)出現(xiàn)使得現(xiàn)場(chǎng)控制對(duì)象值 (以下簡(jiǎn)稱被控參數(shù) )發(fā)生變化,現(xiàn)場(chǎng)檢測(cè)元件就會(huì)將這種變化采集后經(jīng)變送器送至 PID 控制器的輸入端,并與其給定值 (以下簡(jiǎn)稱 SP 值 )進(jìn)行比較得到偏差值 (以下簡(jiǎn)稱 e 值 ),調(diào)節(jié)器按此偏差并以我們預(yù)先設(shè)定的整定參數(shù)控制規(guī)律發(fā)出控制信號(hào),去改變調(diào)節(jié)器的開度,使調(diào)節(jié)器的開度增加或減少,從而使現(xiàn)場(chǎng)控制對(duì)象值發(fā)生改變,并趨向于給 定值 (SP 值 ),以達(dá)到控制目的 ,如圖 63 所示,其實(shí) PID 的實(shí)質(zhì)就是對(duì)偏差( e 值)進(jìn)行比例、積分、微分運(yùn)算,根據(jù)運(yùn)算結(jié)果控制執(zhí)行部件的過程。 模擬 PID 控制系統(tǒng)原理圖 東北大學(xué)秦皇島分校 畢業(yè)設(shè)計(jì) (論文 ) 第 28 頁 28 下面是 PID 運(yùn)算的算法程序,程序的入口為變量 PID 以及當(dāng)前采集溫度值 NextPoint,這里為了參數(shù)傳遞的方便首先將采集溫度值放大 10 倍變?yōu)? int 型變量,然后進(jìn)行運(yùn)算:首先求偏差 Error,然后再求積分項(xiàng) SumError(通過求和實(shí)現(xiàn))以及微分項(xiàng) dError(通過做差實(shí)現(xiàn)),最后對(duì)以上 3 個(gè)參數(shù)執(zhí)行 PID 運(yùn)算并返回給 fOut, 在實(shí)際運(yùn)算時(shí),由于水具有很大的熱慣性,而且 PID 運(yùn)算中的 I(積分項(xiàng))具有非常明顯的延遲效應(yīng)所以不能保留,我們必須把積分項(xiàng)去掉,相反 D(微分項(xiàng))則有很強(qiáng)的預(yù)見性,能夠加快反應(yīng)速度,抑制超調(diào)量,所以 微分作用 應(yīng)該適當(dāng)加強(qiáng)才能達(dá)到較佳的控制效果,系統(tǒng)最終選擇 PD 控制方案,下面 C 代碼所示為 PD 控制的實(shí)現(xiàn)過程: //============================================================ // 語法格式: PIDCalc( PID *pp, int NextPoint)。 // 實(shí)現(xiàn)功能: PID 運(yùn)算處理 // 參數(shù): PID *pp: PID 指針; // int NextPoint:當(dāng)前溫度結(jié)果 // 返回值:
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1