崔業(yè)梅 楊煥崢
摘? 要:為了提高溫控系統(tǒng)的控制精度,采用熱電偶測(cè)量溫控系統(tǒng)的溫度,將采集的電壓信號(hào)進(jìn)行放大,由STM32F103芯片進(jìn)行A/D轉(zhuǎn)換、運(yùn)行PID算法、輸出PWM信號(hào)對(duì)溫控系統(tǒng)的溫度進(jìn)行快速與穩(wěn)定控制,并通過該芯片的串口將當(dāng)前溫度值上傳上位機(jī),上位機(jī)運(yùn)行LabVIEW軟件,編有程序框圖和前面板程序,程序框圖包含串口發(fā)送和接收數(shù)據(jù)程序,前面板包含數(shù)據(jù)波形、儀表顯示。通過Proteus和LabVIEW軟件聯(lián)合仿真表明,系統(tǒng)控制溫度精度高、快速與穩(wěn)定、界面友好,通過進(jìn)一步提高溫度控制范圍,可適用于更多加熱場(chǎng)合。
關(guān)鍵詞:溫度控制;算法;虛擬儀器;微控制器;仿真
中圖分類號(hào):TP368;TN72 ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2021)18-0040-04
Abstract: In order to improve the control accuracy of the temperature control system, the thermocouple is used to measure the temperature of the temperature control system, amplify the collected voltage signal, conduct A/D conversion by STM32F103 chip, run PID algorithm and output PWM signal to quickly and stably control the temperature of the temperature control system, upload the current temperature value to the upper computer through the serial port of the chip, and the upper computer runs LabVIEW software, The program block diagram and front panel program are compiled. The program block diagram includes the serial port sending and receiving data program, and the front panel includes data waveform and instrument display. The joint simulation of Proteus and LabVIEW software shows that the system has high temperature control accuracy, fast and stable, friendly interface, and can be applied to more heating occasions by further improving the temperature control range.
Keywords: temperature control; algorithm; virtual instrument; microcontroller; simulation
0? 引? 言
溫控系統(tǒng)在各種加熱場(chǎng)合應(yīng)用廣泛,研究溫度控制具有重要意義。測(cè)溫元件熱電偶可以將檢測(cè)的溫度轉(zhuǎn)變?yōu)殡妷盒盘?hào)輸出。由運(yùn)算放大器芯片構(gòu)成的放大電路可以將熱電偶輸出的電壓信號(hào)進(jìn)行放大[1]。PID算法是控制行業(yè)經(jīng)典的算法,被廣泛用于溫度控制、電機(jī)轉(zhuǎn)速控制等[2,3]。意法半導(dǎo)體集團(tuán)的STM32F103芯片內(nèi)部包含有A/D轉(zhuǎn)換、串口通信、定時(shí)器等功能模塊,可以運(yùn)行PID算法等程序,可以采用“多合一”STM32CubeIDE集成軟件對(duì)該芯片進(jìn)行圖形化的配置、編寫功能程序、進(jìn)行程序編譯與下載等工作[4]。LabVIEW軟件可用于圖形化的虛擬儀器編程,實(shí)現(xiàn)數(shù)據(jù)采集、系統(tǒng)設(shè)計(jì)、界面顯示等功能[5]。Proteus軟件可以繪制STM32F103等芯片構(gòu)成的電路,并結(jié)合LabVIEW軟件進(jìn)行功能仿真[6]。虛擬串口助手軟件可以在兩個(gè)串口進(jìn)行連接調(diào)試時(shí)使用。項(xiàng)目融合以上技術(shù),實(shí)現(xiàn)一種溫控系統(tǒng)的設(shè)計(jì)與仿真,具有一定的新穎性,能提高控制溫度的精度,實(shí)現(xiàn)快速與穩(wěn)定的控制,人機(jī)界面友好,通過進(jìn)一步提高溫度控制范圍,利用BP神經(jīng)網(wǎng)絡(luò)等算法快速整定PID參數(shù),可適用于更多加熱場(chǎng)合。
1? 系統(tǒng)結(jié)構(gòu)
該項(xiàng)目利用熱電偶測(cè)量溫控系統(tǒng)的溫度,通過運(yùn)算放大器構(gòu)成的電路將采集的電壓信號(hào)放大,利用STM32F103芯片將放大后的信號(hào)進(jìn)行A/D轉(zhuǎn)換,根據(jù)編寫的PID算法程序,輸出不同占空比的PWM信號(hào)經(jīng)過加熱電路對(duì)溫度進(jìn)行控制,實(shí)現(xiàn)快速與穩(wěn)定的溫控效果。并且,通過芯片的串口通信方式將當(dāng)前溫度值傳送給上位機(jī),上位機(jī)利用LabVIEW軟件編寫有接收數(shù)據(jù)與顯示程序,分為程序框圖和前面板,前面板采用圖形化和儀表形態(tài)的方式顯示數(shù)據(jù)。系統(tǒng)結(jié)構(gòu)如圖1所示。
2? 電路設(shè)計(jì)及算法編程
2.1? 溫控電路設(shè)計(jì)
溫度采集與控制電路如圖2所示,采集部分由熱電偶TC1、信號(hào)放大電路OPAMP等組成,控制部分由加熱部件OV1、控制閥SW1、信號(hào)處理電路U1等組成。
2.2? STM32芯片初始化
通過STM32CubeIDE軟件集成的STM32CubeMX軟件創(chuàng)建項(xiàng)目,選擇STM32F103芯片。選擇晶體振蕩器作為高速時(shí)鐘,選擇PD0、PD1引腳外接的晶振作為芯片工作所用外部時(shí)鐘源。設(shè)置STM32F103微控制器工作主頻為8 MHz。打開USART1,設(shè)置串口通信模式為異步收發(fā)、“9600-N-8-1”模式,即波特率數(shù)值為9 600,無校驗(yàn),數(shù)據(jù)位為8位,停止位為1位,并使能USART1中斷。設(shè)置PA0引腳為ADC1_IN0模式,設(shè)置連續(xù)轉(zhuǎn)換等方式,采用DMA傳輸方式,循環(huán)模式,并打開DMA中斷使能。設(shè)置定時(shí)器1預(yù)分頻系數(shù)為400-1,計(jì)數(shù)周期為20-1,定時(shí)1 ms作為項(xiàng)目基本計(jì)時(shí)用,定時(shí)器3預(yù)分頻系數(shù)為8-1,計(jì)數(shù)周期為1000-1,開啟PWM模式,然后分別開啟中斷。在工程管理選項(xiàng)里最小堆棧大小設(shè)置為0x600,選擇只復(fù)制所需要的庫(kù)文件,每個(gè)外圍設(shè)備都會(huì)生成單獨(dú)的.c和.h文件,然后生成C語(yǔ)言代碼。
2.3? PID算法編程
PID算法實(shí)現(xiàn)系統(tǒng)控制是通過給定值和實(shí)際值之間形成的偏差進(jìn)行,比例、積分和微分系數(shù)分別是Kp、Ki、Kd,它將偏差的Kp、Ki、Kd通過線性組合構(gòu)成控制量。PID參數(shù)的整定是通過調(diào)節(jié)Kp、Ki和Kd,使PID控制器具有更好的控制性能。調(diào)整這三個(gè)參數(shù)將對(duì)PID控制系統(tǒng)產(chǎn)生不同的影響,增大Kp會(huì)加快系統(tǒng)的響應(yīng)時(shí)間,但過大的Kp會(huì)引起系統(tǒng)的振蕩和超調(diào),過小的Kp會(huì)降低系統(tǒng)的響應(yīng)速度;增大Ki可以提高系統(tǒng)的穩(wěn)定性,但Ki過大會(huì)引起系統(tǒng)振蕩次數(shù)過多,過小會(huì)導(dǎo)致積分控制過弱,不能有效消除殘差;增大Kd能改善系統(tǒng)的動(dòng)態(tài)特性,但Kd太大或太小都會(huì)適得其反。PID控制的參數(shù)選擇將直接影響其控制效果,因此這三個(gè)參數(shù)的選擇非常重要,可通過優(yōu)化得到最佳整定值。通過STM32CubeIDE軟件編寫了STM32F103芯片的PID溫控程序?yàn)椋?/p>
main()函數(shù)中while (1)代碼:
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
ADC_Value =0;? ? ? ? ? ? ? ? ? ? ?//A/D轉(zhuǎn)換初始數(shù)值
for(i = 0;i < 20;++i)
{
ADC_Value += ADC_ConvertedValue[i];
}
ADC_Value = ADC_Value / 20;? ? ? ?//A/D轉(zhuǎn)換求多次平均后的數(shù)值
Input = ADC_Value*25/819.0;? ? ? ?//計(jì)算得到當(dāng)前溫度值
PrintFloat(Input);? ? ? ? ? ? ? //串口帶小數(shù)輸出當(dāng)前溫度值
if (Compute())? ? ? ? ? ? ? ? ? ? ?//計(jì)算PID輸出
{
pwm = Output;
pwm_output(pwm);? ? ? ? ? ? ? //調(diào)節(jié)輸出PWM信號(hào)占空比
}
}
PID()函數(shù)代碼:
void PID(double* Input,double* Output,double* Setpoint,
double Kp,double Ki,double Kd,int POn,int ControllerDirection)
{
myOutput = Output;
myInput = Input;
mySetpoint = Setpoint;
inAuto = false;
SetOutputLimits(0,999); //默認(rèn)輸出限值對(duì)應(yīng)于PWM限值
SampleTime = 10; ? ? ? ? ?//默認(rèn)控制器采樣時(shí)間為0.1秒
SetControllerDirection(ControllerDirection);
SetTunings(Kp,Ki,Kd,POn);
lastTime = millis()-SampleTime;
}
編寫的程序通過Proteus軟件的STM32F103芯片仿真運(yùn)行,實(shí)現(xiàn)PWM信號(hào)控制溫度和串口數(shù)據(jù)通信。如圖3所示。
3? LabVIEW編程
3.1? LabVIEW前面板設(shè)計(jì)
新建一個(gè)空的LabVIEW工程文件后,分別放置串口選擇、波形與儀表控件等,來顯示熱電偶檢測(cè)的當(dāng)前溫度值及其變化,分別放置輸入控件、按鍵等,來設(shè)定溫控系統(tǒng)需要達(dá)到的溫度值。LabVIEW軟件設(shè)計(jì)的前面板如圖4所示。
3.2? LabVIEW程序框圖設(shè)計(jì)
進(jìn)行串口通信框圖設(shè)計(jì),放置讀/寫串口緩沖區(qū)等控件,設(shè)置串口通信“9600-N-8-1”模式,即波特率數(shù)值為9 600,無校驗(yàn),數(shù)據(jù)位為8位,停止位為1位,根據(jù)自己電腦的串口選擇串口號(hào),這里選擇COM3端口。LabVIEW軟件設(shè)計(jì)的程序框圖如圖5所示。
4? 系統(tǒng)仿真
利用虛擬串口助手軟件將Proteus軟件的STM32F103芯片連接的COM4端口和LabVIEW軟件的COM3端口連接,啟動(dòng)Proteus和LabVIEW軟件進(jìn)行仿真,此時(shí)在虛擬串口助手軟件上看到COM3和COM4端口都被打開進(jìn)行通信。在Proteus仿真軟件上看到熱電偶測(cè)量溫控系統(tǒng)的溫度,將采集的電壓信號(hào)進(jìn)行放大,由STM32F103芯片進(jìn)行A/D轉(zhuǎn)換、運(yùn)行PID算法、輸出PWM信號(hào)對(duì)溫控系統(tǒng)的溫度進(jìn)行快速與穩(wěn)定控制,并通過該芯片的串口將當(dāng)前溫度值上傳上位機(jī)。在LabVIEW軟件上看到,前面板顯示當(dāng)前溫度值,數(shù)據(jù)波形、儀表顯示,通過設(shè)定溫度窗口,輸入設(shè)定的溫度值,發(fā)送后,下位機(jī)STM32F103芯片通過PID算法調(diào)整輸出PWM信號(hào)占空比,使溫控系統(tǒng)的溫度快速與穩(wěn)定的達(dá)到設(shè)定值。通過LabVIEW前面板設(shè)定溫控系統(tǒng)的溫度分別為30 ℃和70 ℃的時(shí)候,仿真溫控系統(tǒng)的溫度從25 ℃分別變化到30 ℃和70 ℃,通過PID算法實(shí)現(xiàn)了快速與穩(wěn)定控制。數(shù)據(jù)分別如表1、表2所示,曲線如圖6所示。
5? 結(jié)? 論
該項(xiàng)目采用熱電偶測(cè)量溫控系統(tǒng)的溫度,將采集的電壓信號(hào)進(jìn)行放大,結(jié)合A/D轉(zhuǎn)換、PID算法和PWM控制等對(duì)溫度進(jìn)行快速與穩(wěn)定的調(diào)節(jié)。采用串口通信的方式,實(shí)現(xiàn)了數(shù)據(jù)上、下位機(jī)之間的傳輸。上位機(jī)采用LabVIEW軟件編寫了圖形化和儀表形態(tài)的數(shù)據(jù)顯示界面,結(jié)合Proteus軟件的溫度采集與控制、STM32F103芯片電路進(jìn)行了系統(tǒng)仿真。系統(tǒng)結(jié)構(gòu)清晰,能穩(wěn)定運(yùn)行,具有測(cè)量精度較高、界面友好等特點(diǎn)。在實(shí)際使用中,通過進(jìn)一步提高溫度控制范圍,利用BP神經(jīng)網(wǎng)絡(luò)等算法快速整定PID參數(shù),可適用于更多加熱場(chǎng)合。
參考文獻(xiàn):
[1] 宋冬萍.模糊自整定PID溫控系統(tǒng)的設(shè)計(jì)及仿真分析 [J].邢臺(tái)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012,29(5):82-86.
[2] 王金.便攜式PCR儀溫控系統(tǒng)設(shè)計(jì)與仿真研究 [D].大連:大連海事大學(xué),2015.
[3] 王榮.基于Smith預(yù)估器的溫控系統(tǒng)設(shè)計(jì)與仿真 [J].儀器儀表用戶,2012,19(5):58-60.
[4] 戴明,李軍科,孟召議.基于STM32處理器與Modbus/ 485協(xié)議的主軸電機(jī)溫控系統(tǒng)設(shè)計(jì) [J].無錫商業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2020,20(4):107-112.
[5] 高毅.一種果蔬保鮮箱溫控系統(tǒng)的設(shè)計(jì)與仿真 [J].山東工業(yè)技術(shù),2017(17):5-6+261.
[6] 翟一兵,何琦,楊利民,等.基于PROTEUS仿真的溫度報(bào)警器在儀器倉(cāng)的應(yīng)用 [J].裝備維修技術(shù),2020(2):285.
作者簡(jiǎn)介:崔業(yè)梅(1983—),女,漢族,江蘇東臺(tái)人,實(shí)驗(yàn)師,高級(jí)技師,碩士,研究方向:教育學(xué)、電路技術(shù);楊煥崢(1980—),男,漢族,江蘇無錫人,副教授,碩士,研究方向:嵌入式人工智能與物聯(lián)網(wǎng)。