2012-10-03 63 views
0

我需要控制自動Arduino Uno機器人的速度,但我一直受到限制。我無法使用任何MCU庫,例如analogWrite,MCU的任何硬件設備或模塊(定時器)。使用Arduino Uno控制電機的速度而不使用analogWrite?

我曾經想過,只需很小的時間間隔關閉和啓動馬達,然後將其放入一個循環中。但是我正在試圖找到一種更高效,更乾淨的方式。我需要能夠將速度控制在正常速度的75%,50%和25%,並且打開和關閉電機,這變得很複雜。

如何以更高效的方式控制電機的轉速?

+0

你爲什麼被限制?這些限制聽起來很荒謬。 –

+0

好吧,在你提到的限制條件下,沒有很多其他選項。按照您描述的方式控制電機的速度是最有意義的。你被允許使用不同種類的電機,還是這種限制?如果沒有,爲什麼不考慮使用步進電機?我對你使用的硬件並不熟悉,你可以從電機位置/角度/期望得到什麼樣的反饋?如果你可以使用fb,你應該能夠更精確地控制你的電機。 –

回答

0

你說你有一些非常嚴格的條件:

我不能使用任何MCU庫,如analogWrite,從MCU(定時器)的任何硬件設備或模塊。

得到一個motor controller with a serial interface並且只要你想改變速度,位串聯幾個串行字節就可以了。你只需要將Arduino的GND連接到控制器的GND,選擇一個Arduino引腳作爲TX線,並將該引腳連接到控制器的RX線。然後使用digitalWrite和delayMicroseconds來對某些串行字節進行位反轉。

+0

請勿使用位反轉。 Arduino中使用的AVR具有適當的內置USART(串口至USB)硬件,應該絕對使用它。作爲一般的經驗法則,在嵌入式編程的情況下,如果可能的話儘可能多地使用內置硬件來完成,軟件仿真更加昂貴,因此被認爲是不好的做法。 – 2012-10-03 04:54:36

+0

@ H2CO3:請閱讀原始問題,其中寫明「我不能使用任何MCU庫,例如analogWrite,MCU的任何硬件設備或模塊(定時器)。」所以我會感激upvote。 –

+0

對,我刪除了我的答案。 – 2012-10-03 18:19:35

相關問題