舞蹈機器人步進電機驅動電路和程序設計

2020-11-25 電子產品世界

在中國科大首屆機器人舞蹈比賽中(中央10臺節目轉播),我們用一個單片機控制多個步進電機指揮跳舞機器人 的雙肩、雙肘和雙腳伴著音樂做出各種協調舒緩充滿感情的動作,榮獲一等獎。電路採用74373鎖存,74LS244和ULN2003作電壓和電流驅動,單 片機(Atc52)作脈衝序列信號發生器。程序設計基於中斷服務和總線分時利用方式,實時更新各個電機的速度、方向。整個舞蹈由運動數據所決定的一截截動 作無縫連接而成。

本文引用地址:http://www.eepw.com.cn/article/201610/307416.htm

1 步進電機簡介

步進電機根據內部線圈個數不同分為二相制、三相制、四相制等。本文以四相制為例介紹其內部結構。圖1為四相五線制步進電機內部結構示意圖。

2 四相五線制步進電機的驅動電路

電路主要由單片機工作外圍電路、信號鎖存和放大電路組成。我們利用了單片機的I/O埠,通過74373鎖 存,由74LS244驅動,ULN2003對信號進行放大。8個電機共用4bit I/O埠作為數據總線,向電機傳送步進脈衝。每個電機分配1bit的I/O埠用作74373鎖存信號,鎖存步進電機四相脈衝,經ULN2003放大到 12V驅動電機運轉。

電路原理圖(部分)如圖2所示。

(1)Intel 8051系列單片機是一種8位的嵌入式控制器,可尋址64K字節,共有32個可編程雙向I/O口,分別稱為P0~P3。該系列單片機上集成8K的ROM,128位元組RAM可供使用。

(2)74LS244為三態控制晶片,目的是使單片機足以驅動ULN2003。ULN2003是常用的達林頓管陣列,工作電壓是12V,可以提供足夠的電流以驅動步進電機。關於這些晶片的詳細介紹可參見它們各自的數據手冊。

(3)74373是電平控制鎖存器,它可使多個步進電機共用一組數據總線。我們用P1.0~P1.7作為8個電機的鎖存信號輸出端,見表1。

這是一種基於總線分時復用的方式,以動態掃描的方式來發送控制信號,這和高級作業系統裡的多任務進程調度的思想一致。這種方法明顯的好處是節省I/O口,使系統可以控制更多的步進電機。本電路設計為控制8個。

3 程序設計

傳統的步進電機驅動程序利用簡單的條件循環來發送脈衝序列,但當電機數目發生變化時,編程繁雜,冗餘代碼較 多,難以做到信號佔空比一致,進而產生「抖動」現象。下面提出一種基於中斷服務方式,面向舞蹈動作,可實時改變各個電機速度和方向(每200ms可改變一 次)的程序設計方法。

3.1 速度歸一化和線性關係

我們將速度量化成一個-128~127內可變的數,正號代表正轉,負號代表返轉,稱之歸一化速度 (-128~127為一個字節)。給每個電機分配一個速度累加計數器speed_tickers[i](I=0,1,2…,7分別代表8個電機),初始值 為0,每個中斷觸發周期內給該累加計數器加上從舞步信息數組dancedata中讀取的速度值speeds[i],當計數器值大於或等於預設的閾值 MAX_SPEED_TICKER=600時,則發送脈衝序列中的下一個(正轉)或上一個(反轉)給步進電機,這取決於速度的符號(參考3.2節)。同 時,將該電機的累加計數器speed_tickers[i]恢復為0。給出的速度值speed[i]越大,則累加達到或超過閾值 MAX_SPEED_TICKER的時間就越短,那麼向步進電機發送脈衝的頻率就越高,速度也就越快。

歸一化速度值設為num(-128~127),電機實際旋轉速度設為V,那麼V和num之間滿足關係式:

(1)當num是閾值600的約數時,

其中,[x]代表不超過x的最大整數。

(3)V0是一個速度常數,即當歸一化速度值num=120的時候對應的電機實際速度。

(4)num和速度V近似線性關係,V∝num。正是因為有了這種函數關係,我們在舞蹈動作控制中,可以輕鬆實現速度在大範圍內變化。

3.2 速度正負實現方式

(1)在程序中,數組steps[8]用於存放步進電機的脈衝序列。


(2)設置指針cur_step[8]指向8個電機當前處在脈衝序列step[8]中的位置。
易知:0=step[i]=7,其中,i分別代表8個電機。

(3)設置指針移動變量delta=0。delta=1,指針向後移動一步,電機正轉;delta=-1,指針向前移動一步,電機反轉;delta=0,指針不移動,電機不發生轉動。

3.3 程序具體步驟

3.3.1初始化計時器InitTimer,然後空循環,進入等中斷階段。

3.3.2 中斷觸發後,程序進入服務程序。

(1)執行函數SetAllSpeeds,函數根據提供的速度值speed[i]依次判斷是否給各個電機發送脈衝,實現電機以特定的速度和方向旋轉。SetAllSpeeds具體算法流程見圖3。

(2)從定義的數組dancedata中讀取新的速度信息,每200ms一次。

(3)將系統在調用中斷處理函數時關閉的計時器重新打開InitTimer。

(4)中斷處理函數結束返回。

注意:第一,(1)和(2)不可交換,這是為了保證步進電機每步延時的均勻性;第二,內部中斷間隔時間 1ms內,8051是否能夠將中斷服務程序中所有的代碼執行完全?答案是肯定的。參考圖4,我們對整個中斷服務程序進行了統計,它所要執行的指令數在 200~300之間變化,時鐘間隔設置為1ms,選用12MHz晶振,執行這些指令需要耗時約500~600μs1ms,因此,中斷處理完全可以在一個計時器周期內執行完畢。


3.4 舞蹈編排

在舞蹈編排中,我們面向的是動作,因此,必須關心三要素:快慢、方向和幅度。在程序中,舞步信息數組格式如下:


每組數據含有8個字節,分別代表8個電機的歸一化速度num,這點在3.1節中已經做了詳細分析。程序每200ms讀一次數據,換句話說,每組數據的有效期只有200ms。我們分析表2一組數據代表的含義。


(1)組數為25,這隱含了動作的時間信息。因為每組數據的有效期為200ms,所以,25組數據的執行時間為:200ms×25=5000ms

(2)左腳和右腳(輪式)的歸一化速度相等,方向相反。根據公式(1)可以知道

V=0.5×V0

所以,機器人以0.5V0的速度原地轉圈5000ms。

(3)其它關節的歸一化速度num=0,說明其它關節均無動作。

3.5 可視化輔助程序簡介

我們發現一個簡單的動作競需要5組數據,5分鐘的舞蹈需要

組數據(需佔用1.5K存儲空間,AT89C52足夠)。如果人工填寫這些數據,將十分困難。因此在實際的運用中,我們用C+Builder編寫了機器人模擬程序,採用圖形界面,預一化速度和時間信息,寫入data.h,只要將其作為頭文件,電機驅動程序將自動讀取。

4 電路和程序特點總結

(1)一塊單片機控制多個步進電機,總線分時復用。

(2)程序基於中斷服務,電機工作穩定可靠。

(3)提出歸一化速度,實現了速度V大範圍可變。

(4)數據更新每200ms一次,可以輕鬆控制各個電機實時加速、減速、爆發,從而使舞蹈更人性化、感情化。這也正是我們允許數據量大的原因。

(5)輔助程序實現編程可視化。

文末是中國科大首屆機器人舞蹈比賽中用到的程序實例。







參考文獻

1 顧天柱,陳巳康.C51交叉編譯系統.上海:復旦大學出版社,1990,8

2 胡漢才.單片機原理及系統設計.北京:清華大學出版社,2002

相關焦點

  • 步進電機驅動電路解析,步進電機驅動電路原理圖、電路性能比較及...
    步進電機是將電脈衝信號轉變為角位移或線位移的開環控制電機,是現代數字程序控制系統中的主要執行元件,應用極為廣泛。在非超載的情況下,電機的轉速、停止的位置只取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響,當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為「步距角」,它的旋轉是以固定的角度一步一步運行的。
  • 步進電機H橋驅動電路設計
    永磁步進電機或混合式步進電機的勵磁繞組都必須用雙極性電源供電,也就是說繞組有時需正向電流,有時需反向電流,這樣繞組電源需用H橋驅動。本文以兩相混合式步進電機驅動器為例來設計H橋驅動電路。步進電機驅動器中,實現上述開關功能的元件在實際電路中常採用功率MOSFET管。由步進電機H橋驅動電路原理可知,電流在繞組中流動是兩個完全相反的方向。推動級的信號邏輯應使對角線電晶體不能同時導通,以免造成高低壓管的直通。
  • 步進電機及其驅動電路原理圖
    步進電機及其驅動電路原理圖     步進電機是工業控制及儀表中最常用的控制元件之一
  • uln2803步進電機的控制原理電路圖和源程序
    打開APP uln2803步進電機的控制原理電路圖和源程序 佚名 發表於 2008-08-28 15:48:06 uln2803步進電機的控制原理電路圖和源程序 步進電機的控制原理和程序 選自北航出版 耿德根主編《高速嵌入式單片機原理與應用》第七章7.4.2 源程序:SLAVR742.ASM         自從六十年代初期步進電機面世以來,在過去幾年它的重要性大大提高了
  • uln2003驅動步進電機,ULN2003驅動步進電機的PROTEUS程序
    打開APP uln2003驅動步進電機,ULN2003驅動步進電機的PROTEUS程序 發表於 2017-10-23 15:15:20
  • 基於CAN總線汽車組合儀表的設計與研究-步進電機驅動、存儲電路...
    一般步進電機可分為二相、三相、四相和六相。本系統步進電機選用深圳偉力驅動有限公司的VID29系列二相汽車儀表步進電機。 vID29-XX/VID29~xXp儀表步進電機是一種精密的步進電機,內置減速比180/1的齒輪系,主要應用於車輛的儀表指示盤,也可以用於其他儀器儀表裝置中,將數位訊號直接準確地轉為模擬的顯示輸出。
  • l298n驅動電機的工作原理_L298N驅動步進電機程序
    打開APP l298n驅動電機的工作原理_L298N驅動步進電機程序 發表於 2018-02-26 15:32:32   (三)步進電動機的特性   (1)步進電動機必須加驅動才可以運轉,驅動信號必須為脈衝信號,沒有脈衝信號的時候,步進電動機靜止,如果加入適當的脈衝信號,就會以一定的角度(稱為步角)轉動。轉動的速度和脈衝的頻率成正比。   (2)步進電機具有瞬間啟動和急速停止的優越特性。 (3)改變脈衝的順序,可以方便的改變轉動的方向。
  • 步進電機細分驅動電路及原理
    由此可見,步進電機細分驅動的關鍵在於細分步進電機各相勵磁繞組中的電流。步進電機細分驅動電路為了對步進電機的相電流進行控制,從而達到細分步進電機步距角的目的,人們曾設計了很多種步進電機的細分驅動電路。單片機控制的步進電機細分驅動電路根據末級功放管的工作狀態可分為放大型和開關型兩種(見下圖5)。
  • 步進電機工作原理及電路設計解析—電路精選(44)
    ,驅動步進電機的各相繞組。 圖4 方式1程序框圖 3.步進電機細分驅動電路 為了對步進電機的相電流進行控制,從而達到細分步進電機步距角的目的,人們曾設計了很多種步進電機的細分驅動電路。隨著微型計算機的發展,特別是單片計算機的出現,為步進電機的細分驅動帶來了便利。目前,步進電機細分驅動電路大多數都採用單片微機控制。單片機根據要求的步距角計算出各相繞組中通過的電流值,並輸出到數模轉換器(DPA) 中,由DPA 把數字量轉換為相應的模擬電壓,經過環形分配器加到各相的功放電路上,控制功放電路給各相繞組通以相應的電流,來實現步進電機的細分。
  • 單片機實現步進電機控制系統設計的方法
    因此,單片機通過向步進電機驅動電路發送控制信號就能實現對步進電機的控制。 1 系統設計原理 步進電機控制系統主要由單片機、鍵盤LED、驅動/放大和PC上位機等4個模塊組成,其中PC機模塊是軟體控制部分,該控制系統可實現的功能:1)通過鍵盤啟動/暫停步進電機、設置步進電機的轉速和改變步進電機的轉向;2)通過LED管顯示步進的轉速和轉向等工作狀態;3)實現三相或四相步進電機的控制:4)通過PC上位機實現對步進電機的控制
  • 以單片機為核心的步進電機控制系統驅動設計
    打開APP 以單片機為核心的步進電機控制系統驅動設計 工程師黃明星 發表於 2018-08-07 15:29:17 傳統的細分驅動電路由細分環行分配器、放大器和合成器等部分組成。這種電路應用複雜,靈活性差。本文利用A3967SLB作為步進電機微控晶片,簡化了步進電機的控制實現。由於單片機資源沒有PC豐富,人機界面也沒有PC友好,因此,本文採用了主從式結構,即PC用於管理,單片機用於執行。
  • 基於THB6064H的步進電機閉環控制電路設計
    圖1閉環控制原理示意圖  3硬體設計  3.1驅動部分電路  驅動電路以步進電機驅動晶片THB6064H為核心,配合簡單的外圍電路實現步進電機的驅動。驅動電路如圖2所示。由於步進電機在低頻工作時,可能會伴有較大的振動和較大的噪聲,這些就需要通過細分驅動來解決。驅動輸出的電流調節和衰減方式調節都可通過外接撥碼開關來實現,電路簡單,方便可靠。  3.2反饋控制電路  電路的反饋環節選用增量型旋轉編碼器與步進電機固定同軸旋轉,產生反饋脈衝信號,發送到單片機,經單片機處理後獲得步進電機的旋轉信息。
  • 步進電機驅動晶片有哪些_六款步進電機驅動晶片
    優點:驅動電流大。   缺點:晶片較老,有停產可能;電路稍微複雜;程序控制稍微複雜。   2.A4988   ALLEGRO公司產,此公司做步進電機驅動IC還是挺出名的,小封裝居多,如QFN/LQFP;在小儀器、功率要求不大可以使用。
  • 單片機驅動電機電路
    51單片機驅動步進電機電路   在這裡介紹一下用51單片機驅動步進電機的方法。   這款步進電機的驅動電壓12V,步進角為 7.5度 。 一圈 360 度 , 需要 48 個脈衝完成!   該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5: $、6:黑色。採用51驅動ULN2003的方法進行驅動。ULN2003的驅動直接用單片機系統的5V電壓,可能力矩不是很大,大家可自行加大驅動電壓到12V。
  • 步進電機驅動電路簡介
    單極性驅動電路使用四顆電晶體來驅動步進電機的兩組相位,電機結構則如圖1所示包含兩組帶有中間抽頭的線圈,整個電機共有六條線與外界連接。
  • 直流電機驅動電路設計
    >在直流電機驅動電路的設計中,主要考慮一下幾點: 1.性能:對於PWM調速的電機驅動電路,主要有以下性能指標。 1)輸出電流和電壓範圍,它決定著電路能驅動多大功率的電機。 2)效率,高的效率不僅意味著節省電源,也會減少驅動電路的發熱。
  • 步進電機控制電路的實現方法
    從步進電機及細分控制的基本原理分析入手,論述了步進電機細分控制電路的實現方法。關鍵詞:步進電機;細分控制;電路設計。PWM 具有原理簡單、易於控制和實現等特點,控制電路的複雜程度不高,鑑於此,可選取PWM 作為步進電機細分控制電路的實現方式。  3.2 硬體電路的設計與實現(1)系統架構。
  • 51單片機驅動步進電機電路及程序
    在這裡介紹一下用51單片機驅動步進電機的方法。本文引用地址:http://www.eepw.com.cn/article/173250.htm  這款步進電機的驅動電壓12V,步進角為 7.5度 .
  • 步進電機主要在哪些方面應用(四款步進電機電路圖)
    四款步進電機電路圖   電路圖一:   步進電機的驅動電路與51單片機的連接電路圖如上;   步進電機的驅動信號必須為脈衝信號!轉動的速度和脈衝的頻率成正比,   本步進電機步進角為7.5度。在筆者給西北軸承廠改造磨床的過程中,設計了一種實用的步進電機驅動電路,它可以驅動75BF003-130BF003四種型號的三相六拍反應式步進電機,最高運行頻率每分鐘15000步。該電路除具有恆流斬波的特性外,還具有過流保護和超溫保護的功能。
  • 電路設計:一種步進電機驅動器ULN2003的應用
    IC驅動,但是步進電機一般功率不是很小,它的驅動一般使用專門的驅動器來驅動步進電機,因為步進電機的驅動不僅涉及到控制部分,同時還有功率驅動部分,最重要的還是電機保護電路,這也是為了電機以及整機可靠性涉及考慮。