STM32的醫(yī)療康復(fù)機(jī)器人手臂控制系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:醫(yī)療康復(fù)機(jī)器人是近年出現(xiàn)的一種新型機(jī)器人,主要功能是幫助患者完成各種運(yùn)動(dòng)功能恢復(fù)訓(xùn)練。為此提出通過(guò)STM32微控制器控制無(wú)刷直流電機(jī)來(lái)控制機(jī)器手臂的運(yùn)轉(zhuǎn),并通過(guò)Simulink建立PID模型,運(yùn)用XPC_Target和控制板進(jìn)行通信,以此得到電機(jī)在調(diào)速過(guò)程中合適的PID參數(shù),使機(jī)器手臂在運(yùn)轉(zhuǎn)的過(guò)程中更加平滑。實(shí)際的臨床試驗(yàn)操作證明,該系統(tǒng)能夠較好地完成手臂的醫(yī)療康復(fù)訓(xùn)練。
隨著我國(guó)逐漸步入老年社會(huì),對(duì)各類康復(fù)設(shè)備的需求日益增大,對(duì)性價(jià)比高的醫(yī)療康復(fù)設(shè)備控制系統(tǒng)的需求尤為迫切。基于DSP芯片的成本相對(duì)較高、設(shè)計(jì)復(fù)雜、研發(fā)周期長(zhǎng),芯片的尺寸會(huì)導(dǎo)致印刷電路板的體積變大。
本文基于STM32微控制器設(shè)計(jì)的醫(yī)療康復(fù)機(jī)器人手臂控制系統(tǒng),具有杰出的功耗控制和電機(jī)控制的高級(jí)定時(shí)器,能產(chǎn)生3對(duì)可配置并互補(bǔ)輸出的PWM信號(hào)。通過(guò)在Simulink上建立雙閉環(huán)PID算法模型,得到合適的PID參數(shù)來(lái)改變PWM波的占空比,進(jìn)而精確地實(shí)現(xiàn)電機(jī)的調(diào)速,保證了機(jī)器人手臂運(yùn)行軌跡平滑,運(yùn)行速度穩(wěn)定。由于無(wú)刷直流電機(jī)具有體積小、性能穩(wěn)定等優(yōu)點(diǎn),其機(jī)器手臂尺寸能夠更加符合人體運(yùn)動(dòng)學(xué)設(shè)計(jì)理念。
1 總體方案設(shè)計(jì)
醫(yī)療康復(fù)機(jī)器人手臂可以模擬日常生活中手臂的一些動(dòng)作,通過(guò)創(chuàng)造虛擬工作環(huán)境實(shí)現(xiàn)對(duì)手臂各個(gè)關(guān)節(jié)的運(yùn)動(dòng)訓(xùn)練、肌肉的鍛煉,以及神經(jīng)功能的恢復(fù)訓(xùn)練。以STM32微控制器為控制核心,機(jī)器手臂控制總體設(shè)計(jì)方案如圖1所示。
通過(guò)運(yùn)用IR2130柵極驅(qū)動(dòng)芯片,對(duì)STM32輸出的6路PWM信號(hào)進(jìn)行特殊處理,滿足H橋中IRF3808高功率MOS管工作的需求。
STM32微控制器通過(guò)不斷地檢測(cè)無(wú)刷直流電機(jī)中霍爾信號(hào)來(lái)改變換相時(shí)序,以此來(lái)控制電機(jī)的運(yùn)轉(zhuǎn)。當(dāng)電機(jī)在堵轉(zhuǎn)的時(shí)候會(huì)產(chǎn)生大電流,通過(guò)ADC對(duì)其電流值進(jìn)行采樣,當(dāng)其值超過(guò)閥值的時(shí)候可以停止電機(jī)工作,此時(shí)IR2130會(huì)自動(dòng)進(jìn)入自我保護(hù)狀態(tài),關(guān)斷輸出信號(hào),保證手臂運(yùn)行的安全。
2 硬件電路設(shè)計(jì)
2.1 柵極驅(qū)動(dòng)
柵極驅(qū)動(dòng)芯片采用的是美國(guó)國(guó)際整流器公司的IR2130芯片,它具有高電壓、高速度,并有3個(gè)獨(dú)立的高、低側(cè)功率MOSFET驅(qū)動(dòng)輸出通道。其輸入和輸出信號(hào)時(shí)序如圖2所示。其具有過(guò)電流保護(hù)、欠壓鎖定功能,并能及時(shí)關(guān)斷6路輸出。在出現(xiàn)異常狀態(tài)時(shí),逆變電路處于關(guān)斷狀態(tài),這樣可以保護(hù)電機(jī)不被燒壞,且具有自我保護(hù)功能。
6路輸出信號(hào)中的3路具有電平轉(zhuǎn)換功能,因而它既能驅(qū)動(dòng)橋式電路中低壓側(cè)的功率器件,又能驅(qū)動(dòng)高壓側(cè)的功率元件。如圖3所示,將STM32輸出驅(qū)動(dòng)H橋的3對(duì)互補(bǔ)PWM信號(hào)提高至能夠驅(qū)動(dòng)MOSFET開(kāi)關(guān)電壓電平。
1片IR2130可取代3片IR2110,且僅需要一個(gè)輸入級(jí)電源,就能夠自動(dòng)產(chǎn)生成上、下側(cè)驅(qū)動(dòng)所必需的死區(qū),時(shí)間為2.5μs,并得到更好的控制性能。
2.2 H橋功率電路
高功率場(chǎng)效應(yīng)管可以輸出高電壓。逆變電路主要由6個(gè)大功率場(chǎng)效應(yīng)管IRF3808組成,如圖4所示。每個(gè)場(chǎng)效應(yīng)管都并聯(lián)了反接的快速恢復(fù)二極管,具有保護(hù)和續(xù)流的作用。對(duì)于24 V電壓的電機(jī),場(chǎng)效應(yīng)管的VDS至少需要40 V電壓,而漏極電流必須足夠高,以應(yīng)對(duì)電機(jī)啟動(dòng)電流。由于軟件中實(shí)現(xiàn)的軟加速機(jī)制(小幅提升至所需速度),啟動(dòng)電流可以進(jìn)一步降低。
2. 3 電流檢測(cè)電路
運(yùn)用一個(gè)0.01 Ω的電流檢測(cè)電阻或者是一段蛇形地線,經(jīng)過(guò)電機(jī)和MOSFET的電流全都從它那里經(jīng)過(guò)并流向地。如圖5所示,經(jīng)過(guò)電機(jī)的總電流經(jīng)過(guò)這個(gè)小阻值的電阻而流向地,這個(gè)電流檢測(cè)電阻的阻值很小,但如果電流夠大的時(shí)候,會(huì)在其兩端產(chǎn)生一個(gè)小的電壓,經(jīng)過(guò)RC形成的一階低通濾波電路可以濾去一些偶爾產(chǎn)生的瞬時(shí)高頻分量。其截止頻率可以由RC的具體值算出。最后可以把其接入STM32的ADC通道進(jìn)行電流采集。
2.4 電機(jī)轉(zhuǎn)矩
對(duì)電機(jī)來(lái)說(shuō),機(jī)器人手臂在運(yùn)轉(zhuǎn)時(shí)是處于負(fù)載狀態(tài)下運(yùn)行,所以要有足夠的轉(zhuǎn)矩以保證手臂運(yùn)行正常。跟速度控制一樣,轉(zhuǎn)矩也由通過(guò)定子線圈的電流大小決定。最大轉(zhuǎn)矩、定子和轉(zhuǎn)子磁場(chǎng)之間的角度,應(yīng)保持在90°。梯形換相如圖6所示,控制分辨率為60°,定子和轉(zhuǎn)子磁場(chǎng)間的角度在-30?!?30。的范圍內(nèi),這會(huì)產(chǎn)生轉(zhuǎn)矩脈動(dòng)。
電流檢測(cè)過(guò)程中的RC低通濾波器可以濾除流入電機(jī)的高頻瞬時(shí)脈沖,并改善電機(jī)轉(zhuǎn)矩特性。在改變運(yùn)轉(zhuǎn)方向的時(shí)候,為了得到比較大的轉(zhuǎn)矩選擇直接改變運(yùn)轉(zhuǎn)方向,不會(huì)選用運(yùn)行一停止一反向運(yùn)行的方式來(lái)進(jìn)行機(jī)器人手臂方向的改變。這樣可防止機(jī)器人手臂在轉(zhuǎn)向時(shí)候出現(xiàn)抖動(dòng)現(xiàn)象,也防止了再次啟動(dòng)的時(shí)候啟動(dòng)電流過(guò)大,容易出現(xiàn)堵轉(zhuǎn)現(xiàn)象,對(duì)硬件電路和電機(jī)都會(huì)造成損害。
3 軟件設(shè)計(jì)
3.1 μC/OS—II操作系統(tǒng)
為了讓軟件架構(gòu)更加穩(wěn)定清晰,運(yùn)用一個(gè)可固化、可裁剪的、占先式多任務(wù)實(shí)時(shí)操作系統(tǒng)μC/OS—II。它是基于優(yōu)先級(jí)調(diào)度的搶占式的實(shí)時(shí)內(nèi)核,并在這個(gè)內(nèi)核之上提供最基本的系統(tǒng)服務(wù),如信號(hào)量、郵箱、消息隊(duì)列、內(nèi)存管理、中斷管理等。
在μC/OS-II嵌入式操作系統(tǒng)上,對(duì)無(wú)刷直流電機(jī)中霍爾信號(hào)的捕捉中斷、上位機(jī)通信中斷、ADC采集中斷、PID速度調(diào)節(jié)中斷的優(yōu)先級(jí)進(jìn)行分配,并且通過(guò)創(chuàng)建醫(yī)療康復(fù)手臂運(yùn)轉(zhuǎn)方向、啟動(dòng)、停止、上位機(jī)通信、PID調(diào)節(jié)等任務(wù)使軟件運(yùn)行上更加模塊化。任務(wù)與任務(wù)之間通過(guò)郵箱、消息隊(duì)列等傳遞信息,并且可以相互掛起和啟動(dòng)相應(yīng)任務(wù),使任務(wù)之間能夠協(xié)調(diào)的工作、軟件架構(gòu)更清晰。
3.2 電機(jī)速度測(cè)量和六步換相
無(wú)刷直流電機(jī)的實(shí)際轉(zhuǎn)速可通過(guò)測(cè)量霍爾傳感器信號(hào)得到。在電機(jī)轉(zhuǎn)動(dòng)過(guò)程中,通過(guò)120°分布在電機(jī)中的3個(gè)霍爾傳感器可以得到如圖7所示的3路周期信號(hào)。
電機(jī)每轉(zhuǎn)一圈,每個(gè)霍爾傳感器產(chǎn)生2個(gè)周期的方波信號(hào),且其周期與電機(jī)轉(zhuǎn)速成反比。其結(jié)構(gòu)比在外圍添加編碼器更加方便靈活。
STM32微控制器的定時(shí)器具有檢測(cè)霍爾信號(hào)的端口,通過(guò)定時(shí)器對(duì)檢測(cè)到的3路霍爾信號(hào)進(jìn)行異或處理,當(dāng)其能捕捉到上升沿時(shí)觸發(fā)一次中斷請(qǐng)求,在中斷中記錄產(chǎn)生此次中斷需要的時(shí)間,并進(jìn)行定時(shí)器清零??刂屏鞒滩僮魅鐖D8所示,通過(guò)幾次中斷時(shí)間求取平均值,把得到的時(shí)間平均值轉(zhuǎn)化成電機(jī)運(yùn)行的速度值。通過(guò)檢測(cè)到的3個(gè)翟爾傳感器的高低電平值來(lái)進(jìn)行電機(jī)6步換相時(shí)序,能夠使無(wú)刷直流電機(jī)按時(shí)序要求進(jìn)行運(yùn)轉(zhuǎn)。
3.3 電機(jī)PID算法
由于人體手臂和機(jī)器手臂結(jié)構(gòu)都有重量,在電機(jī)運(yùn)行的時(shí)候?qū)⑹艿狡溆绊?,?dǎo)致電機(jī)運(yùn)行速度不斷變化,不利于機(jī)器手臂的穩(wěn)定運(yùn)行,因此需要把測(cè)量到的速度值和設(shè)定的速度值進(jìn)行雙閉環(huán)PID運(yùn)算,使電機(jī)運(yùn)轉(zhuǎn)速度一直保持設(shè)定的速度值。如圖9所示,電機(jī)的PID算法是運(yùn)用改變相電壓脈寬調(diào)制(PWM)波的占空比來(lái)實(shí)現(xiàn),通過(guò)增大或減小占空比,每個(gè)換相步驟會(huì)有部分電流流過(guò)定子線圈,這會(huì)影響定子磁場(chǎng)和磁通密度,從而改變轉(zhuǎn)子和定子的之間的力。
通過(guò)得到無(wú)刷直流電機(jī)速度的設(shè)定值(上位機(jī)設(shè)置)和實(shí)際檢測(cè)到的電機(jī)轉(zhuǎn)速值之間的差值,使其經(jīng)過(guò)速度PID控制環(huán)和電流PID控制環(huán)進(jìn)行PID調(diào)節(jié)來(lái)改變STM32輸出驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)信號(hào)的PWM波的占空比,機(jī)器手臂能夠平滑和穩(wěn)定地運(yùn)行。
4 PID模型設(shè)計(jì)
運(yùn)用MathWorks公司開(kāi)發(fā)的基于RTW體系框架的實(shí)時(shí)目標(biāo)系統(tǒng)XPC_Target建模,其提供了一種低廉成本、性能較高的可便捷實(shí)時(shí)應(yīng)用的系統(tǒng)。采用宿主機(jī)+目標(biāo)機(jī)的技術(shù)實(shí)現(xiàn)途徑,即“雙機(jī)”模式。宿主機(jī)和目標(biāo)機(jī)可以是不同類型的計(jì)算機(jī),兩者之間通過(guò)以太網(wǎng)實(shí)現(xiàn)通信。其實(shí)現(xiàn)模型如圖10所示。
根據(jù)工作原理,其實(shí)現(xiàn)分為如下步驟:
(1)用U盤創(chuàng)建DOS目標(biāo)啟動(dòng)盤
啟動(dòng)盤有FDD、HDD和ZIP三種模式,在制作的過(guò)程中根據(jù)目標(biāo)機(jī)支持的模式選擇。通過(guò)選用XPC_Target的嵌入式選項(xiàng)來(lái)制作目標(biāo)啟動(dòng)盤。通過(guò)U盤來(lái)調(diào)用和啟動(dòng)XPC_Target的實(shí)時(shí)內(nèi)核,可以使每次系統(tǒng)啟動(dòng)后自動(dòng)運(yùn)行目標(biāo)應(yīng)用程序。
(2)Simulink模型建立
在宿主機(jī)的Simulink上通過(guò)添加各個(gè)驅(qū)動(dòng)模塊建立電機(jī)調(diào)速過(guò)程中電流環(huán)、速度環(huán)的PID模型和下位機(jī)的串口通信模塊,然后用RTW代碼生成器和C編譯器來(lái)生成可執(zhí)行代碼,在目標(biāo)機(jī)上進(jìn)行實(shí)時(shí)運(yùn)行。
(3)信號(hào)采集過(guò)程
通過(guò)XPC_Target實(shí)時(shí)內(nèi)核將目標(biāo)應(yīng)用程序的信號(hào)數(shù)據(jù)存儲(chǔ)在目標(biāo)機(jī)的RAM中,并且在目標(biāo)機(jī)的顯示界面上對(duì)信號(hào)進(jìn)行監(jiān)視、記錄、跟蹤,并且繪制出圖像。當(dāng)下位機(jī)通過(guò)串口發(fā)送速度測(cè)量值給目標(biāo)機(jī)上運(yùn)行的通過(guò)Simulink中建立的PID模型生成的可執(zhí)行代碼時(shí),通過(guò)可執(zhí)行代碼程序進(jìn)行速度調(diào)節(jié),把其調(diào)節(jié)后的數(shù)據(jù)通過(guò)目標(biāo)機(jī)發(fā)送給下位機(jī),從而改變驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)信號(hào)的PWM波占空比。當(dāng)其速度測(cè)量值能夠穩(wěn)定到速度設(shè)定值的時(shí)候,Simulink中設(shè)置的 PID參數(shù)就是所需要的速度調(diào)節(jié)的PID參數(shù)值。否則,需要改變Simulink中建立的PID參數(shù)模型。
結(jié)語(yǔ)
本文提出了基于STM32微控制器的醫(yī)療康復(fù)機(jī)器人手臂的控制系統(tǒng)。目前,本系統(tǒng)的樣機(jī)已經(jīng)進(jìn)行了臨床試驗(yàn),并得到很好的試驗(yàn)效果。試驗(yàn)中的機(jī)器人手臂有 3個(gè)自由度,能實(shí)現(xiàn)肩關(guān)節(jié)、肘關(guān)節(jié)等的訓(xùn)練。通過(guò)使用IR2130柵極驅(qū)動(dòng)芯片,板子尺寸、系統(tǒng)穩(wěn)定性和設(shè)計(jì)靈活性都得到改善。在Simulink上設(shè)計(jì) PID參數(shù)模型,通過(guò)STM32微控制器驅(qū)動(dòng)板驅(qū)動(dòng)無(wú)刷直流電機(jī),在末端帶動(dòng)訓(xùn)練者的手臂分別在水平面和垂直平面的固定軌跡訓(xùn)練,并且把采集的運(yùn)行軌跡、速度圖像,以及預(yù)先設(shè)置的手臂運(yùn)行軌跡和速度圖像進(jìn)行對(duì)比和觀察,機(jī)器手臂運(yùn)行平滑,PID參數(shù)穩(wěn)定,進(jìn)一步增強(qiáng)了系統(tǒng)的穩(wěn)定性和靈活性。