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