Программирование AVR Простой датчик протечки воды Sun, September 08 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Простой датчик протечки воды Печать
Добавил(а) microsin   

Три года назад сделал для банки слива воды кондиционера датчик, который предупреждал бы о том, что пора воду слить. И почему-то только сейчас дошли руки его опубликовать. Проект получился очень простой, на основе платки AVR-USB162 [1].

При разработке акцент был сделан на то, чтобы микроконтроллер потреблял как можно меньше энергии, и работал максимально долго от Li-Ion аккумулятора. Результат меня вполне удовлетворил - вот уже 3 года не было необходимости подзарядки. Использовался датчик только летом, когда было жарко, в течение пары месяцев, и аккумулятор подключался только на это время.

water detect photo01 water detect photo02

Как все работает: если макрос DEBUG_CDC_OUTPUT закомментирован, то после сброса/включения питания активируется WDT на 8 секунд, зажигается на 1 мс светодиод, проверяется компаратор. Если компаратор показывает контакт с водой, то на 1 секунду включается пищалка. Далее активируется режим Power Down с током потребления 40 мкА. Через 8 секунд срабатывает WDT, сбрасывает микроконтроллер, и цикл повторяется. Работает это все так, чтобы устройство пищало раз в 8 секунд, если контакты, подключенные к компаратору, показали наличие воды.

Если макрос DEBUG_CDC_OUTPUT раскомментирован, то программа работает как виртуальный COM-порт, декодируя команды, вводимые в консоли, и может выводить в консоль отладочные сообщения. Этот режим оставлен исключительно для отладки.

Схема подключения к компаратору микроконтроллера AT90USB162:

    VCC                                  VCC
     |           К контактам воды         |
     |        PD2                PD1      |
     -  +-----AIN1               AIN0     - 
    | | |                         |      | |
 1M | |---                        |      | | 10M
    | |                           |      | |
     -                            |       -
     |                            |       |
     |                            +-------+
    ===

Подстроечником 1M устанавливается напряжение на AIN1 порядка VCC/5. Резистор 10M может быть и поменьше, наверное 1M.

Исходный код проекта и указания как компилировать см. в архиве [2].

[Ссылки]

1Макетная плата AVR-USB162.
2210720water-detect-files.zip - исходный код, библиотека LUFA, документация.

 

Добавить комментарий


Защитный код
Обновить

Top of Page