找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4664|回復(fù): 36
打印 上一主題 下一主題
收起左側(cè)

有沒(méi)有辦法能讓51單片機(jī)控制多路步進(jìn)電機(jī)時(shí),各個(gè)電機(jī)獨(dú)立控制,互不干擾?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1055885 發(fā)表于 2023-1-13 15:19 來(lái)自觸屏版 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
遇到一個(gè)問(wèn)題,我用Delay函數(shù)做延時(shí)語(yǔ)句時(shí),一路步進(jìn)電機(jī)減速時(shí),其他電機(jī)也跟著減速,有沒(méi)有什么辦法能解決呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:57657 發(fā)表于 2023-1-13 21:17 | 只看該作者
程序邏輯有問(wèn)題,控制多個(gè)步進(jìn)電機(jī)用定時(shí)器中斷。
回復(fù)

使用道具 舉報(bào)

板凳
ID:152164 發(fā)表于 2023-1-13 22:09 | 只看該作者
用定時(shí)器產(chǎn)生脈沖,一個(gè)定時(shí)器控制一路電機(jī)。一般單片機(jī)都有2個(gè)以上定時(shí)器
回復(fù)

使用道具 舉報(bào)

地板
ID:857072 發(fā)表于 2023-1-13 23:03 來(lái)自觸屏版 | 只看該作者
不用Delay,改定時(shí)器用。
回復(fù)

使用道具 舉報(bào)

5#
ID:1055885 發(fā)表于 2023-1-14 12:08 來(lái)自觸屏版 | 只看該作者
ziiyn 發(fā)表于 2023-1-13 22:09
用定時(shí)器產(chǎn)生脈沖,一個(gè)定時(shí)器控制一路電機(jī)。一般單片機(jī)都有2個(gè)以上定時(shí)器

如果控制4路呢,52單片機(jī)只有兩個(gè)定時(shí)器
回復(fù)

使用道具 舉報(bào)

6#
ID:1055885 發(fā)表于 2023-1-14 12:10 來(lái)自觸屏版 | 只看該作者
npn 發(fā)表于 2023-1-13 21:17
程序邏輯有問(wèn)題,控制多個(gè)步進(jìn)電機(jī)用定時(shí)器中斷。

控制4路步進(jìn)電機(jī)要怎么分配定時(shí)器呢?
回復(fù)

使用道具 舉報(bào)

7#
ID:152164 發(fā)表于 2023-1-14 15:50 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機(jī)只有兩個(gè)定時(shí)器

換單片機(jī),STC15有3路定時(shí)器加PCA模塊配成1路定時(shí)器;蛘咧苯訐Q成有5個(gè)定時(shí)器的單片機(jī),按鍵掃描和顯示之類(lèi)的最好再用一個(gè)定時(shí)器
回復(fù)

使用道具 舉報(bào)

8#
ID:152164 發(fā)表于 2023-1-14 15:52 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機(jī)只有兩個(gè)定時(shí)器

非要用52的話(huà)就只有用兩個(gè)單片機(jī),兩個(gè)單片機(jī)進(jìn)行通訊聯(lián)動(dòng)控制
回復(fù)

使用道具 舉報(bào)

9#
ID:152164 發(fā)表于 2023-1-14 15:54 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機(jī)只有兩個(gè)定時(shí)器

我記得52有T0 ,T1 ,T2, 3個(gè)定時(shí)器的吧
回復(fù)

使用道具 舉報(bào)

10#
ID:161164 發(fā)表于 2023-1-14 17:52 | 只看該作者
本帖最后由 lkc8210 于 2023-1-14 20:33 編輯
叫大個(gè)不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機(jī)只有兩個(gè)定時(shí)器

用一個(gè)定時(shí)器產(chǎn)生四個(gè)心跳標(biāo)志位
各步進(jìn)根據(jù)各自的標(biāo)志位逐步輸出
回復(fù)

使用道具 舉報(bào)

11#
ID:57657 發(fā)表于 2023-1-14 20:25 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-14 12:10
控制4路步進(jìn)電機(jī)要怎么分配定時(shí)器呢?

用74HC595控制100路都可以。
回復(fù)

使用道具 舉報(bào)

12#
ID:408539 發(fā)表于 2023-1-15 00:07 | 只看該作者
用延時(shí)程序會(huì)造成整個(gè)程序大部分時(shí)間都卡在 延時(shí)上,,,整個(gè)程序運(yùn)行效率不高
要學(xué)會(huì)用定時(shí)器,無(wú)論你控制幾個(gè)電機(jī)  只要一個(gè)定時(shí)器就夠了
利用定時(shí)器中斷產(chǎn)生時(shí)間基準(zhǔn),如1ms
當(dāng)定時(shí)器進(jìn)入中斷后 變臉自加加
當(dāng)加到你需要的值時(shí)候  換相 , 處理完記得清零變量
這樣你要控制多個(gè)電機(jī)不同轉(zhuǎn)速  只要聲明幾個(gè)相應(yīng)變量 即可

void TM0_Isr() interrupt 1
{
motor1++;//電機(jī)1
motor2++;//電機(jī)2
motor3++;電機(jī)3
motor4++;電機(jī)4
}
void main()
{
    TMOD = 0x00;
    TL0 = 0x66;                                 //65536-11.0592M/12/1000
    TH0 = 0xfc;
    TR0 = 1;                                    //啟動(dòng)定時(shí)器
    ET0 = 1;                                    //使能定時(shí)器中斷
    EA = 1;
    while (1){if(motor1==10){motor1=0;     }  //判斷是否=10Ms   清空變量   然后電機(jī)1換相
if(motor2==20){motor2=0;     } //判斷是否=20Ms   清空變量   然后電機(jī)2換相
if(motor3==30){motor3=0;     } //判斷是否=30Ms   清空變量   然后電機(jī)2換相
if(motor4==40){motor4=0;     }//判斷是否=40Ms   清空變量   然后電機(jī)2換相
}
按這個(gè)思路就算10個(gè)電機(jī)不同轉(zhuǎn)速都不會(huì)卡


回復(fù)

使用道具 舉報(bào)

13#
ID:1055885 發(fā)表于 2023-1-15 00:52 來(lái)自觸屏版 | 只看該作者
ziiyn 發(fā)表于 2023-1-14 15:54
我記得52有T0 ,T1 ,T2, 3個(gè)定時(shí)器的吧

是的,我記錯(cuò)了,尷尬
回復(fù)

使用道具 舉報(bào)

14#
ID:1055885 發(fā)表于 2023-1-15 00:55 來(lái)自觸屏版 | 只看該作者
ziiyn 發(fā)表于 2023-1-14 15:52
非要用52的話(huà)就只有用兩個(gè)單片機(jī),兩個(gè)單片機(jī)進(jìn)行通訊聯(lián)動(dòng)控制

聯(lián)動(dòng)控制應(yīng)該可以的,顯示和檢測(cè)用一個(gè)單片機(jī),動(dòng)作部分用另一個(gè)單片機(jī)
回復(fù)

使用道具 舉報(bào)

15#
ID:408539 發(fā)表于 2023-1-15 09:48 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-15 00:55
聯(lián)動(dòng)控制應(yīng)該可以的,顯示和檢測(cè)用一個(gè)單片機(jī),動(dòng)作部分用另一個(gè)單片機(jī)

只要單片機(jī)IO足夠,并且顯示不是很復(fù)雜一個(gè)單片機(jī)就可以處理,
回復(fù)

使用道具 舉報(bào)

16#
ID:526108 發(fā)表于 2023-1-15 09:58 | 只看該作者
學(xué)過(guò)紅外線(xiàn)發(fā)射函數(shù)嗎?使用一個(gè)定時(shí)器就能同時(shí)控制多個(gè)步進(jìn)電機(jī),通過(guò)載波把步進(jìn)電機(jī)所有信號(hào)載入波形中
回復(fù)

使用道具 舉報(bào)

17#
ID:1044091 發(fā)表于 2023-1-16 07:08 來(lái)自觸屏版 | 只看該作者
真正寫(xiě)程序時(shí)用定時(shí)器,不用delay。
回復(fù)

使用道具 舉報(bào)

18#
ID:1055885 發(fā)表于 2023-1-16 07:21 來(lái)自觸屏版 | 只看該作者
明記冷氣 發(fā)表于 2023-1-15 09:48
只要單片機(jī)IO足夠,并且顯示不是很復(fù)雜一個(gè)單片機(jī)就可以處理,

數(shù)碼管動(dòng)態(tài)顯示和步進(jìn)電機(jī)需要同時(shí)工作,還要加入光電檢測(cè),我在網(wǎng)上找了很久沒(méi)有解決辦法,大部分都說(shuō)需要兩個(gè)單片機(jī)
回復(fù)

使用道具 舉報(bào)

19#
ID:1055885 發(fā)表于 2023-1-16 07:23 來(lái)自觸屏版 | 只看該作者
qq624353765 發(fā)表于 2023-1-15 09:58
學(xué)過(guò)紅外線(xiàn)發(fā)射函數(shù)嗎?使用一個(gè)定時(shí)器就能同時(shí)控制多個(gè)步進(jìn)電機(jī),通過(guò)載波把步進(jìn)電機(jī)所有信號(hào)載入波形中

哈哈,還沒(méi)學(xué),我現(xiàn)在去學(xué),我自己DIY一個(gè)機(jī)器,0基礎(chǔ)開(kāi)始學(xué),用到什么學(xué)什么,有思路我就一定能做出來(lái)
回復(fù)

使用道具 舉報(bào)

20#
ID:1055885 發(fā)表于 2023-1-16 07:33 來(lái)自觸屏版 | 只看該作者
qq624353765 發(fā)表于 2023-1-15 09:58
學(xué)過(guò)紅外線(xiàn)發(fā)射函數(shù)嗎?使用一個(gè)定時(shí)器就能同時(shí)控制多個(gè)步進(jìn)電機(jī),通過(guò)載波把步進(jìn)電機(jī)所有信號(hào)載入波形中

我要實(shí)現(xiàn)的是兩個(gè)以上的步進(jìn)電機(jī)在某一時(shí)段同時(shí)工作,其中某個(gè)步進(jìn)電機(jī)減速,但是其他步進(jìn)還能正常運(yùn)轉(zhuǎn),紅外能實(shí)現(xiàn)嗎
回復(fù)

使用道具 舉報(bào)

21#
ID:1044091 發(fā)表于 2023-1-16 11:53 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-16 07:21
數(shù)碼管動(dòng)態(tài)顯示和步進(jìn)電機(jī)需要同時(shí)工作,還要加入光電檢測(cè),我在網(wǎng)上找了很久沒(méi)有解決辦法,大部分都說(shuō)需 ...

用STC8H8K64U,有5個(gè)定時(shí)器,64kb flash,一片就夠了。STC8H1K08系列有3個(gè)定時(shí)器,flash也小多了只有8K不一定夠用,代碼還要復(fù)雜一點(diǎn)點(diǎn),能省幾塊錢(qián),如果是做設(shè)備沒(méi)必要。
回復(fù)

使用道具 舉報(bào)

22#
ID:961114 發(fā)表于 2023-1-16 14:23 | 只看該作者
用 STC8G2K64S4-36I-LQFP48/LQFP32, 有 45路步進(jìn)電機(jī)專(zhuān)用增強(qiáng)型15位PWM, 可以同時(shí)控制 45路 步進(jìn)電機(jī)
回復(fù)

使用道具 舉報(bào)

23#
ID:525244 發(fā)表于 2023-1-18 07:59 來(lái)自觸屏版 | 只看該作者
用一個(gè)定時(shí)器就行,定時(shí)時(shí)間短點(diǎn),然后各電機(jī)的時(shí)間累加。判斷到時(shí)間了就控制電機(jī)信號(hào)或標(biāo)志位!
回復(fù)

使用道具 舉報(bào)

24#
ID:1055885 發(fā)表于 2023-1-18 11:19 來(lái)自觸屏版 | 只看該作者
STC莊偉 發(fā)表于 2023-1-16 14:23
用 STC8G2K64S4-36I-LQFP48/LQFP32, 有 45路步進(jìn)電機(jī)專(zhuān)用增強(qiáng)型15位PWM, 可以同時(shí)控制 45路 步進(jìn)電機(jī)

我感覺(jué)我可能不會(huì)用
回復(fù)

使用道具 舉報(bào)

25#
ID:1055885 發(fā)表于 2023-1-18 11:41 來(lái)自觸屏版 | 只看該作者
明記冷氣 發(fā)表于 2023-1-15 00:07
用延時(shí)程序會(huì)造成整個(gè)程序大部分時(shí)間都卡在 延時(shí)上,,,整個(gè)程序運(yùn)行效率不高
要學(xué)會(huì)用定時(shí)器,無(wú)論你控制幾 ...

這個(gè)思路是啟動(dòng)時(shí)間不同吧,脈沖發(fā)生頻率應(yīng)該要怎樣呢
回復(fù)

使用道具 舉報(bào)

26#
ID:1055885 發(fā)表于 2023-1-18 11:44 來(lái)自觸屏版 | 只看該作者
lkc8210 發(fā)表于 2023-1-14 17:52
用一個(gè)定時(shí)器產(chǎn)生四個(gè)心跳標(biāo)志位
各步進(jìn)根據(jù)各自的標(biāo)志位逐步輸出

這個(gè)對(duì)我來(lái)說(shuō)就有點(diǎn)超綱了,剛接觸單片機(jī)不久
回復(fù)

使用道具 舉報(bào)

27#
ID:1003077 發(fā)表于 2023-1-19 17:51 | 只看該作者
lkc8210 發(fā)表于 2023-1-14 17:52
用一個(gè)定時(shí)器產(chǎn)生四個(gè)心跳標(biāo)志位
各步進(jìn)根據(jù)各自的標(biāo)志位逐步輸出

如果定時(shí)時(shí)間允許,這個(gè)方法很好。!
回復(fù)

使用道具 舉報(bào)

28#
ID:408539 發(fā)表于 2023-1-20 20:58 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-18 11:41
這個(gè)思路是啟動(dòng)時(shí)間不同吧,脈沖發(fā)生頻率應(yīng)該要怎樣呢

這只是一個(gè)讓幾個(gè)步進(jìn)電機(jī)可以在不同轉(zhuǎn)速下運(yùn)行的思路;
你要隨意調(diào)速 把if里面的固定條件換成變量
在其他地方賦值一下就可以改變轉(zhuǎn)速了
如果你想控制啟停  在if命令里追加上另一個(gè)條件即可
有了思路 自己去探索 才能真正學(xué)到東西
回復(fù)

使用道具 舉報(bào)

29#
ID:1055885 發(fā)表于 2023-1-21 22:22 來(lái)自觸屏版 | 只看該作者
明記冷氣 發(fā)表于 2023-1-20 20:58
這只是一個(gè)讓幾個(gè)步進(jìn)電機(jī)可以在不同轉(zhuǎn)速下運(yùn)行的思路;
你要隨意調(diào)速 把if里面的固定條件換成變量
在 ...

我用開(kāi)發(fā)板測(cè)試了一下,數(shù)碼管也帶起來(lái)了,我是改變的定時(shí)器初值,不過(guò)這樣定時(shí)器就比較局限,控制進(jìn)入定時(shí)器次數(shù)應(yīng)該可以更好
回復(fù)

使用道具 舉報(bào)

30#
ID:1055885 發(fā)表于 2023-1-21 22:24 來(lái)自觸屏版 | 只看該作者
Hjc12345678 發(fā)表于 2023-1-19 17:51
如果定時(shí)時(shí)間允許,這個(gè)方法很好。!

能詳細(xì)一點(diǎn)嗎,怎么用一個(gè)定時(shí)器產(chǎn)生四個(gè)標(biāo)志位呢,不斷裝入初值嗎
回復(fù)

使用道具 舉報(bào)

31#
ID:1044091 發(fā)表于 2023-1-26 12:22 來(lái)自觸屏版 | 只看該作者
電機(jī)需要獨(dú)立實(shí)時(shí)調(diào)速嗎?那樣要一個(gè)電機(jī)一個(gè)定時(shí)器比較好。如果只是轉(zhuǎn)起來(lái),共用一個(gè)定時(shí)器也行,產(chǎn)生4個(gè)標(biāo)志位。
回復(fù)

使用道具 舉報(bào)

32#
ID:1061592 發(fā)表于 2023-1-27 09:32 | 只看該作者
試試多線(xiàn)程
回復(fù)

使用道具 舉報(bào)

33#
ID:161164 發(fā)表于 2023-1-27 10:26 | 只看該作者
叫大個(gè)不叫老朱 發(fā)表于 2023-1-21 22:24
能詳細(xì)一點(diǎn)嗎,怎么用一個(gè)定時(shí)器產(chǎn)生四個(gè)標(biāo)志位呢,不斷裝入初值嗎

參考一下

回復(fù)

使用道具 舉報(bào)

34#
ID:1055885 發(fā)表于 2023-1-28 21:53 來(lái)自觸屏版 | 只看該作者
ebrowser 發(fā)表于 2023-1-27 09:32
試試多線(xiàn)程

多線(xiàn)程成本高了
回復(fù)

使用道具 舉報(bào)

35#
ID:1055885 發(fā)表于 2023-1-28 21:54 來(lái)自觸屏版 | 只看該作者
ningsy 發(fā)表于 2023-1-26 12:22
電機(jī)需要獨(dú)立實(shí)時(shí)調(diào)速嗎?那樣要一個(gè)電機(jī)一個(gè)定時(shí)器比較好。如果只是轉(zhuǎn)起來(lái),共用一個(gè)定時(shí)器也行,產(chǎn)生4個(gè) ...

部分電機(jī)同時(shí)啟動(dòng),但是不是同時(shí)停止
回復(fù)

使用道具 舉報(bào)

36#
ID:1061711 發(fā)表于 2023-1-29 11:11 | 只看該作者
明記冷氣 發(fā)表于 2023-1-15 00:07
用延時(shí)程序會(huì)造成整個(gè)程序大部分時(shí)間都卡在 延時(shí)上,,,整個(gè)程序運(yùn)行效率不高
要學(xué)會(huì)用定時(shí)器,無(wú)論你控制幾 ...

兄弟解答詳細(xì),學(xué)習(xí)了,牛XXX
回復(fù)

使用道具 舉報(bào)

37#
ID:285175 發(fā)表于 2023-3-31 17:18 | 只看該作者
單片機(jī)在delay,肯定等delay完了才會(huì)去發(fā)脈沖,所以不能用delay。用定時(shí)器試試
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表