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

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

單片機(jī)源程序如下:

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

驅(qū)動(dòng)器

驅(qū)動(dòng)器

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

電源

電源

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

步進(jìn)電機(jī)

步進(jìn)電機(jī)

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

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

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

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

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

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

謝謝樓主

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

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

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

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

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

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

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

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

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

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

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

因?yàn)橛械尿?qū)動(dòng)脈寬太大,電機(jī)會(huì)一直處于負(fù)載狀態(tài)
作者: 夜遇    時(shí)間: 2019-10-8 22:15
17851000590 發(fā)表于 2019-5-14 21:56
可愛(ài)的樓主,ena.dir,pul,共陰還是共陽(yáng)接線

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

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


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


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


main()
{
system_Ini(); //調(diào)用子函數(shù)初始化定時(shí)器T1
while (1)
{
if (timerl>10)//原始是10
//此處10很關(guān)鍵,決定這一個(gè)脈沖的周期時(shí)間,此處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個(gè)脈沖
void T1zd (void) interrupt 3 //開(kāi)定時(shí)器1中斷
{
TH1 = 0xfe; //11.0592Hz,0. 5ms初始化定時(shí)器,讓定時(shí)器復(fù)位繼續(xù)定時(shí)
TL1 = 0x33;
timerl ++;
//計(jì)數(shù)+1
}

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

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


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




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