設計選用STM32單片機作控制器,設計溫度單反饋的控制系統,對電加熱水器內水的溫度進行控制。通過PT100溫度傳感器實現對水溫信號的采集,并利用模擬量前向通道來對水溫信號進行處理。利用STM32單片機進行控制輸出PWM信號,用此信號控制接觸器進而控制電加熱水器的電源通斷,最終實現對水溫的控制。同時用組態(tài)軟件設計監(jiān)控界面來實現對水溫的控制顯示。通過對此課題的設計,能夠使自動化的學生對工業(yè)過程控制對象具有更進一步的了解,同時熟練掌握自動化控制系統的設計流程,為以后的工作學習打下堅實基礎。
一、控制系統硬件設計
1、控制系統硬件總體設計
溫度是一個很重要的變量,需要對其進行準確地控制。溫度控制系統常用來保持溫度恒定或者使溫度按照某種規(guī)定的規(guī)律變化。閉環(huán)控制是溫度控制系統中最為常見類型,本設計即為閉環(huán)溫度控制系統,閉環(huán)溫度控制方框圖如圖1所示。
溫度控制系統由被控對象、測量裝置、調節(jié)器和執(zhí)行機構組成。測量裝置對被控電加熱水器中水溫進行測量,控制器將測量值與給定值進行比較,若存在偏差便由控制器對偏差信號進行處理,輸出控制信號給執(zhí)行機構來啟動或停止電加熱水器工作,最終將溫度調節(jié)到設定值。被控對象是電加熱水器內水的溫度。
基于上述理論設計出本控制系統,本系統硬件主要有:STM32單片機、PT100溫度傳感器、開關電源、模擬量前向通道、繼電器輸出模塊、HH52P型固態(tài)繼電器、CJ20-10型接觸器、電加熱水器,控制系統硬件結構圖如圖2所示。
2、STM32單片機介紹
STM32單片機是整個溫度控制系統的核心部分。因為對溫度控制器具有較高的要求,例如高執(zhí)行速度,高控制精度,高穩(wěn)定性以及高靈敏度等,所以選擇一個具有較高性能而又經濟的單片機就成為必然。本設計選用屬于STM32系列的STM32F103VET6單片機作為控制電路的核心部件,該單片機屬于ST意法半導體公司生產的32位高性能、低成本、低功耗的增強型系列單片機,它的內核采用的是ARM公司最新研發(fā)的Cortex-M3架構,該內核是專門設計于滿足用戶對高性能、低功耗和經濟實用的要求。ARM Cortex-M3處理器的架構在系統結構上的增強,使得STM32增強型系列單片機受益無窮,其采用的THUMB-2指令集使得其指令效率更高和而且性能更強。
STM32F103VET6采用薄型四方扁平式封裝技術(LQFP)具有100管腳,片內具有512KB的FLASH,64KB的RAM(片上集成12Bit A/D、D/A、PWM、CAN、USB、安全數字輸入輸出卡SDIO、可變靜態(tài)存儲控制器FSMC等資源)。1個串行外設接口(SPI)總線控制的M25P16(16MB容量的串行FLASH),用于存儲數據、代碼、字庫及圖相等等。1個2.8寸26萬色顯示屏(TFT 240X320(帶觸摸屏))接口,利用MCU的FSMC的16位數據接口模式,觸摸屏采用ADS7843(4線電阻觸摸屏轉換接口芯片)芯片用硬SPI接口控制。STM32單片機采用2.0~3.6V的供電電壓,可以工作在-40℃~85℃的溫度范圍內,其最高的工作頻率是72MHz,其引腳分布如圖3所示。
STM32F103VET6單片機有3個不同的時鐘源可供選擇用以驅動系統時鐘,分別為HIS振蕩器時鐘、HSE振蕩器時鐘和PLL時鐘。這些設備還具有2個二級時鐘源,分別是40KHz的低速內部RC和32.768KHz的低速外部時鐘源,可以用來驅動看門狗時鐘和RTC。任何一個時鐘源在不被使用時,都可以被獨立的關閉或者開啟,以實現對系統功耗的優(yōu)化。
單片機由AMS1117-3.3芯片電路供電,輸入+5V,提供3.3V的固定電壓輸出,為了降低電磁干擾,需要經C7-C10濾波后再為CPU供電,R8為DGND與AGND的連接電阻,R9和D5 LED和電源指示連接電阻,電源電路如圖4所示。
RTC的備份電源采用VBAT 3.3V 鋰離子片狀電池,RTC的備份電源如圖5所示。
單片機的外部晶體/陶瓷諧振器(HSE)(P12、P13),Y1是8MHz晶體諧振器,C22、C23 是諧振電容,大小選擇22P。系統的時鐘經過PLL模塊將時鐘提高到72MHz。單片機的低速外部時鐘源(LSE)(P8、P9),Y2為32.768KHz的晶體諧振器,C20、C21 諧振電容選擇22PF。要注意的是根據ST公司的推薦,Y2要采用電容負載為6PF的晶振,否則有可能會出現停振的現象,時鐘電路如圖6所示
目前,STM32單片機已經在很多場合得到應用,研制出了很多性能優(yōu)良的產品,例如可編程邏輯控制器,打印機,掃描儀,電機控制以及一些數碼產品,STM32已成為非常成熟的可應用控制器件,本次設計選用的開發(fā)板如圖7所示。
3、硬件接線及其原理介紹
溫度控制系統在正常工作的時候,首先由PT100溫度傳感器檢測被控對象電加熱水器內水的當前溫度信號,將PT100溫度傳感器的電阻值變化在模擬量前向通道中作變換放大、冷端溫度補償、線性化。然后將模擬量前向通道輸出的模擬電壓信號送給主控模塊的STM32單片機進行處理,經數字化處理后與給定的溫度值的數字量進行比較。單片機根據預定的PID控制算法對數據進行處理,并通過顯示屏顯示當前溫度和設定值,程序自動確定系統是否存在異常,如果系統運行正常,將PID運算結果作為輸出控制量控制PWM波形的輸出,控制執(zhí)行器的動作,從而達到接通或者斷開電阻爐主電路的目的,實現對電加熱水器的控制。單片機控制水溫的同時可選擇連接上位機進行組態(tài)監(jiān)控,將變量的信息傳給上位機使用,并將上位機設定的參數下載到控制器STM32,從而達到上位機組態(tài)應有的效果。本次設計系統控制回路接線如圖8所示
模擬量前向通道使用TI公司生產的TLC7135(也可稱為ICL7135)芯片,加上前級模擬信號運算放大器的特殊處理, 以及一些其它的基本元器件成功地實現了微弱信號的測量。TLC7135具有以下特性:輸入阻抗高,對被測電路幾乎沒有影響;能夠自動校零;有精確的差分輸入電路;自動判別信號極性;有超、欠壓輸出信號;采用位掃描(共5位)與BCD碼輸出。本次設計應用PT100作為溫度傳感器,需要接三根信號線,其中兩線內部短接,信號經單8通道數字控制模擬電子開關CD4051選通后,經運算放大器后得到溫度信號對應的模擬電壓值,本次設計選擇的處理方法是經運算放大器的6管腳引出此模擬電壓信號,直接用單片機實現數字化處理,模擬量前向通道如圖9所示[6]。
繼電器輸出模塊主要用來執(zhí)行STM32輸出的PWM控制信號,及時的接通或者斷開后邊的固態(tài)繼電器HH52P和交流接觸器CJ20-10,進而實現對加熱器主電路的控制。由于單片機輸出的PWM信號3.3V左右電壓較低,不能直接用來驅動24V的固態(tài)繼電器HH52P,因此需要在其中間加用繼電器輸出模塊,繼電器輸出模塊供電電壓12V,只要有輸入信號便可以控制線圈的吸合與斷開,繼電器輸出模塊如圖10所示。
PT100是鉑熱電阻器,它的阻值會隨著溫度的變化而改變。PT后的100即表示它在0℃時阻值為100歐姆,在100℃時它的阻值約為138.5歐姆。常見的PT100感溫元件有陶瓷元件,玻璃元件,云母元件,它們是由鉑絲分別繞在陶瓷骨架,玻璃骨架,云母骨架上再經過復雜的工藝加工而成[7]。PT100的工作原理:當PT100在0℃的時候他的阻值為100歐姆,它的阻值會隨著溫度上升而成近似勻速的增長。但他們之間的關系并不是簡單的正比的關系,而更應該趨近于一條拋物線。
鉑電阻的阻值隨溫度的變化而變化的計算公式如公式(1)和公式(2)所示。
公式中的A,B,系數為實驗測定。PT100鉑電阻的RT曲線圖如圖11所示
PT100電阻隨溫度變化表見表1
本次設計的系統硬件電路實物圖如圖12所示。
二、控制系統軟件設計
1、軟件開發(fā)環(huán)境及其工具
C語言編程
C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序,因此,它的應用范圍廣泛,C程序設計語言是一種在國內外被廣泛使用的計算機編程語言。C語言是一種結構化語言,它層次清晰,便于按模塊化方式組織程序,易于調試和維護。C語言作為一種高級程序設計語言得到了廣泛的應用,采用C語言編寫的軟件程序不針對特定的硬件系統,可以根據不同的單片機 做移植,基于C語言的以上諸多特點及優(yōu)點,本設計的軟件程序設計,采用C程序設計語言[9]。
軟件開發(fā)工具介紹
編程軟件使用源自德國Keil公司的 RealView MDK,這一款編程軟件被全球超過十萬的嵌入式工程師或者學者驗證和使用,是ARM公司最新推出的針對各種嵌入式處理器的軟件開發(fā)工具。它集成了業(yè)界最領先的技術,融合了中國多數軟件工程師所需要的特點和功能,uVision4集成開發(fā)環(huán)境支持ARM7、ARM9和最新的Cortex-M3內核處理器,自動配置啟動代碼,集成Flash少些模塊,強大的性能分析功能。其集成開發(fā)環(huán)境如圖13所示。
uVision4集成開發(fā)環(huán)境主要的性能:
(1) 源代碼編輯器的功能非常強大。
(2) 設備數據庫可以根據開發(fā)工具進行配置。
(3) 工程管理器可以用于創(chuàng)建和維護工程。
(4) 編譯工具集匯編、編譯、連接過程于一體。
(5) 用于設置開發(fā)工具配置的對話框。
(6) 真正集成高速CPU及片上外設模擬器的源碼級調試器。
(7) 高級GDI接口,可用于目標硬件的軟件調試和ULINK2仿真器的連接。
(8) 用于下載應用程序到Flash ROM中的Flash編程器。
(9) 完善的開發(fā)工具手冊、設備數據手冊和用戶向導。
2、STM32工程創(chuàng)建與配置
經過學習軟件的編程,對STM32程序編寫有初步的認識,下面就是創(chuàng)建與配置工程的全部過程。
(1)新建一個文件夾(以后編的每一個工程都放進這個文件夾里,自己命名,此處所有文件都可以自己命名,例如:STM32 file)。此處所用到的庫函數版本為V3.5庫函數版本。
(2)創(chuàng)建一個文件夾(名字可以根據你編寫的程序來命名,如:Demo)。 新建子文件夾User,用于存放用戶源程序。新建子文件夾Project,用戶KEIL工程文件。在Project下依次創(chuàng)建Obj和List子文件夾,存放編譯過程中產生的中間文件。將main.cstm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h 、system_stm32f10x.c等文件復制到User文件下。
(3)復制源代碼到Demo文件夾。
將stm32f10x_stdperiph_lib3.5 / Libraries文件夾整體復制到Demo文件夾下 這就是ST的標準庫,是以源代碼形式提供的。也可將Libraries文件夾直接復制到STM32 file文件夾下,使其與以后創(chuàng)建的其他工程同在一個目錄下,這樣可使在該目錄在的工程共享Libraries。免得以后創(chuàng)建一個工程就得復制一次Libraries。
(4)新建一個Keil MDK工程
? 啟動Keil MDK,點擊菜單New uVision Project,然后按向導進行操作。選擇CPU類型為STM32F103VE。當提示是否復制啟動代碼時,選擇否。為了延長芯片使用壽命以及加快仿真速度,可以在ram中直接仿真(ram仿真速度快),用ram仿真 在斷電之后數據就全部丟失了,修改Target名字, 添加兩個,一個Flash,一個Ram。
? 為了便于代碼管理,在這個Project下創(chuàng)建幾個Group,User:存放用戶自己寫的源代碼;RVMDK:存放啟動文件(匯編文件);StdPeriph_Driver:存放ST標準庫文件;CMSIS :存放CMSIS接口文件(這也是庫的一部分);創(chuàng)建好Group后,我們開始依次添加文件。添加User:如main.c stm32f 10x_it.c添加RVMDK:statup_stm32f 10x_hd.x;添加StdPeriph_Driver :我們用到的STM32溫度控制系統設計
一些.C文件。如:misc.c stm32f 10x_rcc.c stm32f 10x_gpio.c等;添加CMSIS :core_cm3.c system_stm32f 10x.c。
(5)配置工程, 點擊“Options”按鈕。
? 打開Flash 調整Flash設置,切換到Output,然后選擇Object文件夾,在CreateHex File 前打鉤,并將Name Executable修改為output。
切換到Listing,選擇Listings文件夾。切換到C/C++,添加兩個預編譯宏STM32F10X_HD, USE_STDPERIPH_DRIVER (這是ST庫用到了這兩個宏),修改Includes路徑。切換到Debug,選擇硬件調試器,我們選擇ST-Link Debugger,在Run to main前打鉤。切換到Utilities,選擇調試器類型,我們選擇ST-Link Debugger。
? 打開Ram,調整Ram設置。切換到target,切換到Output。選擇Object文件夾,在Create Hex File 前打鉤。將Name Executable修改為output。切換到Listing,選擇Listings文件夾。切換到C/C++,選中One ELF Section per Function,添加兩個預編譯宏STM32F10X_HD, USE_STDPERIPH_DRIVER(這是ST庫用到了這兩個宏),修改Includes路徑。這樣就新建一個工程,我們可以根據需要自己所要實現的功能編輯程序。
評論