资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
步進馬達正反轉控制組員:邱維恩 指導老師:陳清華日四技電機四B摘要本專題運用了雙極性驅動的步進馬達和SN8P2708AP來製作電路如圖2,並用表1的程式來達到步進馬達的控制關鍵詞: 雙極性驅動的步進馬達,精密速度控制,結論1 雙極性驅動的步進馬達步進馬達的驅動方式二種:單極性驅動(unipolar drive),另一為雙極性驅動(bipolar drive)。單極性驅動的控制電路比較簡單,成本低,但是因為雙線繞組所以體積比較大。雙極性驅動的優缺點剛好和單極性驅動相反,具有結構簡單,成本低的優點,但是控制電路比較複雜。雙極性驅動就是利用電子切換開關使得每組線圈的電流方向可正可負,也因此稱作雙極性驅動。圖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 (pulses per second)。圖2 應用於雙極性驅動步進馬達之電路圖。最高速度設計為1000 pps,即每毫秒一步。而最低速可以為1 pps,即每秒一步。可變電阻旋鈕輸入的電壓經由ADC 轉成12 位元的數值,而以中間值為界分為正反轉的速度。基於友善操作考量,速度為0 的區域和最低速度的區域需要比較大的範圍,例如可以設中間值的80(即19682127)為速度0 pps 的區域而正反轉速度為1 pps 的區域也各佔80 個數值,即21282207 為速度1 pps 的正轉區域,18881967 為速度1 pps 的反轉區域。如果令其他速度各佔二個數值,則可以用下列公式求得速度s(見圖3):其中v 為ADC輸入的數值,而vR1和vF1分別為反轉的最低速區域的最小值減1和正轉的最低速區域的最大值加1。為方便起見,令R0 v 和F 0 v 分別為速度0 pps的區域的左右邊界,即若( ) R0, F 0 v v v ,則令s=0 pps。因此v(vR1,vR0 或v vF0,vF1 ),則令s=1 pps。以前述之例,則R0 v =19681, F 0 v =2127+1,vR1=18881,和vF1 =2207+1。為了簡化運算,將v 的值以2048 分成二區:0, 2047,2048, 4095。把屬於第二區的值減去2048(即v*=v2048),而用2047 減去第一區的值(即v*=2047v),則這二區的v*值將都落在0, 2047內。再令F m v 0 = F 0 v 2048,F m v 1 = F1 v 2048,則上面的求速度公式可以改為圖3 電壓輸入與步進馬達速度之關係圖。因此步進週期為t=1/s 秒。由於八位元微控器處理除法運算很複雜,所以常用建表來取代除法,或是用比較簡單的速度換算方法,但是速度與ADC 值就成為非線性關係,例如改用下式求步進週期t(單位ms):注意,利用此式求得的速度1/t 不等於前面公式的s例如t=1, 2, 3 的步進速度分為1/t=1000, 500, 333 pps。因此不可能將速度控制為900 pps 等等。假設外部振盪器的頻率為3.58 MHz,而且4 個振盪器時脈為一個CPU 週期。為了能控制到每毫秒一步,選用計時器TC0,將預除值設為4,自動載入的初始值為32,如此則計時器TC0 的溢位時間為1.0011173 ms。如果以計時器TC0溢位時間為單位,步進馬達的步進週期可以近似為計時器TC0 溢位t 次的時間。建立副程式UpdateSpeed 依據上面的公式來計算t,並將之存於二個位元組長的變數DelayTime_V 中。在計算過程中會先求出s,並將它存於Buffer 的陣列中,以供七段顯示器來顯示速度,最慢速的值為1,最快的為1000。副程式UpdateSpeed 的步驟如下:1. 執行類比轉數位的副程式,取得數位值後就暫時存於(Buffer1 :Buffer0)中。2. 判斷該數位值是否大於或等於2048,亦即位元11 的值是否為1(Buffer1的位元3),若是則為正轉速,否則為反轉速。在反轉情況下,則令StepMode 的位元0 為1,和作v*=2047-v 的運算;而在正轉情況下,令StepMode 的位元0 為0,和作v*=v-2048 的運算。3. 判斷速度為零( * 0, ) F 0m v v ),1 pps( * ) F 0m, F1m v v v ),或其他速度( F m v v 1 * )。這裡可以假設F m v 0 和F m v 1 皆小於256。如果v*大於或等於256,則直接跳到Other_speed;否則再使用區域劃分法來分出v*所屬的區域。如果為零速,則跳到Speed_0pps;速度為1 pps 就跳到Speed_1pps。4. 對於速度大於1 pps( F m v v 1 * ),需要將旗標變數StepMode 的位元1設為0,接著先求出s=(v*-47)/2,再求出t=1001-s 並存於變數DelayTime_V 中。而s 的值暫時存於陣列Buffer 中,然後呼叫一個副程式(例如Speed_BCD)將Buffer 中的值轉成BCD 形式,再分成四個位元組以便四顆七段顯示器來顯示。然後結束此副程式。5. 針對零速度的情況,將旗標變數StepMode 的位元1 設為1,並把Buffer0和Buffer1設為0,表示s=0。同步驟4,也呼叫副程式Speed_BCD,然後結束此副程式。6. 針對速度為1 pps 的情況,將旗標變數StepMode 的位元1 設為0,並令s=1 和t=1000。同步驟4,也呼叫副程式Speed_BCD,然後結束此副程式。2 精密速度控制精密速度控制需要使用正確的步進週期t=1/s,其線性關係式為,其中s 的值為1 pps 1000 pps,所以t 的值為1000 ms, 500 ms, 333.333 ms, ,1.002 ms, 1.001 ms, 1 ms。假設計時器TC0 的數值每增加1 的單位時間為1 s(例如使用8 MHz 的振盪器,而且TC0 計時器的預除值設為2),而產生計時中斷的中斷週期則為0.256 ms。如果以1,000,000 除以s 所得的商,可以用三個位元組表示為(Q2:Q1:Q0),再以中斷週期為時間單位,則t 的值之整數部份正好為(Q2:Q1),因為t = (Q2:Q1) 256 + Q0 s。更進一步,可以推導得計時器TC0 的自動下載的初始值為(256 Q0)。也就是總共(Q2:Q1)次正常計時器中斷(正常表示計時器的初始值為0)後,再加一次初始值為(256 Q0)的計時器中斷,正好為步進週期t。表1 為1,000,000(亦即0F4240h)除以D(範圍為1 1000,或1h 03E8h)的二進位除法運算的巨集指令程式DIVx。如果s 的值代入D,則利用巨集指令DIVx 所得的(Q2:Q1:Q0),就可以用來代表步進週期t。得到的(Q2:Q1:Q0)中(Q2:Q1)取代副程式UpdateSpeed 的步驟4 的變數DelayTime_V,另外求出(256 Q0)作為最後一次計時的初始值,則可以得到精密速度控制的效果。巨集指令程式DIVx 的程式解說如下:1. 以邏輯OR 來判斷除數D 是否為0;若為0 則結束運算,並設INDEX=FFh來顯示錯誤,。否則進行步驟2。2. 令被除數M = 0F4240h 和商Q = 0。注意,被除數為固定值,且不為0;另外已知除數 D D,則令Q2.j = 1,並且執行M = M D,其中M 和D 為旋轉過後的值。否則,Q2.j = 0。(m) 相似於步驟5(h),只是將Q2 換成Q1。(L) 相似於步驟5(h),只是將Q2 換成Q0。6. (h) 將被除數M 的位元向左旋轉一個位元。另外將INDEX 的位元向右旋轉一個位元,表示j = j 1。如果結果j = 0,則重令INDEX.7=1(表示j = 7)後跳躍到步驟5(m)。否則回到步驟5(h)。(m) 相似於步驟6(h),只是當結果j = 0 時,則重令INDEX.7=1 後跳躍到步驟5(L)。否則回到步驟5(m)。(L) 將INDEX 的位元向右旋轉一個位元。如果此時j = 0,則結束運算。否則,再將被除數M 的位元向左旋轉一個位元,然後回到步驟5(L)。3 結論本文所述的方法已經使用松翰的通用實體模擬器ICE 驗證過。總結而言,本文採用固定被除數的除法運算,來求得步進馬達的步進週期,因為步進週期的精確,使得控制的速度也精確了。表1 固定被除數為0F4240h 之二進位除法
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号