На главную

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

GygroSensor Ver. 3.3

Датчик опрашивает до 8 сенсоров с периодом опроса 2 раза в секунду. Разрешение на работу сенсоров выдается последовательно с двойным перекрытием, то есть в каждый момент разрешение дано не более чем 2 сенсорам. В итоге потребление не превышает 15-16ма. Так как и сам датчик и каждый сенсор потребляют около 5ма.
 На любой канал можно подключать: сенсор влажности, термосенсор либо любой сенсор с выходным напряжением от 0 до 1.1в., так как датчик избавился внешнего ИОН.  Световой индикатор и цепи управления внешними устройствами тоже отсутствуют.




Для общения с управляющим контроллером или управляющей программой на компьютере датчик, как и его предшественник, использует открытый протокол Modbus RTU.


 В данном датчике используется следующее адресное пространство 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)
  30007 -  регистр 7-го канала            ( в еденицах АЦП от 0 до 1024)
  30008 -  регистр 8-го канала            ( в еденицах АЦП от 0 до 1024)

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

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




Схемотехника и работа датчика.


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

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

ИОН
В данной версии используется внутренний ИОН микропроцессора на 1,1в.

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


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

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

 

Работа датчика


При  включении датчика из долговременной памяти EEPROM считываются настроечные данные и записываются в соответствующие регистры хранения ModBus.
Если в EEPROM еще ничего не занесено, что бывает сразу после заливки прошивки.
После этого управление передается ModBus, периодически производятся чтение сенсоров.
Чтение сенсоров разбито на 9 таймслотов по 50мс и производится по линейным алгоритмам, чтобы не мешать работе ModBus клиента.
1-й таймслот: выдается логическая 1 на En 1го канала,    
2-й таймслот: выдается логическая 1 на En 2го канала, считывается АЦП 1-го канала,
3-й таймслот: выдается логическая 1 на En 3го канала, считывается АЦП 2-го канала, выдается логический 0 на En 1го канала.
............
8-й таймслот:  считывается АЦП 8-го канала, выдается логический 0 на En 7го канала.
9-й таймслот:выдается логический 0 на En 8го канала.

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


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

Посылая команду записи в регистр 40001 со значением от 1 до 247, можно сменить адрес датчика в системе.
Все изменения переписываются в долговременную память только по команде записи 1 в флаговый регистр с адресом 3

Файлы:

схема: Gygro_v3.3.spl7

печатная плата: GygroV3.3.lay

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

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