Среда, 24.04.2024, 07:21Главная | Регистрация | Вход

Меню сайта

Форма входа

Категории раздела

Поиск

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0
Каталог статей
Главная » Статьи » Мои статьи

Датчик (контроллер) влажности версия 3.4

Данная версия датчика является полноценным 6 канальным контроллером полива.
Контроллер обслуживает 6 каналов измерения, к которым можно подключать сенсоры с выходным напряжением от 0 до 1,1в. например:

sensor 7400

или  sensor 80MHz


Каждому каналу измерения соответствует свой выход управления сервокраном.

Принцип дейстрия сервокрана основан на пережимании силиконовой трубки 3х2мм. Для привода крана используются любые дешевые микросервы (например НК 15168).


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

Закрытое положение сервокрана

Открытое положение сервокрана

Сервокраны подсоединяются к магистральному трубопроводу низкого давления 8х6мм.

Магистральный трубопровод питается либо от накопительной емкости


 либо от стандартного водопровода через редукционный клапан.

Так же данный контроллер можно подключить по протоколу ModBus к системе мониторинга влажности почвы.

Так как разъемов стало значительно больше, печатная плата была разработана под монтажную коробку 6х6 см. КРК2701 фирмы HEGEL.

 

 

1.ModBus

Для общения с системой мониторинга на компьютере датчик использует открытый протокол Modbus RTU.
1.1 Адреса
В нем он является подчиненным устройством с адресом в системе от 1 до 247. Адреса с 248 по 255 по описанию протокола зарезервированы.
Адрес 0 используется протоколом для широковещательной передачи и в данном датчике тоже не используется.
1.2 Модель данных
Данные по протоколу ModBus хранятся в дискретных (1 бит) и аналоговых (16 бит) регистрах, имеющих 16 битный адрес.
Причем для разных типов данных отведены определенные диапазоны адресов.
Регистры флагов (Coils)                  дискретный тип  (чтение и запись)  адреса 1- 9999
Дискретные входы (Discrete Inputs)      дискретный тип (только чтение)      адреса 10001- 19999
Регистры ввода (Input Registers)    аналоговый тип (только чтение)      адреса 30001- 39999
Регистры хранения (Holding Registers) аналоговый тип (чтение и запись)   адреса 40001- 49999

В данном датчике используется следующее адресное пространство ModBus

Регистры флагов
  1     -  флаг готовности датчика              ( 1 - готов, 0 - не готов)    - информативный для управляющей программы - писать туда не надо
  3     -  регистр сохранения настроек в EEPROM ( 1 - сохранить настройки, 0 - сохранять не надо)

Регистры ввода
  30001 -  сенсор 1-го канала                  ( в еденицах АЦП от 0 до 1024)
  30002 -  сенсор 2-го канала                  ( в еденицах АЦП от 0 до 1024)
  30003 -  сенсор 3-го канала                  ( в еденицах АЦП от 0 до 1024)
  30004 -  сенсор 4-го канала                  ( в еденицах АЦП от 0 до 1024)
  30005 -  сенсор 5-го канала                  ( в еденицах АЦП от 0 до 1024)
  30006 -  сенсор 6-го канала                  ( в еденицах АЦП от 0 до 1024)

Регистры хранения
  40001 -  регистр ID Modbus устройства         ( от 1 до 247, по умолчанию 247)

  40011 -  угол откр. сервокрана 1-го канала            ( по умолчанию 90 град)
  40012 -  угол откр. сервокрана 2-го канала            ( по умолчанию 90 град)
  40013 -  угол откр. сервокрана 3-го канала            ( по умолчанию 90 град)
  40014 -  угол откр. сервокрана 4-го канала            ( по умолчанию 90 град)
  40015 -  угол откр. сервокрана 5-го канала            ( по умолчанию 90 град)
  40016 -  угол откр. сервокрана 6-го канала            ( по умолчанию 90 град)

  40021 -  угол закр. сервокрана 1-го канала            ( по умолчанию 0 град)
  40022 -  угол закр. сервокрана 2-го канала            ( по умолчанию 0 град)
  40023 -  угол закр. сервокрана 3-го канала            ( по умолчанию 0 град)
  40024 -  угол закр. сервокрана 4-го канала            ( по умолчанию 0 град)
  40025 -  угол закр. сервокрана 5-го канала            ( по умолчанию 0 град)
  40026 -  угол закр. сервокрана 6-го канала            ( по умолчанию 0 град)
 
  40031 -  время полива 1-го канала            ( по умолчанию 5 сек)
  40032 -  время полива 2-го канала            ( по умолчанию 5 сек)
  40033 -  время полива 3-го канала            ( по умолчанию 5 сек)
  40034 -  время полива 4-го канала            ( по умолчанию 5 сек)
  40035 -  время полива 5-го канала            ( по умолчанию 5 сек)
  40036 -  время полива 6-го канала            ( по умолчанию 5 сек)
 
  40041 -  время между поливами 1-го канала            ( по умолчанию 60 сек)
  40042 -  время между поливами 2-го канала            ( по умолчанию 60 сек)
  40043 -  время между поливами 3-го канала            ( по умолчанию 60 сек)
  40044 -  время между поливами 4-го канала            ( по умолчанию 60 сек)
  40045 -  время между поливами 5-го канала            ( по умолчанию 60 сек)
  40046 -  время между поливами 6-го канала            ( по умолчанию 60 сек)
 
  40051 -  порог вкл. полива 1-го канала            ( по умолчанию 700)
  40052 -  порог вкл. полива 2-го канала            ( по умолчанию 700)
  40053 -  порог вкл. полива 3-го канала            ( по умолчанию 700)
  40054 -  порог вкл. полива 4-го канала            ( по умолчанию 700)
  40055 -  порог вкл. полива 5-го канала            ( по умолчанию 700)
  40056 -  порог вкл. полива 6-го канала            ( по умолчанию 700)
 
  40061 -  порог откл. полива 1-го канала            ( по умолчанию 200)
  40062 -  порог откл. полива 2-го канала            ( по умолчанию 200)
  40063 -  порог откл. полива 3-го канала            ( по умолчанию 200)
  40064 -  порог откл. полива 4-го канала            ( по умолчанию 200)
  40065 -  порог откл. полива 5-го канала            ( по умолчанию 200)
  40066 -  порог откл. полива 6-го канала            ( по умолчанию 200)


1.3 поддерживаемые датчиком функции протокола Modbus
Для каждого типа данных в протоколе используются определенные функции.

1.3.1 Чтение данных
1 (0x01) — чтение значений из нескольких регистров флагов (Read Coil Status).
2 (0x02) — чтение значений из нескольких дискретных входов (Read Discrete Inputs).  - данную функцию датчик поддерживает, но не имеет соответствующих регистров.
3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers).
4 (0x04) — чтение значений из нескольких регистров ввода (Read Input Registers).

1.3.2 Запись данных
5 (0x05) — запись значения одного флага (Force Single Coil).
6 (0x06) — запись значения в один регистр хранения (Preset Single Register).

 

Схема контроллера

2. Схемотехника и работа датчика.
В целях совместимости с проектом Arduino для реализации датчика был выбран процессор AtMega 328 тактированный на частоту 16мГц.

2.1 Источник питания датчика.
Датчик питается напряжением 12в (Vin). Так как процессор и остальные схемы датчика требуют питания 5в,
то в схему включен маломощный интегральный регулятор R1,C1, VR2,C4  на который напряжение подается через защитный 1А диод Шоттки D1. 
В схеме присутствует второй источник питания VR1, предназначенный исключительно для питания сервоприводов.
2.2 ИОН
В данной версии используется внутренний ИОН микропроцессора на 1,1в.

2.3  схема преобразователя уровня RS485 для связи по протоколу ModBus.
Преобразователь уровня построен на микросхеме IC2 (max485), которая подключена к  выводам UART микропроцесоора IC1. Сигнал RX ножка 30 (D0)  подтяyт к 5в резистором R11.
 Направление передачи задает МК ножкой 28 (D2) подтянутой к нулю резистором R13. Для согласования линии RS485 служит терминальный резистор  R20.
Перемычка Jmp1 устанавливается только на последнем устройстве в линии RS485 для предотвращения помех переотражения сигнала..


2.4 Системные цепи.
Цепь сброса микроконтроллера состоит из R10. Цепь питания аналоговой части микропроцессора L1 и С7. Разъем ICSP для программирования микроконтроллера.

Если датчик собирается на плате Arduino, то на время программирования через USB необходимо отключить цепи RS485 от ножек TX и RX , которые будут мешать процессу.

3.Работа датчика.
При  включении датчика из долговременной памяти EEPROM считываются настроечные данные и записываются в соответствующие регистры хранения ModBus.
Если в EEPROM еще ничего не занесено, что бывает сразу после заливки прошивки.
После этого управление передается ModBus, периодически производятся чтение сенсоров.

3.1 Опрос сенсоров.
Чтение сенсоров разбито на 9 таймслотов по 50мс и производится по линейным алгоритмам, чтобы не мешать работе ModBus клиента.
1-й таймслот: выдается логическая 1 на En 1го канала,    
2-й таймслот: выдается логическая 1 на En 2го канала, считывается АЦП 1-го канала,
3-й таймслот: выдается логическая 1 на En 3го канала, считывается АЦП 2-го канала, выдается логический 0 на En 1го канала.
............
6-й таймслот:  считывается АЦП 6-го канала, выдается логический 0 на En 5го канала.
9-й таймслот:выдается логический 0 на En 6го канала.

При таком алгоритме режим сенсор любого канала работает 100мс и в середине этого интервала производится считывание показаний.
Цикл работы датчика около 0.5с то есть обновление показаний для каждого сенсора происходит 2 раза в секунду.

3.2 Управление поливом.

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


4.Настройка датчика.

Посылая команду записи в любой доступный регистр хранения (40001, 40011-40016, 40021-40026 40031-40036 40041-40046 40051-40056 40061-40066)
можно изменить все настройки контроллера.
Все изменения переписываются в долговременную память только по команде записи 1 в флаговый регистр с адресом 3

Категория: Мои статьи | Добавил: nikr (11.03.2015) | Автор: Николай E
Просмотров: 4421 | Комментарии: 2 | Теги: Датчик влажности, Полив | Рейтинг: 5.0/2
Всего комментариев: 2
2 nikr  
0
Ну да у "sensor 80MHz" диапазон выходного напряжения увеличен. Чтобы привести его к нужному ОУ надо включить в режиме повторителя. т.е. R5 закоротить, а R6  удалить.

1 pavelshat  
0
Здравствуйте.
В этой  статье Вы пишете , что к контроллеру влажности подойдёт "sensor 80MHz", при этом к нему (контроллеру)  можно подключать сенсоры с выходным напряжением от 0 до 1,1в, а у "sensor 80MHz" диапазон выходных напряжений в грунте от 1.1 до 3.6 вольта. Прокомментируйте , пожалуйста, эту не стыковку диапазонов.
Что нужно изменить , что бы "sensor 80MHz" подключить к Датчику  влажности версии 3.4 ?
Спасибо.

Имя *:
Email *:
Код *:
Copyright MyCorp © 2024 | Бесплатный хостинг uCoz