Чи безпечно різко зняти живлення Arduino? [зачинено]


12

Якщо у мене є Arduino, чи можу я різко включати та вимикати живлення, не псуючи її? Якщо я розробляю продукт, який має перемикач включення / вимкнення, чи потрібно мені включати затримку перед відключенням живлення, щоб мікроконтролер міг зробити чисте відключення? Або добре просто підключити перемикач SPST до лінії електропередачі Arduino?

(Конструюючи продукт, я маю на увазі використання ATmega з кодом Arduino незалежно на спеціальній дошці з іншими компонентами.)

Редагувати: Ардуїно я просто маю на увазі прошивання завантажувача Arduino, щоб я міг програмувати в Arduino замість AVR. Я хочу використати чіп Atmel atmega328P. Мені не потрібно використовувати EEPROM.


3
Зауважте, що "Arduino" є торговою маркою, тому вона отримує велику "А". Столиці мають значення.
Транзистор

3
Можливо, якщо це насправді "Ардуїно", але питання насправді про ATmega на користувальницькій дошці, яка була б більше "ардуїно". Що стосується актуальної теми, окрім ATmega слід також розглянути будь-які інші компоненти, які можуть мати стан , особливо зовнішні запам'ятовування - наприклад, якщо є SD-карта, яка потребує великої кількості думок та турбот. Нарешті, деякі джерела живлення роблять неприємні речі при включенні / вимкненні.
Кріс Страттон

1
Чи можна припустити, що ви також не використовуєте SD-карту?
UKMonkey

Це ваш продукт. Чи потрібно щось економити, якщо живлення вимкнеться? Відповідь на це питання відповідає на ваше запитання.
StainlessSteelRat

Відповіді:


18

Так, безпечно різко відключити Arduino.

Ну, переважно безпечний.

Процесори, які використовуються в різних Arduinos, мають три типи пам'яті:

  1. Flash - там, де зберігається ваша програма. Ваша програма може читати тут матеріали, але не може їх написати.

  2. ОЗУ - де зберігаються змінні програми під час роботи програми. Дані тут зникають, коли вимкніть Arduino. Ваша програма постійно читає і пише тут.

  3. EEPROM - Там, де ваша програма може зберігати речі, їй знадобиться наступного разу. Зазвичай матеріали, які змінюються рідко, але потрібні в будь-який час роботи програми. Як і дані калібрування для датчика.

Більшість програм використовують лише Flash та RAM. Ви можете вмикати та вимикати Arduino у будь-який час за допомогою цих програм.

Якщо ваша програма пише в EEPROM, відключення живлення під час запису в EEPROM може пошкодити там дані.

Як це вплине на вашу програму, залежить від даних.

Якщо це пошкодить дані калібрування для датчика, ви отримаєте погані вимірювання для будь-якого детектора.

Якщо ви пишете контрольні суми зі своїми даними EEPROM, то ви можете виявити пошкодження, і ваша програма може вимкнутись замість використання поганих даних.

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

Небезпека є насправді лише в той короткий момент, коли ви пишете в EEPROM. Оскільки це трапляється рідко (і, як правило, лише в контрольованих умовах), також буде рідко пошкоджувати дані EEPROM.


Підсумок:

Ви можете вмикати і вимикати Arduino за бажанням без небезпеки, якщо тільки не будете користуватися EEPROM - і навіть тоді ви будете отримувати з ним більшу частину часу.


8
"Flash - там, де зберігається ваша програма. Ваша програма може читати матеріали звідси, але не може їх написати." - Багато чіпів AVR (напевно включений 328P) можуть самостійно програмувати спалах. Насправді так працює цикл програмування Arduino; завантажувач, що працює на 328P, програмує сам 328P. Це дуже малоймовірно , що ОП буде робити це, але це можливо.
marcelm

2
Крім того, якщо ви використовуєте Arduino з додатковим обладнанням на ньому (наприклад, датчик), ви можете також додати конденсатор і витратити портпін для вимірювання зовнішньої потужності, так що, якщо зникне, ви можете сміливо економити в eeprom все, що вам потрібно хочу. У ATmega цикл запису EEPROM зазвичай становить 3,4 мс. Отже, якщо ваш конденсатор може тримати процесор живим протягом 5 мс, і перед кожною операцією запису eeprom ви перевіряєте зовнішню потужність, ви в безпеці.
vsz

10

Так, ви можете швидко відключити живлення, не пошкодивши його.

Єдиною причиною, яку я можу побачити для затримки вимкнення живлення ланцюга, було б безпека або функціональні причини вашої зовнішньої периферії.

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

Для цього знадобиться моніторинг живлення та достатня потужність затримки для роботи процесора та будь-якої функції, яку потрібно було виконувати.


6

Термін Arduino позначає дуже широкий спектр мікроконтролерних плат, які мають різні різні мікросхеми, і при цьому ефект втрати електроенергії змінюється. Тож я рекомендую вам вказати точний номер деталі використовуваного чіпа ATmega. Але, загалом для таких мікросхем, як ATmega328, можна сказати наступне.

Так, ви можете вилучити живлення з Arduino, не псуючи і не пошкодивши нічого, але пам’ятайте про наступне:

  • Якщо ваш код використовує EEPROM, то спалах може бути пошкоджений або дані можуть не зберігатись точно, коли пристрій миготить дані та відключається живлення.

  • Єдиний спосіб, коли раптові втрати електроенергії можуть заподіяти шкоду крім EEPROM - це пристрої, які використовуються з Arduino (наприклад, SD-карта).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.