?

基于STM32的24路舵機同步控制系統設計

2019-06-20 06:07牛國臣張云霄
現代電子技術 2019年10期
關鍵詞:控制板舵機寄存器

牛國臣 張云霄

摘 ?要: 針對多路舵機速度和位置同步控制問題,提出一種多路舵機控制信號產生及控制方法,僅采用STM32芯片的一個通用定時器實現24路舵機PWM控制信號的精確獨立輸出控制?;诜謺r復用的方法,實現一個比較寄存器控制6路舵機,故利用一個定時器的4個比較寄存器及其比較中斷和1個更新中斷,最終實現24路舵機位置和速度的同步控制?;谠摲椒ㄟM行了硬件系統設計,主要包括電源模塊、舵機接口模塊、存儲模塊、低壓報警模塊、鍵盤模塊及通信模塊。最后,實現了24路舵機控制系統的設計,并成功應用在17自由度的人形機器人中,且在華北五?。ㄊ?、自治區)大學生機器人大賽中獲得一等獎,驗證了控制系統的穩定性、可靠性及有效性。

關鍵詞: 24路舵機; STM32; 同步控制; 比較寄存器; 分時復用; 系統設計

中圖分類號: TN876?34 ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2019)08?0151?05

Design of 24?channel rudder synchronous control system based on STM32

NIU Guochen, ZHANG Yunxiao

(College of Electronic Information and Automation, Civil Aviation University of China, Tianjin 300300, China)

Abstract: In allusion to the speed and position synchronous control problem of the multi?channel rudder, the control signal generation and control method is proposed for the multi?channel rudder. The precise and independent output control for the PWM control signals of the 24?channel rudder is realized by using only a general timer of the STM32 chip. Six?channel rudder control using a comparison register is realized based on the time division multiplexing method. The 24?channel rudder position and speed synchronous control is realized by using four comparison registers with their comparison interrupts and an update interrupt of a timer. Based on the method, the hardware system is designed, mainly including the power module, rudder interface module, storage module, low?voltage alarm module, keyboard module and communication module. The design of the 24?channel rudder control system is realized. The system is successfully applied in the 17?degree of freedom humanoid robot, and awarded with the first prize in the college student robot contest of five provinces, municipalities and autonomous regions of North China. The stability, reliability and effectiveness of the control system were verified.

Keywords: 24?channel rudder; STM32; synchronous control; comparison register; time division multiplexing; system design

舵機在現代化設備中應用廣泛,特別是近幾年發展迅速的機器人行業。這給舵機的精確控制提出了更高的要求,其控制性能的好壞直接影響了該設備功能的實現,因此對舵機的控制研究有著至關重要的意義[1?2]。目前,多路舵機控制關鍵在于多路舵機同步控制,其信號產生具有多種方法。51單片機應用廣泛,性能穩定,有大量的舵機控制的例程,但其在多路舵機控制上硬件資源不足,控制速度不理想。DSP在數字信號處理運算領域應用廣泛,因此出現基于DSP的多路舵機控制方法,但該方法成本較高,且控制速度不理想。STM32系列專為高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex?M3內核,易于實現多路舵機的控制,但控制的同步性在很大程度上受程序設計的影響[3?5]。因此,從成本和性能考慮,本文提出一種利用STM32芯片,僅使用一個定時器,基于分時復用,充分利用其中斷機制,實現24路PWM信號的獨立輸出控制。該方法占用單片機的定時器資源少,可擴展性強,且其控制精度高。

1 ?硬件系統設計

多路舵機控制信號的產生、實現連續動作和通信功能是舵機控制板的三個基本功能。針對舵機控制板的基本功能,設計性能指標:能產生24路舵機控制信號,具有獨立控制功能,能進行速度控制和位置控制,可存儲多路舵機控制命令,能與上位機或其他芯片通信,具有低壓報警、狀態指示和鍵盤輸入功能。 根據其性能指標做出模塊框圖如圖1所示。

圖1 ?硬件模塊框圖

1.1 ?MCU模塊

STM32有眾多的型號,其硬件資源也有較大的差異。為了使硬件資源利用最大化,最終選擇STM32F103RBT6芯片作為控制板的核心芯片,用于實現與外部通信、產生多路舵機控制信號等功能。

1.2 ?電源模塊

舵機控制板主要有兩種電壓制式:舵機供電(7.4 V)、STM32芯片供電(3.3 V)。為保證電路精簡,舵機直接采用2S電池供電,STM32芯片采用電池接ASM1117降壓穩壓芯片供電。電源模塊原理圖見圖2。

圖2 電源模塊原理圖

1.3 ?舵機接口模塊

舵機接口由正極、負極、信號線三個接線端組成[6]。每個接口的負極加入快速熔斷保護器,以防止舵機過載燒毀,采用STM32端口連接舵機信號端,接入1 kΩ的電阻用以增加PWM信號的穩定性。其中一路的舵機接口原理圖如圖3所示,PA1為STM32芯片I/O口引腳。

圖3 ?舵機接口原理圖

1.4 ?低壓報警模塊

低壓報警部分由電壓采集和聲音報警兩部分組成,對電源輸入電壓(8.4 V)進行[13]采集,設置電壓閾值為5 V,判斷電壓產生驅動信號,進而驅動蜂鳴器發出報警信號。

1.5 ?動作組存取模塊

采用STM32外接FLASH芯片W25Q128,實現動作組的存取。該芯片有128 MB存儲空間,通過SPI總線與STM32芯片進行通信,存儲對應的動作組,進行動作組的調用,從而能夠實現脫機運行。

1.6 ?通信模塊

通信模塊由兩部分組成:一部分留出TX,RX接口,用于單片機的程序下載,作為與外部單片機進行通信的接口,能根據通信協議實現特定的功能,便于進行控制板的二次開發;另一部分使用USB?HID接口,實現與上位機通信,方便進行動作調試。

2 ?舵機控制信號的產生

2.1 ?單路PWM信號產生

控制舵機需要產生特定的PWM信號。STM32F10x系列最多有8個定時器:設計中采用的STM32F103RBT6芯片含有1個高級定時器,3個通用定時器,2個基本定時器,每個通用定時器都是完全獨立的,沒有互相共享的任何資源,且具有4個獨立通道,每個通道都有一個比較寄存器和多達6種中斷事件[7]。

該通用定時器主要是由一個16位的計數器和一個自動裝載寄存器構成。此計數器時鐘由預分頻器分頻得到,如下:

[T=(PSC+1)Tclk] ? ? ? ? (1)

式中:PSC表示預分頻系數;[Tclk]表示系統頻率;T表示計數器計數周期。

通過設置預分頻器寄存器和自動裝載寄存器可以確定定時器的溢出時間:

[Tout=ARR+1·T] ? ? ? ? (2)

式中:[Tout]表示定時器的溢出時間;ARR表示預裝載值;T表示計數器計數周期[8]。

首先進行定時器的初始化,開啟比較中斷和更新中斷,根據式(1)設置預分頻系數為71,使計數器的時鐘周期為1 μs,設置預裝載寄存器為19 999,使更新中斷時間間隔為20 ms。

根據期望輸出計算比較中斷時間,分別利用比較中斷和更新中斷控制電平翻轉,從而達到PWM控制信號的輸出,其原理圖如圖4所示。

圖4 ?產生PWM信號的過程

2.2 ?多路PWM信號的產生

通過STM32單片機的一個通用定時器,利用分時機制產生24路舵機控制信號。

由于每個定時器含有4個通道,每個通道都有1個比較寄存器,要產生24路PWM信號,則需要每個通道進行6路PWM信號占空比的控制。由于舵機控制要求每個PWM信號周期為20 ms,則可以計算出定時器的更新中斷時間為3.333 ms。此中斷時間滿足舵機控制信號0.5~2.5 ms的脈寬時間,則可以在20 ms內完成24路PWM信號的控制輸出。實現算法如下:

Step1:進行定時器的初始化,開啟比較中斷和更新中斷,根據式(1)設置定時器寄存器,使計數器時鐘周期為1 μs,溢出時間為3.33 ms,并對舵機的位置進行初始化。

Step2:接收控制命令,根據控制命令傳入的舵機ID、舵機期望位置、舵機期望運動時間,計算出每個刷新周期(20 ms)比較寄存器應改變的大小。

Step3:根據Step2中解析得到的數據進行中斷控制,利用分時復用的方法,分別在6個時期,一次控制4個比較中斷時間的改變,從而實現在20 ms內對24路PWM信號的刷新控制。

Step4:判斷舵機當前位置與期望位置是否相同,相同則結束此次動作,等待下一次的控制命令,否則轉入Step3。

其中一個通道仿真如圖5所示。

圖5 ?一個通道的仿真圖

該方法可以實現24路PWM的精確輸出,并且對于管腳的要求不高,普通I/O管腳即可滿足輸出要求,且只需要利用一個定時器就可以實現24路PWM信號的輸出。

2.3 ?舵機的位置控制和速度控制

舵機的控制包括位置控制和速度控制。

1) 位置控制

由舵機的控制原理可知,舵機轉動角度與20 ms周期的PWM信號脈寬成線性關系,易于得出兩者的對應關系。實驗中所用舵機為轉角180°的數字舵機,其控制信號脈沖寬度和舵機角度的關系如圖6所示。

圖6 ?脈沖寬度和舵機角度的關系

位置控制即周期為20 ms的PWM的脈寬控制,位置控制流程如下:

Step1:接收控制命令,讀取期望位置;

Step2:經過速度位置控制函數得出每個刷新周期脈寬改變量;

Step3:根據Step2得到的每個刷新周期脈寬改變量得出當前刷新周期舵機的位置;

Step4:將Step3得到的舵機位置數據寫入比較寄存器,刷新PWM輸出信號;

Step5:判斷當前舵機的位置與期望舵機的位置是否在誤差范圍內,是則結束,否則返回Step3。

舵機的位置控制存在控制精度的問題。本設計中將0.5~2.5 ms分為2 000份,其控制精度為1 μs,在實驗中選用的是LD?2015數字舵機,根據舵機說明手冊可以知道舵機的最小控制角度為0.3°,控制精度為3 μs,該方法滿足舵機自身精度。

2) 速度控制

速度控制用動作到達的時間來表示,時間控制的方法如下:設定一個期望運動的時間,經過速度位置控制函數進行運算,得出一個PWM信號在每個波形刷新周期脈寬改變量(舵機控制要求PWM信號的周期為20 ms,則設定刷新周期為20 ms),在一定次數的位置刷新后可在期望時間達到設定的位置,則完成了速度(時間)控制。速度控制流程如下:

Step1:接收控制命令;

Step2:進行數據解析,得到期望動作的舵機ID,得到期望動作時間,進而得到需要進行刷新周期的個數;

Step3:得到當前位置與期望運動到的位置之間的距離;

Step4:用Step3得到的位置距離除以Step2得到的需要的刷新周期個數,得到每個PWM波刷新周期需要改變的距離;

Step5:進行周期刷新,判斷是否達到期望位置,是則結束,否則繼續進行周期刷新。

位置周期刷新如圖7所示。

圖7 ?位置周期刷新示意圖

在圖7中,從一個PWM信號刷新周期到下一個PWM信號刷新周期,PWM信號根據速度位置控制函數計算的脈寬改變量進行周期刷新,從T1周期開始脈寬改變,經過N次刷新后最終達到設定值。

3 ?實驗驗證

3.1 ?舵機控制板

基于上述設計的硬件電路,進行舵機控制板安裝調試,舵機控制板如圖8所示,并進行多路舵機控制實驗。

3.2 ?PWM信號輸出實驗

由于舵機的控制信號是一定頻率的PWM信號,便于示波器觀察驗證,實驗中對兩路相鄰的PWM信號進行了輸出控制,通過上位機發送控制命令,使兩路PWM信號同時輸出。圖9為同時輸出兩路脈沖寬度為1.5 ms的舵機控制信號波形圖,兩路PWM信號時間間隔與設計中的更新中斷時間間隔3.33 ms吻合,驗證了多路舵機同步控制的可行性。

圖8 ?舵機控制板實物圖

圖9 ?同時輸出兩路脈寬為1.5 ms的舵機控制信號波形圖

3.3 ?7路舵機控制實驗

為了證明多路舵機的位置控制,實驗中選擇7個LD?2015數字舵機,進行7路舵機的位置控制,該舵機能夠實現180°位置控制。通過上位機發送控制命令,設置期望角度分別為0°,30°,60°,90°,120°,150°,180°,進而實現7路舵機的位置控制。經實驗驗證,可以實現多路舵機的位置精確控制,實驗數據如表1所示。

7路舵機控制實驗如圖10所示,圖10a)為初始時刻舵機位置的圖片,圖10b)為接收控制命令后的舵機位置圖片。在7路舵機控制實驗中,最大誤差為2°,相對誤差為1.11%,主要由舵機控制器精度及舵機內部齒輪的空隙產生,故該方法具有控制精度高,同步性好的特點。

圖10 ?7路舵機控制實驗圖

4 ?結 ?語

本文對24路舵機的控制系統進行了設計,以STM32作為主控芯片,基于分時機制實現多路舵機控制信號的同步輸出控制,基于插值法實現舵機的速度和位置控制,進行硬件電路設計,最終實現了24路舵機的運動控制,控制精度高,同步性好。該舵機控制系統成功應用于2017年華北五?。ㄊ?、自治區)大學生機器人大賽類人機器人競技項目的比賽,并取得一等獎的優異成績,驗證了控制系統的穩定性、可靠性及有效性。

參考文獻

[1] 陳兵,駱敏舟,馮寶林,等.類人機器人的研究現狀及展望[J].機器人技術與應用,2013(4):25?30.

CHEN Bing, LUO Minzhou, FENG Baolin, et al. Current status and future development of humanoid robots [J]. Robot technique and application, 2013(4): 25?30.

[2] YI S J, ZHANG B T, HONG D, et al. Whole?body balancing walk controller for position controlled humanoid robots [J]. International journal of humanoid robotics, 2016, 13(1): 11?15.

[3] 周永龍,雷金奎.基于STM32的數字舵機控制系統的設計[J].計算機測量與控制,2011,19(1):66?68.

ZHOU Yonglong, LEI Jinkui. Design of STM32?based digital actuator controlling system [J]. Computer measurement & control, 2011, 19(1): 66?68.

[4] 馮曉偉,王雷陽,李正生.多路舵機控制PWM發生器的設計與Proteus仿真[J].現代電子技術,2011,34(11):167?169.

FENG Xiaowei, WANG Leiyang, LI Zhengsheng. Design and simulation of multipass servo control PWM generator based on Proteus [J]. Modern electronics technique, 2011, 34(11): 167?169.

[5] 錢慶文.基于STM32的類人機器人控制系統的研究[D].哈爾濱:哈爾濱理工大學,2014.

QIAN Qingwen. Research on control system of humanoid robot based on STM32 [D]. Harbin: Harbin University of Science and Technology, 2014.

[6] SATO R, MATSUDA H, FUJIEDA M, et al. Design and implementation of common platform for small humanoid robots [C]// Proceedings of IEEE International Conference on Mechatronics and Automation. Takamatsu: IEEE, 2013: 855?860.

[7] 韓飛,吳寶春,陳益,等.四足爬行機器人控制研究[J].智能計算機與應用,2017,7(1):117?118.

HAN Fei, WU Baochun, CHEN Yi, et al. Control research on quadruped robot [J]. Intelligent computer and applications, 2017, 7(1): 117?118.

[8] 劉士川,鄧甲昊,占銀玉,等.基于STM32的小型機械手的設計與控制方法[J].探測與控制學報,2017,39(2):19?23.

LIU Shichuan, DENG Jiahao, ZHAN Yinyu, et al. Design and implementation of manipulator based on PWM technology [J]. Journal of detection & control, 2017, 39(2): 19?23.

[9] 余梓奇,章建雄,馬鵬,等.基于OpenOCD和DAP的嵌入式遠程調試系統研究與設計[J].電子設計工程,2017,25(22):149?153.

YU Ziqi, ZHANG Jianxiong, MA Peng, et al. Research and design of embedded remote debugging system based on OpenOCD and DAP [J]. Electronic design engineering, 2017,25(22): 149?153.

[10] 解明利,劉春旭,張一同.機械壓力機連桿動態結構優化設計仿真[J].計算機仿真,2017, 34(9):209?213.

XIE Mingli, LIU Chunxu, ZHANG Yitong. Rod system dynamic structure optimization design and simulation for the mechanical press [J]. Computer simulation, 2017, 34(9): 209?213.

猜你喜歡
控制板舵機寄存器
關于某家用電器靜電彈簧控制板一拖多自動檢測裝置的研究與應用
一種橡膠減震裝置
Lite寄存器模型的設計與實現
含齒隙彈載舵機的全局反步模糊自適應控制
軌道交通AFC導向標識控制板設計
基于dsPIC單片機的飛艇舵機控制實現
分簇結構向量寄存器分配策略研究*
基于高速同步485總線通信的多通道舵機控制器設計
一種機載SAR中心控制板的設計
基于云模型的舵機同步控制
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合