Принципиальная схема
В целях совместимости с проектом Arduino для реализации датчика был выбран процессор AtMega 328 тактированный на частоту 16мГц.
Источник питания датчика.
Датчик питается напряжением 12в (Vin). Так как процессор и остальные схемы датчика требуют питания 5в, то в схему включен маломощный интегральный регулятор VR1 78L05 на который напряжение подается через защитный 1А диод Шоттки D3.
Измерительная цепь влажности почвы.
С вывода 1(D3) процессора на R2 измерительной цепи подается пачка импульсов частотой 2,66мГц и длительностью примерно 50мс. Этого достаточно для заряда измерительного конденсатора C8. Пачка импульсов проходит через делитель напряжения (R2,C6,Sensor), разделительный конденсатор C7, высокочастотный выпрямитель на D4,D5 и заряжает конденсатор C8. После 50мс накачки производится замер напряжения АЦП на ножке 23 (А0) и выключается генерация на входе в измерительную цепь вывод 1(D3). Следующим этапом происходит разряд конденсатора C8 через разрядный резистор R3 в течение 50мс.
Датчики температуры.
Датчиками температуры являются аналоговые температурные датчики LM35 (IC3,IC4). Для уменьшения шумовой составляющей в цепи питания и выхода датчика стоят конденсаторы С11,С12, С15,С16.
датчик температуры почвы IC3 подключен к выводу АЦП на ножке 24 (А1), а датчик температуры воздуха IC4 подключен к выводу АЦП на ножке 25 (А2). Измерение производится одновременно с измерением на канале влажности. При этом на время чтения показаний АЦП в регистр 1 modbus (флаг готовности датчика) заносится 0. Показания АЦП по всем трем каналам программно фильтруются по формуле : P=(1-Kf)*Pold + Kf*Pnew; где Kf =0.2 - коэффициент фильтрации.
После этого, если полученные значения изменились, они заносятся в modbus регистры: 30001 (влажность почвы), 30002 (температура почвы), 30003 (температуры воздуха).
ИОН
Для расширения динамического диапазона АЦП в датчике присутствует испочник опорного напряжения на 1,8в на интегральном стабилизаторе VR2 LM1117-1.8. Напряжение с выхода ИОН подается на вывод 20 (AREF) процессора.
схема преобразователя уровня RS485 для связи по протоколу ModBus.
Преобразователь уровня построен на микросхеме IC2 (max485), которая подключена к выводам UART микропроцесоора IC1. Сигнал RX ножка 30 (D0) подтяyт к 5в резистором R12.
Направление передачи задает МК ножкой 28 подтянутой к нулю резистором R23. Для согласования линии RS485 служит терминальный резистор R9.
Перемычка Jmp1 устанавливается только на последнем устройстве в линии RS485 для предотвращения помех переотражения сигнала..
Цепь Реле
Состоит из транисторного ключа на R11 R17 и T2.
Цепь сервопривода
Сервопривод подключается напрямую к ножке 13 (D9) процессора IC1. Питание на сервопривод подается через отдельный интегральный регулятор VR3 7805.
VR3 из за значительного размера (корпус DPAK) на печатной плате не установлен, а подпаян на проводках и затянут в термоусадку.
Индикатор
Индикатор представляет собой красно-зеленый светодиод Led1 с общим катодом и колбой из матового пластика.
На его аноды подается через ограничивающие резисторы R4,R16 ШИМ сигнал с ножки 9 (D5) на красный канал, а с ножки 10 (D6) на зеленый канал.
На красный каналы ШИМ сигнал пропорциональный показаниям влажности подается на прямую, а на зеленый с инверсией. При этом при сухой почве светодиод горит красным цветом,
а при полностью погруженном сенсоре в воду зеленым. В реальных условиях цвет меняется от красного через желтый к зеленому.
Индикация производится 0.5 сек вспышками с периодом 5 сек.
Системные цепи.
Цепь сброса микроконтроллера состоит из R1 и S1. Цепь питания аналоговой части микропроцессора L1 и С14. Разъем ICSP для программирования микроконтроллера.
Если датчик собирается на плате Arduino, то на время программирования через USB необходимо отключить цепи RS485 от ножек TX и RX , которые будут мешать процессу.
Работа датчика
При включении датчика из долговременной памяти EEPROM считываются настроечные данные и записываются в соответствующие регистры хранения ModBus.
Если в EEPROM еще ничего не занесено, что бывает сразу после заливки прошивки.
В долговременную память и соответствующие ей регистры ModBus (40001-40006) записываются значения по умолчанию
Цепь реле выключается. Сервопривод ставится в положение 0град.
После этого управление передается ModBus, периодически производятся чтение сенсоров и индикация влажности.
Для управления реле по ModBus посылается команда записи в флаговый регистр 2 со значением 1- (включить). 0 -( выключить).
Одновременно с реле изменяется угол поворота сервопривода при 1 угол берется из регистра хранения 40003, а при 0 из регистра 40004.
При положении реле " выключено" возможно управлять углом поворота сервопривода напрямую, посылая команду записи в регистр 40002 с требуемым углом поворота.
Настройка датчика.
Посылая команду записи в регистр 40002 со значением от 1 до 247, можно сменить адрес датчика в системе.
Соответственно:
в регистр 40003 можно записать требуемый угол открытого положения сервокрана от 0 до 180 град.
в регистр 40004 можно записать требуемый угол закрытого положения сервокрана от 0 до 180 град.
в регистр 40005 - калибровочное смещение датчика температуры почвы ( в 0.1 цельсиях)
в регистр 40006 - калибровочное смещение датчика температуры воздуха ( в 0.1 цельсиях)
запись в регистры 40005 и 40006 может потребоваться из за производственного разброса калибровки датчиков LM35
Все изменения переписываются в долговременную память только по команде записи 1 в флаговый регистр с адресом 3.
При программировании пустого микроконтроллера нужно установить Fuses:
EXTENDED: 0xFD, HIGH: 0xDA, LOW: 0xFF, LOСKBIT: 0xFF
|