久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

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


回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

ID:105206 發(fā)表于 2017-2-15 10:33 | 顯示全部樓層
51單片機最多只能實現(xiàn)兩個步近電機同時運轉(zhuǎn)。我用的是驅(qū)動器。
回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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


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

評分

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

查看全部評分

回復

使用道具 舉報

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

同時驅(qū)動10臺步進電機都沒問題。
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

謝謝您!對我這個新手來說有點太深奧了。
回復

使用道具 舉報

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

謝謝您的指導!
回復

使用道具 舉報

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

51單片機 ...

謝謝您的指導!
回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

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

使用道具 舉報

ID:600893 發(fā)表于 2019-9-9 16:28 | 顯示全部樓層
可以  可以 打開了我的思路
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级特黄在线 | 免费一级网站 | 亚洲性在线 | 欧美另类视频在线 | 天天草天天 | 欧美日韩一二三区 | 不卡的av在线 | 久久精品二区亚洲w码 | 久久一区二区三区免费 | www.青青草| 波多野吉衣久久 | 91美女视频| 亚洲视频精品在线 | 日韩一二区 | 搞av.com| 久久精品亚洲欧美日韩久久 | 欧美精品一区二区三区在线播放 | 久久国产精品精品国产色婷婷 | 日韩字幕一区 | 精品欧美一区二区三区久久久 | www视频在线观看 | 久久九七| 欧州一区二区 | 精品国产欧美一区二区 | 国产一区二区精品在线观看 | 国产精品久久久久久妇女6080 | 精品久久久久一区二区国产 | 一区二区视频在线 | 国产一区二区 | 午夜久久久久久久久久一区二区 | 免费观看成人av | 日韩免费一区 | 正在播放国产精品 | 91久久精品一区二区三区 | 男女羞羞视频在线看 | 麻豆一区二区三区 | 欧美成人自拍视频 | 国产免费一区二区 | 超碰伊人久久 | 免费一看一级毛片 | 日韩视频―中文字幕 |