突然移除 Arduino 电源是否安全?

电器工程 Arduino 力量 avr
2022-01-17 15:37:25

如果我有一个 Arduino,我可以在不损坏它的情况下突然打开和关闭电源吗?如果我正在设计具有开/关开关的产品,我是否需要在关闭电源之前加入延迟,以便微控制器可以进行某种彻底的关闭?或者只需将 SPST 开关连接到 Arduino 的电源线就可以了吗?

(通过设计产品,我的意思是在带有其他组件的定制板上独立使用带有 Arduino 代码的 ATmega。)

编辑:通过 Arduino,我的意思是闪烁 Arduino 引导加载程序,这样我就可以在 Arduino 而不是 AVR 中编程。我要使用的芯片是 Atmel atmega328P 我不需要任何 EEPROM 使用。

3个回答

是的,突然关闭 Arduino 是安全的。

嗯,基本上是安全的。

各种 Arduino 中使用的处理器具有三种类型的内存:

  1. Flash - 存储程序的位置。您的程序可以从这里读取内容,但不能写入。

  2. RAM - 程序运行时保存程序变量的位置。当您关闭 Arduino 时,此处的数据会消失。你的程序在这里不断地读写。

  3. EEPROM - 您的程序可以存储下次运行时需要的东西。通常很少改变的东西,但在程序运行的任何时候都需要。就像传感器的校准数据一样。

大多数程序只使用闪存和 RAM。您可以随时使用这些程序打开和关闭 Arduino。

如果您的程序写入 EEPROM,那么在写入 EEPROM 时关闭电源可能会损坏那里的数据。

这如何影响您的程序取决于数据是什么。

如果它破坏了传感器的校准数据,那么无论传感器检测到什么,您都会得到错误的测量结果。

如果你用你的 EEPROM 数据写校验和,那么你可以检测到损坏并且你的程序可以关闭而不是使用坏数据。

当然,您会知道您的程序是否写入 EEPROM - 您必须加载一个单独的库并使用特殊命令来读取和写入 EEPROM 区域。

危险实际上只存在于您写入 EEPROM 的那一瞬间。由于这种情况很少发生(通常仅在受控条件下),因此也很少会损坏 EEPROM 数据。


概括:

除非您使用 EEPROM,否则您可以随意打开和关闭 Arduino,而不会造成任何危险——即便如此,您也可以在大多数情况下侥幸逃脱。

是的,您可以快速关闭电源而不会损坏它。

我能看到延迟电路断电的唯一原因是出于安全或外部外围设备的功能原因。

例如在断电时,需要将数据保存到非易失性存储器中。或者在断电时,需要确保机构在断电时处于安全位置。

这将需要监控供应并具有足够的保持能力来运行处理器以及需要执行的任何功能。

术语Arduino指的是具有各种不同芯片的非常广泛的微控制器板,因此功率损耗的影响各不相同。因此,我建议您输入正在使用的 ATmega 芯片的确切部件号。但是,对于像 ATmega328 这样的芯片,一般来说,以下情况是好的。

是的,您可以在不损坏或损坏任何东西的情况下从 Arduino 移除电源,但请记住以下事项:

  • 如果您的代码使用 EEPROM,则闪存可能会损坏,或者当设备正在闪烁数据并且断电时数据可能无法准确存储。

  • 除了 EEPROM 之外,突然断电可能造成伤害的唯一方法是与 Arduino 一起使用的设备(例如 SD 卡)。