Датчик опрашивает до 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
|