Контроль состояния реле переменного тока, конструктивные особенности

Я хочу использовать датчик и реле в качестве устройства безопасности для подачи/отключения питания на электрический блок, работающий от сети переменного тока. Если отключается питание от розетки, я теряю состояние реле, которое хранится в переменной на моем Pro Mini. Мой Arduino питается от стабилизатора напряжения переменного/постоянного тока, который находится между сетью переменного тока и выключателем питания электрического блока. Помимо питания Arduino от батареи/суперконденсатора, есть ли какие-то хитрости в проектировании схем, которые я упускаю?

, 👍0

Обсуждение

Можете ли вы прояснить вашу настройку? Arduino управляет реле, а также определяет наличие или отсутствие питания в сети (т.е. обнаруживает потерю питания?), @jose can u c

Да, Arduino управляет реле. Нет, датчик — это датчик уровня жидкости, который указывает, следует ли Arduino отключать питание при низком уровне жидкости., @Owen


3 ответа


1

Когда вы меняете состояние реле, сохраняйте его в EEPROM. В setup() считайте значение из EEPROM и примените его.

,

Ах... почему я об этом не подумал :-), @Owen

но нужно ли это? Разве состояние не оценивается по значению датчика после начала скетча?, @Juraj

Если состояние реле полностью определяется мгновенным состоянием датчика, то нет необходимости сохранять состояние реле., @jose can u c

Да, я думаю, вы оба правы. Меня смутило то, что мне нужно сохранять состояние реле в переменной, чтобы переключать реле только при изменении датчика, а не на каждой итерации цикла., @Owen

Если вы установите пин на HIGH, а он уже HIGH, ничего не произойдет. Можно "устанавливать" реле на каждой итерации цикла., @jose can u c

Это реле с фиксацией, поэтому для переключения требуется 3 строки кода: 1) установить вывод на высокий уровень; 2) задержка для фиксации 50 мс; 3) установить вывод на низкий уровень, @Owen

и как ведет себя это реле с фиксацией при перезапуске Arduino? мои изменения состояния, @Juraj

@Owen Хранение отдельной переменной для всего контролируемого — это хорошая практика, ИМХО. Я всегда так делаю и не доверяю считыванию значения пина. Помимо прочего, отдельная переменная позволяет легче отслеживать время с момента внесения изменения. Помимо статистики, это помогает предотвратить любые условия, вызывающие слишком частые изменения. Это также дает подсказку в случае неисправности схемы, если переменная != обнаруженное состояние. Обнаружение таких зависимостей также позволяет в будущем добавлять схемы для ручного переопределения., @Randy


1

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

В этой схеме я использую диод, чтобы изолировать большой (но не супер) конденсатор от источника питания, и эта точка схемы также питает мой VIN (это плата NANO). Затем напряжение этого конденсатора дополнительно изолируется от делителя напряжения с помощью другого диода. Делитель напряжения понижает 12 В (только 11 В после диодов) до почти 5 В. Также там есть небольшой (100 нФ) конденсатор для фильтрации любого шума.

Если питание отключено, этот конденсатор емкостью 2200 мкФ будет поддерживать мой NANO, кучу светодиодов, ЖК-дисплей и даже транзисторный драйвер и релейную схему (не показаны) в рабочем состоянии около секунды. Но напряжение на цифровом входе (D2 в моем случае) упадет в течение миллисекунд! Так что если вы регулярно опрашиваете этот вывод, у вас будет достаточно времени, чтобы отреагировать, сохранив свои состояния. Если вы сомневаетесь, сможете ли вы опрашивать так быстро, вывод D2 можно легко привязать к прерыванию. (это излишество... проще просто создать свою версию millis(), так что всякий раз, когда у вас есть таймер ожидания, вы можете постоянно проверять вывод обнаружения питания и реагировать в течение миллисекунды).

Теперь, если по какой-то причине вы хотите быть уверены, что arduino вообще не теряет питание во время коротких сбоев в электросети, вы можете добавить еще один диод к конденсатору 2200 мкФ и подключить его к аккумуляторной батарее. Если напряжение батареи немного ниже основного источника питания, ток не будет вытекать из нее, пока он действительно не понадобится.

,

Здорово. Мне понравилась ваша реализация — спасибо, что поделились., @Owen


1

Вы питаете свое устройство и контроллер от одного и того же источника переменного тока. Если отключить этот источник переменного тока, они оба отключатся. Вы получаете свой источник переменного тока обратно — перезапустите контроллер и проверьте текущее состояние вашего устройства/реле.

Что я пропустил?

,

Вы правы и ничего не упустили, кроме того момента, где я сказал, что запутался :-), @Owen