|
發布時間: 2016-3-29 23:54
正文摘要:大家好,我是新手,想求個程序和接線圖,用51控制TB6560驅動42步進電機,我上圖大家指點下,非常感謝!這是TB6560的接線,有兩種接法,不知道哪種可以用,還有步進劃分,如何設置? |
| 好好學習 下 |
| 這個根本不是這種步進電機的,而且也沒有通過驅動 |
|
本帖最后由 bg8sya 于 2016-3-31 00:00 編輯 這個不能反轉#include <reg52.h> //51芯片管腳定義頭文件 #include <intrins.h> //內部包含延時函數 _nop_(); unsigned char code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正轉相序代碼 unsigned char code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反轉相序代碼 sbit K1 = P3^2; //正轉 sbit K2 = P3^3; //反轉 sbit K3 = P3^4; //停止 sbit BEEP = P3^6; //蜂鳴器 /********************************************************* 1ms延時 *********************************************************/ void delay(unsigned int t) { unsigned int k; while(t--) for(k=0; k<125; k++); } /********************************************************** 0.1ms延時 **********************************************************/ void delayB(unsigned char n) { unsigned char i; while(n--) for (i=0; i<13; i++); } /**********************************************************/ /*蜂鳴器*/ void beep() { unsigned char i; for(i=0;i<100;i++){ BEEP=~BEEP; delayB(4); } BEEP=1; } /********************************************************/ /* /*步進電機正轉 /* /********************************************************/ void motor_ffw() { unsigned char i; unsigned int j; for (j=0; j<8; j++) //轉1*n圈 { if(K3==0){ delay(15); //消陡 if(K3==0) break; } //退出此循環程序 for (i=0; i<8; i++) //一個周期轉45度 { P1 = FFW; //取數據 delay(2); //調節轉速 } } } /********************************************************/ /* /*步進電機反轉 /* /********************************************************/ void motor_rev() { unsigned char i; unsigned int j; for (j=0; j<8; j++) //轉1×n圈 { if(K3==0){ delay(15); //消陡 if(K3==0) break; } //退出此循環程序 for (i=0; i<8; i++) //一個周期轉45度 { P1 = REV; //取數據 delay(2); //調節轉速 } } } /******************************************************** * * 主程序 * *********************************************************/ void main() { unsigned char r,N=64; //N 步進電機運轉圈數 因為步進電機是減速步進電機 減速比是1/64 所以這里N=64時 步進電機外部的主軸轉1圈 while(1) { if(K1==0) { delay(10); if(K1==0){ beep(); for(r=0;r<N;r++) { motor_ffw(); //電機正轉 if(K3==0){ delay(10); if(K3==0){ beep(); break; } } //退出此循環程序 } } } else if(K2==0) { delay(10); if(K2==0){ beep(); for(r=0;r<N;r++) { motor_rev(); //電機反轉 if(K3==0){ delay(10); if(K3==0){ beep(); break; } } //退出此循環程序 } } } else P1 = 0xf0; //關閉電機 } } /********************************************************/ |
hubaba 發表于 2016-3-30 13:44 你好,http://www.denmoz.com/bbs/dpj-47351-1.html,關于這個控制,我實驗不成功,請再次幫忙,謝謝,我是新手 |
hubaba 發表于 2016-3-30 13:44 好人,謝謝了 |
TB6560驅動42步進電機例程
|