欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 有沒有辦法能讓51單片機控制多路步進電機時,各個電機獨立控制,互不干擾? [打印本頁]

作者: 叫大個不叫老朱    時間: 2023-1-13 15:19
標題: 有沒有辦法能讓51單片機控制多路步進電機時,各個電機獨立控制,互不干擾?
遇到一個問題,我用Delay函數做延時語句時,一路步進電機減速時,其他電機也跟著減速,有沒有什么辦法能解決呢?
作者: npn    時間: 2023-1-13 21:17
程序邏輯有問題,控制多個步進電機用定時器中斷。
作者: ziiyn    時間: 2023-1-13 22:09
用定時器產生脈沖,一個定時器控制一路電機。一般單片機都有2個以上定時器
作者: a185980800    時間: 2023-1-13 23:03
不用Delay,改定時器用。
作者: 叫大個不叫老朱    時間: 2023-1-14 12:08
ziiyn 發(fā)表于 2023-1-13 22:09
用定時器產生脈沖,一個定時器控制一路電機。一般單片機都有2個以上定時器

如果控制4路呢,52單片機只有兩個定時器
作者: 叫大個不叫老朱    時間: 2023-1-14 12:10
npn 發(fā)表于 2023-1-13 21:17
程序邏輯有問題,控制多個步進電機用定時器中斷。

控制4路步進電機要怎么分配定時器呢?
作者: ziiyn    時間: 2023-1-14 15:50
叫大個不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機只有兩個定時器

換單片機,STC15有3路定時器加PCA模塊配成1路定時器。或者直接換成有5個定時器的單片機,按鍵掃描和顯示之類的最好再用一個定時器
作者: ziiyn    時間: 2023-1-14 15:52
叫大個不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機只有兩個定時器

非要用52的話就只有用兩個單片機,兩個單片機進行通訊聯動控制
作者: ziiyn    時間: 2023-1-14 15:54
叫大個不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機只有兩個定時器

我記得52有T0 ,T1 ,T2, 3個定時器的吧
作者: lkc8210    時間: 2023-1-14 17:52
本帖最后由 lkc8210 于 2023-1-14 20:33 編輯
叫大個不叫老朱 發(fā)表于 2023-1-14 12:08
如果控制4路呢,52單片機只有兩個定時器

用一個定時器產生四個心跳標志位
各步進根據各自的標志位逐步輸出
作者: npn    時間: 2023-1-14 20:25
叫大個不叫老朱 發(fā)表于 2023-1-14 12:10
控制4路步進電機要怎么分配定時器呢?

用74HC595控制100路都可以。
作者: 明記冷氣    時間: 2023-1-15 00:07
用延時程序會造成整個程序大部分時間都卡在 延時上,,,整個程序運行效率不高
要學會用定時器,無論你控制幾個電機  只要一個定時器就夠了
利用定時器中斷產生時間基準,如1ms
當定時器進入中斷后 變臉自加加
當加到你需要的值時候  換相 , 處理完記得清零變量
這樣你要控制多個電機不同轉速  只要聲明幾個相應變量 即可

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



作者: 叫大個不叫老朱    時間: 2023-1-15 00:52
ziiyn 發(fā)表于 2023-1-14 15:54
我記得52有T0 ,T1 ,T2, 3個定時器的吧

是的,我記錯了,尷尬
作者: 叫大個不叫老朱    時間: 2023-1-15 00:55
ziiyn 發(fā)表于 2023-1-14 15:52
非要用52的話就只有用兩個單片機,兩個單片機進行通訊聯動控制

聯動控制應該可以的,顯示和檢測用一個單片機,動作部分用另一個單片機
作者: 明記冷氣    時間: 2023-1-15 09:48
叫大個不叫老朱 發(fā)表于 2023-1-15 00:55
聯動控制應該可以的,顯示和檢測用一個單片機,動作部分用另一個單片機

只要單片機IO足夠,并且顯示不是很復雜一個單片機就可以處理,
作者: 624353765    時間: 2023-1-15 09:58
學過紅外線發(fā)射函數嗎?使用一個定時器就能同時控制多個步進電機,通過載波把步進電機所有信號載入波形中
作者: ningsy    時間: 2023-1-16 07:08
真正寫程序時用定時器,不用delay。
作者: 叫大個不叫老朱    時間: 2023-1-16 07:21
明記冷氣 發(fā)表于 2023-1-15 09:48
只要單片機IO足夠,并且顯示不是很復雜一個單片機就可以處理,

數碼管動態(tài)顯示和步進電機需要同時工作,還要加入光電檢測,我在網上找了很久沒有解決辦法,大部分都說需要兩個單片機
作者: 叫大個不叫老朱    時間: 2023-1-16 07:23
qq624353765 發(fā)表于 2023-1-15 09:58
學過紅外線發(fā)射函數嗎?使用一個定時器就能同時控制多個步進電機,通過載波把步進電機所有信號載入波形中

哈哈,還沒學,我現在去學,我自己DIY一個機器,0基礎開始學,用到什么學什么,有思路我就一定能做出來
作者: 叫大個不叫老朱    時間: 2023-1-16 07:33
qq624353765 發(fā)表于 2023-1-15 09:58
學過紅外線發(fā)射函數嗎?使用一個定時器就能同時控制多個步進電機,通過載波把步進電機所有信號載入波形中

我要實現的是兩個以上的步進電機在某一時段同時工作,其中某個步進電機減速,但是其他步進還能正常運轉,紅外能實現嗎
作者: ningsy    時間: 2023-1-16 11:53
叫大個不叫老朱 發(fā)表于 2023-1-16 07:21
數碼管動態(tài)顯示和步進電機需要同時工作,還要加入光電檢測,我在網上找了很久沒有解決辦法,大部分都說需 ...

用STC8H8K64U,有5個定時器,64kb flash,一片就夠了。STC8H1K08系列有3個定時器,flash也小多了只有8K不一定夠用,代碼還要復雜一點點,能省幾塊錢,如果是做設備沒必要。
作者: STC莊偉    時間: 2023-1-16 14:23
用 STC8G2K64S4-36I-LQFP48/LQFP32, 有 45路步進電機專用增強型15位PWM, 可以同時控制 45路 步進電機
作者: zgrfox110    時間: 2023-1-18 07:59
用一個定時器就行,定時時間短點,然后各電機的時間累加。判斷到時間了就控制電機信號或標志位!
作者: 叫大個不叫老朱    時間: 2023-1-18 11:19
STC莊偉 發(fā)表于 2023-1-16 14:23
用 STC8G2K64S4-36I-LQFP48/LQFP32, 有 45路步進電機專用增強型15位PWM, 可以同時控制 45路 步進電機

我感覺我可能不會用
作者: 叫大個不叫老朱    時間: 2023-1-18 11:41
明記冷氣 發(fā)表于 2023-1-15 00:07
用延時程序會造成整個程序大部分時間都卡在 延時上,,,整個程序運行效率不高
要學會用定時器,無論你控制幾 ...

這個思路是啟動時間不同吧,脈沖發(fā)生頻率應該要怎樣呢
作者: 叫大個不叫老朱    時間: 2023-1-18 11:44
lkc8210 發(fā)表于 2023-1-14 17:52
用一個定時器產生四個心跳標志位
各步進根據各自的標志位逐步輸出

這個對我來說就有點超綱了,剛接觸單片機不久
作者: Hjc12345678    時間: 2023-1-19 17:51
lkc8210 發(fā)表于 2023-1-14 17:52
用一個定時器產生四個心跳標志位
各步進根據各自的標志位逐步輸出

如果定時時間允許,這個方法很好!!!
作者: 明記冷氣    時間: 2023-1-20 20:58
叫大個不叫老朱 發(fā)表于 2023-1-18 11:41
這個思路是啟動時間不同吧,脈沖發(fā)生頻率應該要怎樣呢

這只是一個讓幾個步進電機可以在不同轉速下運行的思路;
你要隨意調速 把if里面的固定條件換成變量
在其他地方賦值一下就可以改變轉速了
如果你想控制啟停  在if命令里追加上另一個條件即可
有了思路 自己去探索 才能真正學到東西

作者: 叫大個不叫老朱    時間: 2023-1-21 22:22
明記冷氣 發(fā)表于 2023-1-20 20:58
這只是一個讓幾個步進電機可以在不同轉速下運行的思路;
你要隨意調速 把if里面的固定條件換成變量
在 ...

我用開發(fā)板測試了一下,數碼管也帶起來了,我是改變的定時器初值,不過這樣定時器就比較局限,控制進入定時器次數應該可以更好
作者: 叫大個不叫老朱    時間: 2023-1-21 22:24
Hjc12345678 發(fā)表于 2023-1-19 17:51
如果定時時間允許,這個方法很好!!!

能詳細一點嗎,怎么用一個定時器產生四個標志位呢,不斷裝入初值嗎
作者: ningsy    時間: 2023-1-26 12:22
電機需要獨立實時調速嗎?那樣要一個電機一個定時器比較好。如果只是轉起來,共用一個定時器也行,產生4個標志位。
作者: ebrowser    時間: 2023-1-27 09:32
試試多線程
作者: lkc8210    時間: 2023-1-27 10:26
叫大個不叫老朱 發(fā)表于 2023-1-21 22:24
能詳細一點嗎,怎么用一個定時器產生四個標志位呢,不斷裝入初值嗎

參考一下


作者: 叫大個不叫老朱    時間: 2023-1-28 21:53
ebrowser 發(fā)表于 2023-1-27 09:32
試試多線程

多線程成本高了
作者: 叫大個不叫老朱    時間: 2023-1-28 21:54
ningsy 發(fā)表于 2023-1-26 12:22
電機需要獨立實時調速嗎?那樣要一個電機一個定時器比較好。如果只是轉起來,共用一個定時器也行,產生4個 ...

部分電機同時啟動,但是不是同時停止
作者: 機械神童    時間: 2023-1-29 11:11
明記冷氣 發(fā)表于 2023-1-15 00:07
用延時程序會造成整個程序大部分時間都卡在 延時上,,,整個程序運行效率不高
要學會用定時器,無論你控制幾 ...

兄弟解答詳細,學習了,牛XXX
作者: .小破孩    時間: 2023-3-31 17:18
單片機在delay,肯定等delay完了才會去發(fā)脈沖,所以不能用delay。用定時器試試




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