導航:首頁 > 操作系統 > 51式單片機控制步進電機

51式單片機控制步進電機

發布時間:2022-07-23 05:52:12

① 51單片機控制步進電機硬體圖及C語言編程

在具備步進電機驅動器的條件下,單片機發送一定頻率和數量的脈沖序列可以驅動步進電機,頻率決定速度,脈沖數量決定角位置。因此從控制方式看,大部分步進電機都可以被單片機驅動,它不需要特別外設,幾個單片機引腳便可以控制。

② 51單片機 編一個控制步進電機轉動的程序

#include <reg51.h> //51晶元管腳定義頭文件
#include <intrins.h>//內部包含延時函數 _nop_();

#define uchar unsigned char
#define uint unsigned 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};

/********************************************************/
/*
/* 延時t毫秒
/* 11.0592MHz時鍾,延時約1ms
/*
/********************************************************/
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++)
{ }
}
}
/********************************************************/
/*
/*步進電機正轉
/*
/********************************************************/
void motor_ffw(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //轉1×n圈
{
for (i=0; i<8; i++) //一個周期轉30度
{
P1 = FFW[i]; //取數據
delay(15); //調節轉速
}
}
}
/********************************************************/
/*
/*步進電機反轉
/*
/********************************************************/
void motor_rev(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //轉1×n圈
{
for (i=0; i<8; i++) //一個周期轉30度
{
P1 = REV[i]; //取數據
delay(15); //調節轉速
}
}
}
/********************************************************
*
* 主程序
*
*********************************************************/

main()
{
while(1)
{
motor_ffw(5); //電機正轉
delay(5000); //換向延時
//motor_rev(5); //電機反轉
//delay(1000); //換向延時
}
}

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

③ 51單片機可以直接驅動步進電機么

51單片機不能直接驅動步進電機,因為單片機的輸出的是數字信號,不是驅動電流,所以需要外加驅動,舵機是可以通過單片機直接控制的PWM控制。
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中

④ 51單片機控制步進電機正反轉原理

單片機控制步進電機正反轉原理,五一單片機的控制步進電機的正反轉是是根據你的需要空控制

⑤ 51單片機, 編一個控制步進電機轉動的程序。

#include <reg51.h> //51晶元管腳定義頭文件
#include <intrins.h>//內部包含延時函數 _nop_();

#define uchar unsigned char
#define uint unsigned 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};

/********************************************************/
/*
/* 延時t毫秒
/* 11.0592MHz時鍾,延時約1ms
/*
/********************************************************/
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++)
{ }
}
}
/********************************************************/
/*
/*步進電機正轉
/*
/********************************************************/
void motor_ffw(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //轉1×n圈
{
for (i=0; i<8; i++) //一個周期轉30度
{
P1 = FFW[i]; //取數據
delay(15); //調節轉速
}
}
}
/********************************************************/
/*
/*步進電機反轉
/*
/********************************************************/
void motor_rev(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //轉1×n圈
{
for (i=0; i<8; i++) //一個周期轉30度
{
P1 = REV[i]; //取數據
delay(15); //調節轉速
}
}
}
/********************************************************
*
* 主程序
*
*********************************************************/

main()
{
while(1)
{
motor_ffw(5); //電機正轉
delay(5000); //換向延時
//motor_rev(5); //電機反轉
//delay(1000); //換向延時
}
}

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

⑥ 51單片機控制步進電機

用單片機同時是不可能的,當然,時間間隔小到可以接受,跑幾個任務,那也可以視為同時。要實現真正意義上的同時,用FPGA/CPLD是可以完成的。

話說回來,也許你的同時並不是說一定嚴格地同時工作,只是說一個單片機去控制四個步進電機,那就好辦多了。

一個步進電機,比如4相5線那種,4個IO口可控制一個,四個步進電機就要16個,驅動晶元用ULN2003即可。

當然,如果你的IO口不允許使用這么多,那也可以通過串轉並的方法,擴展IO口,比如用74HC595,三根IO口控制它,它可以級聯,三根線可以控制很多片。一片為8位,兩片就為16位,3片為24位 …… 只要加些三極體驅動那三根控制線,三個IO口可控制一串級聯的74HC595,得到的擴展IO口,那是相當多的。我用三個IO口控制過5片74HC595,三個IO口一下子就擴展成了40個IO口!!!

⑦ 單片機控制步進電動機的運動的原理及單片機程序

51單片步進電機控制原理與控制設計程序
51單片步進電機是數字控制電機,它將脈沖信號轉變成角位移,即給一個脈沖信號,步進電機就轉動一個角度,因此非常適合於單片機控制。步進電機可分為反應式步進電機(簡稱vr)、永磁式步進電機(簡稱pm)和混合式步進電機(簡稱hb)。
51單片步進電機區別於其他控制電機的最大特點是,它是通過輸入脈沖信號來進行控制的,即電機的總轉動角度由輸入脈沖數決定,而電機的轉速由脈沖信號頻率決定。
51單片步進電機的驅動電路根據控制信號工作,控制信號由單片機產生。其基本原理作用如下:
(1)控制換相順序
通電換相這一過程稱為脈沖分配。例如:三相步進電機的三拍工作方式,其各相通電順序為a-b-c-d,通電控制脈沖必須嚴格按照這一順序分別控制a,b,c,d相的通斷。
(2)控制步51單片進電機的轉向
如果給定工作方式正序換相通電,步進電機正轉,如果按反序通電換相,則電機就反轉。
(3)控制51單片步進電機的速度
如果給步進電機發一個控制脈沖,它就轉一步,再發一個脈沖,它會再轉一步。兩個脈沖的間隔越短,步進電機就轉得越快。調整單片機發出的脈沖頻率,就可以對步進電機進行調速。步進電機是機電控制中一種常用的執行機構,它的用途是將電脈沖轉化為角位移,通俗地說:當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步進角)。通過控制脈沖個數即可以控制角位移量,從而達到准確定位的目的;同時通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。

⑧ 怎樣用51單片機接兩相步進電機驅動器來控制步進電機

脈沖信號就是像流水燈差不多,用兩個口。

例如:

用到P1^0和P1^1;把P10制低電平,P11制高電平,延時一段時間後,P10制高電平 P11制低電平,如此循環,看程序:

#include "reg52.h"

sbit P10=P1^0;

sbit P11=P1^1;

void delay(unsigned int x)

P10=0;P11=1;

delay(1000);

P10=1;P11=0;

delay(1000);

}

}1-B1-B1A0;

兩相四線程序 接P1口

#include "reg52.h"

#define uint unsigned int

#define uchar unsigned char

uchar code tab[]={0xfd,0xfb,0xf7,0xef};

uint i;

void delay(uint x)

{

uint y;

for(;x>0;x--)

{

for(y=0;y<124;y++);

void main()

while(1)

P1=tab[i];

i++;

if(i==4)

{

i=0;

}

delay(20);

(8)51式單片機控制步進電機擴展閱讀:

同樣的一段程序,在各個單片機廠家的硬體上運行的結果都是一樣的,如ATMEL的89C51(已經停產)、89S51,PHILIPS,和WINBOND等;

常說的已經停產的89C51指的是ATMEL公司的AT89C51單片機,同時是在原基礎上增強了許多特性,如時鍾,更優秀的是由Flash(程序存儲器的內容至少可以改寫1000次)存儲器取代了原來的ROM(一次性寫入),AT89C51的性能相對於8051已經算是非常優越的了。

⑨ 51單片機怎麼驅動步進電機

不能直接驅動,因為單片機的輸出的是數字信號,不是驅動電流,所以需要外加驅動,舵機是可以通過單片機直接控制的PWM控制

⑩ 如何用51單片機PWM控制3個步進電機

用單片機同時是不可能的,當然,時間間隔小到可以接受,跑幾個任務,那也可以視為同時。要實現真正意義上的同時,用FPGA/CPLD是可以完成的。

話說回來,也許你的同時並不是說一定嚴格地同時工作,只是說一個單片機去控制四個步進電機,那就好辦多了。

一個步進電機,比如4相5線那種,4個IO口可控制一個,四個步進電機就要16個,驅動晶元用ULN2003即可。

當然,如果你的IO口不允許使用這么多,那也可以通過串轉並的方法,擴展IO口,比如用74HC595,三根IO口控制它,它可以級聯,三根線可以控制很多片。一片為8位,兩片就為16位,3片為24位 ……

閱讀全文

與51式單片機控制步進電機相關的資料

熱點內容
香港伺服器主機地址 瀏覽:640
網店美工pdf 瀏覽:447
一堆文件夾怎麼弄出來 瀏覽:743
博途如何編譯硬體 瀏覽:418
fortran程序pdf 瀏覽:504
電池消耗演算法 瀏覽:394
伺服器中斷連接怎麼處理 瀏覽:222
上世紀互聯網不發達程序員很難 瀏覽:841
語音識別android開源 瀏覽:762
地埋式垃圾壓縮中轉站 瀏覽:902
apachehttpdlinux 瀏覽:944
快遞員中通app預付款是什麼 瀏覽:843
java路徑轉義 瀏覽:857
keytool加密演算法 瀏覽:131
笑臉圖案的APP相機是什麼軟體 瀏覽:249
app軟體為什麼會被下架 瀏覽:981
從內存到硬碟的命令是 瀏覽:52
程序員的爸爸們的發型 瀏覽:123
魔獸世界傷害壓縮是怎麼壓的 瀏覽:976
壓縮機型號hp 瀏覽:959