Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie PWM - dla 12 V AC działa, dla 230V - nie

xPatryk 16 Maj 2009 11:41 5225 7
  • #1 16 Maj 2009 11:41
    xPatryk
    Poziom 15  

    Witajcie,

    otóż, korzystając z "wiedzy zebranej" zrobiłem prosty sterownik oświetlenia oparty o programowy PWM.

    Układ wykrywa zero (na zboczu opadającym), liczy w jednej połówce sinusoidy 100 okresów po 100us każdy i przy zadanym okresie wyzwala triak. Następnie oblicza programowo drugie przecięcie i sytuacja się powtarza.

    I... działa poprawnie dla 12 V, ale w pokoju mam 8 żarówek halogenowych 12V i jedną lampę 230V (ta sama faza, więc i punkt przejścia przez zero ten sam).

    I właśnie z tą ostatnią lampą jest problem. Zapala się dopiero przy pełnym wypełnieniu i gaśnie od razu przy zmniejszeniu wypełnienia do 98%.

    Schemat oraz fragmenty kodu odpowiedzialne za działanie układu w załączeniu.

    Sterowanie PWM - dla 12 V AC działa, dla 230V - nie

    Code:


    //makra:

    #define PORTB_MASK  (1 << PB1)|(1 << PB2)|(1 << PB3)|(1 << PB4)|(1 << PB5)
    #define CH5_CLEAR (pinlevelB &= ~(1 << PB1)) // map CH5 to PB0

    //przerwanie co 100us
    SIGNAL (SIG_OVERFLOW0)
    {
      static unsigned char pinlevelB=PORTB_MASK; //, pinlevelD=PORTD_MASK;
      TCNT0 = 156;

      PORTB = pinlevelB;            // update outputs

      if(softcount >= 100)
      {
         softcount = 0;
    //     PORTB = (1<<PB0);
      }
      if(softcount++ == 0){         
        compare[0] = compbuff[0];

    // (pozostałe kanały)

        pinlevelB = PORTB_MASK;     // set all port pins high
      }
      // clear port pin on compare match

      if(compare[0] <= softcount) CH5_CLEAR;

    // (pozostałe kanały)

    }

    // wykrywanie zera:
    SIGNAL (SIG_INTERRUPT1)
    {
        char i,temp;

        /*Filter it to makes sure it was not only noise*/
        for (temp= 0;temp< 5;)          //Five samples noise filter
           {
       if(!(PIND & (1<<PD2)))
              temp++;
            else
              temp = RETURN;         
            }                           
            if(temp != RETURN)
              {
                 softcount = 0;
                 TCNT0 = 156;

              }
           
    }





    Wydaje mi się, iż problem jest natury sprzętowej, ale mogę się mylić. Pozdrawiam i proszę o wskazówki.

    (Oczywiście kwarc i zasilanie procka są podłączone. Obecnie zastosowany kondensator przy triaku to 0,047uF 275V, choć wg. niektórych wystarczyć powinno 100nF)

    0 7
  • #2 16 Maj 2009 12:04
    Tomasz.W
    Poziom 35  

    Witam.

    1) Dlaczego dałeś takie wielkie rezystory i dlaczego połączyłeś je w szereg.
    2) Układ jest troszkę źle podłączony.
    3) Zerknij do noty katalogowej i sam zobaczysz gdzie tkwi błąd.

    0
  • #3 16 Maj 2009 12:47
    xPatryk
    Poziom 15  

    Witaj,

    dziękuję za szybką odpowiedź.

    ad. 1: sugerowałem się trochę tym schematem:
    http://idom.wizzard.one.pl/popup.htm?grafika/lightdimmersch.jpg

    A wartości elementów dobrałem pod sugestią innego schematu, którego właśnie nie mogę odnaleźć...

    Widocznie powiniennem zacząć od noty katalogowej, ale...

    Ad 2,3: Podłączyłem układ analogicznie, jak w nocie katalogowej (schemat w załączeniu), zmieniając nieznacznie wartości elementów (na takie, jakie akurat miałem w szufladzie) i efekt jest taki, iż teraz:

    żarówka 12V - nie działa
    żarówka 230V - dokładnie jak na początku - świeci przy wypełnieniu 98-100%, przy mniejszym gaśnie...

    Sterowanie PWM - dla 12 V AC działa, dla 230V - nie

    Co może być przyczyną takiego stanu rzeczy?

    0
  • #4 16 Maj 2009 12:55
    ZbeeGin
    Poziom 38  

    xPatryk napisał:
    Co może być przyczyną takiego stanu rzeczy?

    Masz niewłaściwy optotriak, gdyż ten ma detektor przejścia przez zero. A co to oznacza domyślisz się już sam...

    Dziwne, że na tej wersji wogóle żarówka się zaświeca, wynika z tego, że masz za duże przesunięcie w czasie w przerwaniu.

    0
  • #5 16 Maj 2009 15:48
    xPatryk
    Poziom 15  

    hmm... zmodyfikowałem układ zgodnie z notą aplikacyjną MOC3021 i działa prawie poprawnie.

    Tj. ściemnia się dla 240 V. Żarówka "zwykła", 60 W lekko migocze (czyżby kwestia niedokładnie wyznaczonych przerwań?)

    Druga kwestia - podłączyłem lampkę "biurkową" - halogen 12 V, z transformatorem. Działała parę minut "poprawnie". Ściemniała się i rozjaśniała bez migotania, lecz po pewnym czasie z obudowy wydobył się dym i lampka zgasła. Transformator (zwykły toroid) najprawdopodobniej się spalił... Co mogło się z nim stać?

    Pozdrawiam,
    Patryk

    0
  • #6 15 Cze 2009 23:49
    Zajc3w
    Poziom 14  

    Migotanie to pewnie wynik rozjechania się czasu, "50 Hz" na procku wyszło ci nieco inne niż "50Hz" w sieci.

    MOC 4021 i 4041 załączaja sie tylko przy przejściu przez 0 więc teoretycznie powinno działać tylko w trybie on/off zastosuj MOC4020lub 4040 nie maja detekcji przejścia przez zero.

    W linii detekci zera przydałaby sie zener na 4-6 V tuż przed prockiem, teraz jak podepniesz 230VAC to się port spali, albo nawet całkiem atmelka usmażysz.

    0
  • #7 16 Cze 2009 02:11
    atom1477
    Poziom 43  

    Jak zastosujesz optotriak bez układu wyzwalania w zerze napięcia sieci, to układ będzie działał, ale żarówka będzie wyzwalana w niewłaściwym momencie.
    Transformator zasilający wprowadza przesunięcie fazowe więc to już nie jest ta sama faza.
    Do tego przesunięcie fazowe zależy od obciążenia trafa.
    Żarówka 230V nie będzie wtedy wyzwalana w zerze napięcia sieci (bo detektor przejścia napięcia przez zero masz na wyjściu transformatora). To spowoduje generowanie większej ilości zakłóceń niż gdyby była wyzwalana w zerze napięcia sieci.
    Do tego charakterystyka sterowania ulegnie zmianie.
    A skoro przesunięcie fazy zależy o obciążenia trafa (od ilości włączonych żarówek 12V i ich mocy) to charakterystyka sterowania żarówki 23V też będzie zależała od ilości włączonych żarówek 12V.
    Więc ostatecznie jasność żarówki 23V będzie zleżała od jasności żarówek 12V. Jak bardzo - nie wiem. Może w ogóle nie będzie to zauważalne. Ale ogólnie że będzie to wiem.

    0
  • #8 16 Cze 2009 18:34
    ZbeeGin
    Poziom 38  

    Niech kolega xPatryk zrobi sobie detektor przejścia na transoptorze AC. Np. SFH620AA (http://specteclogistics.com/docs/83676/83676.pdf), albo jemu podobnym. W jednym z urządzeń zrobiłem to tak:

    Sterowanie PWM - dla 12 V AC działa, dla 230V - nie

    Zmieniając rezystor R1 możesz sobie też nieco poprawić stromość zboczy. Dla zasilania +5V i podłączeniu pod INT0 procesora AVR taka wartość jak na schemacie była wystarczająca.

    ps. Optotriak sterował bezpośrednio silnikiem, gdyż miał on tylko ~30W.

    0