一種基于STM32的PID直流電機控制系統(tǒng)
摘 要:本文是以PID(比例、積分、微分)算法[2]為核心,基于STM32控制芯片的直流電機控制系統(tǒng)研究,硬件模塊包括L298N電機驅(qū)動模塊、編碼器測速、PWM(脈沖寬度調(diào)制,Pulse Width Modulation)輸出等,軟件部分以Keil MDK(混合開發(fā)工具,Mix Development Kit)為開發(fā)環(huán)境,實現(xiàn)調(diào)速系統(tǒng)各子模塊功能,并對結(jié)果進行分析。此次研究搭建的系統(tǒng)實現(xiàn)使直流電機的穩(wěn)態(tài)誤差始終保持在0.49%以下,直流電機速度精度控制在95%以上。在額定轉(zhuǎn)速時,其穩(wěn)態(tài)誤差為0.25%。隨著設(shè)定電機轉(zhuǎn)速增大,穩(wěn)態(tài)轉(zhuǎn)速的誤差率總體呈減小趨勢,實物系統(tǒng)有較好的穩(wěn)態(tài)性能和控制精度。
本文引用地址:http://2s4d.com/article/202203/431568.htm關(guān)鍵詞:直流電機調(diào)速;PWM;PID;STM32
近年來,隨著微機控制技術(shù)、電力電子技術(shù)等迅速發(fā)展,直流電機因為其調(diào)速性能好、起動性能好,被廣泛應(yīng)用在高精度、可調(diào)速的場合,如航天、工業(yè)自動化、數(shù)字化控制、工業(yè)機器人、醫(yī)療設(shè)備等。
1 增量式PID算法與位置式PID算法對比
PID 控制是指比例、積分、微分控制。將系統(tǒng)的輸出經(jīng)過比例、積分、微分三種運算后,疊加至輸入中,達到控制調(diào)速目的。由于其原理簡單、易于實現(xiàn)等優(yōu)點,被應(yīng)用于多種領(lǐng)域。
1.1 位置式PID算法
位置式PID 算法的表達式為
其中Kp 為比例放大系數(shù),Ti 為積分時間常量,Td為微分時間常量。
位置式PID 算法是根據(jù)當(dāng)前實際位置與要達到的預(yù)期位置的偏差,進行PID 控制。將每一次的誤差進行累加作為積分,其運算量大,每次輸出均與過去的狀態(tài)相關(guān),缺點是可能會引起大幅度超調(diào)。
1.2 增量式PID算法
增量式PID 算法的表達式為
增量式PID 算法的控制量是對應(yīng)的最近3 次的位置誤差的增量,只對當(dāng)前誤差積分,運算量較小,沒有誤差累加。所以增量式PID 容易通過加權(quán)處理獲得比較好的控制效果,相較于位置式PID 算法,在程序?qū)崿F(xiàn)時更簡潔有效,運行時更加穩(wěn)定,運算速度更快。
圖1 PID控制系統(tǒng)圖
2 硬件系統(tǒng)整體流程
此系統(tǒng)由單片機STM32F103 輸出PWM 波[1],同時接收編碼器計數(shù),經(jīng)處理達到控制調(diào)速目的,獨立鍵盤進行速度的增減,LCD(液晶顯示,liquid crystal display)模塊進行設(shè)定值和實時速度的顯示,選擇L298N 模塊作為直流電機驅(qū)動給電機供電。所有模塊形成一個完整的速度閉環(huán)系統(tǒng),能對直流電機快速精準(zhǔn)調(diào)速。
圖2 硬件系統(tǒng)整體流程圖
2.1 電機驅(qū)動模塊L298N
本文選用L298N 為驅(qū)動模塊,其電路中包含有兩個H 橋的高電壓大電流雙橋式驅(qū)動器。在使用中,STM32F103 配置的PWM 輸出引腳直接給該模塊提供變占空比的信號,方便控制。
其控制狀態(tài)表見表1。L298N 電機驅(qū)動模塊可以實現(xiàn)電機的調(diào)速與正反轉(zhuǎn),此次研究只使用其驅(qū)動一臺二相直流電機構(gòu)成閉環(huán)調(diào)速系統(tǒng),根據(jù)表1 配置IN1(輸入)與IN2,對使能端輸出PWM 脈沖,即可實現(xiàn)變占空比調(diào)速。
表1 L298N驅(qū)動直流電機狀態(tài)表
2.2 編碼器測速模塊
編碼器為AB 相增量式霍爾編碼器,輸出標(biāo)準(zhǔn)的方波,STM32F103 自帶的編碼器模式可直接讀取脈沖信號,AB 相編碼器的A 相、B 相互相延遲四分之一周期輸出脈沖。如圖3 為編碼器的輸出波形,取A 相、B 相的上升沿和下降沿都作為脈沖,可以取得二倍頻或四倍頻。四倍頻采樣可提高系統(tǒng)運算時的精確性。通過每10 ms 讀取處理一次編碼器脈沖,可以測得電機速度和處理控制,此次使用四倍頻采樣,有提高系統(tǒng)運算精確性的優(yōu)勢。
圖3 編碼器輸出脈沖波形
2.3 PWM
配置脈沖計數(shù)器TIMx_CNT 為向上計數(shù)模式,而重載寄存器TIMx_ARR 被配置為ARR(自動重裝載寄存器),比較值為CCRx,在t 時刻對計數(shù)器值與比較值進行比較。如果此時計數(shù)器值小于CCRx 值,輸出低電平;如果此時計數(shù)器值大于CCRx 值,輸出高電平,從而調(diào)節(jié)占空比。
3 軟件整體流程
此次研究以Keil MDK 作為編譯開發(fā)環(huán)境,軟件部分的重點是PID 控制的處理。流程圖如圖4,主要包括主程序、PID 處理、外部中斷、定時中斷、PWM 的輸出和編碼器的脈沖計數(shù)。
圖4 調(diào)速系統(tǒng)軟件流程圖
3.1 調(diào)速系統(tǒng)主程序[3]
主程序包括對各模塊初始化和各常量、變量的聲明。包括中斷外部函數(shù)的初始化、定時中斷循環(huán)的初始化、獨立按鍵配置、編碼器配置初始化、顯示模塊初始化、PWM 配置初始化。初始化后觸發(fā)由定時器6 的定時中斷的循環(huán),每隔10 ms 對系統(tǒng)進行一次編碼器測速與PID 運算和PWM 的控制輸出。期間獨立按鍵可以觸發(fā)外部中斷對調(diào)速系統(tǒng)的設(shè)定速度值進行增加與減少。
定時中斷循環(huán)實現(xiàn)功能包括:編碼器脈沖讀取,脈沖數(shù)量轉(zhuǎn)化為速度顯示在LCD 屏幕,進行PID 運算,更新PWM 占空比。
3.2 PID算法處理與PWM輸出
PID 控制在系統(tǒng)中采用增量式PID 算法,經(jīng)調(diào)試其比例常數(shù)為0.5、積分常數(shù)為0.0025、微分常數(shù)為0。PID 模塊根據(jù)設(shè)定值與得到的編碼器脈沖值經(jīng)公式運算后返回增量值。PWM 的輸出由定時器1 實現(xiàn),指定PA8 作為PWM 輸出端子。在連接硬件時,需要連接兩個端子才能實現(xiàn)驅(qū)動,另一個端子起參考電位的作用。PWM 模塊根據(jù)得到的增量值更新PWM 占空比,從而實現(xiàn)實時、穩(wěn)定、精確地控制調(diào)速系統(tǒng)。
4 實驗數(shù)據(jù)及分析
實物系統(tǒng)主要包括STM32F103 開發(fā)板[7]、帶AB相霍爾式編碼器的直流電機、L298N 驅(qū)動模塊、STLINK、7.2 V 電源等。其中系統(tǒng)實物搭建圖如圖5。
圖5 系統(tǒng)硬件搭建圖
經(jīng)過調(diào)試,在代碼調(diào)試中,按照先整定Kp 再整定Ti 的順序進行調(diào)整,最終得出在Kp = 0.5 和Ti = 200 時,系統(tǒng)的調(diào)速響應(yīng)快,調(diào)速的范圍可達170 rpm~440 rpm(圈每分鐘)。通過基于STM32 的PID 直流電機控制系統(tǒng)對電機的輸出軸分別進行轉(zhuǎn)速設(shè)定[13],分別設(shè)定了190 rpm、220 rpm、250 rpm、280 rpm、310 rpm、340 rpm、370 rpm、400 rpm、410 rpm、420 rpm、430 rpm,實際測量結(jié)果如表2,數(shù)據(jù)進行了誤差計算。
表2 轉(zhuǎn)速數(shù)據(jù)采集及誤差計算
由表2 可知,直流電機的穩(wěn)態(tài)誤差始終保持在0.49% 以下,其超調(diào)性很小。在額定轉(zhuǎn)速時,其穩(wěn)態(tài)誤差為0.25% 。隨著設(shè)定電機轉(zhuǎn)速增大,穩(wěn)態(tài)轉(zhuǎn)速的誤差率總體呈減小趨勢,實物系統(tǒng)有較好的穩(wěn)態(tài)性能和控制精度。
參考文獻
[1] 焦玉朋.基于51單片機的PWM直流電機調(diào)速系統(tǒng)[D].呼和浩特:內(nèi)蒙古大學(xué),2013.
[2] 雷慧杰.基于STM32的直流電機PID調(diào)速系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2016,39(8):165-167,170.
[3] 司開波,黃健,呂林濤.基于STM32的直流電機調(diào)速新方法[J].宇航計測技術(shù),2018,38(02):87-91.
[4] 劉松斌,王海星,李碩恒.基于STM32的直流電機PWM調(diào)速系統(tǒng)[J].化工自動化及儀表,2016,43(8):834-837.
[5] 王國宇.基于STM32的無刷直流電機控制系統(tǒng)設(shè)計及仿真研究[D].桂林:廣西師范大學(xué),2016.
[6] 張才勇,王庭有,李馳骎.基于單片機的直流電機調(diào)速控制[J].化工自動化及儀表,2019,46(11):885-890,916.
[7] 李勇.直流電動機拖動系統(tǒng)的電氣調(diào)速方法[J].四川水力發(fā)電,2000(03):90-92.
[8] 李鵬輝.淺談直流電動機調(diào)速[J].生物技術(shù)世界,2014(1):174.
[9] 牛麗婕.直流電機的調(diào)速方法[J].無線互聯(lián)科技,2013(3):72.
[10] 阮毅,楊影,陳伯時.電力拖動自動控制—運動控制系統(tǒng)[M].北京:機械工業(yè)出版社:2016.
[11] 熊東海.兩輪電動車用直流無刷電機調(diào)速系統(tǒng)的設(shè)計[D].廣州:廣東工業(yè)大學(xué),2018.
[12] 張宏衛(wèi),曹志剛.基于Simulink的智能車用微型電機閉環(huán)系統(tǒng)的仿真研究[J].電氣傳動自動化,2011,33(1):30-32.
[13] 王祎晨.增量式PID和位置式PID算法的整定比較與研究[J].工業(yè)控制計算機,2018,31(5):123-124.
[14] 朱貴國,汪黨.基于STM32單片機的直流電機調(diào)速系統(tǒng)設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2013(5):2-3.
(本文來源于《電子產(chǎn)品世界》雜志2022年2月期)
評論