《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 半導(dǎo)體培養(yǎng)箱的ARM嵌入式控制系統(tǒng)研制
半導(dǎo)體培養(yǎng)箱的ARM嵌入式控制系統(tǒng)研制
來(lái)源:電子技術(shù)應(yīng)用2011年第5期
鮑 琦,許麗佳,張開(kāi)恒,張珂銘,尹新建,孫 磊
四川農(nóng)業(yè)大學(xué) 信息與工程技術(shù)學(xué)院, 四川 雅安 625014
摘要: 針對(duì)傳統(tǒng)培養(yǎng)箱加熱制冷器件能耗高、體積大且溫控精度不高的特點(diǎn),應(yīng)用熱電半導(dǎo)體對(duì)培養(yǎng)箱的溫度進(jìn)行調(diào)節(jié)。采用ARM920T架構(gòu)的S3C2440AL處理器并配合外圍設(shè)備,在Linux嵌入式操作系統(tǒng)上進(jìn)行核心程序研發(fā),并加入模糊自適應(yīng)PID算法,以實(shí)現(xiàn)對(duì)培養(yǎng)箱溫度的精確控制。試驗(yàn)結(jié)果表明,該培養(yǎng)箱的控溫相對(duì)誤差達(dá)到±1.1%。
中圖分類(lèi)號(hào): TP391.8
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)05-0094-04
Development of the control system on ARM for semiconducting incubator
Bao Qi, Xu Lijia, Zhang Kaiheng, Zhang Keming, Yin Xinjian, Sun Lei
College of Information & Engineering, Sichuan Agriculture University, Yaan 625014, China
Abstract: Aiming at the disadvantages of traditional incubator such as high energy consumption, big bulky and low precision, the thermoelectric semiconductor based on its Peltier effect is used to control incubator’s temperature. This system is designed by using ARM920T processor S3C2440AL and the hardware driver programs developed on Linux embedded operating system, with aim of controlling temperature accurately. The experiment results show that the system can achieve the temperature relative error within ±1.1%.
Key words : ARM controller; Linux; fuzzy PID algorithm; thermoelectric


    生物培養(yǎng)箱作為一種廣泛應(yīng)用于生物、農(nóng)林等學(xué)科的實(shí)驗(yàn)設(shè)備,其傳統(tǒng)的加熱制冷方式具有噪音大、溫控調(diào)節(jié)精度不高且污染環(huán)境等缺點(diǎn)。對(duì)此本文設(shè)計(jì)了一款利用半導(dǎo)體材料作為溫控元件的生物培養(yǎng)箱。在此設(shè)計(jì)中,一方面采用新型半導(dǎo)體熱電轉(zhuǎn)換技術(shù),通過(guò)半導(dǎo)體材料的三種形式將熱能和電能進(jìn)行直接轉(zhuǎn)換,以實(shí)現(xiàn)溫度調(diào)節(jié),并輔以濕度、光照的調(diào)節(jié);另一方面采用ARM9處理器作為硬件平臺(tái),移植開(kāi)源的Linux操作系統(tǒng),并研發(fā)了模糊PID控制系統(tǒng)。不僅減小了噪音,還降低了產(chǎn)品的成本,且具有控制速度快、精度高及性能穩(wěn)定等特點(diǎn),為培養(yǎng)箱的設(shè)計(jì)提供了一種新的思路。
1 半導(dǎo)體培養(yǎng)箱的硬件設(shè)計(jì)
    該培養(yǎng)箱的硬件部分由信號(hào)采集模塊、核心處理模塊和控制模塊組成,其中信號(hào)采集模塊又分溫度、濕度采集。溫度采集是采用單總線(xiàn)數(shù)字溫度傳感器DS18B20,微處理器依據(jù)其器件寄存器內(nèi)置序列號(hào)對(duì)所匹配的傳感器進(jìn)行讀取,以此實(shí)現(xiàn)多點(diǎn)分布式應(yīng)用;濕度采集是采用濕度傳感器SHT11,微處理器采用二線(xiàn)串行數(shù)字接口和溫濕度傳感器芯片SHT11通信以完成濕度信號(hào)采集。核心處理模塊采用基于ARM920T 架構(gòu)的S3C2440AL處理器為CPU的核心板,負(fù)責(zé)完成數(shù)據(jù)的運(yùn)算與擴(kuò)展外圍通信接口、USB接口、擴(kuò)展接口、多媒體接口等硬件資源,且該核心板還具有支持觸屏控制等功能。控制模塊以繼電器電路為主體,核心處理模塊輸出的控制信號(hào),經(jīng)繼電器電路接執(zhí)行元件,實(shí)現(xiàn)對(duì)熱電半導(dǎo)體、超聲波加濕、T4燈等工作狀態(tài)控制。本培養(yǎng)箱的硬件結(jié)構(gòu)如圖1所示。

1.1信號(hào)采集模塊
    信號(hào)采集模塊的功能采用上述DS18B20芯片和SHT11芯片來(lái)分別采集培養(yǎng)箱內(nèi)的溫度和濕度。DS18B20由美國(guó)DALLAS公司生產(chǎn),具有微型化、低功耗、抗干擾能力強(qiáng)、器件唯一編碼、支持分布式尋址等功能,適用于各類(lèi)溫度測(cè)控系統(tǒng)。其內(nèi)部有控制電路、64 bit光刻ROM和溫度轉(zhuǎn)換器等。收發(fā)提供9~12 bit可編程設(shè)備溫度讀數(shù)。電壓范圍為3.0 V~5.5 V,測(cè)量溫度范圍為-55℃~125℃,-10℃~85℃范圍內(nèi)精度為±0.5℃。通過(guò)軟件修正可達(dá)±0.062 5℃。本設(shè)計(jì)采取由數(shù)據(jù)線(xiàn)寄生電源供電,在培養(yǎng)箱內(nèi)設(shè)置有2個(gè)DS18B20以進(jìn)行多點(diǎn)檢測(cè),并通過(guò)計(jì)算此2點(diǎn)的溫度平均值作為箱內(nèi)的溫度檢測(cè)值[8]。

 


    SHT11是瑞士Sensirion公司生產(chǎn)的具有I2C總線(xiàn)接口的單片全校準(zhǔn)數(shù)字式相對(duì)濕度和溫度傳感器。該傳感器將溫濕度傳感器、信號(hào)放大器、A/D轉(zhuǎn)換、I2C總線(xiàn)接口集成于一片芯片上(CMOSensTM技術(shù)),具有數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路及全互換的特點(diǎn)。其二線(xiàn)串行接口SCK支持CRC傳輸校驗(yàn),傳輸可靠性高且測(cè)量精度可編程在線(xiàn)調(diào)節(jié)。該芯片集成電容性聚合體濕度敏感元件,將濕度轉(zhuǎn)換成電信號(hào),并將此信號(hào)經(jīng)放大后輸入一個(gè)14位的A/D轉(zhuǎn)換器,最后經(jīng)I2C總線(xiàn)數(shù)字接口輸出數(shù)字信號(hào)。
1.2 核心處理模塊
    核心處理模塊采用Samsung公司的S3C2440AL處理器,其擁有ARM920T核,能運(yùn)行32 bit RISC指令集指令及16 bit的精簡(jiǎn)Thumb指令代碼,具有16  KB數(shù)據(jù)CACHE與指令CACHE,具有MMU(Memory Management Unit)功能。該處理器主頻可達(dá)400 MHz,并支持SPI、IIC等多種總線(xiàn)擴(kuò)展方式[1],能夠滿(mǎn)足培養(yǎng)箱控制系統(tǒng)的要求。根據(jù)培養(yǎng)箱硬件設(shè)計(jì)的實(shí)際要求,此系統(tǒng)由兩片32 MB的SDRAM和一片64 MB的NAND Flash組成了最小系統(tǒng),并將啟動(dòng)代碼存放在NAND Flash的起始段中。系統(tǒng)擴(kuò)展外圍接口,其中:處理器的標(biāo)準(zhǔn)串行通信接口UART0外接MAX232芯片與宿主機(jī)相連,作為調(diào)試串口;處理器的兩路通用串行總線(xiàn)USB(Universal Serial Bus),一路USB HOST用于U盤(pán)接口,一路USB Slave實(shí)現(xiàn)數(shù)據(jù)的傳輸;LCD接口接?xùn)|華3.5英寸LCD觸屏; GPIO(通用輸入/輸出口)支持與硬件的數(shù)據(jù)交互、控制硬件工作和讀取硬件的工作狀態(tài)信號(hào)等功能,根據(jù)設(shè)計(jì)需要,擴(kuò)展GPIO定義如表1所示。

1.3 控制模塊
    控制模塊的功能是對(duì)溫度進(jìn)行準(zhǔn)確控制,使用的溫控元件為熱電半導(dǎo)體。半導(dǎo)體制冷原理建立在三個(gè)效應(yīng)基礎(chǔ)上:塞貝克效應(yīng) 、帕爾帖效應(yīng)和湯姆遜效應(yīng),構(gòu)成了熱電設(shè)備的理論基礎(chǔ)。其原理是當(dāng)一塊N型半導(dǎo)體材料和一塊P型半導(dǎo)體材料聯(lián)結(jié)成電偶對(duì)時(shí),若此電偶對(duì)接通直流電流后,其內(nèi)部就會(huì)產(chǎn)生能量的轉(zhuǎn)移:電流由N型元件流向P型元件的接頭吸收熱量,成為冷端。由P型元件流向N型元件的接頭釋放熱量,成為熱端。利用此原理實(shí)現(xiàn)制冷或加熱,具有無(wú)污染、無(wú)噪聲、體積小及質(zhì)量輕等特點(diǎn)[9]。圖2是半導(dǎo)體制冷的工作原理圖。

2 半導(dǎo)體培養(yǎng)箱的軟件設(shè)計(jì)
    培養(yǎng)箱的軟件平臺(tái)選用開(kāi)源嵌入式Linux操作系統(tǒng),其內(nèi)核穩(wěn)定、功能強(qiáng)大,可裁剪并對(duì)底層硬件有豐富的函數(shù)支持。本培養(yǎng)箱的軟件設(shè)計(jì)首先完成Bootloader下載、Kernel內(nèi)核的配置、裁剪、編譯與移植并制作YAFFS根文件系統(tǒng),然后開(kāi)發(fā)對(duì)溫、濕度傳感器及熱電半導(dǎo)體等底層硬件的驅(qū)動(dòng)程序,以及基于Qt/Embededded的應(yīng)用程序設(shè)計(jì),實(shí)現(xiàn)了GUI人機(jī)交互接口和培養(yǎng)箱軟件工作算法,并采用以模糊自適應(yīng)PID算法為核心的控制算法。培養(yǎng)箱軟件設(shè)計(jì)的整體框架如圖3所示。

2.1嵌入式Linux軟件平臺(tái)的搭建
    本培養(yǎng)箱的嵌入式Linux軟件平臺(tái)是在PC機(jī)上的Federa 12操作系統(tǒng)下建立,具體內(nèi)容如下:(1)建立交叉編譯環(huán)境。為了能在宿主機(jī)的平臺(tái)上編譯出可在目標(biāo)機(jī)體系結(jié)構(gòu)平臺(tái)上運(yùn)行的程序,需要建立交叉編譯環(huán)境,包括可用于目標(biāo)平臺(tái)ARM的編譯器arm-gcc、相關(guān)的鏈接和運(yùn)行庫(kù)-Glibc以及二進(jìn)制文件處理工具-Binutils等,這些GNU軟件都是在i386平臺(tái)上使用。本設(shè)計(jì)以EABI _4.3.3為交叉編譯工具,修改PATH參數(shù)完成配置。(2)制作Bootloader。Bootloader是嵌入式Linux系統(tǒng)的引導(dǎo)加載程序,是系統(tǒng)上電后運(yùn)行的第一段代碼。它可以初始化必要的硬件設(shè)備,創(chuàng)建內(nèi)核需要的基本信息,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),便于引導(dǎo)和加載操作系統(tǒng)。本設(shè)計(jì)采用支持Nand Flash啟動(dòng)和USB下載內(nèi)核鏡像文件系統(tǒng)的u-boot。(3)Linux內(nèi)核的配置、裁剪和編譯。Linux內(nèi)核配置系統(tǒng)由Makefile、配置文件(config.in)以及配置工具三部分構(gòu)成,其中Makefile定義內(nèi)核的編譯規(guī)則,配置文件給用戶(hù)提供的選擇功能,配置工具包括配置命令解釋器和配置用具界面。本設(shè)計(jì)使用Linux-2.6.30.4內(nèi)核版本,針對(duì)交叉編譯要求,定義Makefile的CROSS_COMPILE=arm-linux-,并根據(jù)實(shí)際需要完成內(nèi)核配置,最后制作內(nèi)核鏡像文件[4]。(4)制作根文件系統(tǒng)。文件系統(tǒng)負(fù)責(zé)管理系統(tǒng)的數(shù)據(jù)與文件。YAFFS是專(zhuān)門(mén)為NAND閃存設(shè)計(jì)的嵌入式文件系統(tǒng),適用于大容量的存儲(chǔ)設(shè)備。而且此系統(tǒng)提供了損耗平衡和掉電保護(hù)等功能,可以方便地集成到系統(tǒng)中去,具有速度快、占用內(nèi)存少的特點(diǎn),因此選用Busybox- 1.13.0制作的YAFFS作根文件系統(tǒng)。
2.2 系統(tǒng)內(nèi)核層的驅(qū)動(dòng)程序設(shè)計(jì)
    系統(tǒng)內(nèi)核層的程序主要為外接硬件設(shè)備的驅(qū)動(dòng)程序,是內(nèi)核與設(shè)備之間的交互層。Linux支持三類(lèi)設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)接口。在Linux操作系統(tǒng)中,每個(gè)硬件設(shè)備的應(yīng)用程序可以利用open( )、release( )、read( )及write( )等函數(shù)對(duì)硬件設(shè)備進(jìn)行操作[6]。內(nèi)核層的驅(qū)動(dòng)程序主要指DS18B20、SHT11、熱電半導(dǎo)體與超聲波加濕等硬件設(shè)備的驅(qū)動(dòng)程序,它們分別定義在三個(gè)源文件中,其中ctrb.c中包含熱電半導(dǎo)體、超聲波加濕、T4燈及風(fēng)扇等設(shè)備的驅(qū)動(dòng)程序,18b20.c與sht.c分別為DS18B20與SHT11傳感器的驅(qū)動(dòng)程序。上述設(shè)備均屬字符型的驅(qū)動(dòng)設(shè)備, 在系統(tǒng)啟動(dòng)后利用insmod指令將其動(dòng)態(tài)加載到內(nèi)核中。驅(qū)動(dòng)程序包括初始化模塊、卸載模塊、讀模塊和寫(xiě)模塊。其中初始化模塊主要包括初始化內(nèi)部數(shù)據(jù)結(jié)構(gòu)、硬件以及使用設(shè)備前應(yīng)該完成的工作;讀寫(xiě)模塊主要負(fù)責(zé)對(duì)DS18B20與SHT11的讀寫(xiě)。在Linux2.6內(nèi)核中CPU使用虛擬地址訪問(wèn)外部設(shè)備, ctrb_ioctl()函數(shù)實(shí)現(xiàn)用戶(hù)程序通過(guò)訪問(wèn)設(shè)備文件的方式對(duì)設(shè)備的間接操作。由于驅(qū)動(dòng)程序?qū)儆趦?nèi)核層,程序最后要將數(shù)據(jù)從內(nèi)核態(tài)拷貝到用戶(hù)態(tài),供應(yīng)用程序使用。圖4為初始化模塊驅(qū)動(dòng)程序工作流程圖。

2.3 系統(tǒng)應(yīng)用層的程序設(shè)計(jì)
    應(yīng)用層的程序設(shè)計(jì)主要是在Qt/Embedded平臺(tái)上完成的,負(fù)責(zé)設(shè)計(jì)觸摸屏的應(yīng)用程序GUI,另外通過(guò)調(diào)用驅(qū)動(dòng)程序以實(shí)現(xiàn)硬件平臺(tái)的工作算法。Qt/Embedded是由Trolltech公司開(kāi)發(fā)的面向嵌入式的Qt版本。它通過(guò)Qt API與Linux I/O以及Framebuffer直接交互,擁有較高的運(yùn)行效率,其類(lèi)庫(kù)采用C++封裝且完全面向?qū)ο笠詫?shí)現(xiàn)真正組件編程。其開(kāi)發(fā)套件使用C++語(yǔ)言編程,具有功能強(qiáng)大、使用簡(jiǎn)單、控件資源豐富且可移植性好等特點(diǎn)[7]。
    本系統(tǒng)主程序的觸發(fā)來(lái)自?xún)煞矫?。其一是按照系統(tǒng)時(shí)鐘,依據(jù)時(shí)序觸發(fā)各事件并完成相應(yīng)的處理;另一方面由用戶(hù)界面操作觸發(fā)。根據(jù)設(shè)計(jì)要求,系統(tǒng)主程序采用雙線(xiàn)程工作方式,分別定義Ctrb_n 與SensorT繼承QThread實(shí)現(xiàn)雙線(xiàn)程。 QThread代表在程序中一個(gè)單獨(dú)的線(xiàn)程控制[4],在多任務(wù)操作系統(tǒng)中,它和同一進(jìn)程中的其他線(xiàn)程共享數(shù)據(jù),但運(yùn)行起來(lái)就像一個(gè)單獨(dú)的程序一樣。QThread不是在main()中開(kāi)始,而是在run ()中開(kāi)始運(yùn)行的。
    在工作算法中添加模糊PID自適應(yīng)控制,使控制器能夠在線(xiàn)自動(dòng)調(diào)整比例系數(shù)Kp、積分系數(shù)Ki和微分系數(shù)Kd,以期獲得最佳的溫度控制。在PID控制器中,比例系數(shù)Kp值的選取決定于系統(tǒng)的響應(yīng)速度,積分控制Ki用于消除系統(tǒng)的穩(wěn)態(tài)誤差,微分系數(shù)Kd在于改變系統(tǒng)的動(dòng)態(tài)特性。調(diào)節(jié)初期選取較大的Kp值以提高響應(yīng)速度,較小的Ki值以防止積分飽和,Kd=0以保證系統(tǒng)的穩(wěn)定性;在調(diào)節(jié)中期,隨著誤差的減小Kp也逐漸變小,Ki值加大以盡量消除余差,Kd值取較小值以調(diào)節(jié)系統(tǒng)的動(dòng)態(tài)特性;在調(diào)節(jié)過(guò)程后期,Kp值調(diào)到較小值以保證系統(tǒng)的平穩(wěn)性,Ki值取適中以消除余差,Kd值取小值以控制過(guò)程的制動(dòng)作用[5]。主程序的工作流程如圖5所示。

3 結(jié)果分析
    在室溫為33℃時(shí),設(shè)定目標(biāo)溫度為48℃,分別采用普通PID算法與模糊自適應(yīng)PID算法測(cè)得實(shí)驗(yàn)數(shù)據(jù),并利用MATLAB對(duì)所測(cè)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行比較分析,得到圖6所示的溫度變化曲線(xiàn)。

    從圖6可知采用普通PID控制時(shí),具有調(diào)節(jié)速度慢、超調(diào)量大以及精度不高等特點(diǎn);而ARM實(shí)現(xiàn)的模糊PID控制,其調(diào)節(jié)時(shí)間相對(duì)于普通PID控制而言減小了5 min, 超調(diào)量變小, 平穩(wěn)性更好,且控制相對(duì)誤差達(dá)到±1.1%。熱電半導(dǎo)體的應(yīng)用,相對(duì)于傳統(tǒng)的加熱制冷設(shè)備,在減小噪音和環(huán)境污染等方面有很大的改進(jìn),從而提高了控制質(zhì)量,降低了能耗。
    本文實(shí)現(xiàn)了一種基于ARM9與嵌入式Linux操作系統(tǒng)并采用新型熱電半導(dǎo)體為溫控元件的控制方案,經(jīng)反復(fù)實(shí)驗(yàn)調(diào)試該培養(yǎng)箱已達(dá)到相對(duì)誤差±1.1%的控制要求,所設(shè)計(jì)的控制方案具有溫度調(diào)節(jié)響應(yīng)快、超調(diào)量小、性能穩(wěn)定等特點(diǎn)。該方案具有低功耗、無(wú)污染及觸屏控制等優(yōu)點(diǎn),具有良好的市場(chǎng)潛力。
參考文獻(xiàn)
[1] 張曉林.嵌入式系統(tǒng)應(yīng)用[M]. 北京: 高等教育出版社,2008.
[2] 崔光照,陳富強(qiáng). 基于ARM9的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)網(wǎng)關(guān)節(jié)點(diǎn)設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用,2008, 34(11):115-118.
[3] 艾紅,王洪濤. 基于ARM的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)[J].電子技術(shù)應(yīng)用,2008,34(9):66-69.
[4] 周慧玲,王智威,張鳳英,等. 基于ARM7和ZigBee技術(shù)的物流機(jī)械設(shè)備測(cè)振系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù), 2010,29(2):33-35.
[5] 諸靜.模糊控制原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2005.
[6] 毛德超, 胡希明.Linux內(nèi)核源碼情景分析[M].杭州: 浙江大學(xué)出版社,2001,9.
[7] SLOSS A N,SYMES D,WRIGHT C. ARM嵌入式系統(tǒng)開(kāi)發(fā)—軟件設(shè)計(jì)與優(yōu)化[M].沈建華,譯.北京:北京航空航天大學(xué)出版社, 2005.
[8] 宋戈, 鶴松.51單片機(jī)應(yīng)用開(kāi)發(fā)范例大全[M].北京: 人民郵電出版社, 2010.
[9] 劉輝. 半導(dǎo)體多級(jí)制冷器的設(shè)計(jì)與性能優(yōu)化[D] .上海: 同濟(jì)大學(xué), 2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。