成人女人看片免费视频放人_亚洲色精品三区二区一区_欧美亚洲国产精品久久_成人无遮挡裸免费视频在线观看_97SE亚洲国产综合在线_精品久久久久久777米琪桃花_天天躁日日躁很很很躁_色噜噜狠狠一区二区三区果冻_国产免费久久精品国产传媒_67194成是人免费无码


首頁 -> 登錄 -> 注冊 -> 回復主題 -> 發(fā)表主題
光行天下 -> 機械設(shè)計,制造及其自動化 -> 機器人步進電機驅(qū)動電路與程序設(shè)計 [點此返回論壇查看本帖完整版本] [打印本頁]

6172007 2007-06-27 09:43

機器人步進電機驅(qū)動電路與程序設(shè)計

在中國科大首屆機器人舞蹈比賽中(中央10臺節(jié)目轉(zhuǎn)播),我們用一個單片機控制多個步進電機指揮跳舞機器人的雙肩、雙肘和雙腳伴著音樂做出各種協(xié)調(diào)舒緩充滿感情的動作,榮獲一等獎。電路采用74373鎖存,74LS244和ULN2003作電壓和電流驅(qū)動,單片機(Atc52)作脈沖序列信號發(fā)生器。程序設(shè)計基于中斷服務和總線分時利用方式,實時更新各個電機的速度、方向。整個舞蹈由運動數(shù)據(jù)所決定的一截截動作無縫連接而成。 U<T.o0s=  
1|]IWX|  
1 步進電機簡介 2Fi ~GY_  
    步進電機根據(jù)內(nèi)部線圈個數(shù)不同分為二相制、三相制、四相制等。本文以四相制為例介紹其內(nèi)部結(jié)構(gòu)。圖1為四相五線制步進電機內(nèi)部結(jié)構(gòu)示意圖。 ,'FH[2  
^,P# <,D,  
2 四相五線制步進電機的驅(qū)動電路 )<J|kC\r6c  
    電路主要由單片機工作外圍電路、信號鎖存和放大電路組成。我們利用了單片機的I/O端口,通過74373鎖存,由74LS244驅(qū)動,ULN2003對信號進行放大。8個電機共用4bit I/O端口作為數(shù)據(jù)總線,向電機傳送步進脈沖。每個電機分配1bit的I/O端口用作74373鎖存信號,鎖存步進電機四相脈沖,經(jīng)ULN2003放大到12V驅(qū)動電機運轉(zhuǎn)。 + F{hFuHV  
"c0I2wq  
電路原理圖(部分)如圖2所示。 J[Ck z]  
(1)Intel 8051系列單片機是一種8位的嵌入式控制器,可尋址64K字節(jié),共有32個可編程雙向I/O口,分別稱為P0~P3。該系列單片機上集成8K的ROM,128字節(jié)RAM可供使用。 (P( =6-0  
(2)74LS244為三態(tài)控制芯片,目的是使單片機足以驅(qū)動ULN2003。ULN2003是常用的達林頓管陣列,工作電壓是12V,可以提供足夠的電流以驅(qū)動步進電機。關(guān)于這些芯片的詳細介紹可參見它們各自的數(shù)據(jù)手冊。 }}R?pU_  
(3)74373是電平控制鎖存器,它可使多個步進電機共用一組數(shù)據(jù)總線。我們用P1.0~P1.7作為8個電機的鎖存信號輸出端,見表1。 Iq76JJuCb  
  ' 7lHWqN<  
  iD;pXE{2s%  
    這是一種基于總線分時復用的方式,以動態(tài)掃描的方式來發(fā)送控制信號,這和高級操作系統(tǒng)里的多任務進程調(diào)度的思想一致。這種方法明顯的好處是節(jié)省I/O口,使系統(tǒng)可以控制更多的步進電機。本電路設(shè)計為控制8個。 dA)JR"r2  
R?%J   
3 程序設(shè)計 hxCSE$f4  
    傳統(tǒng)的步進電機驅(qū)動程序利用簡單的條件循環(huán)來發(fā)送脈沖序列,但當電機數(shù)目發(fā)生變化時,編程繁雜,冗余代碼較多,難以做到信號占空比一致,進而產(chǎn)生“抖動”現(xiàn)象。下面提出一種基于中斷服務方式,面向舞蹈動作,可實時改變各個電機速度和方向(每200ms可改變一次)的程序設(shè)計方法。 {P'_s ]B)  
3.1 速度歸一化和線性關(guān)系 xiWP^dIF  
    我們將速度量化成一個-128~127內(nèi)可變的數(shù),正號代表正轉(zhuǎn),負號代表返轉(zhuǎn),稱之歸一化速度(-128~127為一個字節(jié))。給每個電機分配一個速度累加計數(shù)器speed_tickers(I=0,1,2…,7分別代表8個電機),初始值為0,每個中斷觸發(fā)周期內(nèi)給該累加計數(shù)器加上從舞步信息數(shù)組dancedata中讀取的速度值speeds,當計數(shù)器值大于或等于預設(shè)的閾值MAX_SPEED_TICKER=600時,則發(fā)送脈沖序列中的下一個(正轉(zhuǎn))或上一個(反轉(zhuǎn))給步進電機,這取決于速度的符號(參考3.2節(jié))。同時,將該電機的累加計數(shù)器speed_tickers恢復為0。給出的速度值speed越大,則累加達到或超過閾值MAX_SPEED_TICKER的時間就越短,那么向步進電機發(fā)送脈沖的頻率就越高,速度也就越快。 4trP*u,4  
    歸一化速度值設(shè)為num(-128~127),電機實際旋轉(zhuǎn)速度設(shè)為V,那么V和num之間滿足關(guān)系式: #hp 7@ Tu  
(1)當num是閾值600的約數(shù)時, $)HD`E  
`"7}'|  
其中,[x]代表不超過x的最大整數(shù)。 e8WuAI86  
(3)V0是一個速度常數(shù),即當歸一化速度值num=120的時候?qū)碾姍C實際速度。 ~}lYp^~:J  
(4)num和速度V近似線性關(guān)系,V∝num。正是因為有了這種函數(shù)關(guān)系,我們在舞蹈動作控制中,可以輕松實現(xiàn)速度在大范圍內(nèi)變化。 *3uBS2Ld  
3.2 速度正負實現(xiàn)方式 n\-nBrVSf  
(1)在程序中,數(shù)組steps[8]用于存放步進電機的脈沖序列。 i6S5 4&^!  
5%qq#;[ n  
(2)設(shè)置指針cur_step[8]指向8個電機當前處在脈沖序列step[8]中的位置。 d4#CZv[g/  
    易知:0 <=step<=7,其中,i分別代表8個電機。 "aU) [  
(3)設(shè)置指針移動變量delta=0。delta=1,指針向后移動一步,電機正轉(zhuǎn);delta=-1,指針向前移動一步,電機反轉(zhuǎn);delta=0,指針不移動,電機不發(fā)生轉(zhuǎn)動。 5Kadh2nz  
3.3 程序具體步驟 ,A$#gLyk<  
3.3.1初始化計時器InitTimer,然后空循環(huán),進入等中斷階段。 G_vcuCHm  
3.3.2 中斷觸發(fā)后,程序進入服務程序。 e_<'zH_1  
(1)執(zhí)行函數(shù)SetAllSpeeds,函數(shù)根據(jù)提供的速度值speed依次判斷是否給各個電機發(fā)送脈沖,實現(xiàn)電機以特定的速度和方向旋轉(zhuǎn)。SetAllSpeeds具體算法流程見圖3。 >)Udb//  
(2)從定義的數(shù)組dancedata中讀取新的速度信息,每200ms一次。 1g{-DIOmn  
(3)將系統(tǒng)在調(diào)用中斷處理函數(shù)時關(guān)閉的計時器重新打開InitTimer。 uW%(ySbq  
(4)中斷處理函數(shù)結(jié)束返回。 Li'>pQ+  
    注意:第一,(1)和(2)不可交換,這是為了保證步進電機每步延時的均勻性;第二,內(nèi)部中斷間隔時間1ms內(nèi),8051是否能夠?qū)⒅袛喾⻊粘绦蛑兴械拇a執(zhí)行完全?答案是肯定的。參考圖4,我們對整個中斷服務程序進行了統(tǒng)計,它所要執(zhí)行的指令數(shù)在200~300之間變化,時鐘間隔設(shè)置為1ms,選用12MHz晶振,執(zhí)行這些指令需要耗時約500~600μs<1ms,因此,中斷處理完全可以在一個計時器周期內(nèi)執(zhí)行完畢。 H^VNw1.   
6`c5\G+  
  BR*'SF\T  
3.4 舞蹈編排 m{ wk0  
    在舞蹈編排中,我們面向的是動作,因此,必須關(guān)心三要素:快慢、方向和幅度。在程序中,舞步信息數(shù)組格式如下: KT 4h3D`,  
@5["L  
    每組數(shù)據(jù)含有8個字節(jié),分別代表8個電機的歸一化速度num,這點在3.1節(jié)中已經(jīng)做了詳細分析。程序每200ms讀一次數(shù)據(jù),換句話說,每組數(shù)據(jù)的有效期只有200ms。我們分析表2一組數(shù)據(jù)代表的含義。 >3C4S  
  |;(95  
  7R4t%^F  
(1)組數(shù)為25,這隱含了動作的時間信息。因為每組數(shù)據(jù)的有效期為200ms,所以,25組數(shù)據(jù)的執(zhí)行時間為:200ms×25=5000ms ]+"25V'L  
(2)左腳和右腳(輪式)的歸一化速度相等,方向相反。根據(jù)公式(1)可以知道 a-cLy*W,~  
        V=0.5×V0 Daw;6f:  
所以,機器人以0.5V0的速度原地轉(zhuǎn)圈5000ms。 r_x|2 A oO  
(3)其它關(guān)節(jié)的歸一化速度num=0,說明其它關(guān)節(jié)均無動作。 Qm"&=<  
3.5 可視化輔助程序簡介 [$Dzf<0  
    我們發(fā)現(xiàn)一個簡單的動作競需要5組數(shù)據(jù),5分鐘的舞蹈需要組數(shù)據(jù)(需占用1.5K存儲空間,AT89C52足夠)。如果人工填寫這些數(shù)據(jù),將十分困難。因此在實際的運用中,我們用C+Builder編寫了機器人模擬程序,采用圖形界面,預一化速度和時間信息,寫入data.h,只要將其作為頭文件,電機驅(qū)動程序?qū)⒆詣幼x取。 ir{li?kV  
4 電路和程序特點總結(jié) rW P -Rm  
(1)一塊單片機控制多個步進電機,總線分時復用。  kS7`g A  
(2)程序基于中斷服務,電機工作穩(wěn)定可靠。  &Hi;>  
(3)提出歸一化速度,實現(xiàn)了速度V大范圍可變。 *=2sXH1j  
(4)數(shù)據(jù)更新每200ms一次,可以輕松控制各個電機實時加速、減速、爆發(fā),從而使舞蹈更人性化、感情化。這也正是我們允許數(shù)據(jù)量大的原因。 Ah?,9r=U  
(5)輔助程序?qū)崿F(xiàn)編程可視化。 {^T_m)|n  
文末是中國科大首屆機器人舞蹈比賽中用到的程序?qū)嵗? /q^\g4J  
=d*5TyAcu  
%w3Y!7+  
shrc007 2007-07-14 21:50
雖然還看得不是很明白  也要支持
wtdzhangxi 2007-08-03 11:59
很好的帖子 [s:4]
dmshen 2007-11-28 13:37
機器人步進電機驅(qū)動電路與程序設(shè)計0 0
eric1003 2007-12-24 14:50
謝謝6172007熱情的分享!!!
riverma 2008-01-05 12:25
很好,學習謝謝6172007熱情的分享!!!
高爾登科技 2008-05-03 16:00
很好,學習謝謝6172007熱情的分享!!!
查看本帖完整版本: [-- 機器人步進電機驅(qū)動電路與程序設(shè)計 --] [-- top --]

Copyright © 2005-2025 光行天下 蜀ICP備06003254號-1 網(wǎng)站統(tǒng)計

霍城县| 泗洪县| 赫章县| 阿瓦提县| 清流县| 正安县| 德州市| 嵩明县| 故城县| 建湖县| 蓝山县| 昌宁县| 大名县| 奈曼旗| 新昌县| 高碑店市| 沿河| 烟台市| 南京市| 二连浩特市| 惠东县| 城市| 施秉县| 嘉黎县| 清新县| 浑源县| 岳阳县| 大埔区| 华池县| 锦州市| 东丽区| 玉田县| 马鞍山市| 德昌县| 古交市| 保定市| 霸州市| 无锡市| 曲阜市| 湟中县| 桑植县|