Модуль выполнен в корпусе телефонной розетки и имеет 1 канала управления мощностью нагрузки переменного тока 220в. Симистор в этом модуле без радиатора потянут ток нагрузки не более 2а, ну а с радиатором до 16а.
Также в модуле предусмотрена световая индикация. Яркость светодиода пропорциональна выдаваемой мощности.
Модуль предназначен для подключения к магистрали ModBus контакты (А,В) и питается от постоянного напряжения 12в контакты (+12в, GND). Высоковольтная часть модудя запитана от сети 220в через двухконтактный винтовой разъем (220v). Для подключения нагрузки тоже используется такой же двухконтактный винтовой разъем (OUT) Для общения с управляющим контроллером или управляющей программой на компьютере датчик использует открытый протокол Modbus RTU.
В нем он является подчиненным устройством с адресом в системе от 1 до 247. Адреса с 248 по 255 по описанию протокола зарезервированы. В данном датчике используется следующее адресное пространство ModBus
Регистры флагов 1 - флаг готовности датчика ( 1 - готов, 0 - не готов) - информативный для управляющей программы - писать туда не надо 3 - регистр сохранения настроек в EEPROM ( 1 - сохранить настройки, 0 - сохранять не надо)
Регистры хранения 40001 - регистр ID Modbus устройства ( от 1 до 247, по умолчанию 247) 40002 - мощность на нагрузке (от 0 до 255, по умолчанию 0) 0 - выход выключен, 255 - 100% мощность
Поддерживаемые датчиком функции протокола Modbus Для каждого типа данных в протоколе используются определенные функции.
3.3.1 Чтение данных 1 (0x01) — чтение значений из нескольких регистров флагов (Read Coil Status). 3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers). 4 (0x04) — чтение значений из нескольких регистров ввода (Read Input Registers).
3.3.2 Запись данных 5 (0x05) — запись значения одного флага (Force Single Coil). 6 (0x06) — запись значения в один регистр хранения (Preset Single Register).
Печатная плата выполнена из одностороннего стеклотекстолита.
Принципиальная схема
В целях совместимости с проектом Arduino для реализации датчика был выбран процессор AtMega 8А тактированный на частоту 16мГц. В ардуино цепи модуля подключаются к следуюшим контактам платы: D0 - Rx D1 - Tx D2 - детектор нуля D9 - выход на симистор D10 - светодиод А5 - пин разрешения передачи по UART
Источник питания датчика. Датчик питается напряжением 12в (Vin). Так как процессор и остальные схемы датчика требуют питания 5в, то в схему включен маломощный интегральный регулятор VR1 78L05 на который напряжение подается через защитный 1А диод Шоттки D1.
Детектор нуля. Детектор нуля состоит из диодного моста Br1, зарядной цепи накопительного конденсатора R5,D2,C5, ключа R9,R10,T2,R8,T1, токоограничивающего резистора R7, транзисторного оптронного ключа PC817 и подтягивающего резистора R2.
Выходная цепь. Выходной сигнал с ножка 13 (D9) МК через токоограничивающий резистор R14 подается на cимисторный оптрон без детектора фазы moc3023. Симистор VD1 управляется через резистора R11. Учитывая небольшие размеры диммера необходимо подобрать экземпляр симистора с наименьшим управляющим током. От этого зависит мощность и соответственно размер резистора R11. Для этого надо измерить тестером сопротивление открытого управляющего элекрода ( крайние ножки корпуса T220). Мне попадались экземпляры от 40 до 590ом. При значении больше 200 можно использовать 0.25вт резистор. Паралельно симистору включена бустерная цепь R13, C8. Для уменьшения импульсных помех последовательно с нагрузкой включен дроссель L1. Дроссель намотан на феритовом кольце D=12,d=7,h=7, взятом из старой компьютерной материнской платы и содержит 20 витков провода d= 0,8 мм.
Схема преобразователя уровня RS485 для связи по протоколу ModBus. Преобразователь уровня построен на микросхеме IC1 (max485), которая подключена к выводам UART микропроцесоора IC2. Сигнал RX ножка 30 (D0) подтяyт к 5в резистором R3. Направление передачи задает МК ножкой 28 подтянутой к нулю резистором R6. Для согласования линии RS485 служит терминальный резистор R4. Перемычка Jmp1 устанавливается только на последнем устройстве в линии RS485 для предотвращения помех переотражения сигнала.
Индикатор
Индикаторный светодиод LED1 подключен к ножке 14 МК (PB2) через токоограничивающий резистор R12. При записи в регистр управления мощностью нагрузки (40002) отличного от 0 значения индикатор начинает светиться с яркостью пропорциональной выходной мощности.
Системные цепи. Цепь сброса микроконтроллера состоит из R1 и S1. Разъем ICSP для программирования микроконтроллера.
Если датчик собирается на плате Arduino, то на время программирования через USB необходимо отключить цепи RS485 от ножек TX и RX , которые будут мешать процессу.
Работа диммера Этот тип диммера с регулированием фазы, отсекающий передний фронт. В цепи переменного тока симистор будет автоматически выключаться при смене полярности тока. Это происходит, потому что напряжение (а значит и ток) проходит через 0. При нулевом токе симистор не может обеспечивать проводимость и отключается. Каждую секунду процесс переключения совершается 100 раз. Включается симистор с необходимой задержкой от начала каждого полупериода. Такой тип диммера предназначен для регулирования яркости ламп накаливания, температуры различных нагревателей резисторного типа (например, паяльников и утюгов). С осторожностью можно применять для регулировки частоты вращения маломощных электродвигателей.
При включении диммера из долговременной памяти EEPROM считывается адрес в системе и записываются в регистр хранения ModBus (40001). Если в EEPROM еще ничего не занесено, что бывает сразу после заливки прошивки. В EEPROM и соответствующий ей регистр ModBus (40001) записываются адрес 247 После этого управление передается ModBus,. Для управления каналами модуля по ModBus посылается команда записи в регистр (40002) значения от 0 до 100. При нуле диммер выключен. При 100 включен на полную мощность.
Настройка диммера.
Посылая команду записи в регистр 40001 со значением от 1 до 247, можно сменить адрес датчика в системе. Все изменения переписываются в долговременную память только по команде записи 1 в флаговый регистр с адресом 3
|