Jeśli mam Arduino, czy mogę nagle włączyć i wyłączyć zasilanie, nie psując go? Jeśli projektuję produkt z włącznikiem / wyłącznikiem, czy muszę uwzględnić opóźnienie przed wyłączeniem zasilania, aby mikrokontroler mógł wykonać jakieś czyste wyłączenie? A może wystarczy podłączyć przełącznik SPST do linii zasilania Arduino?
(Projektując produkt, mam na myśli użycie ATmega z kodem Arduino niezależnie na niestandardowej płycie z innymi komponentami).
Edycja: Przez Arduino mam na myśli tylko flashowanie programu ładującego Arduino, aby móc programować w Arduino zamiast AVR. Układ, którego chcę użyć, to Atmel atmega328P Nie potrzebuję żadnego użycia pamięci EEPROM.
Odpowiedzi:
Tak, można bezpiecznie wyłączyć Arduino.
Cóż, w większości bezpieczny.
Procesory stosowane w różnych Arduinos mają trzy typy pamięci:
Flash - Gdzie jest przechowywany twój program. Twój program może czytać rzeczy stąd, ale nie może tego napisać.
RAM - gdzie zmienne programu są przechowywane podczas działania programu. Dane tutaj znikają po wyłączeniu Arduino. Twój program czyta i pisze tutaj stale.
EEPROM - tam, gdzie twój program może przechowywać rzeczy, które będą potrzebne przy następnym uruchomieniu. Zwykle rzeczy, które zmieniają się rzadko, ale są potrzebne przy każdym uruchomieniu programu. Jak dane kalibracyjne dla czujnika.
Większość programów używa tylko Flasha i RAM. Za pomocą tych programów możesz włączać i wyłączać Arduino w dowolnym momencie.
Jeśli twój program zapisuje do EEPROM, wyłączenie zasilania podczas zapisywania do EEPROM może uszkodzić tam dane.
Jak wpływa to na twój program, zależy od tego, jakie są dane.
Jeśli spowoduje to uszkodzenie danych kalibracyjnych czujnika, otrzyma się złe pomiary tego, co wykrywa czujnik.
Jeśli zapisujesz sumy kontrolne z danymi EEPROM, możesz wykryć uszkodzenie, a program może zostać zamknięty zamiast korzystania ze złych danych.
Oczywiście będziesz wiedział, czy Twój program zapisuje do pamięci EEPROM - musisz załadować oddzielną bibliotekę i użyć specjalnych poleceń do odczytu i zapisu w obszarze EEPROM.
Niebezpieczeństwo jest naprawdę tylko w tej krótkiej chwili, gdy piszesz do EEPROM. Ponieważ zdarza się to rzadko (i zwykle tylko w kontrolowanych warunkach), dane EEPROM będą również bardzo rzadkie.
Podsumowanie:
Możesz włączać i wyłączać Arduino do woli, bez niebezpieczeństwa, chyba że używasz EEPROM - i nawet wtedy będziesz go miał przez większość czasu.
źródło
Tak, możesz szybko wyłączyć zasilanie, nie niszcząc go.
Jedyny powód, dla którego widzę opóźnienie wyłączania obwodu, to bezpieczeństwo lub funkcjonalne przyczyny zewnętrznych urządzeń peryferyjnych.
Np. Po wyłączeniu zasilania należy zapisać dane w nieulotnej pamięci. Lub po wyłączeniu zasilania, należy upewnić się, że mechanizm znajduje się w bezpiecznej pozycji po wyłączeniu zasilania.
Wymagałoby to monitorowania dostaw i posiadania wystarczającej pojemności podtrzymania, aby uruchomić procesor i jakiejkolwiek funkcji wymaganej do wykonania.
źródło
Termin Arduino odnosi się do bardzo szerokiego spektrum płytek mikrokontrolerów, które mają różne układy, a zatem wpływ utraty mocy jest różny. Polecam więc podać dokładny numer używanego układu ATmega. Ale ogólnie rzecz biorąc, w przypadku układów takich jak ATmega328, poniższe są dobre.
Tak, możesz usunąć moc z Arduino, nie niszcząc ani nie niszcząc niczego, ale pamiętaj o następujących rzeczach:
Jeśli kod wykorzystuje pamięć EEPROM, pamięć flash może ulec uszkodzeniu lub dane mogą nie zostać dokładnie zapisane, gdy urządzenie flashuje dane i zasilanie jest odłączone.
Jedyny sposób, w jaki nagła utrata zasilania może wyrządzić szkodę oprócz EEPROM, to urządzenia używane z Arduino (np. Karta SD).
źródło