Показано с 1 по 10 из 315

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Местный
    Регистрация
    20.06.2011
    Возраст
    39
    Сообщений
    170
    Вес репутации
    193

    Вопрос AC dimmer 220V 50Hz

    Рекомендую использовать новую версию полноценного многоканального Dimmer

    В процессе проб и ошибок нарисовали 100% рабочую схему и нормально работающий скетч. В процессе обсуждения выяснилось что нельзя использовать в Dimmer оптроны MOC30xx с детектором нуля
    Всем спасибо за помощь.

    Нажмите на изображение для увеличения. 

Название:	Dimmer2.jpg 
Просмотров:	29909 
Размер:	56.3 Кб 
ID:	13463

    Скэтч вот этот:

    PHP код:
    #include <avr/delay.h>  
    int AC_pin 10;  // выход для симистора    
    volatile uint16_t dim;     
    uint8_t dimmer=0;// уровень димирования (0-255)  0 = max, 255 = min

    void setup()    
    {     
      
    pinMode(AC_pinOUTPUT);           
      
    attachInterrupt(0FrontUpRISING);  //прерывание по изменению уровня с низкого на высокий    
    }    
    // Функция обработки прерывания на подъем      
    void FrontUp()      
    {    
      
    detachInterrupt(0);    
      
    _delay_us(dim+1000);  // отсекаем лишнее 
      
    digitalWrite(AC_pinHIGH);  // включить симистор    
      
    _delay_us(20);      // короткая пауза, чтобы обеспечить включение симистора    
      
    digitalWrite(AC_pinLOW);   // выключение симистора(он выключится когда полупериод достигнет нуля)     
      
    attachInterrupt(0FrontDownFALLING);      
    }      
    // Функция обработки прерывания на спад     
    void FrontDown()      
    {     
      
    detachInterrupt(0);      
      
    _delay_us(dim);  // отсекаем лишнее    
      
    digitalWrite(AC_pinHIGH);  // включить симистор    
      
    _delay_us(20);      // короткая пауза, чтобы обеспечить включение симистора    
      
    digitalWrite(AC_pinLOW);   // выключение симистора(он выключится     
      
    attachInterrupt(0FrontUpRISING);      
    }    

    void loop()    
    {      
      if(
    dimmer 255dimmer++; else dimmer=0;  // пример уменьшения яркости лампы 
      
    dim=33*dimmer
      
    delay(50);

    Последний раз редактировалось Chip; 22.03.2017 в 10:48.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •