Как сохранить данные в arduino при отключении питания
Я занимаюсь проектом "управление коммутатором на основе arduino". Здесь пользователю необходимо установить время для включения реле и установить время для его выключения. Проблема в том, что я хочу подавать питание на arduino с помощью адаптера, подключенного к источнику переменного тока (где также будет подключено реле). Когда установлено время включения и если питание отключается на некоторое время, то эта система не работает. Я хочу сохранить данные в arduino, чтобы они сохранялись при возврате питания.. Так что мое реле срабатывает вовремя.. Как это сделать, ребята???
@user63158, 👍1
Обсуждение3 ответа
Лучший ответ:
Найдите EEPROM. это память, которая сохраняет содержимое даже при выключенном питании.
Вы можете записывать данные в EEPROM, а когда питание вернется, считывать их обратно.
существуют безопасные способы записи в EEPROM, не повреждая его.
Помимо ответа Георгия, я хотел бы рассказать вам некоторые подробности.
Во - первых :
микроконтроллер может иметь встроенный EEPROM, такой как ATmega328, внутри Arduino UNO / Nano / mini, если вам не нужно будет подключать внешний, он может иметь интерфейсы, такие как SPI или IIC и т. Д. ...
Во - вторых :
EEPROM может содержать только определенный объем данных, он может составлять 512 байт, как на микроконтроллерах ATmega328, на других он может составлять только 64 байта.
Третье :
EEPROM имеет адреса, поэтому, например, в 8-разрядной EEPROM один адрес может содержать только 8 бит, поэтому значения от (0-255), как на ATmega328
Четвертое: как его использовать
В начале вашего кода вы должны сначала включить библиотеку eeprom
#include <EEPROM.h>
Затем вы могли бы, например, присвоить значение "24" одному из адресов в EEPROM, скажем, адресу "1".
Таким образом, вы будете использовать
EEPROM.write(1,24);
Конечно, вы можете отключить питание платы и снова включить ее, и этому конкретному адресу будет присвоено 8-битное значение "24".
Чтобы прочитать обратно
EEPROM.read(24);
Я надеюсь, что это поможет вам или кому-нибудь еще.
И в качестве примечания, EEPROM определил циклы записи и чтения ~ 10000, возможно, ~ 100000, после этой суммы это может не сработать.
Оригинальная документация : здесь
Вы можете сделать это, используя RTC (модуль часов реального времени) в своем проекте.
И * как * вы бы это сделали? "Как мне добраться из Нью-Йорка в Трентон?" "Ты можешь вести машину". Вряд ли это поможет., @Majenko
Конечно, вряд ли это поможет. Но похоже на вопрос. Кроме того, заголовок вопроса "Как сохранить данные в arduino при отключении питания" пахнет как EEPROM..., @DataFiddler
- Включайте Arduino по таймеру каждые 24 часа.
- Как отслеживать миллисекунды в спящем режиме
- Очищается ли SRAM при переводе Arduino в режим sleep_mode_pwr_down?
- Может ли отключение питания повредить программное обеспечение?
- Arduino UNO Прерывание питания
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Питание светодиодной ленты - Сколько ампер?
- Использование millis() и micros() внутри процедуры прерывания
Посмотрите на этот ответ https://arduinoprosto.ru/q/72370/14490, @gbg
Может быть, я не понимаю вопроса, но идея не должна быть такой: Arduino всегда включен, а время включения и выключения зависит от включения / выключения реле... Если вы хотите, чтобы Arduino тоже был выключен, вам нужен хотя бы некоторый заряд батареи и использование режима ожидания i.c.m. с триггером прерывания, установленным на некоторые часы реального времени, чтобы иметь возможность "разбудить" его., @Michel Keijzers
Неясно, хотите ли вы отключить Arduino при обычной работе или просто хотите сохранить настройки времени в случае отключения питания. Пожалуйста, объясните это яснее, @chrisl