Nick  Iskrov

Диммер не работает под нагрузкой: MOC3052, PC814, BT139, arduino

2 сообщения в этой теме

Nick Iskrov    0

Здравствуйте, форумчане!

Прошу у вас помощи разобраться в проблеме с диммером лампы накаливания на основе фазового управления.

Прикрепил схему, которую я спаял для тестов с ардуиной. Также прикрепил показания осциллографа, снятые с контактов нагрузки через делитель напряжения (с лампой в цепи и без лампы в цепи).

При подключении лампы, напряжение на нагрузке = 0. Во всем диапазоне. Лампа загорается на 100% только когда фаза = 0. При всех остальных значениях фазы, напряжение на нагрузке = 0.

При выключении лампы из цепи нагрузки, фазовое управление работает как надо (судя по осциллографу). Включаю лампу в цепь - диммер перестает работать, лампа загорается только в момент, когда симистор пропускает полное напряжение...

Код ардуинки:

#include <CyberLib.h> //Библиотека от Cyber-Place.ru
volatile uint8_t tic, Dimmer1;
uint8_t data;
int i;

void setup() 
{ 
  D4_Out; //Настраиваем порты на выход
  D4_Low; //установить на выходах низкий уровень сигнала
  D2_In; //настраиваем порт на вход для отслеживания прохождения сигнала через ноль  
    attachInterrupt(0, detect_up, LOW);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
    StartTimer1(halfcycle, 40); //время для одного разряда ШИМ
    StopTimer1(); //остановить таймер
    UART_Init(115200); //инициализация порта
}
//********************обработчики прерываний*******************************
void halfcycle()  //прерывания таймера
{ 
  tic++;  //счетчик  
  if(Dimmer1 < tic ) D4_High; //управляем выходом
}

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
{  
 tic=0;             //обнулить счетчик
 ResumeTimer1();   //запустить таймер
 attachInterrupt(0, detect_down, HIGH);  //перепрограммировать прерывание на другой обработчик
}  

void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
{   
 StopTimer1(); //остановить таймер
 D4_Low; //логический ноль на выходы
 tic=0;       //обнулить счетчик
 attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик
} 
//*************************************************************************
void loop() 
{Start
  if (i >= 0 && i <= 200) {delay(50); Dimmer1 = i; i = i+1;}
  else {i = 0;}
  //Dimmer1=100;  
End}  

 

DIMMER_v2_tst_dlya_foruma.jpg

DIMMER_v2_tst_without_lamp.gif

DIMMER_v2_tst_with_lamp.gif

Изменено пользователем Nick Iskrov
редактировал 10 строку кода (D2_In;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для регулирования "скважности" на синусе нужен более точный детектор перехода через 0.

Вот мой пример, регулирование ступенями по 100uS. 

zcd.GIF

Zero crossing DS3486M_capture 2ms.bmp

Zero crossing DS3486M_capture 5ms.bmp

Zero crossing DS3486M_capture 10us.bmp

Zero crossing DS3486M_capture 500us.bmp

Zero crossing DS3486M_capture1.bmp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Евгений Егоров
      Доброго времени суток! Такая проблема:
      1) Имеется светодиодная полоска на алюминиевой основе 
      Маркировка на полоске Line470DL-2x10ALOSP-ED.01
      2) Блок питания ИПС50-350ТУ IP20 0120
      3) Диммер МАКЕЛ: 
      Диммер 600 W
      Цвет: Серебро
      Способ монтажа: Скрытый
      Потребляемая мощность: 60-600 W
      Номинальное напряжение: 250 V
      Степень защиты: IP20
      Страна: Турция
      Вообщем ситуация такая. необходимо регулировка света данных светодиодных полос. В электронике не силен и продавец магазина уверял меня что все будет работать, но после подключения совсем ничего не происходит. Диммер подключаю к клемам (-DIM +DIM) и тишина.
      На прямую подключаю светодиоды - работает, подключаю напрямую диммер к обычной лампе накаливания - работает, а вот диммер к блоку питания - нифига. хотелось бы узнать что не так. в принципе логика подсказывает что диммер работает от 220Вольт, а на выходе светодиодов уж явно не 220))) Знакомые ребята сказали что можно немного переделать данный диммер чтобы он работал с данными светодиодами через диммирование. Вообщем такая проблема. Если кто может помочь - Благодарен! Спасибо! Если появятся какие нибудь вопросы или уточнения то задавайте) Спасибо!!!



    • Гость Евгений
      Автор: Гость Евгений
      Доброго времени суток! Такая проблема:
      1) Имеется светодиодная полоска на алюминиевой основе 
      Маркировка на полоске Line470DL-2x10ALOSP-ED.01
      2) Блок питания ИПС50-350ТУ IP20 0120

      3) Диммер МАКЕЛ: 
      Диммер 600 W
      Цвет: Серебро
      Способ монтажа: Скрытый
      Потребляемая мощность: 60-600 W
      Номинальное напряжение: 250 V
      Степень защиты: IP20
      Страна: Турция
      Вообщем ситуация такая. необходимо регулировка света данных светодиодных полос. В электронике не силен и продавец магазина уверял меня что все будет работать, но после подключения совсем ничего не происходит. Диммер подключаю к клемам (-DIM +DIM) и тишина.
      На прямую подключаю светодиоды - работает, подключаю напрямую диммер к обычной лампе накаливания - работает, а вот диммер к блоку питания - нифига. хотелось бы узнать что не так. в принципе логика подсказывает что диммер работает от 220Вольт, а на выходе светодиодов уж явно не 220))) Знакомые ребята сказали что можно немного переделать данный диммер чтобы он работал с данными светодиодами через диммирование. Вообщем такая проблема. Если кто может помочь - Благодарен! Спасибо! Если появятся какие нибудь вопросы или уточнения то задавайте) Спасибо!!!
       
    • Автор: hardware_repair
      Добрый день, уважаемые форумчане!
      Для музейной экспозиции требуется устройство, создающее эффект "провисания" света при звуке взрывов. Концепция изделия состоит в том, что под звуки бомбёжки на конечных потребителях - лампочках Ильича, должно скакать напряжение. Необходимо предусмотреть настраиваемый порог срабатывания (гейт) и регулируемый по чувствительности (вероятно компактный угольный) микрофон.
      Технические данные:
      Вход (клеммы): напряжение питания 220в/50гц, ток до 3А (4*100вт лампочки); звуковой сигнал со встроенного в устройство микрофона.
      Регулировки: 1. Порог срабатывания устройства (свет не должен "дергаться под негромкие звуки"); 2. Чувствительность микрофона (настроить громкость срабатывания).
      Выход (клеммы): 4шт. 100-ваттных лампочки Ильича.
      Корпус: исполнение - прямоугольный "блочок" для применения внутри помещений, габариты - минимально возможные (маскировка в железную электро-установочную коробку).
      Кол-во требуемых блоков: 2шт.
       
      Кто сможет помочь с изготовлением данного изделия?
    • Автор: pingyini
      Всем доброго времени суток. Решил я сделать "умную" электронную сигарету на arduino. Концепция заключается в кнопочном управлении мощностью посредством ШИМ, наличии экрана, и некоторыми защитами в виде ограничения максимального времени нажатия и уход камня в сон (режим пониженного энергопотребления) после N секунд простоя.
      Вводные: по нажатию кнопки запускается ШИМ и управляет полевиком, но в целях защиты я хочу ограничить время выполнения кода до 7 секунд(что бы при случайном зажатии кнопки в кармане не получить травматическую ампутацию конечностей)

      Проблема пришла откуда не ждали - обработка нажатой основной кнопки срабатывает как попало. Нажимая кнопку обработчик может сработать сразу и отработает как по маслу, а может и через 5 нажатий не сработать вовсе.  Проверял в живую на Arduino UNO, Pro Mini (328е Меги) и в Proteus'е. Симптомы одни и те же.  Проблема очевидно в коде но я в упор не вижу в чем может быть загвоздка. Уровень у меня "штота умею" поэтому не судите строго. 
       
      #define pwmPin 5 #define buttonStart 3 #define maxOnTime 7000 //максимальное время выполнения условия нажатой кнопки #define RED_LED 7 #define GREEN_LED 8 int power = 150; //boolean StartState; boolean StartStateFlag; //Флаг кнопки Старт unsigned long pressTime; void setup() { pinMode(pwmPin, OUTPUT); pinMode(buttonStart, INPUT); pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); Serial.begin(9600); //чисто для отладки } void loop() { if (digitalRead(buttonStart) && StartStateFlag && ((millis() - pressTime) <= maxOnTime)) { // (1) если кнопка старт нажата И была отпущена И нажата менее 7 секунд выполняем: analogWrite(pwmPin, power); //запуск ШИМ Serial.println("PWM_ON"); digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); } else { // (2) иначе StartStateFlag = false; // кнопка небыла отпущена analogWrite(pwmPin, 0); digitalWrite(GREEN_LED, LOW); Serial.println("PWM_OFF"); pressTime = millis(); } if (!digitalRead(buttonStart)) { //(3) если кнопка не нажата analogWrite(pwmPin, 0); //остановка ШИМ Serial.println("PWM_OFF"); digitalWrite(RED_LED, HIGH); StartStateFlag = true; //была отпущена и можно входить в условие с нажатой кнопкой (1) } } И файлы: сам скетч, .elf и .hex для шПротеуса и проект Протеус.
      P. S. ШИМ в Протеусе не работает в принципе, в железе все ОК 
      BUTTON_TEST.ino
      BUTTON_TEST.ino.eightanaloginputs.hex
      BUTTON_TEST.ino.elf
      BUTTON_TEST.ino.with_bootloader.eightanaloginputs.hex
      ButtonTest.pdsprj
  • Сообщения

    • Прошу прощения у профи - наковырял несколько моторчиков из разных офисных машинок - из сканера, принтера чернильного, из факса - у большинства выводов от 3х до 8 штук проводов. Значит, явно не отделаешься постоянкой 12-24 вольт.  Платы управления и драйверы теоретически там есть вроде бы, но черт их разберет чего куда. 
      Подскажите пожалуйста, можно ли их как-то заставить крутиться с минимумом подручных средств? В электронике познаний сильных нету. 
      Или можно ли у китайцев купить чего-нибудь? все равно на моторчиках иероглифы какие-то нарисованы.  Или же прямо в помойку? 
    • STLinkReflash пишет, что всё сделал, но ST-Link уже нерабочий. Пробовал несколько раз - нифига Да ну и ладно. В пути уже настоящий J-Link от Segger'а. Будем его мучить, отомстим за испорченный ST-Link
    • Есть у меня простейший пробникYX-2000A. 
      Фигня почти полная, но имеется шкала с децибеллами. От -20 до +22 дб. Это зачем? 
    • Абсолютно верно, крепления от старых транзисторов. Внутренний диаметр идеально подходит под лампы.
    • Странно я и туда и обратно, обратно бывает не с первого раза, но получаеться. Да она полностью на основе Eclipse. RTT пробовал работает, по отладке очень много там всего. http://blog.atollic.com в блоге много интересного.
    • Т.е. в созданный С-проект уже не добавить .cpp ? Интересно, чем они могут отличаться...
      Кстати, среда довольно приятная. Это же Eclips (ну или очень на него похож). Всё запустилось без проблем (отладка, ...). Уже перепробовал много всяких сред, отладчик смог прикрутить только в Кейле и в Atollic. А из-за Segger'овской среды вообще пришлось перешить St-link (который на дискаверени стоит) в J-link. И обратно уже хрен
    • или может впаять диод на доп контакты чтоб пропускал напряжение в одну сторону? только какой?