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