Ist es sicher, die Arduino-Stromversorgung plötzlich zu entfernen? [geschlossen]

12

Kann ich den Arduino abrupt ein- und ausschalten, ohne ihn zu beschädigen? Wenn ich ein Produkt entwerfe, das einen Ein / Aus-Schalter hat, muss ich eine Verzögerung vor dem Ausschalten der Stromversorgung berücksichtigen, damit der Mikrocontroller eine Art sauberes Ausschalten durchführen kann? Oder ist es in Ordnung, einfach einen SPST-Schalter an die Stromleitung des Arduino anzuschließen?

(Mit dem Entwerfen eines Produkts meine ich die unabhängige Verwendung eines ATmega mit Arduino-Code auf einer benutzerdefinierten Karte mit anderen Komponenten.)

Edit: Mit Arduino meine ich nur das Flashen des Arduino-Bootloaders, damit ich in Arduino anstelle von AVR programmieren kann. Der Chip, den ich verwenden möchte, ist Atmel atmega328P. Ich benötige kein EEPROM.

Michael Sohnen
quelle
3
Beachten Sie, dass "Arduino" ein Markenname ist und daher ein großes "A" erhält. Großbuchstaben sind wichtig.
Transistor
3
Vielleicht, wenn es sich tatsächlich um ein "Arduino" handelt, aber es handelt sich tatsächlich um ein ATmega auf einem benutzerdefinierten Board, das eher ein "Arduino" wäre. Was das eigentliche Thema betrifft, sollte man neben dem ATmega auch alle anderen Komponenten berücksichtigen, die möglicherweise einen Status haben , insbesondere externe Speicher - zum Beispiel, wenn es eine SD-Karte gibt, die viel Nachdenken und Bedenken erfordert. Schließlich tun einige Netzteile beim Ein- und Ausschalten unangenehme Dinge.
Chris Stratton
1
Können wir davon ausgehen, dass Sie auch keine SD-Karte verwenden?
UKMonkey
Es ist dein Produkt. Müssen Sie etwas sparen, wenn sich das Gerät ausschaltet? Die Antwort auf diese Frage beantwortet Ihre Frage.
StainlessSteelRat

Antworten:

18

Ja, es ist sicher, einen Arduino abrupt auszuschalten.

Na ja, meistens sicher.

Die in den verschiedenen Arduinos verwendeten Prozessoren haben drei Arten von Speicher:

  1. Flash - Wo Ihr Programm gespeichert ist. Ihr Programm kann Inhalte von hier lesen, aber nicht schreiben.

  2. RAM - Hier werden Ihre Programmvariablen gespeichert, während das Programm ausgeführt wird. Die Daten hier verschwinden, wenn Sie den Arduino ausschalten. Ihr Programm liest und schreibt hier ständig.

  3. EEPROM - Wo Ihr Programm Sachen speichern kann, wird es das nächste Mal benötigt, wenn es ausgeführt wird. Normalerweise Dinge, die sich selten ändern, aber immer benötigt werden, wenn das Programm ausgeführt wird. Wie Kalibrierungsdaten für einen Sensor.

Die meisten Programme verwenden nur Flash und RAM. Sie können den Arduino mit diesen Programmen jederzeit ein- und ausschalten.

Wenn Ihr Programm in das EEPROM schreibt, kann das Ausschalten der Stromversorgung während des Schreibens in das EEPROM die dortigen Daten beschädigen.

Wie sich das auf Ihr Programm auswirkt, hängt von den Daten ab.

Wenn dadurch die Kalibrierungsdaten für einen Sensor verfälscht werden, erhalten Sie schlechte Messergebnisse für alles, was der Sensor erkennt.

Wenn Sie Prüfsummen mit Ihren EEPROM-Daten schreiben, können Sie die Beschädigung feststellen und Ihr Programm wird möglicherweise heruntergefahren, anstatt fehlerhafte Daten zu verwenden.

Sie wissen natürlich, ob Ihr Programm in das EEPROM schreibt - Sie müssen eine separate Bibliothek laden und spezielle Befehle zum Lesen und Schreiben in den EEPROM-Bereich verwenden.

Die Gefahr besteht wirklich nur in diesem kurzen Moment, wenn Sie in das EEPROM schreiben. Da dies selten vorkommt (und normalerweise nur unter kontrollierten Bedingungen), kommt es auch selten vor, dass die EEPROM-Daten beschädigt werden.


Zusammenfassung:

Sie können einen Arduino ohne Gefahr nach Belieben ein- und ausschalten, es sei denn, Sie verwenden das EEPROM - und selbst dann werden Sie die meiste Zeit damit davonkommen.

JRE
quelle
8
"Flash - Wo Ihr Programm gespeichert ist. Ihr Programm kann Inhalte von hier lesen, aber nicht schreiben." - Viele AVR-Chips (der 328P ist definitiv enthalten) können den Blitz selbst programmieren. Tatsächlich funktioniert der Arduino-Programmierzyklus so. Der auf dem 328P ausgeführte Bootloader programmiert den 328P selbst. Es ist ziemlich unwahrscheinlich, dass das OP dies tun wird, aber es ist möglich.
Marcelm
2
Wenn Sie einen Arduino mit zusätzlicher Hardware (wie einen Sensor) verwenden, können Sie auch einen Kondensator hinzufügen und einen Portpin ausgeben, um die externe Stromversorgung zu messen. Wenn dieser verschwindet, können Sie sicher speichern, um das zu eepromen, was Sie möchten wollen. Auf einem ATmega beträgt ein EEPROM-Schreibzyklus typischerweise 3,4 ms. Wenn also Ihr Kondensator den Prozessor 5 ms lang am Leben hält und Sie vor jedem EEPROM-Schreibvorgang die externe Stromversorgung überprüfen, sind Sie in Sicherheit.
vsz
10

Ja, Sie können das Gerät schnell ausschalten, ohne es zu beschädigen.

Der einzige Grund, warum ich eine Verzögerung beim Ausschalten des Stromkreises feststellen kann, sind Sicherheits- oder Funktionsgründe für Ihre externen Peripheriegeräte.

ZB beim Ausschalten müssen die Daten nichtflüchtig gespeichert werden. Oder beim Ausschalten muss sichergestellt werden, dass sich ein Mechanismus beim Ausschalten in einer sicheren Position befindet.

Dies würde eine Überwachung der Versorgung und eine ausreichende Haltekapazität erfordern, um den Prozessor und die jeweils erforderliche Funktion auszuführen.

JCollins
quelle
6

Der Begriff Arduino bezieht sich auf ein sehr breites Spektrum von Mikrocontroller-Boards, die verschiedene unterschiedliche Chips aufweisen, und der Effekt des Leistungsverlusts variiert daher. Daher würde ich empfehlen, die genaue Teilenummer des verwendeten ATmega-Chips anzugeben. Im Allgemeinen gilt für Chips wie ATmega328 jedoch Folgendes.

Ja, Sie können die Stromversorgung eines Arduino trennen, ohne etwas zu beschädigen oder zu beschädigen. Beachten Sie jedoch Folgendes:

  • Wenn Ihr Code ein EEPROM verwendet, wird der Flash möglicherweise beschädigt oder die Daten werden nicht korrekt gespeichert, wenn das Gerät Daten blinkt und die Stromversorgung unterbrochen wird.

  • Ein plötzlicher Stromausfall kann, abgesehen vom EEPROM, nur den mit Arduino verwendeten Geräten (z. B. einer SD-Karte) schaden.

Electric_90
quelle