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