⑴ 89C52單片機控制兩相步進電機的程序
假設單片機p0口低4位驅動步進電機的四個繞組只需讓其四個管腳輪流輸出高電平即可
如:
while(1)
{
p0=8;
delay_ms(1);
p0=4;
delay_ms(1);
p0=2;
delay_ms(1);
p0=1;
delay_ms(1);
}
反轉的話,按順序輸出1
2
4
8即可
這是4
相4拍形式,當然還有4相八拍形式
⑵ 我單片機控制兩相步進電機接線如圖 這樣接完 電機不轉 也不抖動 不知道為什麼
單片機是5V供電的,你接24V進去單片機肯定燒了,另外你的CW,CP的接法你要看你驅動器的接法要求,有的驅動器共陽,共陰接法都可以的,有的只能接共陽的,你現在接的是完全錯誤,既不是共陽也不是共陰,圖我改了一個,你參考一下
⑶ 請問不用驅動器,而用單片機控制兩相步進電機可以嗎
這是不可能的,單片機的IO口無法承受0.2A電流.用IO口控制三極體驅動就行了
⑷ 用單片機控制兩台步進電機能做到嗎
可以做到啊,你所說的一樣速度,指的是角速度還是線速度?所說的兩台電機,是已經在水平方向和30°方向了還是需要一個運動到30°方向?角速度比較好辦,一個脈沖同時驅動兩個電機轉動就是了,如果是線速度,在機械上做下調整最省事,不過也可以調整兩個電機的轉動速度,這個主要在程序上調整就好了。
⑸ 89C52單片機控制兩相步進電機的程序
ORG 0030H
MOV R1,#00H
MAIN:JB P3.2,RRR P3.2為1 右轉
MOV DPTR,#TAB 否則左轉 TAB為左轉時序
SJMP TT
RRR:MOV DPTR,#TAB1
TT:MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R1 下一拍
CJNE R1,#04H,TT
MOV R1,#00H
SJMP MAIN
DELAY:MOV R2,#25 拍與拍之間的延時,可以調整延時長短來實現速度變化
RR1:MOV R3,#50
DJNZ R3,$
DJNZ R2,RR1
RET
RETI
TAB:DB 11110101B,11101101B,11101011B,11110011B
TAB1:DB 11110011B,11101011B,11101101B,11110101B
END
P2低4位接電機
⑹ 步進電機的單片機控制
步進電機的單片機控制
通過IO口輸出的具有時序的方波作為步進電機的控制信號,信號經過晶元L298N驅動步進電機;同時,用 4X4的鍵盤來對電機的狀態進行控制,並用數碼管顯示電機的轉速,採用74LS164作為4位單個數碼管的顯示驅動,從單片機輸入信號;
采通過IO口輸出的具有時序的方波作為步進電機的控制信號,信號經過晶元L298N驅動步進電機;同時,用 4X4的鍵盤來對電機的狀態進行控制,並用數碼管顯示電機的轉速,採用74LS164作為4位單個數碼管的顯示驅動
1、對步進電機的控制和驅動,設計中受控電機為四相六線制的步進電機(內阻33歐,步進1.8度,額定電壓12V)
使用L298N晶元驅動電機
L298N晶元可以驅動兩個二相電機(如圖1-1),也可以驅動一個四相電機,輸出電壓最高可達50V,可以直接通過電源來調節輸出電壓;可以直接用單片機的IO口提供信號;而且電路簡單,使用比較方便。 而使用L298N時,可以用L297來提供時序信號,可以節省單片機IO口的使用;也可以直接用單片機模擬出時序信號,由於控制並不復雜,故選用後者。
2、 數碼管顯示電路的設計
串列接法
設計中要顯示4位數字,用74LS164作為顯示驅動,其中帶鎖存,使用串列接法可以節約IO口資源,但要使用SIO,發送數據時容易控制。
二、步進電機控制原理
步進電機是數字控制電機,它將脈沖信號轉變成角位移,即給一個脈沖信號,步進電機就轉動一個角度,因此非常適合於單片機控制。步進電機可分為反應式步進電機(簡稱VR)、永磁式步進電機(簡稱PM)和混合式步進電機(簡稱HB)。
步進電機區別於其他控制電機的最大特點是,它是通過輸入脈沖信號來進行控制的,即電機的總轉動角度由輸入脈沖數決定,而電機的轉速由脈沖信號頻率決定。
步進電機的驅動電路根據控制信號工作,控制信號由單片機產生。其基本原理作用如下:
(1)控制換相順序
通電換相這一過程稱為脈沖分配。例如:三相步進電機的三拍工作方式,其各相通電順序為A-B-C-D,通電控制脈沖必須嚴格按照這一順序分別控制A,B,C,D相的通斷。
(2)控制步進電機的轉向
如果給定工作方式正序換相通電,步進電機正轉,如果按反序通電換相,則電機就反轉。
(3)控制步進電機的速度
如果給步進電機發一個控制脈沖,它就轉一步,再發一個脈沖,它會再轉一步。兩個脈沖的間隔越短,步進電機就轉得越快。調整單片機發出的脈沖頻率,就可以對步進電機進行調速。
三、理論設計
1、步進電機驅動電路
通過L298N構成步進電機的驅動電路,電路圖如圖3-2所示。
通過單片機的IOB8~IOB13對L298N的IN1~IN4口和ENA、ENB口發送方波脈沖信號,2、數碼管顯示電路的設計
數碼管的顯示驅動使用74LS164,通過的IOB0和IOB1口對DATA和CLK發送數據。
3、4x4鍵盤電路
使用了標準的4x4鍵盤,單片機的A口低8位為鍵盤的介面。盡管設計要求中只需要4個鍵對步進電機的狀態進行控制,但考慮到對控制功能的擴展,我們使用了4x4的鍵盤。
⑺ 51單片機如何控制兩相四線步進電機
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//--------------------------------
uchar step1[] = {0x05, 0x06, 0x0A, 0x09};
uchar stepx = 0;
//--------------------------------
void zs(uint a)
{
while(a--);
}
//--------------------------------
void zheng(void)
{
P0 = step1[stepx]; //走一步
stepx++;
if (stepx >= 4) stepx = 0;
}
//--------------------------------
void fan(void)
{
P0 = step1[stepx]; //走一步
stepx--;
if (stepx == 255) stepx = 3;
}
//--------------------------------
void main ()
{
uint i;
while(1) {
for(i = 0; i < 400; i++) {//正轉400步
zheng(); //走一步
zs(90); //控制轉速
}
for(i = 0; i < 400; i++) {//反轉400步
fan(); //走一步
zs(90); //控制轉速
}
}
}
//--------------------------------
⑻ 關於單片機驅動42步進電機 二相42步進電機42BYG250-2A
可以的,電流幾百亳安足夠,但注意停止時,不要讓某個繞組帶電,靜止狀況下電流很大。
⑼ 89c51單片機最多能控制幾個二相四線步進電機需要同時控制
理論上不添加外設,可以像樓上說的,32個IO口接8個電機,如果接外設,可以和2樓說的一樣,接滿地球,因為有專用的控制步進電機的晶元,單片機控制電機就非常方便了,不過這樣可能就沒體會到提問者的意思。我們僅就不添加外設進行討論。
但是除了IO口的限制,還有單片機的限制,由於單片機運行指令是一條一條執行的,沒有並發機制,所以如果對多個步進電機進行同時操作,如果操作頻率並不高,可以做到幾乎同時(不是嚴格意義上的完全同時,因為指令一次只執行一條,當然兩個電機同步操作同步運轉不在討論范圍之內)。但如果接上比較精密的高速度高頻率操作的步進電機時,可能就會有問題。
通俗的說,你給步進電機發一個指令,電機會運動一個步距,在電機運動到下一個步距之後,單片機再發送下一個指令,在這兩個指令之間單片機可以去做別的事情,比如去控制另一個電機。如果電機操控精細,在最極端的情況下,兩個指令之間的間隔,還不足以執行額外的一條指令,那麼單片機就只能控制一個電機了。即使用中斷也是沒用的,第一個電機的運轉會受到影響。
所以可以控制多少個電機,要參考你單片機的晶振,和你電機到底需要什麼樣的控制,如果需要的操作並不太精細,在第一個電機的兩條指令間隔能夠有時間發送多條指令,那麼就能夠增加控制電機的數量,這個數量需要根據實際情況來看。