









摘 要:一種基于STM32核心控制的六自由度機械臂由支架、舵機、控制器和電源四部分組成,利用PWM信號調節實現對機械臂關節角度的準確調整,引入了增量式PID控制算法,通過比例、積分和微分的組合實時調整機械臂運動狀態實現對該機械臂的智能控制。在多路控制和增量式PID算法的協同作用下,能夠在執行任務的同時最大程度保持機械臂的原始姿態。該機械臂在實際應用中具有更好的控制性能,能夠滿足在工業生產中的精準操作需求,也能增強養老型機器人的物體送取功能,為未來機械臂的智能化提供了新的思路。
關鍵詞:增量式PID控制算法;智能機械臂;多路控制;STM32;PWM;六自由度
中圖分類號:TP39 文獻標識碼:A 文章編號:2095-1302(2025)06-00-04
DOI:10.16667/j.issn.2095-1302.2025.06.016
0 引 言
隨著科技與經濟的不斷發展,各行各業對機器人的需求越來越大,其中對機械臂精準控制以便實現對物體的抓取、搬運,幫助人類完成繁重、危險的工作,增強養老型機器人對物體的送取功能,是機械臂控制領域中的研究熱點[1-2]。為了實現對機械臂的靈活控制,研究人員通常需要考慮機械臂的多自由度運動、舵機的精準控制以及多路控制協同工作等方面的問題,同時又要求機械臂執行任務的同時,盡量減少對原始姿態的改變[3]。如何在多重要求下,完成對多自由度機械臂的精準、多路控制,以達到期望的運動軌跡和姿態,是本文解決的主要問題。
1 總體架構
本文設計的智能機械臂由硬件和軟件兩部分組成。硬件部分由六個高性能舵機[4]和支架組成,選用STM32F103C8T6控制器進行控制。通過設置控制器的多個定時器的PWM(Pulse Width Modulation)占空比脈沖信號,引入PID(Proportion Integration Differentiation)控制算法實現軟件部分的設計[5]。采用硬件和軟件共同實現機械臂的精準多路控制,在硬件方面,本文自主設計了一款基于STM32的舵機控制板,用以搭配主控器對機械臂進行控制。
2 基于STM32定時器的多路控制
2.1 基于STM32定時器的PWM設計
PWM指脈沖寬度調制,是一種數字信號,最常用于控制電路,其保持的高電平時間百分比稱為占空比。
通過STM32控制板,有兩種方式產生PWM,第一種是利用普通I/O口輸出PWM,第二種是利用定時器PWM的I/O口或復用I/O口輸出PWM。因STM32F103C8T6擁有3個通用定時器TIM2、TIM3、TIM4和1個高級定時器TIM1,每個定時器擁有4路獨立通道,每路均可單獨生成PWM,可以通過為定時器單獨設置PWM占空比控制舵機的轉動角度,所以為了實現機械臂的多路控制,本文采用第二種方式。
本文使用了STM32的計數器CNT、預分頻器PSC、自動重裝載寄存器ARR、比較寄存器CCR共同完成PWM配置,PWM占空比計算如式(1)所示:
式中:CCR為對應某一定時器通路中用于與TIMx_CNT進行比較的數;Duty為占空比。
PWM頻率的計算如式(2)所示:
式中:CK_PSC為主頻;PSC為預分頻值。
2.2 多路控制實現
在多路控制的實現方面,由于市面上沒有找到這種六路控制的產品,此處設計了一款STM32舵機控制板,該控制板使用STM32F103C8T6作為控制器,內部用GPIO接口[6]GPIOA_Pin2、GPIOA_Pin1、GPIOB_Pin9、GPIOB_Pin8、GPIOB_Pin7、GPIOB_Pin6分別外接機械臂自下而上的六個舵機,舵機和控制器之間使用I2C通信。STM32舵機控制板原理如圖1所示。
本次設計的機械臂是六自由度,即擁有六個舵機,每個舵機可以扭轉180°,其實物如圖2所示。六個定時器通路TIM2_CH2、TIM2_CH3、TIM4_CH1、TIM4_CH2、TIM4_CH3、TIM4_CH4分別連接機械臂的六個舵機,通過定時器為不同通路設定的PWM占空比[7]控制各舵機扭轉不同的角度,即多路控制以達到應用狀態中預設的機械臂姿勢,使其實現對物體的抓取、搬運等。
由于在初始化定時器時,同一定時器的四路通道的ARR值已經確定,故通過修改各定時器的CCRx來達到控制不同通道占空比的目的。下面舉例說明:
當ARR==20 000-1時,為實現上述功能,應當建立Angel到Comparex(CCRx)值的映射。其中Angel的范圍為舵機轉動角度0~180°,Comparex值為500~2 500。通過實踐證明,PWM輸出0.5 ms的脈沖對應舵機0°的位置,1.5 ms對應90°,2.5 ms對應180°,由式(2)可計算出PWM周期為(20 000×72)/72=20 ms,所以由輸入角度Angel轉CCRx值的計算如下所示:
PWM占空比為[ARR-(Angel/180×2 000)+500]/ARR。
經過修改各路輸入的Angel值就能實現六自由度機械臂的多路控制,使機械臂完成預期的動作。
3 基于PID的機械臂控制改進
3.1 PID算法原理
PID(Proportion Integration Differentiation)基于偏差的比例、積分、微分控制,將輸出的信息y(t)與設定r(t)進行求差運算,將偏差輸入系統,經過比例、積分和微分3種疊加運算,實現閉環控制。算法結構如圖3所示。
舵機中的輸出軸帶動反饋電位器[8],由反饋電位器反饋相應角度的輸出電壓信號與STM32控制板中輸出的PWM信號作比,得到偏差值,為確保機械臂的每個舵機能夠精準轉動到設定角度,只能盡量減小這一誤差,以達到對機械臂的精確控制。對于此問題提出如下解決方法:
(1)比例控制:比例控制是指參照誤差成比例調整。如果反饋的電壓信號和控制器輸出的PWM信號誤差很小,控制器將輸出弱PWM信號,使設定值和反饋相匹配。反之,輸出相應強PWM信號。
(2)積分控制:積分控制在其校正過程中由于干擾產生偏移。積分控制器有能力消除這種偏移并使誤差歸零。這樣的控制器產生了一個基于累積誤差隨時間的調整過程。如果沒有積分控制,系統就無法處理誤差的變化趨勢;當控制器在增強或減弱其PWM信號輸出時未返回到其原始位置,可能會出現偏移。積分控制器將檢測到這一點,并使得控制器回到其原始位置。
(3)微分控制:微分控制處理的是誤差的變化率。如果積分控制著眼于誤差的歷史,導數控制則著重于預測誤差,修正的數值基于誤差變化的速率。
上述三種方法相結合組成PID算法,設輸入角度變量是r(t),實際角度變量是y(t),輸入角度與實際角度之差是e(t),u(t)是P、I和D修正總和。
3.2 增量式PID改進角度控制
基礎PID算法還需要進行離散化才能夠應用到計算機領域,離散化后的PID算法即位置式PID算法[9]。但是位置式PID算法的輸出與過去的狀態有關,偏差值是過去偏差值的累加,計算量會增大,系統波動對其輸出的影響也極大,所以位置式PID算法不適合應用于機械臂的舵機角度控制。
增量式PID算法與位置式PID算法不同的是,其不會對偏差進行累加,輸出的是被控制量的增量,與過去無關,僅與前兩次的反饋值相關,通過對增量的加權計算得到機械臂控制的理想位置。其原理[10]如式(6)所示:
式中:KP、KI、KD為增量式PID參數;e(k)為本次偏差,e(k-1)為上次偏差,e(k-2)為上上次偏差;Δu(k)為本次輸出的增量。PID參數無法直接套用,需要在實際情況中不斷調整其數值,以使其與機械臂控制功能相適應。
增量式PID算法流程如圖4所示。
通過增量式PID算法接收機械臂各舵機返回的電壓信號和控制器發出的PWM信號,調整控制器發出的PWM占空比,減小設定角度與實際舵機角度之間的偏差,使機械臂控制更加精準、精確。
4 實驗結果及分析
為驗證上述理論,此處設定每個舵機的目標角度為90°,對機械臂分別使用兩種方法進行舵機角度調整,由MPU6050角度傳感器監測并返回實時角度:
(1)對機械臂直接輸出PWM信號進行控制;
(2)對機械臂使用增量式PID控制算法進行角度調節, PID參數見表1。
對于這六組PID參數,每組參數使得PID算法對機械臂的調整過程有所不同,所以達到目標角度所需要的調整次數也不同,根據調整次數對比能得出適合機械臂控制的一組PID參數。
不同PID參數的算法調整過程以及PWM控制的調整過程對比如圖5所示。
由圖5結合表1可以更加直觀得知,適合本機械臂控制的PID參數是第六組,其KP、KI、KD值分別為0.8、0.01、0.1,因為它在達到設定目標角度過程的調整次數最少,說明其調整過程最短,達到目標角度的速度最快。再對比PWM控制和PID控制,可以明顯看出增量式PID算法調整之后的角度更接近于目標角度,實際角度和目標角度的差值更小,說明使用增量式PID控制算法改進對機械臂舵機角度的控制有很大的成效。
5 結 語
本文設計了一種基于STM32的多路控制智能機械臂,由STM32控制器配置多路PWM信號實現機械臂的多路控制,再引入增量式PID算法改進機械臂的舵機角度控制精確度,使得六自由度機械臂能夠精確達到理想的姿態和位置。對機械臂的控制設計可以應用于工業、農業、養老業等能夠使用機器人的行業,增強機器人的功能性,為社會發展做出更大的貢獻。
參考文獻
[1]吳文志,李仲瓊,黃偉鋒,等.基于ROS的養老陪護機器人設計[J].科技創新與應用,2023,13(25):46-49.
[2]徐一波,鄢敉君.工業機器人的發展現狀和前景分析[J].科技創新與生產力,2023(2):97-99.
[3]黃學達,楊俊杰,侯志鵬,等.基于STM32的智能物流機器人[J].電子產品世界,2023,30(4):20-26.
[4]張廣超. 6自由度串聯機械臂的軌跡規劃及驅動控制[D].鄭州:華北水利水電大學,2016.
[5]黃燁東,吳晨曦.基于改進PID的機器人機械臂控制器設計[J].機械設計與制造工程,2023,52(7):45-50.
[6]毛潤,張珈龍.基于雙控制器的六軸機械臂設計[J].電子制作,2023,31(16):7-10.
[7]馮曉偉,王雷陽,李正生.多路舵機控制PWM發生器的設計與Proteus仿真[J].現代電子技術,2011,34(11):167-169.
[8]鄭巖,羅強,龍穎,等.基于改進PID算法的柔性機械臂路徑規劃技術研究[J].現代農機,2023(5):76-78.
[9]王祎晨.增量式PID和位置式PID算法的整定比較與研究[J].工業控制計算機,2018,31(5):123-124.
[10]秦曉偉.基于多自由度機械臂的目標抓取力控研究[D].長春:長春理工大學,2020.
作者簡介:吳 嬌(2003—),女,研究方向為計算機科學與技術。
于 寬(2004—),男,研究方向為計算機科學與技術。
馬雪瑩(2003—),女,研究方向為計算機科學與技術。
盧昭佳(2002—),女,研究方向為計算機科學與技術。
崔永利(1973—),女,碩士,高級實驗師,研究方向為嵌入式系統應用。
收稿日期:2024-03-05 修回日期:2024-04-12
基金項目:黑龍江省大學生創新創業項目(S202310214126)