單片機典型案例開(kāi)發(fā)(二)
2. 4 輸出驅動(dòng)控制模塊及報警模塊
輸出驅動(dòng)控制模塊通過(guò)控制芯片產(chǎn)生電信號, 控制相應的設備運轉或者停止, 實(shí)現倉庫溫度和濕度的自動(dòng)調節。當檢測到的溫度和濕度值大于或小于設定值時(shí),報警模塊同時(shí)會(huì )發(fā)生報警信號通知用戶(hù)注意當前狀況,必要時(shí)需采取相應人工措施。
3 系統軟件設計
由于溫、濕度變化規律性不強, 被檢測對象的溫、濕度具有非線(xiàn)性、熱慣性、時(shí)變性等特點(diǎn), 較難建立精確的數學(xué)模型。而模糊控制算法不需要建立精確的數學(xué)模型, 可依據人工實(shí)際操作經(jīng)驗, 將其抽象為一系列的控制算法后通過(guò)計算機完成控制過(guò)程, 具有控制動(dòng)態(tài)響應好、超調小、穩定性強等特點(diǎn)。
控制器可以自動(dòng)檢測晝夜、季節、室內環(huán)境溫、濕度值的變化, 利用模糊算法實(shí)現自動(dòng)控制過(guò)程。倉庫存儲土豆種子的溫度控制在- 1~ + 3℃ 之間, 相對濕度保持在45%~ 70% 較為適宜。
溫、濕度控制程序中, 溫、濕度各有2 個(gè)輸入數據和1 個(gè)輸出數據。e 為溫、濕度偏差;△e 為溫、濕度變化率; u 為輸出控制變量, 其值分別為:
其中: PL 表示負大; PM 表示負中; PS 表示負??; NS 表示正??; NM 表示正中; NL 表示正大。然后根據專(zhuān)家知識和操作人員的經(jīng)驗, 建立模糊控制表。其模糊關(guān)系可以用多個(gè)條件語(yǔ)句表示, 例如: IF e= NL and △e=NL then u= SM; 根據模糊推理進(jìn)行運算, 即可推出控制結果。
在主程序中, 主要負責倉庫中溫、濕度的實(shí)時(shí)顯示,讀取并處理傳感器測量的溫、濕度值, 當實(shí)際值與事先設定的溫、濕度上下限值不同時(shí), 發(fā)出控制信號, 驅動(dòng)輸出控制單元啟動(dòng)或停止執行控制電機, 同時(shí)發(fā)出報警信號, 通知用戶(hù)當前發(fā)生的狀況并作相應控制日志記錄。
主程序流程圖和溫、濕度采集處理流程圖分別如圖4,圖5所示。
圖4 主程序流程圖
圖5 溫、濕度采集處理框圖
4 結語(yǔ)
采用模糊控制算法非常適合大型倉庫中多點(diǎn)溫度和濕度的檢測與控制, 具有可靠性高、成本低廉、能耗低、反應靈敏、以及可擴展性好等特點(diǎn)。該設備具備一定的通用性, 經(jīng)過(guò)簡(jiǎn)單的改進(jìn), 就能服務(wù)于國防工業(yè)、農業(yè)等生產(chǎn)上的各個(gè)方面。
基于A(yíng)VR單片機的衛星地面測控系統設計#e#
四、基于A(yíng)VR單片機的衛星地面測控系統設計
本文介紹了單片機Atmega128在一種衛星地面測控系統中的應用,該系統利用Atmega128完成了10路模擬信號的測量、4路脈沖信號的頻率測量以及脈沖寬度的測量,由單片機上的16位定時(shí)計數器輸出兩路與輸入信號具有相位關(guān)系的信號,并通過(guò)外擴串口與其它測試模塊及工控機進(jìn)行通信。由于要求系統能夠連續穩定工作3年,并且數據不能丟失,因此,在設計時(shí)采用了雙電源冗余熱備份的方案,并且采用兩個(gè)工控機同時(shí)接收數據并互為備份的設計方案。
硬件設計
Atmega128屬于A(yíng)tmel公司的AVR系列單片機,是一種高性能、低功耗的8位控制器,執行大多數指令只需要一個(gè)時(shí)鐘周期。其最高主頻可達到16MHz;自帶128KB可在線(xiàn)編程的閃存、4KB的EEPROM、4KB的SRAM,程序可進(jìn)行加密;自帶JTAG接口,便于程序的調試;集成外設:兩個(gè)8位定時(shí)計數器、兩個(gè)16位定時(shí)計數器、兩個(gè)8位PWM通道、6個(gè)16位PWM通道、8個(gè)10位 ADC通道、一個(gè)I2C接口、兩個(gè)可編程異步串行接口、一個(gè)SPI接口、一個(gè)看門(mén)狗定時(shí)器和8個(gè)外部中斷源。
衛星地面測控系統主要由電源模塊、電子機箱、測試箱、工控機以及紅外地球敏感器構成,系統結構如圖1所示。其中兩臺電源并聯(lián), 輸出串聯(lián)二極管。在整個(gè)測控系統中,測試箱的控制功能是通過(guò)Atmega128完成的。

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

單片機與工控機之間通過(guò)RS-232標準總線(xiàn)進(jìn)行數據通信,在設計中采用電平轉換芯片MAX202來(lái)實(shí)現二者的電平兼容。為了能夠和測試系統的其它模塊進(jìn)行串口通信,采用Xicor公司的雙串口芯片ST16C2552外擴了兩個(gè)串口,由于與外擴串口通信的是-12V~+12V的信號,不是標準電平,因此,要另外設計電平轉換電路。使用Altera公司的可編程邏輯器件EPM7128實(shí)現對DAC和ADC的邏輯控制;使用BB公司的12位ADC實(shí)現對遙測信號的測量;采用BB公司的12位DAC芯片DAC7615產(chǎn)生電地球波信號。
具體功能如下:
ADC測量:將輸入的10路模擬信號經(jīng)過(guò)阻抗匹配后連接到通道選擇器,再接到ADC芯片ADS7835的信號輸入端,ADC的輸出信號以及控制信號經(jīng)過(guò)光隔離接到EPLD邏輯,在邏輯內部實(shí)現對ADC啟動(dòng)信號、轉換通道的選擇,以及對時(shí)鐘信號、數據信號的控制。
DAC 輸出:?jiǎn)纹瑱C通過(guò)邏輯芯片實(shí)現對DAC的片選、時(shí)鐘、數據等信號的控制,DAC的輸出信號通過(guò)光隔離后,再經(jīng)過(guò)運算放大器進(jìn)行阻抗匹配后才接到整個(gè)測試系統的其它模塊。DAC參考電壓的穩定性至關(guān)重要,如果參考電壓穩定性差,將導致整個(gè)DAC的輸出波動(dòng)很大,達不到輸出精度要求,因此,通過(guò)一個(gè)穩壓芯片 AD584給DAC提供參考電壓。
頻率測量:電測箱需要對2路基準信號和2路光柵信號進(jìn)行測量,利用AVR單片機的外部中斷和計數器1、3實(shí)現測量。將2路基準信號分別接到單片機的外中斷INT0和INT1,將光柵信號分別接到單片機的計數器1和3。在電測箱需要實(shí)現的各項功能中,電地球波的輸出是一個(gè)難點(diǎn),因為需要電地球波的輸出與基準信號具有相位關(guān)系,并且要求輸出具有可變相位、幅度和斜率的信號,本文通過(guò)計數器1和3的比較中斷實(shí)現電地球波的輸出。
串口通信:通過(guò)單片機自帶的兩個(gè)異步串口,并經(jīng)過(guò)電平轉換與上位工控機通信,通過(guò)雙串口芯片ST16C2552外擴兩個(gè)串口與測試系統的其它模塊通信,此外,為保證系統的可靠性,所有的信號均經(jīng)過(guò)光隔離。
軟件實(shí)現
單片機軟件
運行在單片機的底層軟件主要負責ADC的采集、DAC的輸出以及串口的通信,下面詳細介紹各個(gè)部分:
1、 光柵頻率測量:測量模擬基準一個(gè)周期內的光柵個(gè)數
在程序中,每次進(jìn)入外中斷0的處理程序void int0_isr(void)(即基準脈沖上升沿到來(lái)時(shí))調用void do_gd_opt_frq()函數測量光柵頻率。
在do_gd_opt_frq ()函數中,先把前一次讀取計數器1的計數值保存在全局變量time1_prev中,再讀取計數器1的值并保存在time1_next中,因為兩次中斷的間隔就是模擬基準的周期,有一個(gè)光柵脈沖計數器1就加1,所以,前后兩次的差值就是一個(gè)模擬基準周期內光柵的個(gè)數。
2、 模擬基準幅度
在INT0的中斷處理函數中置一個(gè)全局標志refoa_gd_flag = 0xff,在一個(gè)100?s的定時(shí)器的中斷處理函數中查詢(xún)此全局標志,若置位,則對模擬基準的ADC通道連續采樣400次,采樣后清 refoa_gd_flag標志并置采樣結束的標志refoa_gd_finished = 0xff。在主程序main()函數中不斷查詢(xún)r(jià)efoa_gd_finished標志,若置位,則調用do_refoa_high()函數求出模擬基準幅度,然后清標志。在do_refoa_high()函數中求出采樣400個(gè)點(diǎn)中的最大值和最小值,兩者之差即為模擬基準幅度。
3、 模擬基準周期:測量一個(gè)模擬基準周期的毫秒值
在一個(gè)1ms的定時(shí)器溢出中斷處理函數中,全局的計數變量ref_gd_count加1,ref_gd_count初始化為0。在外中斷0的處理函數 int0_isr()中讀取ref_gd_count的值,即為模擬基準的周期,再把ref_gd_count清零。這樣,只有第一次測量值是無(wú)效的,以后均為有效的模擬基準周期。
4、 模擬基準寬度
在INT0的中斷處理函數中置全局變量refoa_width_gd_ count=0,在100?s的定時(shí)器中斷中查詢(xún)外中斷0的引腳是否為高電平,是高電平則refoa_width_gd_count加1,直至變?yōu)榈碗娖?,refoa_width_gd_ count的值就是模擬基準的寬度。
5、 電地球波
在do_ein()函數中處理工控機串口傳過(guò)來(lái)的電地球波信息,如果是停止電地球波命令(state=0),通過(guò)DA電地球波直接輸出高電平并清除電地球波使能標志位ein_gd_enable。如果是開(kāi)始電地球波命令(state=1),把相位、寬度、幅值、斜率等信息賦給全局變量保存,并且計算出步距和斜率上各個(gè)點(diǎn)的輸出值,置位電地球波使能標志 ein_gd_enable。
電地球波的產(chǎn)生是以模擬基準為基準的,在INT0的中斷處理函數中設置計數器的比較中斷并使能。
圖3中, T0與T1 之間是地球波的相位,T2與T5之間是地球波的寬度。在T1時(shí)刻進(jìn)入計數器1的比較中斷timer1_compa_isr(),全局變量 ein_count_gd初始化為0,若ein_count_gd不等于1,則設置比較中斷寄存器初值為下一步距點(diǎn),并通過(guò)DA輸出,若下一個(gè)比較中斷到來(lái)ige ein_count_gd不等于1,則繼續設置比較中斷寄存器初值為下一個(gè)步距,并輸出幅值,直到斜率上所有的幅值輸出完畢,置ein_count_gd 等于1并設置比較中斷寄存器,使T4進(jìn)入比較中斷。T4進(jìn)入比較中斷,并按照前述方法輸出斜率上所有的幅值,完畢則禁止比較中斷并置 ein_count_gd=0xff。

ADC采集和串口通信比較簡(jiǎn)單,這里不再贅述。
軟件編譯與下載
由于單片機程序是采用C語(yǔ)言設計完成的,因此,需要用Image Craft公司的ICCAVR編譯器進(jìn)行編譯,生成COF文件,再用AVR STUDIO調試軟件和雙龍公司的AVR JTAG仿真器進(jìn)行調試。調試完成后,利用單片機的JTAG接口寫(xiě)入內部閃存即可。
上位工控機軟件
運行在工控機上的軟件主要負責處理AVR單片機通過(guò)串口傳送過(guò)來(lái)的數據并進(jìn)行超差、報警的檢查,然后把數據存儲在A(yíng)CCESS數據庫中,以便查看。該軟件能夠設置電地球波的幅度、寬度、相位,并能自主控制電地球波的產(chǎn)生或停止。
上位工控機軟件采用VC6.0編寫(xiě),其中的數據庫部分采用ADO技術(shù)。ADO是Microsoft公司為最新和最強大的數據訪(fǎng)問(wèn)范例 OLE DB 而設計的,是一個(gè)便于使用的應用程序層接口。ADO 最主要的優(yōu)點(diǎn)是易于使用、速度快、內存支出少且磁盤(pán)遺跡小。
結語(yǔ)
本文介紹的系統使用了很多Atmega128的外圍資源,并通過(guò)Atmega128提供的定時(shí)計數器的比較中斷解決了系統設計中的難題。
光電開(kāi)關(guān)相關(guān)文章:光電開(kāi)關(guān)原理
評論