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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18457|回復(fù): 24
收起左側(cè)

一個單片機(jī)控制兩個步進(jìn)電機(jī)同時轉(zhuǎn),主函數(shù)怎么寫?

  [復(fù)制鏈接]
ID:86913 發(fā)表于 2017-2-13 11:23 | 顯示全部樓層 |閱讀模式
兩個電機(jī)分別由P0、P1口控制,并且兩個電機(jī)的運(yùn)行狀態(tài)如轉(zhuǎn)數(shù)、速度和
方向都不一樣,現(xiàn)在要求兩個電機(jī)同時開始轉(zhuǎn)動(但不同時停止),要求
動作不循環(huán),只運(yùn)轉(zhuǎn)一次。這個主函數(shù)怎么寫?請指導(dǎo)!
(下面的主函數(shù),一個電機(jī)轉(zhuǎn)完了,才轉(zhuǎn)另一個電機(jī) ,沒有用)

/********主函數(shù)********/
main()       
    {
          P0=0xff;P1=0xff;       //兩個端口同時工作   
        motor1();              //電機(jī)1轉(zhuǎn)動,它由P0口控制
        P0=0x00;               //電機(jī)1停轉(zhuǎn)
        motor2();              //電機(jī)2轉(zhuǎn)動,它由P1口控制
        P1=0x00;               //電機(jī)2停轉(zhuǎn)
    }


相關(guān)帖子

回復(fù)

使用道具 舉報

ID:227622 發(fā)表于 2018-8-8 17:39 | 顯示全部樓層
其實這個問題我也遇到過,后來查了好多資料有點(diǎn)頭緒了,因為我想做2自由度機(jī)械臂,也是要控制2個步進(jìn)電機(jī)同時運(yùn)轉(zhuǎn),后來發(fā)現(xiàn)51單片機(jī)因為只有定時器這種資源,而沒有分時操作系統(tǒng)的概念,所以我打算模仿方式操作系統(tǒng)理論,將時間分成許多小區(qū)間,然后每隔一個區(qū)間就控制一個步進(jìn)電機(jī),因為時間區(qū)間非常小,所以從宏觀上看兩個步進(jìn)電機(jī)是同時運(yùn)轉(zhuǎn)的,其實他們在互相搶奪cpu的資源,所以也是要付出驅(qū)動能力比正常驅(qū)動弱一點(diǎn)的代價,好了說一下程序的實現(xiàn),其實無非可以用定時器來實現(xiàn)每次中斷驅(qū)動步進(jìn)電機(jī)2,主函數(shù)驅(qū)動步進(jìn)電機(jī)1,要注意的是實現(xiàn)好2個步進(jìn)電機(jī)運(yùn)動的時間間隔,這又有點(diǎn)類似于動態(tài)掃描數(shù)碼管一樣了,需要一個定時器中斷來不斷掃描數(shù)碼管更新的信息,嗯,其實樓主可以自己試一下,不懂再問我。謝謝~

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:164496 發(fā)表于 2017-2-13 21:09 | 顯示全部樓層
看不到你的函數(shù)內(nèi)容,給步進(jìn)電機(jī)發(fā)脈沖應(yīng)該是用定時器去發(fā),用延時的方法讓程序發(fā)就是很不好的,用兩個定時器分別給兩個步進(jìn)電機(jī)發(fā)脈沖,什么時候發(fā)用條件,發(fā)多少用兩個不同的變量控制定時器,發(fā)的頻率用定時器的初始值

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:153041 發(fā)表于 2017-2-13 22:04 | 顯示全部樓層
按樓上說的沒錯,如果樓主非要用空循環(huán)延時,可以把moto1和moto2打散到一起,moto1走一步,然后moto2走一步,再moto1走一步.... 這樣穿插起來。。  如果要程序模塊化可讀,就采用操作系統(tǒng),建立兩個并發(fā)的任務(wù),分別控制兩個電機(jī)。。。

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-2-14 10:27 | 顯示全部樓層
謝謝樓上兩位提醒和指導(dǎo),我是新手,剛開始是學(xué)延時函數(shù)的,定時器還不會,如果有定時器控制兩個電機(jī)同時轉(zhuǎn)動的這種例子,請發(fā)一個給我,非常感謝!
“把moto1和moto2打散到一起,moto1走一步,然后moto2走一步,再moto1走一步.... 這樣穿插起來!蔽乙郧霸囘^的就是這種方式的,這不是我想學(xué)的。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:164429 發(fā)表于 2017-2-14 14:42 | 顯示全部樓層
把引腳狀態(tài)改變?nèi)诺蕉〞r器中,時間到了改變一個,不管有多少到了改變就好了加油

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2017-2-14 19:27 | 顯示全部樓層
兩個、十個一樣做,看你如何構(gòu)思。
基本上會做一個就能做十個。
電機(jī)的響應(yīng)速度遠(yuǎn)小于單片機(jī)。各電機(jī)的驅(qū)動錯開,盡可能將相同或類似的程序部分做成子程序調(diào)用。多用中斷,合理分配各電機(jī)的驅(qū)動控制時間。千萬不可讓程序死在一個電機(jī)上運(yùn)行,即不允許有死待某個條件變量的函數(shù)。

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:164687 發(fā)表于 2017-2-15 03:43 | 顯示全部樓層
電機(jī)的響應(yīng)速度遠(yuǎn)小于單片機(jī)。各電機(jī)的驅(qū)動錯開,盡可能將相同或類似的程序部分做成子程序調(diào)用。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

8#
無效樓層,該帖已經(jīng)被刪除
ID:105206 發(fā)表于 2017-2-15 10:33 | 顯示全部樓層
51單片機(jī)最多只能實現(xiàn)兩個步近電機(jī)同時運(yùn)轉(zhuǎn)。我用的是驅(qū)動器。
回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-2-16 21:08 | 顯示全部樓層
這樣的要求能編出程序員嗎?請看圖上要求。哪位高手幫幫我編制個C語言程序-----  一個單片機(jī)控制兩個步進(jìn)電機(jī)同時啟動。單片機(jī)為STC89C52,驅(qū)動器L298N。先謝謝了! 2017-02-16 11 26 55.png

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2017-2-17 08:59 | 顯示全部樓層
首先,51單片機(jī)是簡單的處理器,單線程,不可能真正意義上的“同時”運(yùn)行兩個子程序(函數(shù))。

51單片機(jī)相對高級的處理器來說,雖說運(yùn)行的速度不高,可也是us級的速度,相比步進(jìn)電機(jī)的運(yùn)行波形來說,差著幾個數(shù)量級的。所以用“分時段”來控制2臺步進(jìn)電機(jī)是一點(diǎn)問題都沒有。因為控制程序中單片機(jī)將絕大部分時間用來延時。
如果使用程序循環(huán)來延時,單片機(jī)將時鐘沒有空閑時間。
但是如果用定時器來延時,在延時過程中,單片機(jī)就可以騰出手來做其他事情。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:105206 發(fā)表于 2017-2-17 10:34 | 顯示全部樓層
我覺得51只能做兩個,不知各位攢不攢同。


我是同時按不同的驅(qū)動,相互不干擾,等待。我用的是驅(qū)動器驅(qū)動步進(jìn)馬達(dá)。

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2017-2-17 21:59 | 顯示全部樓層
jubaolun 發(fā)表于 2017-2-17 10:34
我覺得51只能做兩個,不知各位攢不攢同。

同時驅(qū)動10臺步進(jìn)電機(jī)都沒問題。
回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-2-18 16:08 | 顯示全部樓層
各位高手,能否提供一個采用定時器的,控制兩個電機(jī) 的C語言程序,非常感謝!
回復(fù)

使用道具 舉報

ID:105206 發(fā)表于 2017-2-18 20:09 | 顯示全部樓層
如果51能做10個,3軸打印不就可以用51單片機(jī)了。您覺得勒。
回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-3-20 09:15 | 顯示全部樓層
MAIKER 發(fā)表于 2017-2-13 21:09
看不到你的函數(shù)內(nèi)容,給步進(jìn)電機(jī)發(fā)脈沖應(yīng)該是用定時器去發(fā),用延時的方法讓程序發(fā)就是很不好的,用兩個定時 ...

謝謝您,您好的意思我大致懂了,就是編程序太難了,沒有一個示例比較難!
回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-3-20 09:18 | 顯示全部樓層
utzuzu 發(fā)表于 2017-2-13 22:04
按樓上說的沒錯,如果樓主非要用空循環(huán)延時,可以把moto1和moto2打散到一起,moto1走一步,然后moto2走一步 ...

謝謝您!對我這個新手來說有點(diǎn)太深奧了。
回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-3-20 09:18 | 顯示全部樓層
1053356130 發(fā)表于 2017-2-14 14:42
把引腳狀態(tài)改變?nèi)诺蕉〞r器中,時間到了改變一個,不管有多少到了改變就好了加油

謝謝您的指導(dǎo)!
回復(fù)

使用道具 舉報

ID:86913 發(fā)表于 2017-3-20 09:21 | 顯示全部樓層
ahshmj 發(fā)表于 2017-2-17 08:59
首先,51單片機(jī)是簡單的處理器,單線程,不可能真正意義上的“同時”運(yùn)行兩個子程序(函數(shù))。

51單片機(jī) ...

謝謝您的指導(dǎo)!
回復(fù)

使用道具 舉報

ID:227622 發(fā)表于 2018-3-22 19:06 | 顯示全部樓層
如果要實現(xiàn)精確的控制,最好給步進(jìn)電機(jī)發(fā)脈沖用定時器去計數(shù),用延時的方法讓程序發(fā)就是很不好的,用兩個定時器分別給兩個步進(jìn)電機(jī)發(fā)脈沖,此外,還可以通過各電機(jī)的驅(qū)動錯開,盡可能將相同或類似的程序部分做成子程序調(diào)用,也可以實現(xiàn)這功能

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:379643 發(fā)表于 2018-8-8 18:03 | 顯示全部樓層
學(xué)習(xí)
回復(fù)

使用道具 舉報

23#
無效樓層,該帖已經(jīng)被刪除
ID:600893 發(fā)表于 2019-9-9 16:28 | 顯示全部樓層
可以  可以 打開了我的思路
回復(fù)

使用道具 舉報

ID:468238 發(fā)表于 2019-9-10 15:13 | 顯示全部樓層
你可以通過時間片來進(jìn)行操作   每一毫秒進(jìn)行一個任務(wù)    這樣解決電機(jī)問題
回復(fù)

使用道具 舉報

26#
無效樓層,該帖已經(jīng)被刪除
ID:315853 發(fā)表于 2019-9-10 15:58 | 顯示全部樓層
將P0=0x00、P1=0x00抽出,寫個while,while里面寫個if判斷左右輪在什么情況下分別執(zhí)行P0=0x00、P1=0x00,同時避免無效if重復(fù)執(zhí)行,都停止結(jié)束就執(zhí)行while空語句
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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