標(biāo)題: 51單片機精確控制步進(jìn)電機(有TB6600驅(qū)動) [打印本頁]

作者: hufter    時間: 2019-4-9 22:22
標(biāo)題: 51單片機精確控制步進(jìn)電機(有TB6600驅(qū)動)
作為一個小白,我想記錄一下自己的學(xué)習(xí)過程,也和大家交流學(xué)習(xí)一下。
設(shè)備:51單片機開發(fā)板、TB6600驅(qū)動器、57BYG250B步進(jìn)電機(二相)、直流開關(guān)電源。直流電源給驅(qū)動器供電,單片機給驅(qū)動器輸入脈沖,驅(qū)動器驅(qū)動步進(jìn)電機。程序使用定時器中斷精確控制電機轉(zhuǎn)動(不考慮失步)。比如我采用16倍細(xì)分,則需給驅(qū)動輸入3200個脈沖,驅(qū)動才會使電機轉(zhuǎn)一圈,下面程序中1秒發(fā)送200個脈沖,則相應(yīng)的電機16秒轉(zhuǎn)一圈。(第一次搞不怎么會上傳,就傳圖片了)

單片機源程序如下:

圖片1.png (223.72 KB, 下載次數(shù): 194)

驅(qū)動器

驅(qū)動器

圖片2.png (97.4 KB, 下載次數(shù): 169)

電源

電源

圖片3.png (154.22 KB, 下載次數(shù): 139)

步進(jìn)電機

步進(jìn)電機

作者: 577174566    時間: 2019-4-27 12:32
你實物效果實現(xiàn)了沒有
作者: yyhlsf    時間: 2019-4-27 19:35
謝謝分享
作者: yyhlsf    時間: 2019-4-28 10:25
謝謝分享
作者: hufter    時間: 2019-4-28 19:27
577174566 發(fā)表于 2019-4-27 12:32
你實物效果實現(xiàn)了沒有

實現(xiàn)了
作者: 張濤boy    時間: 2019-4-29 07:24
謝謝分享
作者: 5314039    時間: 2019-4-29 20:31
0.02ms x250是什么意思?
作者: hufter    時間: 2019-4-29 23:20
5314039 發(fā)表于 2019-4-29 20:31
0.02ms x250是什么意思?

這個可以忽略,我當(dāng)時是想詳細(xì)算一下定時器時間的,注釋忘記修改了。這里想表達(dá)的意思是每個脈沖周期是5ms,頻率是200hz,1秒輸出200個脈沖。0.02ms*250=5ms,就當(dāng)是個數(shù)學(xué)等式了。
作者: 17851000590    時間: 2019-5-10 16:13
麻煩問一下那個ENA,DIR,PUL六根線怎么接的啊
作者: hufter    時間: 2019-5-12 10:21
17851000590 發(fā)表于 2019-5-10 16:13
麻煩問一下那個ENA,DIR,PUL六根線怎么接的啊

你看驅(qū)動器的說明書,ENA,DIR,是控制是否脫機控制和轉(zhuǎn)向,你可以共陰極連接,PUL是脈沖輸入端,可以連到單片機上你發(fā)出脈沖的引腳。
作者: Jachin98    時間: 2019-5-12 14:25
17851000590 發(fā)表于 2019-5-10 16:13
麻煩問一下那個ENA,DIR,PUL六根線怎么接的啊

共陰或者共陽連接,上面標(biāo)注的正負(fù)號就是有效電平。
比如你共陽接,那PUL+,DIR+,ENA+接開發(fā)板5V接口,剩下三個符號接口接開發(fā)板三個IO口。這時候你只要對應(yīng)IO口輸出低電平,那該功能就是打開的,輸出高電平該功能就是關(guān)閉的。
作者: Jachin98    時間: 2019-5-12 14:28
感謝,最近也在用TB6600控制42步進(jìn)電機,初學(xué)小白定時器還不會用,看你的感覺一下很清晰了
作者: ahjxszc    時間: 2019-5-12 22:05
電機正反轉(zhuǎn)應(yīng)該怎么控制呢?
作者: Jachin98    時間: 2019-5-13 13:20
ahjxszc 發(fā)表于 2019-5-12 22:05
電機正反轉(zhuǎn)應(yīng)該怎么控制呢?

就TB6600DIR給個相反的電平就反轉(zhuǎn)了,或者你把A+——A-——B+——B-順序反一下就好了叭
作者: 17851000590    時間: 2019-5-14 21:56
可愛的樓主,ena.dir,pul,共陰還是共陽接線
作者: 17851000590    時間: 2019-5-14 21:58
Jachin98 發(fā)表于 2019-5-12 14:25
共陰或者共陽連接,上面標(biāo)注的正負(fù)號就是有效電平。
比如你共陽接,那PUL+,DIR+,ENA+接開發(fā)板5V接口, ...

謝謝樓主

作者: 17851000590    時間: 2019-5-14 22:09
Jachin98 發(fā)表于 2019-5-12 14:25
共陰或者共陽連接,上面標(biāo)注的正負(fù)號就是有效電平。
比如你共陽接,那PUL+,DIR+,ENA+接開發(fā)板5V接口, ...

接好了,你的程序轉(zhuǎn)不起來
作者: 蝦兵0蟹將    時間: 2019-5-15 02:41
牛,學(xué)習(xí)了,感謝分享
作者: troy2    時間: 2019-5-15 08:50
請教樓主,這是完整程序嗎?
作者: 飛云    時間: 2019-5-16 11:29
您好,我想請教下,這里輸出的脈沖為何用的是占空比為0.7的PWM?可不可以是方波的?我最近也在做這個驅(qū)動,我用的是方波驅(qū)動,感覺電機的步進(jìn)有誤差
作者: hufter    時間: 2019-5-16 20:18
17851000590 發(fā)表于 2019-5-14 21:56
可愛的樓主,ena.dir,pul,共陰還是共陽接線

我這個是共陰接線
作者: hufter    時間: 2019-5-16 20:20
飛云 發(fā)表于 2019-5-16 11:29
您好,我想請教下,這里輸出的脈沖為何用的是占空比為0.7的PWM?可不可以是方波的?我最近也在做這個驅(qū)動, ...

0.7是隨便設(shè)的,占空比為0.6什么的都沒問題,主要是能給驅(qū)動器脈沖就行了
作者: 17851000590    時間: 2019-5-16 21:43
是不是引腳要加上拉電阻

作者: hufter    時間: 2019-5-17 15:20
troy2 發(fā)表于 2019-5-15 08:50
請教樓主,這是完整程序嗎?

如果線接的對,這個能讓電機轉(zhuǎn)起來。其實用PWM=~PWM; delay();這樣的語句也能讓電機轉(zhuǎn),不過用定時器控制的話,電機走一圈的時間相對來說更精確。
作者: hufter    時間: 2019-5-17 15:22
17851000590 發(fā)表于 2019-5-16 21:43
是不是引腳要加上拉電阻

單片機就是普通的單片機開發(fā)板,沒有加上拉電阻。
作者: 641656606    時間: 2019-5-29 13:21
我采用的也是共陰極接法,為什么電機只響不轉(zhuǎn),同tb6600的藍(lán)燈閃爍正常,能指導(dǎo)一下么謝謝
作者: nvkdvv    時間: 2019-6-19 17:42
同樣轉(zhuǎn)不了啊,到底是什么原因?
作者: 哈哈我哈哈    時間: 2019-6-25 09:55
樓主能否發(fā)下你完整的程序,能使電機正轉(zhuǎn)反轉(zhuǎn)的。最近也在學(xué)這方面的東西,還不太懂,很是愁人。
作者: 哈哈我哈哈    時間: 2019-6-28 20:19
為什么要輸出占空比為0.7的PWM波呢
作者: csw57859406    時間: 2019-7-13 20:44
哈哈我哈哈 發(fā)表于 2019-6-25 09:55
樓主能否發(fā)下你完整的程序,能使電機正轉(zhuǎn)反轉(zhuǎn)的。最近也在學(xué)這方面的東西,還不太懂,很是愁人。

正反轉(zhuǎn)直接該樓主代碼中的DIR值即可,(比如該1或0方向就是相反的)
作者: csw57859406    時間: 2019-7-13 20:45
請問樓主,脈沖的需要控制占空比嗎?我覺得不需要吧,我只是想請問你控制占空比是為了什么,是為了改變什么呢?

作者: 圓周    時間: 2019-7-19 12:30
謝謝分享
作者: zhxc531    時間: 2019-7-19 22:59
我用STC15的硬件PWM寫帶緩沖控制556驅(qū)動2000的細(xì)分空載工作在1000rpm,是快還是慢?
作者: zhxc531    時間: 2019-7-19 23:00
641656606 發(fā)表于 2019-5-29 13:21
我采用的也是共陰極接法,為什么電機只響不轉(zhuǎn),同tb6600的藍(lán)燈閃爍正常,能指導(dǎo)一下么謝謝

頻率太快
作者: zhxc531    時間: 2019-7-19 23:01
ahjxszc 發(fā)表于 2019-5-12 22:05
電機正反轉(zhuǎn)應(yīng)該怎么控制呢?

加在DIR上一個反向電平
作者: zhxc531    時間: 2019-7-19 23:03
哈哈我哈哈 發(fā)表于 2019-6-28 20:19
為什么要輸出占空比為0.7的PWM波呢

因為有的驅(qū)動脈寬太大,電機會一直處于負(fù)載狀態(tài)
作者: 夜遇    時間: 2019-10-8 22:15
17851000590 發(fā)表于 2019-5-14 21:56
可愛的樓主,ena.dir,pul,共陰還是共陽接線

單片機IO口輸出大于20ma可以采用共陰接法,輸出不能保證20ma以上就只能采用共陽接法。這樣才能驅(qū)動光耦導(dǎo)通
作者: zhangjianhu    時間: 2019-10-18 10:41
嘗試下樓主的程序,
作者: mz116    時間: 2019-10-26 15:40
請問一下以上代碼就可以實現(xiàn)正反轉(zhuǎn)了嗎
作者: yh0825    時間: 2019-10-29 08:37
我也在學(xué)這個,希望弄個繞線機的排線裝置。目標(biāo):繞線機轉(zhuǎn)動一圈輸出1個脈沖到單片機,單片機根據(jù)鍵盤輸入的漆包線直徑計算需要輸出的排線脈沖數(shù)到驅(qū)動器。一直希望弄這個東東,卻被單片機程序卡卡了
作者: jjj012    時間: 2019-11-16 18:45
本帖最后由 jjj012 于 2019-11-21 16:59 編輯

請問需要達(dá)到每分鐘7000轉(zhuǎn)程序應(yīng)該怎么修改呢
作者: pctc    時間: 2019-12-16 13:53
可不可以一個信號十個脈沖,最快一秒鐘有四十個信號,最慢一秒鐘一個
作者: pctc    時間: 2019-12-16 13:57
可不可以一個信號十個脈沖,最快一秒鐘40~50個信號,最慢幾秒鐘一個
作者: 有一大波風(fēng)    時間: 2020-1-10 11:52
資料可以分享一下么樓主
作者: 鬼推磨    時間: 2020-2-3 16:33
樓主用心良苦。讓我們練習(xí)打代碼出來。,不讓自己復(fù)制
。代碼我打好了:


#include <reg52.h>
unsigned char timerl;
sbit ENA=P2^2; //位定義ENA為P1.1, 控制步進(jìn)電機的使能
sbit DIR=P2^1; //位定義DIR為P1.0口,控制步進(jìn)電機轉(zhuǎn)向
sbit PWM=P2^0; //位定義PwM為P1.2,用來輸出PMw波


void system_Ini()
{
TMOD|= 0x11;
TH1 = 0xfe; //11.0592MHz 0. 5ms定時
TL1 = 0x33;
TR1 = 1; //啟動T1定時器
IE =0x8A; //開r0,I1中斷,開總中斷
}


main()
{
system_Ini(); //調(diào)用子函數(shù)初始化定時器T1
while (1)
{
if (timerl>10)//原始是10
//此處10很關(guān)鍵,決定這一個脈沖的周期時間,此處o. 5ms*10=5ms
{
timerl=0; //輸出占空比為o.7的PwM波
}
if (timerl<3)
{
PWM=0;
}
else
{
PWM=1;
}
}
}
//[ t1 (0.5ms)中斷] 中斷中做PWM輸出1000/ (0. 02ms*250)
//--- 1000/ (0.02ms*250)=200Hz, 也就是1秒中輸出200個脈沖
void T1zd (void) interrupt 3 //開定時器1中斷
{
TH1 = 0xfe; //11.0592Hz,0. 5ms初始化定時器,讓定時器復(fù)位繼續(xù)定時
TL1 = 0x33;
timerl ++;
//計數(shù)+1
}

作者: qwertyuio666666    時間: 2020-9-21 16:39
請問你采用的共陽極還是共陰極接法
作者: 山頂任風(fēng)吹    時間: 2022-2-15 15:45
17851000590 發(fā)表于 2019-5-10 16:13
麻煩問一下那個ENA,DIR,PUL六根線怎么接的啊

分陰極接法和陽極接法,陰極接時,負(fù)端接單片機,正端接5v電壓
作者: aktuan007    時間: 2023-1-3 22:29
鬼推磨 發(fā)表于 2020-2-3 16:33
樓主用心良苦。讓我們練習(xí)打代碼出來。,不讓自己復(fù)制
。代碼我打好了:


請問你接了實物沒
作者: aktuan007    時間: 2023-1-16 22:32
請問樓主ENA和DIR怎么都沒有用到?還有一個疑問啊,停止是怎么操作?謝謝哈
作者: 小累,    時間: 2023-1-25 15:24
開環(huán)的控制,不能說精確,只能說控制
作者: tom1234516    時間: 2023-1-27 17:09
正在學(xué)習(xí)中,感謝分享,正是需要的資料




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1