1. 步進電機用單片機控制轉動
很簡單,看你的意思,你應該已經有了與之配套的【步進電機驅動器】,那就可以用單片機I/O口控制了,一路輸出CP脈沖信號,一路輸出DIR方向信號,電源接好後,連通電路,就OK了。
簡單的C51調試程序:一個大的FOR循環里包含:
【C P脈沖信號】:可以用一個有限的FOR循環(循環時間可控制在幾秒鍾左右),里邊加個有限的FOR延時(這個要小到幾分之一或幾十分之一秒),然後再對CP埠取反;這樣,單片機上電後,就會不斷地延時,輸出脈沖波了。
【DIR方向信號】:可以在上述的CP脈沖信號的有限FOR循環結束後,停幾秒,再對DIR埠取反; 這樣,你的步進電機通電後就會在幾秒鍾內正轉,停轉幾秒鍾後再反轉了,如此往復不斷。
2. 用單片機控制步進電機正反轉,簡單易懂的C語言程序,最好帶注釋,步進電機部分電路圖如下
如果會編程這個問題實現起來比較容易。
看題主的情況應該是不太了解編程,向你推薦表控,在不會編程的情況下,可以利用中文表格設置輕松實現步進電機的正反轉。
具體參見下圖:
第1行設置由輸入端X1作為啟動,Y1輸出3萬個脈沖,脈沖頻率600赫茲(每秒600個脈沖的頻率),由於只有Y1輸出脈沖,沒有設置方向輸出端,所以電機正轉。
第3、4行由X2同時啟動兩行作為反轉,Y1輸出3萬個脈沖,頻率為800赫茲,Y1輸出脈沖的同時方向輸出端Y2同時輸出方向信號,因此,電機反轉。反轉的3萬個脈沖輸出結束後電機停止,並中止第4行方向輸出端Y2,反轉信號同時結束,反轉過程結束。
3. 關於C8051單片機控制電機轉動的編程
#define uchar unsigned char
#define uint unsigned int
sbit KEY1 = P3^2; //步進電機逆時針方向轉
sbit KEY2 = P3^3; //步進電機順時針方向轉
sbit KEY3 = P3^4; //步進電機調速
uchar step = 0;
bit AB_flag = 0;
unsigned char code A_Rotation[8]={0x08,0x18,0x10,0x30,0x20,0x60,0x40,0x48}; //順時針轉表格
unsigned char code B_Rotation[8]={0x48,0x40,0x60,0x20,0x30,0x10,0x18,0x08}; //逆時針轉表格
/********************************************************************
* 名稱 : Delay_1ms()
* 功能 : 延時子程序,延時時間為 1ms * x
* 輸入 : x (延時一毫秒的個數)
* 輸出 : 無
***********************************************************************/
void Delay(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
void KEY(void)
{
if(KEY1 == 0) //按P3.2,實現步進電機的逆時針轉動
{
4. 求單片機AT89C52控制步進電機的程序 謝謝! 要C語言的
#include <reg52.h>
unsigned char code F_Rotation[4]={0x08,0x10,0x20,0x40};//正轉表格
unsigned char code B_Rotation[4]={0x40,0x20,0x10,0x08};//反轉表格
void Delay(unsigned int i)//延時
{
while(--i);
}
main()
{
while(1)
{
unsigned char i;
unsigned int j;
for(j=0;j<512;j++)
{
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //輸出對應的相 可以自行換成反轉表格
Delay(500); //改變這個參數可以調整電機轉速
}
}
for(j=0;j<512;j++)
{
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //輸出對應的相 可以自行換成反轉表格
Delay(500); //改變這個參數可以調整電機轉速
}
}
}
}