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

Меню сайта

Форма входа

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

Поиск

Статистика


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

Диммер по алгоритму Брезенхейма

      Модуль выполнен в корпусе телефонной розетки и имеет 2 канала управления мощностью нагрузки переменного тока 220в.

Симисторы в этом модуле без радиатора потянут ток нагрузки не более 2а, ну а с радиатором до 16а.

Также в модуле предусмотрена световая индикация включенного канала. Светодиод загорается при каждом полупериоде когда на нагрузку подано напряжение.

Модуль предназначен для подключения к магистрали ModBus контакты (А,В) и питается от постоянного напряжения 12в контакты (+12в, GND).
Высоковольтная часть модудя запитана от сети 220в через двухконтактный винтовой разъем (220v).
Для подключения нагрузки тоже используются такие же двухконтактные винтовые разъемы (OUT1, OUT2)

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

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

Регистры хранения
40001 - регистр ID Modbus устройства ( от 1 до 247, по умолчанию 247)
40002 - мощность на 1 канал (от 0 до 255, по умолчанию 0) 0 - выход выключен, 255 - 100% мощность
40003 - мощность на 2 канал (от 0 до 255, по умолчанию 0) 0 - выход выключен, 255 - 100% мощность


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

3.3.1 Чтение данных
1 (0x01) — чтение значений из нескольких регистров флагов (Read Coil Status).
2 (0x02) — чтение значений из нескольких дискретных входов (Read Discrete Inputs). - данную функцию датчик поддерживает, но не имеет соответствующих регистров.
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
D5 - светодиод 1-го канала
D6 - светодиод 2-го канала
D9 - выход 1-го канала
D10 - выход 2-го канала
А5 - пин разрешения передачи по UART


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

 Выходные цепи.
Выходной сигнал с ножка 13 (D9) МК через токоограничивающий резистор (R6,R12) подается на cимисторный оптрон с детектором фазы moc3041.
Симистор (VD1,VD2) управляется через резистор (R7,R9). Паралельно симистору включена бустерная цепь (R5, C5;R11, C8).



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


 Индикаторы

Индикатор первого канала LED1 подключен к ножке 9 МК (PD5) через токоограничивающий резистор R8.
Индикатор второго канала LED2 подключен к ножке 10 МК (PD6) через токоограничивающий резистор R10.
При записи в регистры управления мощностью нагрузки (40002,40003) отличного от 0 значения индикаторы начинают вспихивать во включенные полупериоды.

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

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

Работа диммера

Для регулирования мощности в данном модуле применен алгоритм Брезенхема.
"Алгоритм Брезенхэма (назван в честь автора этого алгоритма, Джека Е. Брезенхэма) - алгоритм, имеющий очень широкое применение.
Этот алгоритм позволяет определеить оптимальное равное распределение (отношение) элементов можнества M к элементам множеству Z".
По этому методу переключение силового симистора происходит только при переходе полуволны сетевого напряжения через 0
в отличие от фазового регулирования при котором создаются шумы в радиочастотах средних и длинных волн а так же очень сильно портится синусоида сети.
Суть метода в открывании симистора на весь полупериод синусоиды единоразово а потом 99 полупериодов держать закрытым -результат 1% мощности….
Лампочка будет «вспыхивать» каждую секунду еле-красным накалом, мотор будет получать лёгкий толчек а тен будет немного теплым.
При мощности скажем в 50% каждый первый полупериод симистор будет открываться а каждяй второй закрыт.
Лампочка будет моргать как через диод мотор будет крутиться как на 120 вольтах а тен будет работать в пол накала…
При этом ввиду включения симистора в моменты перехода через ноль — исключены все шумы и помехи и вообще какие-либо влияния на питающую цепь.
Такой регулятор не очень подходит для работы с лампами накаливания, так как у него относительно низкая частота коммутации нагрузки,
что приведет к значительному мерцанию.
Нужно отметить, что в случае управления мощной нагрузкой коммутация отдельных полупериодов может оказаться нежелательной,
так как это приводит к появлению постоянной составляющей потребляемого от сети тока.
Такой режим является нежелательным для силовых трансформаторов.
В таком случае необходимо переходить к делению по целым периодам.
Для этого в регистр 4 modbus записывается 1 и модуль перекдючается в этот режим.

При включении датчика из долговременной памяти EEPROM считывается адрес в системе и записываются в регистр хранения ModBus (40001).
Если в EEPROM еще ничего не занесено, что бывает сразу после заливки прошивки.
В EEPROM и соответствующий ей регистр ModBus (40001) записываются адрес 247
После этого управление передается ModBus,.
Для управления каналами модуля по ModBus посылается команда записи в регистры (40002,40003) .


  Настройка диммера.

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

Категория: Мои статьи | Добавил: nikr (24.03.2014) | Автор: Николай E
Просмотров: 4909 | Комментарии: 1 | Теги: диммер, брезенхейм | Рейтинг: 2.0/1
Всего комментариев: 1
1 Хабиб  
0
Без программы - бестолковая статья.

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