51微控制器之步進電機(驅動為ULN2003)

2021-09-11 09:40:46 字數 2982 閱讀 7519

步進電機是將電脈衝訊號轉變為角位移或線位移的開環控制元步進電機件。在非超載的情況下,電機的轉速、停止的位置只取決於脈衝訊號的頻率和脈衝數,而不受負載變化的影響,當步進驅動器接收到乙個脈衝訊號,它就驅動步進電機按設定的方向轉動乙個固定的角度,稱為「步距角」,它的旋轉是以固定的角度一步一步執行的。可以通過控制脈衝個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。

1 相勵磁法:每一瞬間只有乙個線圈導通,其他線圈休息。其特點是勵磁方法簡單,耗電低,精確度良好。但是力矩小、震動大,每次勵磁訊號走的角度是標稱角度。

2 相勵磁法:每一瞬間有兩個線圈同時導通,特點是力矩大、震動較小,每次勵磁轉動角度是標稱角度。

1-2 相勵磁法:1 相和 2 相輪流交替導通,精度較高,且運轉平滑。每送乙個勵磁訊號轉動二分之一標稱角度。有稱為半步驅動。4 相電機中,1、2 種方式稱 4 相 4 拍,3 種稱 4 相8 拍。

1 相勵磁法

#include

sbit a1=p1^0;

//定義步進電機連線埠

sbit b1=p1^1;

sbit c1=p1^2;

sbit d1=p1^3;

#define coil_a1

//a相通電,其他相斷電

#define coil_b1

//b相通電,其他相斷電

#define coil_c1

//c相通電,其他相斷電

#define coil_d1

//d相通電,其他相斷電

#define coil_off

//全部斷電

unsigned

char speed;

main()

代替delayms

(speed)

;//改變這個引數可以調整電機轉速 ,

//數字越小,轉速越大,力矩越小

coil_b1

delayms

(speed)

; coil_c1

delayms

(speed)

; coil_d1

delayms

(speed);}

}

2 相勵磁法

#include

sbit a1=p1^0;

//定義步進電機連線埠

sbit b1=p1^1;

sbit c1=p1^2;

sbit d1=p1^3;

#define coil_ab1

//ab相通電,其他相斷電

#define coil_bc1

//bc相通電,其他相斷電

#define coil_cd1

//cd相通電,其他相斷電

#define coil_da1

//d相通電,其他相斷電

#define coil_off

//全部斷電

unsigned

char speed;

main()

代替delayms

(speed)

;//改變這個引數可以調整電機轉速 ,

//數字越小,轉速越大,力矩越小

coil_bc1

delayms

(speed)

; coil_cd1

delayms

(speed)

; coil_da1

delayms

(speed);}

}

1-2 相勵磁法

#include

sbit a1=p1^0;

//定義步進電機連線埠

sbit b1=p1^1;

sbit c1=p1^2;

sbit d1=p1^3;

#define coil_ab1

//ab相通電,其他相斷電

#define coil_bc1

//bc相通電,其他相斷電

#define coil_cd1

//cd相通電,其他相斷電

#define coil_da1

//d相通電,其他相斷電

#define coil_a1

//a相通電,其他相斷電

#define coil_b1

//b相通電,其他相斷電

#define coil_c1

//c相通電,其他相斷電

#define coil_d1

//d相通電,其他相斷電

#define coil_off

//全部斷電

unsigned

char speed;

main()

代替delayms

(speed)

;//改變這個引數可以調整電機轉速 ,

//數字越小,轉速越大,力矩越小

coil_b1

delayms

(speed)

; coil_bc1

delayms

(speed)

; coil_c1

delayms

(speed)

; coil_cd1

delayms

(speed)

; coil_d1

delayms

(speed)

; coil_da1

delayms

(speed);}

}

步進電機反轉思路:設定兩個迴圈,通過不同條件進入,裡面步進電機通電順序想法,例如a->b->c->d與d->c->b->a。

步進電機調速思路:設定speed的值,即每一次通電的延時時間,時間越小,速度越快。

步進電機設定角度思路:設定乙個最小的速度,當完成一次通電流程後,看轉動的角度,從而設定需要幾次通電流程才能到達對應角度。

基於51微控制器步進電機控制

1 用矩陣鍵盤設定電機目標轉速及旋轉方向,範圍 100 300 轉 分 2 測量 顯示電機實際轉速和方向 正轉顯示 p 反轉顯示 n 從實現功能上分析,軟體可以分解3個功能模組 1,步進電機控制模組 2,矩陣鍵盤輸入模組 3,顯示輸出模組 步進電機通過輸入脈衝訊號進行控制,即電機的總轉動角度由輸入脈...

51微控制器紅外控制步進電機

include 定義一些特殊暫存器 typedef unsigned char u8 typedef unsigned int u16 u8 code ffw 8 轉動陣列 u8 code rev 8 u16 code smgduan 17 u8 irvalue 6 u8 time u8 read ...

51微控制器控制四相步進電機

接觸微控制器快兩年了,不過只是非常業餘的興趣,實踐卻不多,到現在還算是個初學者吧。這幾天給自己的任務就是搞定步進電機的微控制器控制。以前曾看過有關步進電機原理和控制的資料,畢竟自己沒有做過,對其具體原理還不是很清楚。今天從 網買了乙個epson的umx 1型步進電機,此步進電機為雙極性四相,接線共有...