新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機典型案例開發(fā)(二)

單片機典型案例開發(fā)(二)

作者: 時間:2012-05-28 來源:網(wǎng)絡(luò) 收藏

  2. 4 輸出驅(qū)動控制模塊及報警模塊

  輸出驅(qū)動控制模塊通過控制芯片產(chǎn)生電信號, 控制相應(yīng)的設(shè)備運轉(zhuǎn)或者停止, 實現(xiàn)倉庫溫度和濕度的自動調(diào)節(jié)。當(dāng)檢測到的溫度和濕度值大于或小于設(shè)定值時,報警模塊同時會發(fā)生報警信號通知用戶注意當(dāng)前狀況,必要時需采取相應(yīng)人工措施。

  3 系統(tǒng)軟件設(shè)計

  由于溫、濕度變化規(guī)律性不強, 被檢測對象的溫、濕度具有非線性、熱慣性、時變性等特點, 較難建立精確的數(shù)學(xué)模型。而模糊控制算法不需要建立精確的數(shù)學(xué)模型, 可依據(jù)人工實際操作經(jīng)驗, 將其抽象為一系列的控制算法后通過計算機完成控制過程, 具有控制動態(tài)響應(yīng)好、超調(diào)小、穩(wěn)定性強等特點。

  控制器可以自動檢測晝夜、季節(jié)、室內(nèi)環(huán)境溫、濕度值的變化, 利用模糊算法實現(xiàn)自動控制過程。倉庫存儲土豆種子的溫度控制在- 1~ + 3℃ 之間, 相對濕度保持在45%~ 70% 較為適宜。

  溫、濕度控制程序中, 溫、濕度各有2 個輸入數(shù)據(jù)和1 個輸出數(shù)據(jù)。e 為溫、濕度偏差;△e 為溫、濕度變化率; u 為輸出控制變量, 其值分別為:

  

  其中: PL 表示負(fù)大; PM 表示負(fù)中; PS 表示負(fù)小; NS 表示正??; NM 表示正中; NL 表示正大。然后根據(jù)專家知識和操作人員的經(jīng)驗, 建立模糊控制表。其模糊關(guān)系可以用多個條件語句表示, 例如: IF e= NL and △e=NL then u= SM; 根據(jù)模糊推理進(jìn)行運算, 即可推出控制結(jié)果。

  在主程序中, 主要負(fù)責(zé)倉庫中溫、濕度的實時顯示,讀取并處理傳感器測量的溫、濕度值, 當(dāng)實際值與事先設(shè)定的溫、濕度上下限值不同時, 發(fā)出控制信號, 驅(qū)動輸出控制單元啟動或停止執(zhí)行控制電機, 同時發(fā)出報警信號, 通知用戶當(dāng)前發(fā)生的狀況并作相應(yīng)控制日志記錄。

  主程序流程圖和溫、濕度采集處理流程圖分別如圖4,圖5所示。

  

  圖4 主程序流程圖

  

  圖5 溫、濕度采集處理框圖

  4 結(jié)語

  采用模糊控制算法非常適合大型倉庫中多點溫度和濕度的檢測與控制, 具有可靠性高、成本低廉、能耗低、反應(yīng)靈敏、以及可擴展性好等特點。該設(shè)備具備一定的通用性, 經(jīng)過簡單的改進(jìn), 就能服務(wù)于國防工業(yè)、農(nóng)業(yè)等生產(chǎn)上的各個方面。

基于AVR的衛(wèi)星地面測控系統(tǒng)設(shè)計#e#

四、基于AVR的衛(wèi)星地面測控系統(tǒng)設(shè)計

  本文介紹了Atmega128在一種衛(wèi)星地面測控系統(tǒng)中的應(yīng)用,該系統(tǒng)利用Atmega128完成了10路模擬信號的測量、4路脈沖信號的頻率測量以及脈沖寬度的測量,由單片機上的16位定時計數(shù)器輸出兩路與輸入信號具有相位關(guān)系的信號,并通過外擴串口與其它測試模塊及工控機進(jìn)行通信。由于要求系統(tǒng)能夠連續(xù)穩(wěn)定工作3年,并且數(shù)據(jù)不能丟失,因此,在設(shè)計時采用了雙電源冗余熱備份的方案,并且采用兩個工控機同時接收數(shù)據(jù)并互為備份的設(shè)計方案。

  硬件設(shè)計

  Atmega128屬于Atmel公司的AVR系列單片機,是一種高性能、低功耗的8位控制器,執(zhí)行大多數(shù)指令只需要一個時鐘周期。其最高主頻可達(dá)到16MHz;自帶128KB可在線編程的閃存、4KB的EEPROM、4KB的SRAM,程序可進(jìn)行加密;自帶JTAG接口,便于程序的調(diào)試;集成外設(shè):兩個8位定時計數(shù)器、兩個16位定時計數(shù)器、兩個8位PWM通道、6個16位PWM通道、8個10位 ADC通道、一個I2C接口、兩個可編程異步串行接口、一個SPI接口、一個看門狗定時器和8個外部中斷源。

  衛(wèi)星地面測控系統(tǒng)主要由電源模塊、電子機箱、測試箱、工控機以及紅外地球敏感器構(gòu)成,系統(tǒng)結(jié)構(gòu)如圖1所示。其中兩臺電源并聯(lián), 輸出串聯(lián)二極管。在整個測控系統(tǒng)中,測試箱的控制功能是通過Atmega128完成的。

  

圖1 衛(wèi)星地面測控系統(tǒng)結(jié)構(gòu)圖

  測試箱的硬件原理如圖2所示。測試系統(tǒng)以AVR單片機為核心,外圍電路由串口通信、ADC采樣和DAC輸出等部分構(gòu)成。

  

測試箱的硬件原理

  單片機與工控機之間通過RS-232標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)通信,在設(shè)計中采用電平轉(zhuǎn)換芯片MAX202來實現(xiàn)二者的電平兼容。為了能夠和測試系統(tǒng)的其它模塊進(jìn)行串口通信,采用Xicor公司的雙串口芯片ST16C2552外擴了兩個串口,由于與外擴串口通信的是-12V~+12V的信號,不是標(biāo)準(zhǔn)電平,因此,要另外設(shè)計電平轉(zhuǎn)換電路。使用Altera公司的可編程邏輯器件EPM7128實現(xiàn)對DAC和ADC的邏輯控制;使用BB公司的12位ADC實現(xiàn)對遙測信號的測量;采用BB公司的12位DAC芯片DAC7615產(chǎn)生電地球波信號。

  具體功能如下:

  ADC測量:將輸入的10路模擬信號經(jīng)過阻抗匹配后連接到通道選擇器,再接到ADC芯片ADS7835的信號輸入端,ADC的輸出信號以及控制信號經(jīng)過光隔離接到EPLD邏輯,在邏輯內(nèi)部實現(xiàn)對ADC啟動信號、轉(zhuǎn)換通道的選擇,以及對時鐘信號、數(shù)據(jù)信號的控制。

  DAC 輸出:單片機通過邏輯芯片實現(xiàn)對DAC的片選、時鐘、數(shù)據(jù)等信號的控制,DAC的輸出信號通過光隔離后,再經(jīng)過運算放大器進(jìn)行阻抗匹配后才接到整個測試系統(tǒng)的其它模塊。DAC參考電壓的穩(wěn)定性至關(guān)重要,如果參考電壓穩(wěn)定性差,將導(dǎo)致整個DAC的輸出波動很大,達(dá)不到輸出精度要求,因此,通過一個穩(wěn)壓芯片 AD584給DAC提供參考電壓。

  頻率測量:電測箱需要對2路基準(zhǔn)信號和2路光柵信號進(jìn)行測量,利用AVR單片機的外部中斷和計數(shù)器1、3實現(xiàn)測量。將2路基準(zhǔn)信號分別接到單片機的外中斷INT0和INT1,將光柵信號分別接到單片機的計數(shù)器1和3。在電測箱需要實現(xiàn)的各項功能中,電地球波的輸出是一個難點,因為需要電地球波的輸出與基準(zhǔn)信號具有相位關(guān)系,并且要求輸出具有可變相位、幅度和斜率的信號,本文通過計數(shù)器1和3的比較中斷實現(xiàn)電地球波的輸出。

  串口通信:通過單片機自帶的兩個異步串口,并經(jīng)過電平轉(zhuǎn)換與上位工控機通信,通過雙串口芯片ST16C2552外擴兩個串口與測試系統(tǒng)的其它模塊通信,此外,為保證系統(tǒng)的可靠性,所有的信號均經(jīng)過光隔離。

  軟件實現(xiàn)

  單片機軟件

  運行在單片機的底層軟件主要負(fù)責(zé)ADC的采集、DAC的輸出以及串口的通信,下面詳細(xì)介紹各個部分:

  1、 光柵頻率測量:測量模擬基準(zhǔn)一個周期內(nèi)的光柵個數(shù)

  在程序中,每次進(jìn)入外中斷0的處理程序void int0_isr(void)(即基準(zhǔn)脈沖上升沿到來時)調(diào)用void do_gd_opt_frq()函數(shù)測量光柵頻率。

  在do_gd_opt_frq ()函數(shù)中,先把前一次讀取計數(shù)器1的計數(shù)值保存在全局變量time1_prev中,再讀取計數(shù)器1的值并保存在time1_next中,因為兩次中斷的間隔就是模擬基準(zhǔn)的周期,有一個光柵脈沖計數(shù)器1就加1,所以,前后兩次的差值就是一個模擬基準(zhǔn)周期內(nèi)光柵的個數(shù)。

  2、 模擬基準(zhǔn)幅度

  在INT0的中斷處理函數(shù)中置一個全局標(biāo)志refoa_gd_flag = 0xff,在一個100?s的定時器的中斷處理函數(shù)中查詢此全局標(biāo)志,若置位,則對模擬基準(zhǔn)的ADC通道連續(xù)采樣400次,采樣后清 refoa_gd_flag標(biāo)志并置采樣結(jié)束的標(biāo)志refoa_gd_finished = 0xff。在主程序main()函數(shù)中不斷查詢refoa_gd_finished標(biāo)志,若置位,則調(diào)用do_refoa_high()函數(shù)求出模擬基準(zhǔn)幅度,然后清標(biāo)志。在do_refoa_high()函數(shù)中求出采樣400個點中的最大值和最小值,兩者之差即為模擬基準(zhǔn)幅度。

  3、 模擬基準(zhǔn)周期:測量一個模擬基準(zhǔn)周期的毫秒值

  在一個1ms的定時器溢出中斷處理函數(shù)中,全局的計數(shù)變量ref_gd_count加1,ref_gd_count初始化為0。在外中斷0的處理函數(shù) int0_isr()中讀取ref_gd_count的值,即為模擬基準(zhǔn)的周期,再把ref_gd_count清零。這樣,只有第一次測量值是無效的,以后均為有效的模擬基準(zhǔn)周期。

  4、 模擬基準(zhǔn)寬度

  在INT0的中斷處理函數(shù)中置全局變量refoa_width_gd_ count=0,在100?s的定時器中斷中查詢外中斷0的引腳是否為高電平,是高電平則refoa_width_gd_count加1,直至變?yōu)榈碗娖剑瑀efoa_width_gd_ count的值就是模擬基準(zhǔn)的寬度。

  5、 電地球波

  在do_ein()函數(shù)中處理工控機串口傳過來的電地球波信息,如果是停止電地球波命令(state=0),通過DA電地球波直接輸出高電平并清除電地球波使能標(biāo)志位ein_gd_enable。如果是開始電地球波命令(state=1),把相位、寬度、幅值、斜率等信息賦給全局變量保存,并且計算出步距和斜率上各個點的輸出值,置位電地球波使能標(biāo)志 ein_gd_enable。

  電地球波的產(chǎn)生是以模擬基準(zhǔn)為基準(zhǔn)的,在INT0的中斷處理函數(shù)中設(shè)置計數(shù)器的比較中斷并使能。

  圖3中, T0與T1 之間是地球波的相位,T2與T5之間是地球波的寬度。在T1時刻進(jìn)入計數(shù)器1的比較中斷timer1_compa_isr(),全局變量 ein_count_gd初始化為0,若ein_count_gd不等于1,則設(shè)置比較中斷寄存器初值為下一步距點,并通過DA輸出,若下一個比較中斷到來ige ein_count_gd不等于1,則繼續(xù)設(shè)置比較中斷寄存器初值為下一個步距,并輸出幅值,直到斜率上所有的幅值輸出完畢,置ein_count_gd 等于1并設(shè)置比較中斷寄存器,使T4進(jìn)入比較中斷。T4進(jìn)入比較中斷,并按照前述方法輸出斜率上所有的幅值,完畢則禁止比較中斷并置 ein_count_gd=0xff。

  

地球波的相位

  ADC采集和串口通信比較簡單,這里不再贅述。

  軟件編譯與下載

  由于單片機程序是采用C語言設(shè)計完成的,因此,需要用Image Craft公司的ICCAVR編譯器進(jìn)行編譯,生成COF文件,再用AVR STUDIO調(diào)試軟件和雙龍公司的AVR JTAG仿真器進(jìn)行調(diào)試。調(diào)試完成后,利用單片機的JTAG接口寫入內(nèi)部閃存即可。

  上位工控機軟件

  運行在工控機上的軟件主要負(fù)責(zé)處理AVR單片機通過串口傳送過來的數(shù)據(jù)并進(jìn)行超差、報警的檢查,然后把數(shù)據(jù)存儲在ACCESS數(shù)據(jù)庫中,以便查看。該軟件能夠設(shè)置電地球波的幅度、寬度、相位,并能自主控制電地球波的產(chǎn)生或停止。

  上位工控機軟件采用VC6.0編寫,其中的數(shù)據(jù)庫部分采用ADO技術(shù)。ADO是Microsoft公司為最新和最強大的數(shù)據(jù)訪問范例 OLE DB 而設(shè)計的,是一個便于使用的應(yīng)用程序?qū)咏涌?。ADO 最主要的優(yōu)點是易于使用、速度快、內(nèi)存支出少且磁盤遺跡小。

  結(jié)語

  本文介紹的系統(tǒng)使用了很多Atmega128的外圍資源,并通過Atmega128提供的定時計數(shù)器的比較中斷解決了系統(tǒng)設(shè)計中的難題。

光電開關(guān)相關(guān)文章:光電開關(guān)原理

上一頁 1 2 3 下一頁

關(guān)鍵詞: 開發(fā) 典型案例 單片機

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉