В статье представляю очередное сетевое устройство с интерфейсом TinyOneWireNet – диммер.
Предыдущая статья Навигация по рубрике Следующая статья
Общее описание.
Основная функция любого диммера – регулировка яркости электрических ламп. В устройстве, о котором идет речь, управление яркостью происходит через сеть TinyOneWireNet.
Могут быть использованы как лампы накаливания, так и светодиодные диммируемые лампы напряжением 220 В.
Принцип регулировки яркости – широтно-импульсная модуляция (ШИМ). При постоянной частоте и амплитуде изменяется скважность импульсов от 0 до 100%.
Частота ШИМ 312,5 Гц, период 3,2 мс. Число градаций яркости – 200.
Существует функция записи значения яркости в EEPROM устройства. При включении питания это значение будет использоваться, как начальное.
Данные на диммер передаются за 1,6 мс.
Принципиальная схема и конструкция.
Устройство состоит из двух гальванически развязанных частей:
- узла формирования интерфейса TinyOneWireNet;
- ШИМ модулятора с высоковольтными ключами.
Они связаны через оптрон, обеспечивающий гальваническую развязку между управляющей сетью и питанием 220 В.
Управление нагрузкой собрано по распространенной схеме с использование высоковольтных MOSFET-ключей.
К такой схеме нельзя подключать индуктивную нагрузку. От ЭДС самоиндукции могут сгореть транзисторы. В этом случае необходимо добавить ограничивающие выбросы напряжения элементы, например пробивные стабилитроны.
Если оставить только сетевой узел на PIC-контроллере D1, оптрон D3 и PIC-контроллер D2, то получится устройство формирования ШИМ сигнала. К нему можно добавить любые электронные ключи, например мощные на низковольтную нагрузку, и получится другое устройство.
Я выбрал не самые лучшие для этой схемы транзисторы STP26NM60N. Просто они у меня были в наличии. Управляющие импульсы на затворах транзисторов имеют амплитуду 5 В. Поэтому лучше использовать транзисторы с низким пороговым напряжением. Параметр называется Gate threshold voltage (VGS).
Конструктивно электронная схема также выполнена из двух частей.
- Блок формирования интерфейса TinyOneWireNet.
- ШИМ модулятор с высоковольтными ключами.
Гальваническая развязка между ними обеспечивает электрическую безопасность эксплуатации устройства.
- Первая часть конструктивно выполнена на универсальной плате.
- Вторая пока в виде макета.
Установил электронику в стандартный сетевой удлинитель. Все удачно поместилось. В результате получилось конструктивно законченное устройство.
Работа с диммером в системе Ардуино.
Традиционно подключил диммер ко 2му выводу платы Ардуино.
С помощью монитора задал адрес.
Для работы с диммером в библиотеке TinyOneWireNet.h существует только одна функция.
uint8_t setPWM_dimmer(uint8_t adr, uint8_t pwm, uint8_t ch); // задать значение ШИМ
- adr – адрес устройства:
- pwm – значение ШИМ (от 0 до 199);
- ch – номер канала;
- ch=0 – загрузка яркости;
- ch=9 – загрузка яркости с записью в EEPROM начального значения.
Ниже приведен скетч, который управляет яркостью через монитор последовательного порта.
// управление диммером
#include <TinyOneWireNet.h>
#define NET_PIN 2 // вывод данных сети
#define BETWEEN_COM_TIME 2 // пауза между командами (мс)
TinyOneWireNet sens(NET_PIN);
void setup() {
Serial.begin(9600);
sens.onLine(10);
}
void loop() {
if( Serial.available() != 0 ) {
delay(20);
uint8_t i=0;
char str[20];
while( (Serial.available() != 0) && (i < 20) ) {
str[i]= Serial.read();
i++;
}
str[i]=0;
if( sens.setPWM_dimmer(12, atoi(str), 0) != 0 ) Serial.println("Error");
}
}
Если в программе изменить последний аргумент функции
sens.setPWM_dimmer(12, atoi(str), 9)
на 9, то значение яркости будет загружаться в EEPROM и использоваться как начальное при включении питания.
В следующей статье будет рассказ о точном измерителе уровня освещенности – люксметре.