Страница 5 из 32 ПерваяПервая 123456789101115 ... ПоследняяПоследняя
Показано с 41 по 50 из 315
  1. #41
    Продвинутый
    Регистрация
    28.11.2010
    Возраст
    60
    Сообщений
    241
    Вес репутации
    221

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

    Попробуй, должно быть 3 яркости по 2 секунды.
    PHP код:
    int AC_pin 10;  // выход для симистора
    int dimtime 0;
    void setup()
    {
      
    pinMode(AC_pinOUTPUT);

      
    attachInterrupt(0lightRISING);  //прерывание по изменению уровня с низкого на высокий
    }

    void light()  

      
    delayMicroseconds(dimtime);  // отсекаем лишнее  
      
    digitalWrite(AC_pinHIGH);  // включить симистор 
      
    delayMicroseconds(2000);     // короткая пауза, чтобы обеспечить включение симистора 
      
    digitalWrite(AC_pinLOW);   // выключение симистора(он выключится когда полупериод достигнет нуля) 
      
    int pauza 7950 dimtime// расчет перехода через ноль при отрицательной полуволне
      
    delayMicroseconds(pauza);  // ожидаем для управления отрицательной полуволной
      
    digitalWrite(AC_pinHIGH);  // включить симистор 
      
    delayMicroseconds(2000);     // короткая пауза, чтобы обеспечить включение симистора 
      
    digitalWrite(AC_pinLOW);   // выключение симистора(он выключится когда полупериод достигнет нуля) 
    }  

    void loop()
    {
     
    delay(2000);
     
    dimtime 2000;
    delay(2000);
     
    dimtime 5000;
    delay(2000);
     
    dimtime 8000;

    Мои проекты - Катер для рыбалки

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

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

    нет.. что-то не то.. лампа мигает.. но логику не могу уловить.. если 7950 поменять на 8000, то получается гдето (трудно посчитать так как быстро) 3-4 вспышки с пониженной яркостью, и 3-4 с большей яркостью..

    только что второй раз включил... сначала 3-5 сек горит с пониженой яркостью, затем такие вот вспышки..

    Кстати, заметил, что если отключить 2 вывод со стороны силовой части, и отводить его он нее то изменяется частоты вспышек... так же если руку подводить\уводить то таже меняется.. как будто он в роле антенны работает
    Последний раз редактировалось knyaz2020; 21.11.2011 в 18:57.

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

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

    Смотрите наводки, уменьшайте R6 c 10 кОм до 1 кОм, без вреда для схемы.
    6 вывод оптрона(база) попробуйте на массу через 1 кОм.

    По поводу 7950 или 8000. У меня 2028 мкс выполняются команды

    digitalWrite(AC_pin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(AC_pin, LOW);

    Поэтому мне нужно значение 7970.

    P.S.
    P.S. А даташит я так понял не на ВТ136? а на другую детальку ВТА10?
    И у этого симистора 2 мкс. Поэтому нет смысла 2000 мкс ему подавать и 10 мкс за глаза, кстати проверил опять эти 3 команды,
    digitalWrite(AC_pin, HIGH);
    delayMicroseconds(10);
    digitalWrite(AC_pin, LOW);

    выполняются 28 мкс и значение для моей ардуины будет 9970
    Последний раз редактировалось Mastar; 21.11.2011 в 19:32.
    Мои проекты - Катер для рыбалки

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

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

    Цитата Сообщение от Mastar Посмотреть сообщение
    Смотрите наводки, уменьшайте R6 c 10 кОм до 1 кОм, без вреда для схемы.
    6 вывод оптрона(база) попробуйте на массу через 1 кОм.

    По поводу 7950 или 8000. У меня 2028 мкс выполняются команды

    digitalWrite(AC_pin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(AC_pin, LOW);

    Поэтому мне нужно значение 7970.

    P.S.

    И у этого симистора 2 мкс. Поэтому нет смысла 2000 мкс ему подавать и 10 мкс за глаза, кстати проверил опять эти 3 команды,
    digitalWrite(AC_pin, HIGH);
    delayMicroseconds(10);
    digitalWrite(AC_pin, LOW);

    выполняются 28 мкс и значение для моей ардуины будет 9970
    1. На счет наводок пока не волнует... это позже..
    2. если пробовать 10 мкс то вообще не горит
    3. Так как же всетаки регулировать яркость.. пробовал менять значение dim с 64.. если менять до 11 то ничего не меняется.. с 11 яркость на полную.. если увеличивать то через пару 10ков начинает мигать.

    4. А чем ваша ардуина отличается от мей? как выщитать правильное время для моей?

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

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

    Chip, не подскажите, почему

    PHP код:
    int AC_pin 13;
    void setup() 

      
    pinMode(AC_pinOUTPUT);
      
    Serial.begin(115200);



    void loop() 

      
    int time micros();
      
    digitalWrite(AC_pinHIGH);
      
    delayMicroseconds(2000);
      
    digitalWrite(AC_pinLOW);
      
    int New = micros();
      
    Serial.println(New - time);

    выполняется 2028 - 2000 = 28, а при значении delayMicroseconds(10) 28-10 =18 мкс.
    Мои проекты - Катер для рыбалки

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

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

    Цитата Сообщение от Mastar Посмотреть сообщение
    У меня 2028 мкс выполняются команды
    А ты чем смотришь время выполнения? И какой компилятор используешь?
    Последний раз редактировалось Chip; 21.11.2011 в 20:57.

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

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

    Почитал сегодняшние сообщения и пришел к выводу :
    Что 4n35 ловил не совсем на нуле , соответственно расчеты длительности будут не верны.
    По этому нужно переинициализировать прерывание каждый раз при прохождении нуля
    Примерно так

    PHP код:
    // Функция обработки прерывания на подъем  
    void FrontUp()  
    {  
      
    detachInterrupt(0); 
      
    attachInterrupt(0FrontDownFALLING);  
    }  

    // Функция обработки прерывания на спад 
    void FrontDown()  
    {  
      
    detachInterrupt(0);  
      
    attachInterrupt(0FrontUpRISING);  

    Последний раз редактировалось Chip; 21.11.2011 в 21:24.

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

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

    а функции FrontUp() и FrontDown() как правильно вызывать?
    Они сами вызываются при прохождении через ноль
    Последний раз редактировалось Chip; 21.11.2011 в 21:28.

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

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

    У меня есть более дорогой, но надежный вариант отлавливания нуля.
    Для этого можно использовать датчик тока, есть еще в этом плюс, так как можно измерять ток и вычислять потребляемую мощность

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

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

    Цитата Сообщение от knyaz2020 Посмотреть сообщение
    а функции FrontUp() и FrontDown() как правильно вызывать?
    Они сами вызываются при прохождении через ноль
    Наброскал скетч , сразу предупреждаю что для стабильной работы скетча нужно знать время от реального нуля до срабатывания прерывания, тоже самое косается спада, иначе у нас получается не симметричное срабатывание датчика нуля
    Вычислить можно осциллографом, если такой имеется
    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()    
    {  
      
    int dimtime = (77*dim);  // вычислим время отсечки  
      
    _delay_us(dimtime);  // отсекаем лишнее   
      
    digitalWrite(AC_pinHIGH);  // включить симистор  
      
    _delay_us(200);      // короткая пауза, чтобы обеспечить включение симистора  
      
    digitalWrite(AC_pinLOW);   // выключение симистора(он выключится когда полупериод достигнет нуля)    
      
    detachInterrupt(0);   
      
    attachInterrupt(0FrontDownFALLING);    
    }    
    // Функция обработки прерывания на спад   
    void FrontDown()    
    {   
      
    int dimtime = (79*dim);  // вычислим время отсечки  
      
    _delay_us(dimtime);  // отсекаем лишнее  
    digitalWrite(AC_pinHIGH);  // включить симистор  
      
    _delay_us(200);      // короткая пауза, чтобы обеспечить включение симистора  
      
    digitalWrite(AC_pinLOW);   // выключение симистора(он выключится   
      
    detachInterrupt(0);    
      
    attachInterrupt(0FrontUpRISING);    
    }  

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

    Последний раз редактировалось Chip; 21.11.2011 в 22:36.

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

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

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

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

Ваши права

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