<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于STM32F的搬運機器人電機控制系統的設計與實(shí)現

基于STM32F的搬運機器人電機控制系統的設計與實(shí)現

作者: 時(shí)間:2017-06-04 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

隨著(zhù)人工成本的不斷升高,用機器人代替人力去做一些重復性的高強度的勞動(dòng)是現代機器人研究的一個(gè)重要方向。在導航尋跡中,需要后輪驅動(dòng)電機和前輪舵機的協(xié)調工作。電機驅動(dòng)有其特殊的應用要求,對電機的動(dòng)態(tài)性能要求較高,能在任意時(shí)刻到達控制需要的指定位置并且使舵機停止在任意角度;電機驅動(dòng)的轉矩變化范圍大,既有空載平整路面行使的高速度、低轉矩工作環(huán)境,也有滿(mǎn)負載爬坡的運行工況,同時(shí)還要求保持較高的運行效率。根據以上的技術(shù)要求,本文選用了控制技術(shù)成熟,易于平滑調速的直流電機作為的執行饑構。

本文引用地址:http://dyxdggzs.com/article/201706/348331.htm

1 系統的硬件設計

1.1 機器人電機控制器硬件結構

主控制器采用內核的STM32F107??刂破鲀炔抗灿?個(gè)定時(shí)器,其中TIM1_CH1和TIM8_CH1為高級控制定時(shí)器引腳,TIM1_CH1用于電機編碼器計數。TLM8_CH1用于舵機控制基準時(shí)間。通用定時(shí)器引腳TIM2 CH1、TIM3 CH1、TIM4_CH1、TIM5_CH1分別用于電機和舵機驅動(dòng)電路上下橋壁PWM的產(chǎn)生。

觸發(fā)EXIT0中斷的PA0口和PB0口分別用于電機和舵機的過(guò)流中斷保護。觸發(fā)EXIT1中斷的PA1口和PB1口用于舵機兩側限位保護。電機驅動(dòng)電路采用自舉升壓芯片IR2103和MOSFET管75N75,后輪電機和舵機的相電流采集是通過(guò)康銅絲轉換成電壓,通過(guò)放大濾波處理,分別送至STM3 2F107的A/D采樣引腳ADC12_IN1實(shí)現過(guò)電流保護。通過(guò)上位機串口通信或STM32F107內部程序速度給定,控制電機的正反轉、速度及舵機的轉向。搬運機器人電機控制硬件結構框圖如圖1所示。


1.2 模塊的選擇與設計

1.2.1 功率驅動(dòng)的設計

電機的供電電源是由24 V的蓄電池提供,額定功率為240W,由4個(gè)75N75組成橋式電路來(lái)實(shí)現。75N75是MOSFET功率管,其最高耐壓75V,最高耐流75 A,電機驅動(dòng)電路如圖2所示。

Q1、Q4和Q2、Q3分別組成兩個(gè)橋路,分別控制電機的正轉和反轉。高端驅動(dòng)的MOS管導通時(shí)源極電壓和漏極電壓相同且都等于供電電樂(lè )VCC,所以要實(shí)現MOS管正常的驅動(dòng),柵極電壓要比VCC大,這就需要專(zhuān)門(mén)的升壓芯片IR2103??刂破鳟a(chǎn)生的PWM信號輸入HIN引腳,控制器I/O口輸出的EN1、EN2作為使能信號。輸出端HO就可得到比VCC要高的電壓,且高出的電壓值正好是充在電容兩端的電壓。二極管提高導通速度,使得75N75的導通電阻更小,降低了開(kāi)關(guān)管的損失。同時(shí)IR2103的兩個(gè)輸出口HO、LO具有互鎖功能,防止由于軟件或硬件錯誤造成的電機上下橋臂直通造成短路。

1.2.2 過(guò)流保護的設計

在電機控制系統中安裝過(guò)流保護有兩方面的意義:一是防止在電機正常運行時(shí),電機出現超載或堵轉而使得電樞繞組電流過(guò)大損害電機甚至引發(fā)火災;另一方面是由于電機肩動(dòng)時(shí)啟動(dòng)電流很大,往往不能直接啟動(dòng),既需要等勵磁繞組逐漸建立磁場(chǎng)后再正常運行,又希望電機以盡量快的速度肩動(dòng)起來(lái)。有了過(guò)流保護對電流進(jìn)行斬波,可以使電機安全快速地啟動(dòng)。過(guò)流保護原理圖如圖3所示。

電機的相電流通過(guò)康銅絲轉換成電壓信號Vtext,經(jīng)過(guò)運算放大器放大后的模擬量AD1送至控制器A/D轉換模塊,同時(shí)將經(jīng)過(guò)電壓比較器比較后的數字量EVA送至控制器的外部中斷口。

2 系統的軟件設計

2.1 μC/OS-II的體系結構

μC/OS-II是一種可移植的、可植入ROM的、可裁剪的、搶占式的實(shí)時(shí)多任務(wù)操作系統內核,具有執行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴展性強等特點(diǎn),最小內核可編譯至2 KB。μC/OS-II是用C語(yǔ)言和匯編語(yǔ)言編寫(xiě)的,其中絕大部分代碼郜是用C語(yǔ)言編寫(xiě)的,只有極少部分與處理器密切相關(guān)的代碼是用匯編語(yǔ)言編寫(xiě)。μC/OS-II僅僅包含了任務(wù)調度、任務(wù)管理、時(shí)間管理、內存管理、任務(wù)間的通信和同步等基本功能。

2.2 μC/OS-II系統下任務(wù)的分配

成功地將μC/OS-Ⅱ系統移植到STM32F107后,基于μC/OS-II的程序設計是將一個(gè)大的應用程序分成相對獨立的多個(gè)任務(wù)來(lái)完成。定義好每個(gè)任務(wù)的優(yōu)先級,μC/OS-II內核對這些任務(wù)進(jìn)行調度和管理。

軟件設計思路是根據機器人實(shí)際運行的需要由上位機通過(guò)串口對電機轉速和舵機轉動(dòng)位置進(jìn)行給定。電機的轉速是由設定的速度值和由增量式編碼器的采集值相比較,經(jīng)過(guò)速度PID算法實(shí)現閉環(huán)控制。舵機的位置主要是由絕對值式編碼器反饋現在位置,根據動(dòng)作時(shí)間要求調節舵機轉動(dòng)的速度。本搬運機器人電機控制系統軟件要實(shí)現的功能如下:

◆上位機給定電機轉速、舵機轉動(dòng)角度和動(dòng)作時(shí)間;
◆要求電機轉速連續可調并且具有良好的靜、動(dòng)態(tài)性能,轉速沒(méi)計采用PI算法調節;
◆要求舵機快速到達指定角度,有位置反饋作為舵機給定轉速的調整;
◆具有一定的故障保護功能。當電機出現堵轉、電流過(guò)大以及舵機觸動(dòng)限位開(kāi)關(guān)時(shí),要求停止驅動(dòng)模塊工作。
針對以上要實(shí)現的功能,可以將應用程序設計分為以下幾個(gè)任務(wù):
①啟動(dòng)任務(wù)。對系統進(jìn)行初始化,創(chuàng )建初始電機狀態(tài),然后自我刪除,啟動(dòng)任務(wù)進(jìn)入睡眠狀態(tài)。
②電機和舵機保護任務(wù)。用于在過(guò)流或限位開(kāi)關(guān)動(dòng)作時(shí)響應外部中斷,進(jìn)入中斷狀態(tài)通過(guò)發(fā)任務(wù)信號量,任務(wù)程序檢測信號量有效并響應該任務(wù),停止輸出。任務(wù)優(yōu)先級設為0級。
③上位機給定任務(wù)。用于上位機控制電機和舵機,任務(wù)優(yōu)先級設為1級。上位機數據輸入寄存器時(shí)將產(chǎn)生一個(gè)中斷,該中斷將收到的字節送入緩沖區并釋放上位機給定任務(wù)的信號量;任務(wù)中檢測到信號量有效便開(kāi)始執行,將對應的字節信息解析成對應的電機轉速和舵機轉角位置信息給相應變量賦值。
④電機轉速控制任務(wù)。用于電機的閉環(huán)調速,任務(wù)優(yōu)先級設為2級。
⑤舵機控制任務(wù)。用于控制舵機在規定時(shí)間內到達指定位置,任務(wù)優(yōu)先級設為3級。

2.3 啟動(dòng)任務(wù)

主程序中,在調用μC/OS-II的其他任務(wù)之前,首先調用系統初始化函數OSInit(),初始化μC/OS-II所有的變量和數據結構;同時(shí),建立空閑任務(wù)OS_TaskIdle(),這個(gè)任務(wù)總是處于就緒態(tài);調用OSTaskCreate()函數建立啟動(dòng)任務(wù);調用OSStart(),將控制權交給μC/OS-II內核,開(kāi)始運行多任務(wù)。
啟動(dòng)任務(wù)是在主程序中創(chuàng )建的,它主要有3個(gè)功能:
①用于系統初始化(PWM輸出模塊、串口、ADC模塊、輸入電平中斷功能、定時(shí)器)。
②建立系統所要用到的信號量。
③建立系統的其他任務(wù)。
最后調用OSTaskDel(OS_PRIO_SELF)進(jìn)行自我刪除,啟動(dòng)任務(wù)進(jìn)入睡眠狀態(tài)。主程序任務(wù)流程如圖4所示。


2.4 電機轉速控制任務(wù)

增量式編碼器每次產(chǎn)生外部中斷,在中斷狀態(tài)中發(fā)出任務(wù)信號量,任務(wù)程序檢測信號量有效并響應該任務(wù),任務(wù)中通過(guò)測得電機當前轉速和給定速度對比實(shí)現閉環(huán)控制。電機轉速控制任務(wù)流程如圖5所示。


2.5 舵機控制任務(wù)

舵機控制由一個(gè)定時(shí)器產(chǎn)生基準時(shí)間,每隔固定時(shí)間發(fā)送信號量,任務(wù)都將執行一次。舵機控制任務(wù)將對絕對值編碼器測出的位置和給定的位置進(jìn)行比較,根據剩余時(shí)間調整舵機的轉速。舵機控制任務(wù)流程如圖6所示。


3 系統機電接口

機器人的舵機由直流電機外連一個(gè)30:1的減速機組成。絕對式位置編碼器同舵機相連,將舵機的角度信號送到驅動(dòng)器控制板中。機器人前輪的兩個(gè)軸由傳動(dòng)桿相連,其中一個(gè)軸由傳動(dòng)帶與舵機相連,這樣在舵機轉動(dòng)時(shí),傳動(dòng)帶帶動(dòng)傳動(dòng)桿,保證兩個(gè)前輪能夠同步轉動(dòng)。后輪驅動(dòng)電機為直流電機,直接與增量式編碼器相連,經(jīng)減速比為25:1減速機減速后,經(jīng)機械差速器驅動(dòng)后輪轉動(dòng)。增量式編碼器的信號同樣送到驅動(dòng)器控制板中。機電系統結構如圖7所示。


結語(yǔ)


本文實(shí)現了搬運機器人的電機和舵機控制器硬件的設計,成功地在STM32F107上嵌入了實(shí)時(shí)操作系統μC/OS-II,完成了電機和舵機的轉速閉環(huán)實(shí)驗。利用內核控制器和μC/OS-II系統多任務(wù)實(shí)時(shí)性的特點(diǎn),為后續的機器人圖像視頻采集和導航尋跡提供了軟硬件基礎。如果對現有PI算法進(jìn)行改進(jìn),并且能夠實(shí)現電機速度和電流雙閉環(huán)控制,則機器人電機的特性將會(huì )更好,搬運機器人的應用前景將更加廣闊。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>