Страница 12 из 32 ПерваяПервая ... 2678910111213141516171822 ... ПоследняяПоследняя
Показано с 111 по 120 из 315
  1. #111
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    220

    По умолчанию Re: AC dimmer 220V 50Hz

    Цитата Сообщение от Chip Посмотреть сообщение
    Что было ?
    Теперь длительность замеряй по новой
    К А2 было подключено, зато все проверили.

    Видно, что положительный длиннее отрицательно. Значит примерно получится 11 и 9 мс.
    Если поставить мост перед оптроном, то импульсы по 1 мс будут в момент перехода через ноль. Но пока забудем.
    Последний раз редактировалось Mastar; 22.11.2011 в 02:13.
    Мои проекты - Катер для рыбалки

  2. #112
    Местный
    Регистрация
    20.06.2011
    Возраст
    40
    Сообщений
    170
    Вес репутации
    199

    По умолчанию Re: AC dimmer 220V 50Hz

    т.э. залить тот скэтч который в 105 посте?
    а0 на колектор?
    а 2-ой пин куда?

    нет, не к а2, а было так
    а0 подключен на д2

  3. #113
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Подправил длительности импульсов
    PHP код:
    #include <avr/delay.h> 
    int AC_pin 10;  // выход для симистора   
    volatile byte dim 128;    // уровень димирования (0-128)  0 = on, 128 = 0ff   

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

    void loop()   
    {   
      if(
    dim 0) {dim--; } else { dim=128; }  // пример уменьшения яркости лампы   

    Последний раз редактировалось Chip; 22.11.2011 в 03:35.

  4. #114
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    220

    По умолчанию Re: AC dimmer 220V 50Hz

    Цитата Сообщение от knyaz2020 Посмотреть сообщение
    т.э. залить тот скэтч который в 105 посте?
    а0 на колектор?
    а 2-ой пин куда?

    нет, не к а2, а было так
    а0 подключен на д2
    Коллектор, А0 и 2 пин все три вместе, вернее еще и сопротивление на +5.

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

    PHP код:
    #include <TimerOne.h>   

    #define BTNPIN 2 
    volatile uint16_t lengthImpulstimerCount;  

    void setup()   
    {     
    Serial.begin(115200);

      
    lengthImpuls=0;   
         
      
    pinMode (BTNPININPUT); 

      
    Timer1.initialize(10);                 
      
    Timer1.attachInterrupt(callback); 
      
    attachInterrupt(0fireUpRISING);  
    }   

    void loop()   
    {   
       
    Serial.println(lengthImpuls); 


    void callback()  
    {   
      
    timerCount++;  
    }  

    // Функция обработки прерывания на подъем   
    void fireUp()   
    {   
      
    timerCount=0;   
      
    detachInterrupt(0);  
      
    attachInterrupt(0fireDownFALLING);   
    }   

    // Функция обработки прерывания на падение   
    void fireDown()   
    {   
       
    lengthImpuls timerCount;   
      
    detachInterrupt(0);   
      
    attachInterrupt(0fireUpRISING);   

    потом
    PHP код:
    #include <TimerOne.h>   

    #define BTNPIN 2 
    volatile uint16_t lengthImpulstimerCount;  

    void setup()   
    {     
    Serial.begin(115200);

      
    lengthImpuls=0;   
         
      
    pinMode (BTNPININPUT); 

      
    Timer1.initialize(10);                 
      
    Timer1.attachInterrupt(callback); 
      
    attachInterrupt(0fireUpRISING);  
    }   

    void loop()   
    {   
       
    Serial.println(lengthImpuls); 


    void callback()  
    {   
      
    timerCount++;  
    }  

    // Функция обработки прерывания на подъем   
    void fireUp()   
    {   
      
    timerCount=0;   
      
    detachInterrupt(0);  
      
    attachInterrupt(0fireDownRISING);   
    }   

    // Функция обработки прерывания на падение   
    void fireDown()   
    {   
       
    lengthImpuls timerCount;   
      
    detachInterrupt(0);   
      
    attachInterrupt(0fireUpFALLING);   

    У нас в сети нет 50 Гц, поэтому суммарная длительность будет больше 20 мс.
    Последний раз редактировалось Mastar; 22.11.2011 в 02:24.
    Мои проекты - Катер для рыбалки

  5. #115
    Местный
    Регистрация
    20.06.2011
    Возраст
    40
    Сообщений
    170
    Вес репутации
    199

    По умолчанию Re: AC dimmer 220V 50Hz

    при первом скетче из 124 поста при подаче 220В:

    также, начинает с 1089 и до 1099, а там1097 +-3

    при втором:
    892 +-1, даже может 891 +-1
    Последний раз редактировалось knyaz2020; 22.11.2011 в 02:31.

  6. #116
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    220

    По умолчанию Re: AC dimmer 220V 50Hz

    Цитата Сообщение от knyaz2020 Посмотреть сообщение
    при первом скетче из 124 поста при подаче 220В:

    также, начинает с 1089 и до 1099, а там1097 +-3

    при втором:
    892 +-1
    Я так и думал, почти 11 мс и почти 9 мс.

    Теперь последний скетчь от Chipа.

    Можно с приходом еденицы, сделать задержку в 1 мс и мы почти попадем в нулевую точку. А вот с переходом в ноль, мы уже на 1 мс опоздали.
    Последний раз редактировалось Mastar; 22.11.2011 в 02:35.
    Мои проекты - Катер для рыбалки

  7. #117
    Местный
    Регистрация
    20.06.2011
    Возраст
    40
    Сообщений
    170
    Вес репутации
    199

    По умолчанию Re: AC dimmer 220V 50Hz

    пробовал... ничего не меняется... уменьшал до 73-59.. и дим поставил на 64.. без результатно.. скорее всего нужна другая логика...
    вот скэтч с 44 поста какбы работает... лампа в полнакала горит.. с небольшим ели заметным мерцанием..

    но вот как там яркость менять...

  8. #118
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Я понял почему так происходит.
    так как у нас соотношение 11:9 то в первом полупериоде в начале и в конце мы захватываем соседний полупериод по 500мкс с каждой стороны , а длительность отсечки рассчитываем с учетом этих хвостов.

    Вот рабочий код.
    PHP код:
    #include <avr/delay.h>  
    int AC_pin 10;  // выход для симистора    
    volatile byte dim 128;    // уровень димирования (0-128)  0 = on, 128 = 0ff    

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

    void loop()    
    {  
    dim=64;
     
    // if(dim > 0) {dim--; _delay_ms(50);} else dim=128;  // пример уменьшения яркости лампы    

    Последний раз редактировалось Chip; 22.11.2011 в 23:16.

  9. #119
    Местный
    Регистрация
    20.06.2011
    Возраст
    40
    Сообщений
    170
    Вес репутации
    199

    По умолчанию Re: AC dimmer 220V 50Hz

    Ок, спасибо, попробую уже вечером, после работы...

  10. #120
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    220

    По умолчанию Re: AC dimmer 220V 50Hz

    А я думаю, нужно еще добавить задержку (2000+) перед первым открытием семистора. Т.к. мы управляем лампочкой накаливания, то подача почти 15-20% мощности только будет потреблять электроэнергию, но еще не светить. Так же 90-100% вообще не видно разницы. Кроме задержки коэффициент порядка 60 поставить.
    Тогда во втором с ноля совпадаем и задержки вообще не нужно, но коэффициент тоже 60.

    В таком случае мы никогда не промажем, а уже потом подберем точно значения. Установить при запуске 50% и проверять.
    Последний раз редактировалось Mastar; 22.11.2011 в 15:18.
    Мои проекты - Катер для рыбалки

Страница 12 из 32 ПерваяПервая ... 2678910111213141516171822 ... ПоследняяПоследняя

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

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

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

Ваши права

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