Суббота, 30.11.2024, 10:29Главная | Регистрация | Вход

Меню сайта

Форма входа

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

Поиск

Статистика


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

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







 








 








 

Категория: Мои статьи | Добавил: nikr (17.01.2014) | Автор: Николай E
Просмотров: 1840 | Комментарии: 5 | Теги: Modbus, влажность, Полив, датчик | Рейтинг: 0.0/0
Всего комментариев: 5
5 val21891  
0
val21891@yandex.ru

4 val21891  
0
Спасибо. Прямо сейчас не горит. Сам тоже не дома. Вахта...Если не забудете, буду вам благодарен.

3 Nikr  
0
Сейчас не получится. Я далеко от дома. Да и найти код надо- больно давно писал.

2 val21891  
0
На даче планирую полив. В наличии задвижки, соленоиды. Есть ПЛК блюпилл на стмке, заточеная под софт мицубиши FX2X. Есть модбас на борту. Просто аналогов нет. Вот по модбасу  и нужно притянуть датчик  освещенности. Без него полив , я так понимаю не организуешь. У вас как раз есть пример такого датчика - сенсора освещенности.  В любом случае вам благодарен. 6 аналоговых входов и так выше крыши.   
С ув.,Валентин.

1 val21891  
0
Николай, здравствуйте. Можете поделиться кодом? Устройств с модбасом много в сети. Да все не то. Для меня лично. Застрял я на пиках и атмегах.

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