Диммер переменного тока
- Войдите на сайт для отправки комментариев
Пнд, 08/04/2019 - 07:57
Здравствуйте, решил собрать диммер, и испытать на лампочке.
Схема и код отсюда: https://github.com/AlexGyver/AC_Dimmer/blob/master/README.md
Вот только за неимением в наличии компоментов пришлось ставить что нашлось. В итоге вместо pc814 стоит pc817. Опторазвязка на диммировании отсутствует. Управляется симистор напрямую с пина arduino.
Вроде бы все работает, регулируется, но лампочка очень сильно моргает, когда яркость выше 50%.
Есть ли способ победить это, не меняя существующие компоненты?
/* Диммер переменки на Arduino. Симистор через оптопару подключен к 4 пину, детектор нуля ко 2 пину. Переменная Dimmer - величина диммирования, от 0 до 255 В этом коде на пин А0 подключен потенциометр для управления яркостью Также можно вводить число для переменной Dimmer через монитор порта, для этого в лупе надо раскомментировать код */ #define dimPin 4 #define zeroPin 2 #include <CyberLib.h> // шустрая библиотека для таймера volatile int tic, Dimmer; void setup() { Serial.begin(9600); pinMode(dimPin, OUTPUT); digitalWrite(dimPin, 0); pinMode(zeroPin, INPUT); // настраиваем порт на вход для отслеживания прохождения сигнала через ноль attachInterrupt(0, detect_up, FALLING); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень StartTimer1(timer_interrupt, 40); // время для одного разряда ШИМ StopTimer1(); // остановить таймер Serial.println("Start"); } void loop() { // раскомментировать для ввода числа диммирования чеерез монитор порта (0 - 255) if (Serial.available()) { Dimmer = Serial.parseInt(); Serial.println(Dimmer); } // раскомментировать для управления потенциометром (аналоговый А0) // Dimmer = map(analogRead(0), 0, 1023, 240, 0); } //----------------------ОБРАБОТЧИКИ ПРЕРЫВАНИЙ-------------------------- void timer_interrupt() { // прерывания таймера срабатывают каждые 40 мкс tic++; // счетчик if (tic > Dimmer) // если настало время включать ток digitalWrite(dimPin, 1); // врубить ток } void detect_up() { // обработка внешнего прерывания на пересекание нуля снизу tic = 0; // обнулить счетчик ResumeTimer1(); // перезапустить таймер attachInterrupt(0, detect_down, RISING); // перенастроить прерывание } void detect_down() { // обработка внешнего прерывания на пересекание нуля сверху tic = 0; // обнулить счетчик StopTimer1(); // остановить таймер digitalWrite(dimPin, 0); // вырубить ток attachInterrupt(0, detect_up, FALLING); // перенастроить прерывание } //----------------------ОБРАБОТЧИКИ ПРЕРЫВАНИЙ
Если ПК ещё не сгорел, то найдите отличие 814 от 817. Подумайте.
Если ПК ещё не сгорел, то найдите отличие 814 от 817. Подумайте.
Что то здесь другое. А вот что, понять не могу. Та же схема и с этим же обработчиком, на 4N25 работает корректно. 4N25 по схемотехнике ничем от 817 не отличается????????
То ТС, я понимаю, когда опасные для жизни цепи упрощали в советском союзе, там деталей было хрен найдешь. А вот зачем сейчас? Или считаете, что ваша шкура и ваших близких, не стоит пяти рублей?
Как раз с 4N25 тоже должен моргать.) Потому что по логике программы, зажегся один светодиод в начале полупериода - включили симистор (с задержкой по таймеру), погас светодиод - выключили симистор (кстати, это лишнее, т.к. симистор и сам выключится в нуле). А что со вторым полупериодом будем делать? Не видим мы его в упор без второго оптотранзистора! Или сдвоенного, как в 814.
Все, виноват, давно делал. Там мостик стоит.((((
Ну да, или же нужно заряжать таймер строго на 10 мс с момента включения симистора, с тем что бы вычислить позицию включения во втором (невидимом) полупериоде.)
купи моську 63-ю и забуть все трудности как страшный сон
ПыСы. НЕ СЛУШАЙ МЕНЯ. Я всё перепутал.
Дида, злобный аднака, в диммер зерогросс предлагать.)))
Если ПК ещё не сгорел, то найдите отличие 814 от 817. Подумайте.
814-тый как нуль детектор выделит оба полупериода,
а 817-тый через один.
Ну и с какого хрена у вас всё должно сгореть?
А вот моргание как раз от того что нуль через один пермод детектится.
Поставить мостик на входе опторона - он всё и поправит.
Ну и с какого хрена у вас всё должно сгореть?
Читайте с начала. Управляется симистор напрямую с пина arduino.
Ну и с какого хрена у вас всё должно сгореть?
Читайте с начала. Управляется симистор напрямую с пина arduino.
Нигде не сказано где он берёт питание.
На счет безопасности, ардуина от телефонной зарядки работает. Максимум это она сгорит и автомат сработает.
На счет экономии. Нет в городе магазинов с радиодеталями. Вот пока с али жду решил по эксперементировать
С этой должно нормально работать.
Дида, злобный аднака, в диммер зерогросс предлагать.)))
ТОЧНО!!! Я спьяну забыл, я не ланпы диммировал моськой, а вентилятор в вытяжке. Ланпа еще больше будет от моськи мерцать. Спасибо, что поправил
С этой должно нормально работать.
Вот и я не пойму, что не так.
Может Вы подскажете, лампа для эксперемента только. Планирую регулировать обороты двигателя от стиральной машины. Насколько критичны будут эти моргания?
Читал, что на общую сеть помехи могут идти. От лампочки ничего не было.
Диммер, не совсем подходящая вещь для регулировки асинхронных двигателей. ИМХО.
Регулятор оборотов с обратной связью для двигателя от стиральной машины на Ардуино.
Вообщем заказал детали, а пока возник другой вопрос.
Почему у меня оптрон не сгорел? С диодного моста выходит 178вольт. Только сейчас задумался.
Без оптрона должно быть поболее.) Не сгорел из за R3. Срочно вспоминаем закон Ома (особенно, если не знал).)
Для светодиодов критичным является протекающий ток. Если ограничить его правильно подобранным резистором, то ничего не сгорит.
...Управляется симистор напрямую с пина arduino.
Вроде бы все работает, регулируется, но лампочка очень сильно моргает, когда яркость выше 50%.
Есть ли способ победить это, не меняя существующие компоненты?
Полагаю, что нет. Посмотрите даташиты на BTA и BT для сравнения. Замените BTA на BT в случае без MOC.
Всем снова здравствуйте. Пришли мне детали с али, чтоб собирать по схеме в первом посте. Только злобный китаец прислал вместо pc814 el814.
С el814 вообще никак не работает. По даташиту разницы между ними не заметил, хотя может что то упустил.
Должно работать. Проверяйте детали и монтаж.
Всю голову сломал уже. Симистор рабочий, детектор нуля тоже вроде работает.
Такой код заливаю, нули в мониторе приходят.
Где-то pinMode(interruptPin, ...) потеряли, если что.
Где-то pinMode(interruptPin, ...) потеряли, если что.
Та не, там обычный вход по умолчанию.
Похоже нашел в чем проблема. Не срабатывает moc2021.
Что то ума не хватает, как его проверить. На контакт N1 подаю 5v через резистор 220ом.
На контакт N2 - gnd.
Контакты 4 и 6 должны начать звониться тестером, или на них тоже надо напряжение подать?
Знаю, что вопрос наверное детский, но все же.
тестеры разные бывают; возможно, твой слишком деликатный и измерительного напряжения/тока не хватает для срабатывания тиристора.
Всё оказалось просто. 3 из 10 moc3021 не рабочие пришли.
На МЕГА ошибка компиляции, видимо библиотека для МЕГИ недоработана.
А она для 2560 никогда и не заявлялась.