На главную

  Датчики
  Разное

GygroSensor Ver. 3.2 (ч.2)

Принципиальная схема


В целях совместимости с проектом 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.

Файлы:

схема: Gygro_v3.2.spl7


печатная плата датчика: GygroV3.2.lay


печатная плата сенсора: sensorV3.2.lay


прошивка: GygroV3.2.hex


При программировании пустого микроконтроллера нужно установить Fuses:  EXT: 0xFD, HIGH: 0xDA, LOW:  0xFF, LOСK:  0xFF


Статью добавил Николай.