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