步進電機28BYJ-48介紹和驅動及編程

2020-11-22 電子產品世界

28BYJ-48步進電機

本文引用地址:

http://www.eepw.com.cn/article/201611/323037.htm

步進電機是一種將電脈衝轉化為角位移的執行機構。通俗一點講:當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。您可以通過控制脈衝個來控制角位移量,從而達到準確定位的目的;同時您可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。

步進電機28BYJ48型四相八拍電機,電壓為DC5V—DC12V。當對步進電機施加一系列連續不斷的控制脈衝時,它可以連續不斷地轉動。每一個脈衝信號對應步進電機的某一相或兩相繞組的通電狀態改變一次,也就對應轉子轉過一定的角度(一個步距角)。當通電狀態的改變完成一個循環時,轉子轉過一個齒距。四相步進電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A。。。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。。。),八拍(A-AB-B-BC-C-CD-D-DA-A。。。)

紅線接電源5V,橙色電線接P1.3口,黃色電線接P1.2口,粉色電線接P1.1口,藍色接P1.0口。

由於單片機接口信號不夠大需要通過ULN2003放大再連接到相應的電機接口,如下:


十六制(P1口)
10000x08
11000x0c
01000x04
01100x06
00100x02
00110x03
00010x01
10010x09

順序剛好相反

所以可以定義旋轉相序
uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆時鐘旋轉相序表
uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正時鐘旋轉相序表


C語言代碼:

#include
#include
#define uchar unsigned char
#define uint unsigned int

uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆時鐘旋轉相序表
uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正時鐘旋轉相序表


sbit K1=P3^2; //反轉按鍵
sbit K2=P3^3; //正轉按鍵
sbit K3=P3^4; //停止按鍵
sbit FMQ=P3^6; // 蜂鳴器


void delaynms(uint aa)
{
uchar bb;
while(aa--)
{
for(bb=0;bb<115;bb++) //1ms基準延時程序
{
;
}
}

}

void delay500us(void)
{
int j;
for(j=0;j<57;j++)
{
;
}
}

void beep(void)
{
uchar t;
for(t=0;t<100;t++)
{
delay500us();
FMQ=!FMQ; //產生脈衝
}
FMQ=1; //關閉蜂鳴器
}


void motor_ccw(void)
{
uchar i,j;
for(j=0;j<8;j++) //電機旋轉一周,不是外面所看到的一周,是裡面的傳動輪轉了一周
{
if(K3==0)
{
break; //如果K3按下,退出此循環
}
for(i=0;i<8;i++) //旋轉45度
{
P1=CCW[i];
delaynms(10); //調節轉速
}
}
}


void motor_cw(void)
{
uchar i,j;
for(j=0;j<8;j++)
{
if(K3==0)
{
break; //如果K3按下,退出此循環
}
for(i=0;i<8;i++) //旋轉45度
{
P1=CW[i];
delaynms(2); //調節轉速
}
}
}



void main(void)
{
uchar r;
uchar N=64; //因為步進電機是減速步進電機,減速比的1/64
//所以N=64時,步進電機主軸轉一圈
while(1)
{
if(K1==0)
{
beep();
for(r=0;r{
motor_ccw(); //電機逆轉
if(K3==0)
{
beep();
break;
}
}
}
else if(K2==0)
{
beep();
for(r=0;r{
motor_cw(); //電機反轉
if(K3==0)
{
beep();
break;
}
}
}
else
P1=0xf0; //電機停止
}


}

附:步進電機小知識(轉)

1.什麼是步進電機?

步進電機是一種將電脈衝轉化為角位移的執行機構。通俗一點講:當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。您可以通過控制脈衝個來控制角位移量,從而達到準確定位的目的;同時您可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。

2.步進電機分哪幾種?

步進電機分三種:永磁式(PM),反應式(VR)和混合式(HB)
永磁式步進一般為兩相,轉矩和體積較小,步進角一般為7.5度 或15度;
反應式步進一般為三相,可實現大轉矩輸出,步進角一般為1.5度,但噪聲和振
動都很大。在歐美等發達國家80年代已被淘汰;
混合式步進是指混合了永磁式和反應式的優點。它又分為兩相和五相:兩相步進
角一般為1.8度而五相步進角一般為 0.72度。這種步進電機的應用最為廣泛。

3.什麼是保持轉矩(HOLDING TORQUE)?

保持轉矩(HOLDING TORQUE)是指步進電機通電但沒有轉動時,定子鎖住轉
子的力矩。它是步進電機最重要的參數之一,通常步進電機在低速時的力矩接近
保持轉矩。由於步進電機的輸出力矩隨速度的增大而不斷衰減,輸出功率也隨速
度的增大而變化,所以保持轉矩就成為了衡量步進電機最重要的參數之一。比如,
當人們說2N.m的步進電機,在沒有特殊說明的情況下是指保持轉矩為2N.m的步
進電機。

4.什麼是DETENT TORQUE?

DETENT TORQUE 是指步進電機沒有通電的情況下,定子鎖住轉子的力矩。
DETENT TORQUE 在國內沒有統一的翻譯方式,容易使大家產生誤解;由於
反應式步進電機的轉子不是永磁材料,所以它沒有DETENT TORQUE。

5.步進電機精度為多少?是否累積?

一般步進電機的精度為步進角的3-5%,且不累積。

6.步進電機的外表溫度允許達到多少?

步進電機溫度過高首先會使電機的磁性材料退磁,從而導致力矩下降乃至於失步,
因此電機外表允許的最高溫度應取決於不同電機磁性材料的退磁點;
一般來講,磁性材料的退磁點都在攝氏130度以上,有的甚至高達攝氏200度以
上,所以步進電機外表溫度在攝氏80-90度完全正常。

7.為什麼步進電機的力矩會隨轉速的升高而下降?

當步進電機轉動時,電機各相繞組的電感將形成一個反向電動勢;頻率越高,反
向電動勢越大。在它的作用下,電機隨頻率(或速度)的增大而相電流減小,從
而導致力矩下降。

8.為什麼步進電機低速時可以正常運轉,但若高於一定速度就無法啟動,並伴有嘯叫聲?

步進電機有一個技術參數:空載啟動頻率,即步進電機在空載情況下能夠正常啟
動的脈衝頻率,如果脈衝頻率高於該值,電機不能正常啟動,可能發生丟步或堵
轉。在有負載的情況下,啟動頻率應更低。如果要使電機達到高速轉動,脈衝頻
率應該有加速過程,即啟動頻率較低,然後按一定加速度升到所希望的高頻(電
機轉速從低速升到高速)。

9.如何克服兩相混合式步進電機在低速運轉時的振動和噪聲?

步進電機低速轉動時振動和噪聲大是其固有的缺點,一般可採用以下方案來克服:

A.如步進電機正好工作在共振區,可通過改變減速比等機械傳動避開共振區;
B.採用帶有細分功能的驅動器,這是最常用的、最簡便的方法;
C.換成步距角更小的步進電機,如三相或五相步進電機;
D.換成交流伺服電機,幾乎可以完全克服震動和噪聲,但成本較高;
E.在電機軸上加磁性阻尼器,市場上已有這種產品,但機械結構改變較大。

10.細分驅動器的細分數是否能代表精度?

步進電機的細分技術實質上是一種電子阻尼技術(請參考有關文獻),其主要目
的是減弱或消除步進電機的低頻振動,提高電機的運轉精度只是細分技術的一個
附帶功能。比如對於步進角為1.8°的兩相混合式步進電機,如果細分驅動器的
細分數設置為4,那麼電機的運轉解析度為每個脈衝0.45°,電機的精度能否達
到或接近0.45°,還取決於細分驅動器的細分電流控制精度等其它因素。不同廠
家的細分驅動器精度可能差別很大;細分數越大精度越難控制。

11.四相混合式步進電機與驅動器的串聯接法和並聯接法有什麼區別?

四相混合式步進電機一般由兩相驅動器來驅動,因此,連接時可以採用串聯接法
或並聯接法將四相電機接成兩相使用。串聯接法一般在電機轉速較的場合使用,
此時需要的驅動器輸出電流為電機相電流的0.7倍,因而電機發熱小;並聯接法
一般在電機轉速較高的場合使用(又稱高速接法),所需要的驅動器輸出電流為
電機相電流的1.4倍,因而電機發熱較大。

12.如何確定步進電機驅動器的直流供電電源?

A.電壓的確定

混合式步進電機驅動器的供電電源電壓一般是一個較寬的範圍(比如IM483
的供電電壓為12~48VDC),電源電壓通常根據電機的工作轉速和響應要
求來選擇。如果電機工作轉速較高或響應要求較快,那麼電壓取值也高,但
注意電源電壓的紋波不能超過驅動器的最大輸入電壓,否則可能損壞驅動器。

B.電流的確定

供電電源電流一般根據驅動器的輸出相電流I來確定。如果採用線性電源,
電源電流一般可取I的1.1~1.3倍;如果採用開關電源,電源電流一般可
取I 的1.5~2.0倍。

13.混合式步進電機驅動器的脫機信號FREE一般在什麼情況下使用?

當脫機信號FREE為低電平時,驅動器輸出到電機的電流被切斷,電機轉子處於自
由狀態(脫機狀態)。在有些自動化設備中,如果在驅動器不斷電的情況下要求
直接轉動電機軸(手動方式),就可以將FREE信號置低,使電機脫機,進行手動
操作或調節。手動完成後,再將FREE信號置高,以繼續自動控制。

14.如果用簡單的方法調整兩相步進電機通電後的轉動方向?

只需將電機與驅動器接線的A+和A-(或者B+和B-)對調即可。

相關焦點

  • 步進電機 28BYJ-48介紹和驅動及編程
    本文引用地址:http://www.eepw.com.cn/article/201611/322494.htm步進電機是一種將電脈衝轉化為角位移的執行機構。通俗一點講:當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。您可以通過控制脈衝個來控制角位移量,從而達到準確定位的目的;同時您可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。步進電機28BYJ48型四相八拍電機,電壓為DC5V—DC12V。
  • 實用的 28BYJ-48 步進電機控制程序
    中斷函數中要處理按鍵掃描和電機驅動兩件事情,而為了避免中斷函數過於複雜,我們就又分出了按鍵掃描和電機驅動兩個函數(這也同樣符合上述2的編程原則),而中斷函數的邏輯就變得簡潔而清晰了。> 推薦閱讀 ULN2003驅動28BYJ-48步進電機STM32F103寄存器版 電機1先逆時針旋轉90度,再順時針旋轉90度。
  • 28BYJ-48步進電機加ULN2003驅動的51單片機的代碼
    #include #define uint unsigned int#define ucher unsigned char unsigned char code ZZ[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//28BYJ
  • 28BYJ48型步進電機的控制方法
    前不久弄到一隻28BYJ48型步進電機,沒有資料,從網上查找,搜到一些資料,但按照網上介紹的程序實驗,都沒有成功。本文引用地址:http://www.eepw.com.cn/article/201611/320271.htm  步進電機是一種將電脈衝轉化為角位移的執行設備。通俗一點講:當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度(即步進角)。
  • uln2003驅動步進電機,ULN2003驅動步進電機的PROTEUS程序
    打開APP uln2003驅動步進電機,ULN2003驅動步進電機的PROTEUS程序 發表於 2017-10-23 15:15:20
  • 舞蹈機器人步進電機驅動電路和程序設計
    本文以四相制為例介紹其內部結構。圖1為四相五線制步進電機內部結構示意圖。我們利用了單片機的I/O埠,通過74373鎖 存,由74LS244驅動,ULN2003對信號進行放大。8個電機共用4bit I/O埠作為數據總線,向電機傳送步進脈衝。每個電機分配1bit的I/O埠用作74373鎖存信號,鎖存步進電機四相脈衝,經ULN2003放大到 12V驅動電機運轉。
  • 步進電機原理及內部結構
    混合同步步進電機:它們是可變磁阻和永磁步進電機的組合。除此之外,我們還可以根據定子繞組的類型將步進電機分類為單極和雙極。雙極步進電機:此類電機上的定子線圈不具有公共電線。這種步進電機的驅動是不同的和複雜的,並且沒有微控制器也不能容易地設計驅動電路。
  • 51單片機驅動步進電機電路及程序
    在這裡介紹一下用51單片機驅動步進電機的方法。本文引用地址:http://www.eepw.com.cn/article/173250.htm  這款步進電機的驅動電壓12V,步進角為 7.5度 .
  • 51單片機驅動步進電機__終極(完整版)
    在這裡介紹一下用51單片機驅動步進電機的方法。 這款步進電機的驅動電壓12V,步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈衝完成!!! 該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:黑色。
  • 51單片機ULN2003驅動步進電機的典型應用電路圖解
    打開APP 51單片機ULN2003驅動步進電機的典型應用電路圖解 發表於 2017-10-24 10:19:31   ULN2003是高耐壓、大電流複合電晶體陣列,由七個矽NPN 複合電晶體組成,每一對達林頓都串聯一個2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標準邏輯緩衝器來處理的數據。
  • 步進電機控制器原理_步進電機控制器編程實例
    步進電機控制器原理   步進電機控制器是一種能夠發出均勻脈衝信號的電子產品,它發出的信號進入步進電機驅動器後,會由驅動器轉換成步進電機所需要的強電流信號,帶動步進電機運轉。步進電機控制器能夠準確的控制步進電機轉過每一個角度。
  • 步進電機驅動晶片有哪些_六款步進電機驅動晶片
    步進電機一般追求定位精度和力矩輸出,效率比較低,電流一般比較大,且諧波成分高,電流交變的頻率也隨轉速而變化,因而步進電機普遍存在發熱情況,且情況比一般交流電機嚴重。   (1)反應式步進電機:   也叫感應式、磁滯式或磁阻式步進電機。其定子和轉子均由軟磁材料製成,定子上均勻分布的大磁極上裝有多相勵磁繞組,定、轉子周邊均勻分布小齒和 槽,通電後利用磁導的變化產生轉矩。
  • 關於步進電機的選用與設計介紹
    步進電機的選用與設計 步進電機具有轉矩大、慣性小、響應頻率高等優點,具有瞬間起動與急速停止的優越特性。與其他驅動元件相比,有明顯優點:通常不需要反饋就能對位移或速度進行精確控制;輸出的轉角或位移精度高,誤差不會積累;控制系統結構簡單,與數字設備兼容,價格便宜。它每轉一周有固定步數,能夠精確控制步進和接收數字量。
  • ULN2003如何驅動5V步進電機
    步進電機是將電脈衝信號轉變為角位移或線位移的開環控制電機,是現代數字程序控制系統中的主要執行元件,應用極為廣泛。。在非超載的情況下,電機的轉速、停止的位置只取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響,當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為「步距角」,它的旋轉是以固定的角度一步一步運行的。
  • 步進電機驅動電路解析,步進電機驅動電路原理圖、電路性能比較及...
    步進電機是將電脈衝信號轉變為角位移或線位移的開環控制電機,是現代數字程序控制系統中的主要執行元件,應用極為廣泛。在非超載的情況下,電機的轉速、停止的位置只取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響,當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為「步距角」,它的旋轉是以固定的角度一步一步運行的。
  • 步進電機主要在哪些方面應用(四款步進電機電路圖)
    一圈360度,需要48個脈衝完成,(上圖用6引腳接線端子代替步進電機)。在該電路中,有單片機輸出的A相驅動信號(PA)、B相驅動信號(PB)、C相驅動信號(PC)和鎖相驅動信號(L),均為低電平有效。驅動步進電機的高壓電源採用AC70V整流濾波後供給,鎖相電源採用AC4.5V半波整流後供給。另外,電路還需要的+12V和+5V直流電壓採用對AC10V和AC5V經過二極體整流濾波後獲得,數字電路所需要的電源通過板間接口J401由主機提供。
  • 圖解: 步進電機原理與驅動方式
    步進電機在使用時不需要額外的反饋,這是因為除非失步,否則步進電機每次轉動時的角度已知的,由於它的角度位置已知就能精確控制電機運動的位置。一般我們會用Arduino驅動的小型步進電機有以下兩種。步進電機內部實際上產生了一個可以旋轉的磁場,如圖所示,當旋轉磁場依次切換時,轉子(rotor)就會隨之轉動相應的角度。
  • 一文看懂arduino驅動uln2003操作步進電機的方法
    打開APP 一文看懂arduino驅動uln2003操作步進電機的方法 發表於 2018-05-30 09:34:32   arduino驅動uln2003操作步進電機的方法   1、網上買的步進電機,很多接線順序都不對。
  • 以單片機為核心的步進電機控制系統驅動設計
    傳統的細分驅動電路由細分環行分配器、放大器和合成器等部分組成。這種電路應用複雜,靈活性差。本文利用A3967SLB作為步進電機微控晶片,簡化了步進電機的控制實現。由於單片機資源沒有PC豐富,人機界面也沒有PC友好,因此,本文採用了主從式結構,即PC用於管理,單片機用於執行。
  • l298n驅動電機的工作原理_L298N驅動步進電機程序
    打開APP l298n驅動電機的工作原理_L298N驅動步進電機程序 發表於 2018-02-26 15:32:32 電機的定子上有六 個均布的磁極,其夾角是60º。各磁極上套有線圈,按圖1連成A、B、C三相繞組。轉子上均布40個小齒。所以每個齒的齒距為θE=360º/40=9º,而定子每個磁極的極弧上也有5個小齒,且定子和轉子的齒距和齒寬均相同。由於定子和轉子的小齒數目分別是30和40,其比值是一分數,這就產生了所謂的齒錯位的情況。