预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

步進馬達正反轉控制 組員:邱維恩指導老師:陳清華 日四技電機四B 摘要 本專題運用了雙極性驅動的步進馬達和SN8P2708AP來製作電路如圖2,並用表1的程式來達到步進馬達的控制 關鍵詞:雙極性驅動的步進馬達,精密速度控制,結論 1雙極性驅動的步進馬達 步進馬達的驅動方式二種:單極性驅動(unipolardrive),另一為雙極性驅動(bipolardrive)。單極性驅動的控制電路比較簡單,成本低,但是因為雙線繞組所以體積比較大。雙極性驅動的優缺點剛好和單極性驅動相反,具有結構簡單,成本低的優點,但是控制電路比較複雜。雙極性驅動就是利用電子切換開關使得每組線圈的電流方向可正可負,也因此稱作雙極性驅動。圖1為雙極性驅動步進馬達的內部繞線圖。 圖1雙極性驅動步進馬達的內部繞線圖。 圖2的電路為使用松翰科技公司的SN8P2708A微控器來對雙極性驅動步進馬達的作速度控制。由於雙極性驅動需要在步進馬達的電源側和接地側都接電晶體開關,所以用到二顆ULN2003A,一顆負責電源側的電晶體開關,另一顆負責接地側者。注意,圖2中的電路在A相與A相間和B相與B相間都加了一個反相器,所以僅能使用2相激磁法於此電路;如果要使用其他激磁法,需將這二個反相器移去。電路中使用可變電阻旋鈕作速度輸入,然後微控器依據輸入的速度調整步進馬達的速度。速度命令的輸入需要類比轉數位器ADC,SN8P2708A微控器具有一個12位元解析度的八通道ADC,即腳位AIN0~AIN7。關於類比轉數位器ADC的使用技巧,請參閱作者另一篇文章:電動滑板車速度控制器(e科技雜誌,第28期,pp.18-21,2003)。以下則直接說明如何將類比轉數位的值換算成步進馬達的步進週期。速度單位訂為每秒步數pps(pulsespersecond)。 圖2應用於雙極性驅動步進馬達之電路圖。 最高速度設計為1000pps,即每毫秒一步。而最低速可以為1pps,即每秒一步。可變電阻旋鈕輸入的電壓經由ADC轉成12位元的數值,而以中間值為界分為正反轉的速度。基於友善操作考量,速度為0的區域和最低速度的區域需要比較大的範圍,例如可以設中間值的±80(即1968~2127)為速度0pps的區域﹔而正反轉速度為1pps的區域也各佔80個數值,即2128~2207為速度1pps的正轉區域,1888~1967為速度1pps的反轉區域。如果令其他速度各佔二個數值,則可以用下列公式求得速度s(見圖3): 其中v為ADC輸入的數值,而vR1和vF1分別為反轉的最低速區域的最小值減1 和正轉的最低速區域的最大值加1。為方便起見,令R0v和F0v分別為速度0pps的區域的左右邊界,即若()R0,F0v∈vv,則令s=0pps。因此v∈(vR1,vR0]或v∈[vF0,vF1),則令s=1pps。以前述之例,則R0v=1968–1,F0v=2127+1,vR1=1888–1,和vF1=2207+1。為了簡化運算,將v的值以2048分成二區:[0,2047],[2048,4095]。把屬於第二區的值減去2048(即v*=v–2048),而用2047減去第一區的值(即v*=2047–v),則這二區的v*值將都落在[0,2047]內。再令Fmv0=F0v–2048,Fmv1=F1v–2048,則上面的求速度公式可以改為 圖3電壓輸入與步進馬達速度之關係圖。 因此步進週期為t=1/s秒。由於八位元微控器處理除法運算很複雜,所以常用建表來取代除法,或是用比較簡單的速度換算方法,但是速度與ADC值就成為非線性關係,例如改用下式求步進週期t(單位ms): 注意,利用此式求得的速度1/t不等於前面公式的s﹔例如t=1,2,3的步進速度分為1/t=1000,500,333pps。因此不可能將速度控制為900pps等等。假設外部振盪器的頻率為3.58MHz,而且4個振盪器時脈為一個CPU週期。為了能控制到每毫秒一步,選用計時器TC0,將預除值設為4,自動載入的初始值為32,如此則計時器TC0的溢位時間為1.0011173ms。如果以計時器TC0溢位時間為單位,步進馬達的步進週期可以近似為計時器TC0溢位t次的時間。建立副程式UpdateSpeed依據上面的公式來計算t,並將之存於二個位元組長的變數DelayTime_V中。在計算過程中會先求出s,並將它存於Buffer的陣列中,以供七段顯示器來顯示速度,最慢速的值為1,最快的為1000。副程式UpdateSpeed的步驟如下: 1.執行類比轉數位的副程式,取得數位值後就暫時存於(Buffer[1]: Buffer[0])中。 2.判斷該數位值是否大於或等於2048,亦即位元11的值是否為1(Buffer[1]的位元3),若是則為正轉速,否則為反轉速。在反轉情況下,則令Ste