2012-10-03 67 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

相关问题