張紀寬,彭力,陳志勇
(江南大學 物聯網工程學院,無錫 214122)

張紀寬,彭力,陳志勇
(江南大學 物聯網工程學院,無錫 214122)
摘要:智能監控系統的快速發展對云臺控制精度要求不斷提高,由此設計并實現了一款雙軸監控云臺精準控制系統。本系統利用USART串口接收標準數控程序指令G代碼,通過移植CNC雕刻機運動控制器GRBL到云臺控制器STM32F103RBT6中控制兩臺步進電機協同工作,實現云臺精準控制。將數控機床中精準的直線插補和弧形、圓形運動功能運用到監控云臺中,提高控制精度,實現云臺快速響應和平穩加速以及無沖擊的轉彎。本系統在智能家居、區域安防等智能監控領域有很好的實用價值,適合現代視頻監控領域的發展要求。
關鍵詞:監控云臺;雙軸控制;GRBL;STM32F103RBT6;G代碼
引言
為了擴大攝像機的搜索范圍,減少同一區域布防攝像機的個數,通常使用帶有云臺的攝像機,監控人員可通過遠程客戶端控制云臺轉動,擴大監控范圍,滿足對監控固定目標實現快速定位及對大范圍環境監測的要求[1]。隨著計算機視覺的發展,智能視頻監控技術成為當前的研究熱點[2],通過圖像、視頻處理等技術可自動實現運動目標檢測、跟蹤[3],因此手動、低精度、單軸的云臺控制方式已不能滿足當今智能視頻監控的需求。針對上述問題,本文基于STM32微控制器設計并實現了一款雙軸監控云臺精準控制系統。與參考文獻[4]結合,可實現完整的智能監控系統前端設計。
1系統設計及工作原理
文中實現的系統采用STM32F103RBT6作為雙軸云臺控制器,通過串口接收智能監控前端[4]發送的控制指令,控制指令也可通過典型的PELCO協議[5]攜帶。將開源CNC雕刻機控制器GRBL[6-7]移植到STM32控制器,通過對STM32 C語言軟件編程調用GRBL依次實現G代碼[6]解析,控制兩個定時器協同工作,最后通過STM32的I/O引腳輸出PWM電機控制脈沖給電機驅動,從而控制兩臺步進電機協同運行,實現監控云臺的精準控制。系統整體結構圖如圖1所示。

圖1 系統整體結構圖
2基于GRBL的雙軸云臺控制
GRBL是一款針對Arduino/AVR328單片機用于CNC 雕刻的嵌入式G代碼編譯和運動控制器。GRBL性能高、成本低,由C編寫并優化,針對嵌入式芯片的靈巧特性實現精準時序和異步控制。它接受標準的G代碼,可以保持超過30 kHz的穩定、無偏差的控制脈沖,完美支持弧形、圓形和螺旋形的運動,并且包含完整的前瞻性加速度控制,可提前16~20個運動來規劃速度,從而實現平穩的加速和無沖擊的轉彎。為了實現云臺的精準控制,本系統移植GRBL中的G代碼解析、插補運動、脈沖控制等功能。GRBL軟件框架結構圖如圖2所示。

圖2 GRBL軟件框架圖
protocol模塊接收串口命令并傳遞給gcode模塊,gcode模塊解析G代碼為運動控制命令并傳遞給motion_control模塊和spindle_control模塊(此模塊控制雕刻機中的主軸,在本系統中未使用),motion_control模塊給planner模塊和stepper模塊提供命令接口,planner模塊根據命令計算運動數據并將其寫入準備運動計劃(數據緩沖區)中,stepper模塊則根據運動計劃控制兩個定時器協同工作,從而輸出脈沖控制兩臺步進電機運動。
2.1串口指令解析
該系統采用USART1作為通信串口,GRBL通過protocol模塊接收串口發送的用戶或者數據指令,例如發送指令“$”用來查詢GRBL支持的用戶命令。圖3(a)顯示的用戶指令可方便用戶完成想要的操作,例如發送“$$”用戶指令設置或查看使用的參數,如圖3(b)所示。

圖3 串口打印圖
G代碼是數控機床中一門易于理解的程序語言,也被稱為G指令[6]。protocol模塊將攜帶數據指令的G代碼傳遞給gcode模塊,gcode模塊解析G代碼為運動控制命令,設置運行模式,保存運行數據到緩沖區供motion_control調用,串口指令解析過程的程序流程圖如圖4所示。

圖4 串口指令解析流程圖
2.2插補運動


指令①~③是3條常見的G指令,指令①是快速定位指令,運行軌跡如圖5(a)所示,X和Y軸同時同速運行到A點,然后X軸不動,Y軸運行到B點,進給速度為默認值,由圖3(b)可知進給速度為參數“$4”默認400 mm/min。指令②是直線插補指令,運行軌跡如圖5(b)所示,X和Y軸同時以不同速度運行到B點,以2 000 mm/min的進給速度運行且軌跡是一條直線。指令③是順時針圓弧插補指令,運行軌跡如圖5(c)所示,從0點開始,以I、J為弧線原點坐標(相對當前位置的坐標),以X、Y為終點坐標(絕對坐標),運行弧形軌跡。

圖5 G代碼運行軌跡圖
如圖5所示,直線插補運行模式下,監控云臺運行距離最短,此模式適合快速跟蹤目標;快速定位模式適合從一個點運行到另一固定點的場所。三種模式的配合使用可實現單攝像機立體空間中任何不規則區域的監控。
插補運動的實現原理如下:
① planner模塊從motion_control模塊獲得運動控制命令,然后計算運行所需要的數據并保存到數據緩沖區供stepper模塊使用。
② 分別計算X和Y軸需要運行的絕對步數,如式(1)所示。steps_per_mm數組是圖4中初始化時的參數(代表每毫米需要運行多少步),position數組中存放著上一次循環時的步數,兩者之差便是本次運動的絕對步數。

(1)
③ 計算本次運行向量的模d,如下式所示(單位為mm):
(2)
④ 計算沿此軌跡運動時的運行速度,如式(3)所示。feed_rate為進給速度,像指令②中指定進給速度時此參數便為指定值,若指令中未指定則為圖4中初始化默認值,單位為mm/min;rate是步速,每分鐘運行的步數,單位為steps/min。

(3)
⑤ 在當前運行軌跡上的加速度如式(4)所示,單位為step/min/acceleration_tick。其中accelerate是圖4中初始化的加速度默認值(單位為mm/min2),ACC_TICKS_PER_SECOND為常量50。
(4)
計算這些參數是為了避免因電機的啟動停止造成漂移,影響運動精度,因此電機的運行速度呈梯形,根據中點法則,啟動時按照默認加速度緩慢加速,到達預定速度后勻速運行,停止時緩慢減速 ,速度-時間(v-t)圖如圖6所示。

圖6 運行速度-時間圖
2.3GRBL脈沖控制
GRBL通過stepper模塊獲取planner模塊計算的數據,換算成定時器計數個數,然后通過兩個定時器協同工作輸出步進脈沖,從而控制兩臺步進電機運行。第一個定時器負責控制輸出脈沖的周期,步進電機脈沖周期決定電機運行速度;第二個定時器控制每個脈沖周期中低電平的時間,對步進電機而言,脈沖占空比并不重要,重要的是脈沖周期,所以只要保證步進電機驅動能夠檢測到脈沖即可。本系統采用STM32微控制器的16位定時器TIM3和TIM4控制脈沖輸出,配合控制方式如圖7所示。

圖7 定時器脈沖控制圖
TIM4定時器裝入值如式(5)所示,因為TIM4定時器控制的是每個脈沖的低電平時間,為固定值。
T4=((pulse_microseconds-2)×

(5)
pulse_microseconds代表真正的延時時間,單位為μs,TICKS_PER_MICROSECOND代表每μs系統時鐘頻率,這里為72,右移3位是因為定時器為8分頻。
TIM3定時器寄存器裝入值如式(6)所示,因為TIM3定時器控制的是脈沖周期,決定了電機轉速,且每運行一單位距離,電機運行速度都以梯形變化,因此TIM3寄存器的裝入值為變值。
(6)
式(6)中分子代表定時器每分鐘跳動次數,分母steps_per_minute代表電機運動速度(每分鐘需要多少脈沖),兩者之商就是每個脈沖定時器需要跳動的次數,代表了每個脈沖的周期。
GRBL移植到STM32微控制器中,定時器控制脈沖輸出程序流程圖如圖8所示。

圖8 定時器控制脈沖程序流程圖
3硬件設計
該系統硬件電路簡單,只需要引出單個串口的微控制器最小系統、步進電機驅動模塊和兩臺步進電機三部分。控制器采用意法半導體公司基于Cortex-M3內核的32位增強型微控制器STM32F103RBT6,可工作在72 MHz頻率下,具有20 KB SRAM和128 KB FLASH,擁有3個普通16位定時器、1個16位高級定時器、3個USART串口以及51個通用I/O接口,在嵌入式產品中被廣泛應用[7]。本系統使用到的I/O引腳與功能如表1所列。

表1 I/O引腳與功能
電機驅動采用信捷DP-308D-L細分步進電機驅動器,最大輸出直流電壓可達80 V,輸出電流為3.0 A,采用純正弦波電流控制技術,適用于數控機床等控制精度要求較高的設備,采用集電極開路共陽極接法,接線圖略——編者注。
4系統測試
按照表1連接硬件,通過MDK軟件JTAG仿真器將程序燒錄到STM32中。先將串口通過USB轉串口線連接PC機,通過串口調試助手調試用戶命令,結果如圖3所示。再將串口與參考文獻[4]中嵌入式前端服務器DM365的控
制串口相連,通過上位機發送手動控制云臺命令,觀察到云臺能夠進行相應的運動,通過上位機的自動跟蹤算法,使云臺能夠對入侵目標實時跟蹤,效果圖如圖9所示。

圖9 云臺自動跟蹤效果圖
結語
本文設計并實現了一個雙軸監控云臺精準控制器,移植CNC雕刻機的精準控制算法GRBL到STM32微控制器,通過串口接收標準的G指令,經GRBL解析、計算后輸出精準控制脈沖給電機驅動,從而對兩臺步進電機實現精準控制,在智能監控系統快速發展的時代,本方案具有很高的實用價值。

參考文獻
[1] 紀鋼,司洞洞,吳萍萍.基于反饋式可定位云臺控制系統設計與實現[J].計算機測量與控制,2015,23(5):1582-1585.
[2] 黃凱奇,陳曉棠,康運鋒,等.智能視頻監控技術綜述[J].計算機學報,2015,38(6):1093-1118.
[3] 張建倉,楊哲輝,孫啟富.基于二自由度云臺的目標跟蹤系統設計[J].計算機測量與控制,2013,21(9):2579-2581.
[4] 張紀寬,彭力,陳志勇.基于嵌入式前端服務器的音視頻監控系統設計[J].江南大學學報:自然科學版,2015,14(1):38-42.
[5] 楊軼龍,徐馳,翁麗娜,等.基于閉環控制的云臺通信協議設計[J].安防科技,2011(11):18-20.
[6] Javed M Y,Rizvi S T H,Saeed M A,et al.LOW COST COMPUTER NUMERIC CONTROLLER USING OPEN SOURCE SOFTWARE AND HARDWARE[J].Sci. Int. (Lahore),2015,27(5):4041-4045.
[7] 徐洋,馬躍.STM32F103系列微控制器在應用編程技術研究[J].單片機與嵌入式系統應用,2013,13(8):35-37.
張紀寬、陳志勇(碩士研究生),研究方向為網絡視頻傳輸應用;彭力(教授),研究方向為視覺傳感器網絡、人工智能、計算機仿真。

Zhang Jikuan,Peng Li,Chen Zhiyong
(School of IoT,Jiangnan University,Wuxi 214122,China)
Abstract:The PTZ control accuracy requirement is increasing with the rapid development of intelligent monitoring system,thus a precision control system for double-axis monitoring PTZ is designed and implemented.The system uses the USART serial port to receive the standards-compliant G code,and PTZ control precision is achieved by transplanting GRBL into PTZ controller (STM32F103RBT6) to control two stepper motors working in coordination.In order to improve the control precision and achieve fast response,the smooth acceleration and non-impact turn of PTZ are achieved through applying the precise linear interpolation and arc or circular motion in NC machine tool to the monitoring PTZ.The system has good practical value in the field of intelligent monitoring,such as smart home,area safety defending,which is adapt to the development requirements of modern video surveillance.
Key words:monitoring PTZ;double-axis control;GRBL;STM32F103RBT6;G code
* 基金項目:江蘇省產學研聯合創新資金-前瞻性聯合研究項目(BY2014023-25)。
中圖分類號:TP36
文獻標識碼:A
收稿日期:(責任編輯:薛士然2016-01-11)