0

在我的 ATMEGA32 开发板中,我正在使用伺服电机,我猜这会导致问题。我在组装中有两个工作子程序,它们使伺服旋转方向相反。当他们被单独呼叫时,他们绝对没问题,但是当我以 1 秒的延迟呼叫他们时,我收到了这个警告

“上次操作时发生掉电复位,请检查电源电压。”

我从我在互联网上的研究中了解到,如果我尝试将伺服旋转得太快,这可能会发生,但它可以在另一个代码中快速来回移动,是我在单独的子程序中编写它们的原因吗?但我需要这样做。

4

2 回答 2

-1

Brownout can occur when too much current is drawn through an output pin. This causes the voltage to drop too much, triggering the brownout detection. It could also occur if the power supply to the processor is overtaxed by other items on the same supply.

Are the servo motors powered by a different supply? Is there some reason in your code that the servos are drawing more power with the code changes?

This stack exchange is meant for code questions. If you post some code, there might be a fix available, but most likely it will be easier to fix your problems through hardware changes. Perhaps a better power supply, or perhaps adding a largish capacitor across the voltage supply to handle current surges.

于 2017-01-06T16:18:00.960 回答
-1

虽然这个问题可能更适合electronics.stackexchange.com 或arduino.stackexchange.com,但一种可能的解决方案非常简单。

我在Arduino (ATMEGA 2560) 上使用了几个这样的伺服电机。该应用程序是一个云台,电机可以为 Arduino 提供过多的电流。起初我的问题似乎是断断续续的:我的测试代码并不总是导致处理器重置。后来我确定掉电的发生随电机的启动位置、所需的转角等而变化(回想起来完全有道理:我没有考虑电机启动电流的需求等)。

我的解决方案是为电机提供专用的 5VDC 1.5A 电源 - 这完全解决了处理器重置问题。请注意,按照这种方法,您必须在电机和 ATMEGA32 板之间建立公共接地。

于 2017-01-06T20:36:34.913 回答