8051 微控制器與步進電機的介面
在本節中,我們將瞭解如何將步進電機連線到英特爾8051 微控制器。在討論介面技術之前,我們將瞭解什麼是步進電機以及它們的工作原理。
步進電機
步進電機用於將電脈衝轉換為機械運動。在某些磁碟驅動器、點陣印表機和其他一些不同的地方,都使用了步進電機。使用步進電機的主要優勢在於位置控制。步進電機通常具有永磁轉子,並被定子包圍。
普通電機軸可以自由旋轉,但步進電機軸以固定的可重複增量旋轉。
步進電機的一些引數:
步進角 - 步進角是指當一個脈衝作為定子的輸入時,轉子旋轉的角度。此引數用於確定步進電機的位置。
每轉步數 - 這是完整旋轉所需的步進角數。因此,公式為 360° / 步進角。
每秒步數 - 此引數用於測量每秒覆蓋的步數。
RPM - RPM 是每分鐘轉數。它測量旋轉頻率。透過此引數,我們可以測量一分鐘內的旋轉次數。
RPM、每轉步數和每秒步數之間的關係如下所示:
Steps per Second = rpm x steps per revolution / 60
8051 微控制器與步進電機的介面
我們使用 8051 的 P0 埠連線步進電機。這裡使用了 ULN2003。這基本上是一個高電壓、大電流達林頓電晶體陣列。每個 ULN2003 都有七個 NPN 達林頓對。它可以提供高電壓輸出,並帶有共陰極鉗位二極體,用於切換感應負載。
單極性步進電機以三種模式工作。
波驅動模式 - 在此模式下,一次只激勵一個線圈。因此,所有四個線圈依次激勵。此模式產生的轉矩小於全步驅動模式。
下表顯示了不同繞組中輸入狀態的順序。
步數 | 繞組 A | 繞組 B | 繞組 C | 繞組 D |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
全步驅動模式 - 在此模式下,同時激勵兩個線圈。此模式產生更大的轉矩。這裡的功耗也較高。
下表顯示了不同繞組中輸入狀態的順序。
步數 | 繞組 A | 繞組 B | 繞組 C | 繞組 D |
---|---|---|---|---|
1 | 1 | 1 | 0 | 0 |
2 | 0 | 1 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 1 | 0 | 0 | 1 |
半步驅動模式 - 在此模式下,交替激勵一個和兩個線圈。首先激勵一個線圈,然後激勵兩個線圈。這基本上是波和全步驅動模式的組合。它增加了電機的旋轉角度。
下表顯示了不同繞組中輸入狀態的順序。
步數 | 繞組 A | 繞組 B | 繞組 C | 繞組 D |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
4 | 0 | 1 | 1 | 0 |
5 | 0 | 0 | 1 | 0 |
6 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 0 | 1 |
8 | 1 | 0 | 0 | 1 |
電路圖如下:我們使用的是全步驅動模式。
示例
#include<reg51.h> sbit LED_pin = P2^0; //set the LED pin as P2.0 void delay(int ms){ unsigned int i, j; for(i = 0; i<ms; i++){ // Outer for loop for given milliseconds value for(j = 0; j< 1275; j++){ //execute in each milliseconds; } } } void main(){ int rot_angle[] = {0x0C,0x06,0x03,0x09}; int i; while(1){ //infinite loop for LED blinking for(i = 0; i<4; i++){ P0 = rot_angle[i]; delay(100); } } }
廣告