Безопасно ли внезапно отключать питание Arduino? [закрыто]

12

Если у меня есть Arduino, могу ли я внезапно включать и выключать питание, не повреждая его? Если я разрабатываю продукт с переключателем включения / выключения, нужно ли включать задержку перед выключением питания, чтобы микроконтроллер мог выполнить какое-то чистое отключение? Или можно просто подключить SPST-переключатель к линии питания Arduino?

(Разрабатывая продукт, я имею в виду использование ATmega с кодом Arduino независимо на специальной плате с другими компонентами.)

Изменить: под Arduino я просто имею в виду мигание загрузчика Arduino, чтобы я мог программировать в Arduino вместо AVR. Я хочу использовать чип Atmel atmega328P. Мне не нужно использовать EEPROM.

Майкл Сонен
источник
3
Обратите внимание, что «Arduino» является торговой маркой, поэтому он получает заглавную букву «А». Столицы имеют значение.
Транзистор
3
Возможно, если это действительно «Arduino», но вопрос на самом деле об ATmega на специальной плате, которая была бы скорее «Arduino». Что касается актуальной темы, в дополнение к ATmega следует также рассмотреть любые другие компоненты, которые могут иметь состояние , особенно внешнюю память - например, если есть SD-карта, которая требует большого количества размышлений и забот. Наконец, некоторые блоки питания делают неприятные вещи при включении / выключении.
Крис Страттон
1
Можем ли мы предположить, что вы не используете SD-карту?
UKMonkey
Это ваш продукт. Нужно ли что-то сохранять, если питание отключается? Ответ на этот вопрос отвечает на ваш вопрос.
StainlessSteelRat

Ответы:

18

Да, безопасно отключить Arduino.

Ну, в основном, безопасно.

Процессоры, используемые в различных Arduinos, имеют три типа памяти:

  1. Flash - где хранится ваша программа. Ваша программа может читать отсюда, но не может писать.

  2. RAM - где хранятся переменные вашей программы во время работы программы. Данные здесь исчезают, когда вы выключаете Arduino. Ваша программа читает и пишет здесь постоянно.

  3. EEPROM - Где ваша программа может хранить вещи, которые понадобятся ей при следующем запуске. Обычно вещи, которые меняются редко, но нужны каждый раз, когда запускается программа. Как данные калибровки для датчика.

Большинство программ используют только Flash и RAM. Вы можете включать и выключать Arduino в любое время с помощью этих программ.

Если ваша программа пишет в EEPROM, то отключение питания во время записи в EEPROM может повредить данные там.

Как это влияет на вашу программу, зависит от данных.

Если это повредит данные калибровки для датчика, вы получите плохие измерения для того, что датчик обнаруживает.

Если вы напишите контрольные суммы с данными EEPROM, вы сможете обнаружить повреждение, и ваша программа может завершить работу вместо использования неверных данных.

Вы, конечно, будете знать, пишет ли ваша программа в EEPROM - вы должны загрузить отдельную библиотеку и использовать специальные команды для чтения и записи в область EEPROM.

Опасность действительно только в тот короткий момент, когда вы пишете в EEPROM. Поскольку это происходит редко (и обычно только в контролируемых условиях), также будет редко повредить данные EEPROM.


Резюме:

Вы можете включать и выключать Arduino по своему усмотрению без опасности, если только вы не используете EEPROM - и даже в этом случае вам это сойдет с рук в большинстве случаев.

JRE
источник
8
«Flash - там, где хранится ваша программа. Ваша программа может читать отсюда, но не может писать». - Многие микросхемы AVR (в том числе 328P) могут самостоятельно программировать вспышку. Фактически, так работает цикл программирования Arduino; загрузчик, работающий на 328P, программирует сам 328P. Это очень маловероятно , что ОП будет делать это, но это возможно.
19
2
Кроме того, если вы используете Arduino с дополнительным оборудованием (например, с датчиком), вы также можете добавить конденсатор и потратить порт-порт для измерения внешнего питания, чтобы, если пропадает, вы могли безопасно сохранить все, что вы хотите. хочу. На ATmega цикл записи в EEPROM обычно составляет 3,4 мс. Таким образом, если ваш конденсатор может поддерживать процессор в течение 5 мс, и перед каждой операцией записи EEPROM вы проверяете внешнее питание, вы в безопасности.
вс
10

Да, вы можете быстро отключить питание, не повреждая его.

Единственная причина, по которой я вижу задержку отключения питания, - это безопасность или функциональность внешних периферийных устройств.

Например, при отключении питания необходимо сохранить данные в энергонезависимой памяти. Или при отключении питания, необходимо убедиться, что механизм находится в безопасном положении при отключении питания.

Это потребовало бы мониторинга питания и наличия достаточной емкости удержания, чтобы запустить процессор и все функции, которые требовалось выполнить.

JCollins
источник
6

Термин Arduino относится к очень широкому спектру плат микроконтроллеров, которые имеют различные микросхемы, и эффект потери мощности, таким образом, варьируется. Поэтому я бы рекомендовал вам указать точный номер детали используемого чипа ATmega. Но, в целом, для таких чипов, как ATmega328, справедливо следующее.

Да, вы можете отключить питание Arduino, не повредив и не повредив ничего, но имейте в виду следующее:

  • Если ваш код использует EEPROM, то флэш-память может быть повреждена, или данные могут не сохраниться точно, когда устройство мигает данными и отключается питание.

  • Единственный способ, которым внезапная потеря питания может нанести вред помимо EEPROM, - это устройства, используемые с Arduino (например, SD-карта).

Electric_90
источник