單片機控制步進電機正反轉

2020-12-06 電子產品世界
步進電機模塊:

本文引用地址:http://www.eepw.com.cn/article/201611/315924.htm

原理圖:

兩相六線步進電機,步進角7.5度,額定工作電壓12V,完全可以使用5V做實驗。

以下是引用 gguoqing 在2006-6-11 15:10:02的發言:

使用偉納定做的20CM杜邦頭實驗連接線,可以很方便的將ME300與步進電機模塊連接起來。

http://www.willar.com/shop_view.asp?id=47

在ME300B上使用時,可從J7上引出5V電源到步進電機模塊J1上。

將J1(ICE)上的P1.0-P1.3用杜邦頭實驗連接線連接到步進電機模塊J2上。

產品詳情:

http://www.willar.com/shop_view.asp?id=48。

以下是本站管理員gguoqing專門編寫的演示程序。

C語言範例:

/*******************************************************************

/*

/* ME300系列單片機開發系統演示程序-步進電機鍵控正反轉實驗

/*

/* 郵箱: gguoqing@willar.com

/* 網站:http://www.willar.com;

/* 作者: gguoqing

/* 時間: 2006/05/30

/*

/*【版權】COPYRIGHT(C)偉納電子www.willar.comALL RIGHTS RESERVED

/*【聲明】此程序僅用於學習與參考,引用請註明版權和作者信息!

/*

/******************************************************************/

#include //51晶片管腳定義頭文件

#include //內部包含延時函數 _nop_();

#define uchar unsigned char

#define uintunsigned int

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};

uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

sbitK1 = P1^4; //正轉

sbitK2 = P1^5; //反轉

sbitK3 = P1^6;

sbitK4 = P1^7; //停止

sbitBEEP = P3^7; //蜂鳴器

/********************************************************/

/*

/* 延時t毫秒

/* 11.0592MHz時鐘,延時約1ms

/*

/********************************************************/

void delay(uint t)

{

uint k;

while(t--)

{

for(k=0; k<125; k++)

{ }

}

}

/**********************************************************/

void delayB(uchar x)//x*0.14MS

{

uchar i;

while(x--)

{

for (i=0; i<13; i++)

{ }

}

}

/**********************************************************/

void beep()

{

uchar i;

for (i=0;i<100;i++)

{

delayB(4);

BEEP=!BEEP; //BEEP取反

}

BEEP=1;//關閉蜂鳴器

}

/********************************************************/

/*

/*步進電機正轉

/*

/********************************************************/

voidmotor_ffw()

{

uchar i;

uintj;

for (j=0; j<12; j++)//轉1*n圈

{

if(K4==0)

{break;}//退出此循環程序

for (i=0; i<8; i++) //一個周期轉30度

{

P1 = FFW[ i ];//取數據

delay(15); //調節轉速

}

}

}

/********************************************************/

/*

/*步進電機反轉

/*

/********************************************************/

voidmotor_rev()

{

uchar i;

uintj;

for (j=0; j<12; j++) //轉1×n圈

{

if(K4==0)

{break;} //退出此循環程序

for (i=0; i<8; i++)//一個周期轉30度

{

P1 = REV[ i ];//取數據

delay(15); //調節轉速

}

}

}

/********************************************************

*

*主程序

*

*********************************************************/

main()

{

uchar r,N=5; //N 步進電機運轉圈數

while(1)

{

if(K1==0)

{

beep();

for(r=0;r

{

motor_ffw(); //電機正轉

if(K4==0)

{beep();break;}//退出此循環程序

}

}

else if(K2==0)

{

beep();

for(r=0;r

{

motor_rev(); //電機反轉

if(K4==0)

{beep();break;}//退出此循環程序

}

}

else

P1 = 0xf0;

}

}

彙編語言範例

;/*****************************************************************

;/*

;/* ME300系列單片機開發系統演示程序 - 步進電機鍵控正反轉實驗

;/*

;/*

;/* 郵箱:gguoqing@willar.com

;/* 網站:http://www.willar.com;

;/* 作者: gguoqing

;/* 時間: 2006/05/30

;/*

;/*【版權】Copyright(C)偉納電子www.willar.comAll Rights Reserved

;/*【聲明】此程序僅用於學習與參考,引用請註明版權和作者信息!

;/*

;/******************************************************************

; 步進電機步進角為 7.5度,一圈 360 度。

; 雙四拍工作方式:

; AB-BC-CD-DA (即一個脈衝,轉 7.5 度)

; 單雙八拍工作方式:

; A-AB-B-BC-C-CD-D-DA (即一個脈衝,轉 3.75 度)

; 一個取數工作周期,步進電機轉30度

; 步進電機轉一圈需要12個取數工作周期

;-------------------------------------------------------

; A組線圈對應 P1.0(桔色)

; B組線圈對應 P1.1(棕色)

; C組線圈對應 P1.2(黃色)

; D組線圈對應 P1.3(黑色)

;-------------------------------------------------------

K1BITP1.4 ;步進電機正轉

K2BITP1.5 ;步進電機反轉

K3BITP1.6

K4BITP1.7 ;步進電機停止轉動

BEEPBITP3.7

;-------------------------------------------------------

ORG 0000H

LJMP MAIN

ORG 0030H

;-------------------------------------------------------

MAIN:

MOVSP,#60H

MOVP1,#0F0H ;關閉步進電機,鍵輸入線置高

MAIN1:

JBK1,MAIN2

ACALLBEEP_BL ;步進電機正轉

ACALLFFW

MAIN2:

JBK2,MAIN1

ACALLBEEP_BL ;步進電機反轉

ACALLREV

JMPMAIN1

;------------------------正轉-------------------------

FFW:

;MOV R3,#12 ;7.5度電機正轉1圈共12個周期

MOVR3,#60 ;轉5圈

FFW1:

MOV R0,#00H

FFW2:

JBK4,FFW3 ;終止步進電機運行

ACALLBEEP_BL

JMPFFW4

FFW3:

MOV P1,#0F0H

MOV A,R0

;MOV DPTR,#TABLE_F;選擇工作方式

MOV DPTR,#TABLE1

MOVC A,@A+DPTR

MOV P1,A

LCALL DELAY

INC R0

CJNEA,#0FFH,FFW2

DJNZ R3,FFW1

FFW4:

MOV P1,#0F0H

RET

;---------------------------反轉--------------------------

REV:

;MOV R3,#12 ;7.5度電機反轉1圈共12個周期

MOVR3,#60 ;轉5圈

REV1:

MOV R0,#00H

REV2:

JBK4,REV3;終止步進電機運行

ACALLBEEP_BL

JMPREV4

REV3:

MOV P1,#0F0H

MOV A,R0

; MOV DPTR,#TABLE_R ;選擇工作方式

MOV DPTR,#TABLE2

MOVC A,@A+DPTR

MOV P1,A

CALL DELAY

INC R0

CJNEA,#0FFH,REV2

DJNZ R3,REV1

REV4:

MOV P1,#0F0H

RET

;-------------------------------------------------------

DELAY:

MOV R7,#40 ;步進電機的轉速

DEL1:MOV R6,#248

DJNZ R6,$

DJNZ R7,DEL1

RET

;-------------------------------------------------------

DELAY1:

MOV R5,#20 ;2S 延時子程序

DEL2:

MOV R7,#200

DEL3:

MOV R6,#250

DJNZR6,$

DJNZR7,DEL3

DJNZR5,DEL2

RET

;-------------------------------------------------------

; 單雙八拍工作方式

TABLE_F:;正轉表

DB0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H

DB0FFH

TABLE_R:;反轉表

DB0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H

DB0FFH

;-------------------------------------------------------

; 雙四拍工作方式:

TABLE1:

DB 0F3H,0F6H,0FcH,0F9H;正轉表

DB 0FFH;正轉結束

TABLE2:

DB 0F9H,0FCH,0F6H,0F3H;反轉表

DB 0FFH;反轉結束

;--------------------------------------------------------

;蜂鳴器響一聲子程序

;--------------------------------------------------------

BEEP_BL:

MOVR6,#100

BL1:

CALLDEX1

CPLBEEP

DJNZR6,BL1

RET

DEX1:

MOVR7,#180

DEX2:

NOP

DJNZR7,DEX2

RET

;---------------------------------------------------------

END

四相步進電機:

齒距角: Qz = 2π/ Z Z --- 轉子的齒數

步距角---轉子走一步所轉過的角度

步距角: Qn = Qz/N = 2π/NZN --- 步進電機工作拍數

步進電機轉速:

n = 60×f / N×Z (轉/分); f =脈衝頻率(Hz)

對於步距角為7.5度的步進電機而言:

Qn = 7.5度

Qz = Qn×N = 7.5×4=30度 (齒距角)

Z=2π/Qz = 360/30 = 12 (轉子的齒數)

四相步進電機有三種運行狀態:

1、步進電機為四相單四拍運行狀態:

當電機繞組通電時序為A-B-C-D時為正轉,通電時序為D-C-B-A時為反轉。

N = 4

步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°

則步進電機轉一圈所需步進數: 360°/7.5°=48 (步進數)

2、步進電機為四相雙四拍運行狀態:

當電機繞組通電時序為AB-BC-CD-DA時為正轉,通電時序為DA-CD-BC-AB時為反轉。

N = 4

步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°

則步進電機轉一圈所需步進數: 360°/7.5°=48 (步進數)

3、步進電機為四相八拍運行狀態。

當電機繞組通電時序為A-AB-B-BC-C-CD-D-DA時為正轉,通電時序為DA-D-CD-C-BC-B-BA-A時為反轉。

N = 8

步距角: Qn = Qz/N = 2π/NZ =360/8*12=3.75°

則步進電機轉一圈所需步進數: 360°/3.75°=96 (步進數)

相關焦點

  • 單片機控制步進電機的正反轉
    呵呵,這次弄這個程序用了我兩年的時間,終於把我們正反轉程序寫成功並調試成功了,新年收到很多朋友給我的賀卡和祝福,不過,我覺得今天這個程序也是送給自己最好的禮物吧,學單片機真的有時候會很痛苦,一個程序當你怎麼編也編不出來的時候,有時候真的讓你夠難受的,失敗的那種感覺,也許只有學單片機的朋友才能夠體會得了,但是當一個程序編了好久,
  • 單片機控制步進電機驅動器工作原理
    ~P1.7輸出,經74LS14反相後進入9014,經9014放大後控制光電開關,光電隔離後,由功率管TIP122將脈衝信號進行電壓和電流放大,驅動步進電機的各相繞組。  3.軟體設計  該驅動器根據撥碼開關KX、KY的不同組合有三種工作方式供選擇:  方式1為中斷方式:P3.5(INT1)為步進脈衝輸入端,P3.7為正反轉脈衝輸入端。上位機(PC機或單片機)與驅動器僅以2條線相連。
  • 單片機控制步進電機的原理
    本資料詳細介紹鄧步進電機的工作原理以及單片機控制步進電機的特點。步進電機是數字控制電機,它將脈衝信號轉變成角位移,即給一個脈衝信號,步進電機就轉動一個角度,因此非常適合於單片機控制。    步進電機可分為反應式步進電機、永磁式步進電機和混合式步進電機。
  • 用單片機和CPLD實現步進電機的控制
    同時單片機非常適合應用於需要複雜的控制算法的場合。因此本設計採用的方法是:用單片機採集現場信號後計算出步進電機運轉所需的控制信息後,再傳給CPLD,CPLD把接收到的信息轉換成步進電機實際的控制信號(運轉方向、運轉速度)輸出給電機的驅動電路。這樣的好處是單片機與CPLD各行其是。
  • 單片機對儀表步進電機的細分控制
    在非超載的情況下,電機轉速、停止的位置只取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響,即給電機某相線圈加一脈衝信號,電機則轉過一個步距角。這一線性關係的存在,加上步進電機只有周期性的誤差而無累積誤差等特點,使得在速度、位置等控制領域用步進電機來控制變得非常簡單。雖然步進電機已被廣泛地應用,但步進電機並不像普通的直流電機、交流電機那樣在常規下使用。
  • 51單片機控制步進電機驅動器工作原理
    步進電機在控制系統中具有廣泛的應用。它可以把脈衝信號轉換成角位移,並且可用作電磁製動輪、電磁差分器、或角位移發生器等。有時從一些舊設備上拆下的步進電機(這種電機一般沒有損壞)要改作它用,一般需自己設計驅動器。本文介紹的就是為從一日本產舊式印表機上拆下的步進電機而設計的驅動器。
  • 51單片機的步進電機控制,正轉反轉等
    步進電機應用廣泛,本文引用地址:http://www.eepw.com.cn/article/201808/384872.htm例如印表機、磁碟驅動器、玩具、汽車雨刷、手機震動、機械夾具、刻錄機等各種機械控制場合一些概念:拍數N定子控制繞組每改變一次通電方式,即為一拍
  • 用AT89C52單片機作為控制器,設計簡單實用的步進電機控制系統
    作者介紹了基於AT89C52單片機的兩相混合式步進電機控制系統的設計方案,增加了步進電機控制系統設計的靈活性。控制系統採用AT89C52單片機作為控制器,由達林頓功率管BUW49組成的雙H橋式電路作為驅動器,加入按鍵控制及LCD1602顯示。控制系統的電路結構簡單、設計思路清晰。實驗表明,控制系統操作簡單、運行可靠,具有較強的實用性。
  • 用51單片機控制兩相四線步進電機
    最近學習步進電機的驅動原理,照著教材自己實踐了一下用ULN2003驅動28BYJ-48兩相5線步進電機,可以正常轉動。手頭有一個舊光碟機,拆開發現裡面有三個電機,其中有一個控制雷射頭尋跡的兩相四線步進電機,我就用51的單片機讓它也轉起來。一開始照葫蘆畫瓢用ULN2003驅動,結果發現無論如何也不行。
  • PLC實現步進電機正反轉和調速控制
    2、掌握帶驅動電源的步進電機的控制方法3、掌握DECO指令實現步進電機正反轉和調速控制的程序二、實訓儀器和設備1、FX2N-48MR PLC一臺2、兩相四拍帶驅動電源的步進電機一套3、正反切換開關、起停開關、增減速開關各一個
  • 單片機與TA8435的步進電機細分控制
    1 步進電機 步進電動機是純粹的數字控制電動機,它將電脈衝信號轉變為角位移,即給一個脈衝,步進電機就轉一個角度,因此非常合適單片機控制,在非超載的情況下,電機的轉速、停止的位置只取決於脈衝信號的頻率和脈衝數
  • 51單片機驅動步進電機__終極(完整版)
    在這裡介紹一下用51單片機驅動步進電機的方法。 這款步進電機的驅動電壓12V,步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈衝完成!!! 該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:黑色。
  • 單片機實現步進電機控制系統設計的方法
    步進電機是數字控制電機,將脈衝信號轉換成角位移,電機的轉速、停止的位置取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響,非超載狀態下,根據上述線性關係,再加上步進電機只有周期性誤差而無累積誤差,因此步進電機適用於單片機控制。步進電機通過輸入脈衝信號進行控制,即電機的總轉動角度由輸入脈衝總數決定,而電機的轉速由脈衝信號頻率決定。步進電機的驅動電路是根據單片機產生的控制信號進行工作。
  • 基於ATMEGA48單片機的儀表步進電機的細分控制
    儀表步進電機本文引用地址:http://www.eepw.com.cn/article/162587.htm  步進電機是將電脈衝信號轉變為角位移或線位移的開環控制元件。
  • 51單片機與TA8435的步進電機細分控制
    1 步進電機   步進電動機是純粹的數字控制電動機,它將電脈衝信號轉變為角位移,即給一個脈衝,步進電機就轉一個角度,因此非常合適單片機控制,在非超載的情況下,
  • 步進電機的正反轉轉動方向應如何控制?
    步進電機的轉角,轉速,旋轉方向分別與輸入脈衝的個數、頻率、通電順序有關。   步進電機正反轉是怎樣實現的,什麼是步進電機方向信號?   方向電平信號DIR用於控制步進電機的旋轉方向。此端為高電平時,電機一個轉向;此端為低電平時,電機為另一個轉向。電機換向必須在電機停止後再進行,並且換向信號一定要在前一個方向的最後一個CP脈衝結束後以及下一個方向的第一個CP脈衝前發出。   當您的控制韶(上位機)發出的是雙脈衝[即正負脈衝)或脈衝信號的幅值不匹配時,需要用我們的信號模塊轉換為5v單脈衝(脈:中加方向)。
  • 單片機控制步進電機1步10步100步正反轉
    一,程序設計方案的構想:1) 步進電機的控制原理本文引用地址:http://www.eepw.com.cn/article/201611/319603
  • 基於單片機的步進電機開環控制系統
    摘要: 通過ATMEL89C51單片機對步進電機進行控制,主要介紹了步進電機控制器、驅動電路和LED顯示電路的設計,實現了步進電機的開環控制。
  • 基於MCS-51單片機和步進電機實現鍋爐筒壁孔加工控制系統的設計
    ,是以MCS-51單片機為控制核心、步進電機為驅動電機、工具機大、小拖板為執行部件的兩坐標開環控制系統。另外擴展一片8255並行I/O口,其B口用於輸出步進電機控制信號、C口和A口用於鍵盤和顯示器接口。 主板上配置4×7個按鍵,其中0~F的十六進位數字鍵用於手工編輯加工程序時輸入存儲單元地址、工件號、加工指令等,其餘功能鍵用作單片機復位、6264內存地址加1,減1,步進電機點動對刀、自動加工及刀具回零等。 6個8段LED數碼管採用共陰極接法,動態顯示數據。
  • 單片機驅動電機電路
    51單片機驅動步進電機電路   在這裡介紹一下用51單片機驅動步進電機的方法。   這款步進電機的驅動電壓12V,步進角為 7.5度 。 一圈 360 度 , 需要 48 個脈衝完成!   該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5: $、6:黑色。採用51驅動ULN2003的方法進行驅動。ULN2003的驅動直接用單片機系統的5V電壓,可能力矩不是很大,大家可自行加大驅動電壓到12V。