Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[bascom AVR] - Funkcja sin() regulacja fazowego sterowania mocą

MES Mariusz 14 Nov 2014 08:20 1647 3
Tespol
  • #1
    MES Mariusz
    Level 36  
    Witam.

    Dla jasności przez sterowanie fazowe mocą przekazywaną do obciążenia (230V AC) rozumiem moc dostarczoną do obciążenia od upłynięcia (opóźnionego) czasu załączenia triaka do czasu jego ponownego przejścia przez zero (i wyłączenia triaka).

    Prawiąc o przekazywanej mocy mówimy wówczas o polu pod sinusemm stąd regulacja liniowa (liniowa zmiana czasu opóźnienia), będzie dawała nieliniowe zmiany jasności (w przypadku sterowania mocą żarówki).

    Właśnie znalazłem w środowisku Bascom AVR funkcję sinusa:
    http://avrhelp.mcselec.com/index.html?sin.htm

    I jak będę miał chwilę czasu, być może uda mi się moje liniowe 100 kroków (progów jasności) zmienić w 100 kroków wynikających z sinusa (uda mi się zmieniać wartość po x-ie sto razy, nie co stałą wartość, ale o wartość odpowiadającą podziałowi pola pod sinusem na 100 równych części.

    Robił tak ktoś?
    Udało się uzyskać liniową regulację poziomu jasności ?
  • Tespol
  • Helpful post
    #2
    tehaceole

    Level 28  
    Cześć
    W załączniku podsyłam Ci formułę obliczeń z której korzystałem oraz arkusze Open Office w którym to wyliczałem. Z jakiegoś powodu (już nie pamiętam) użyłem wtedy Open Office zamiast Excela. Ten arkusz nie otwiera się poprawnie w excelu.
    Obliczenia wykonane dla 250 kroków, timer 16bit (procek PIC taktowany kwarcem 8MHz).

    Teraz nie mam Open Offica i w arkuszu nie widzę wykresu=/ Ale z tego co pamiętam to dla regulacji liniowej przebieg wyglądał jak wycinek Cosinusa. Natomiast dla wyliczeń wg tej formuły przebieg był liniowy. Generalnie chodzi o wyznaczenie dolnej granicy całkowania. Układ z tablicą wartości wg tych wyliczeń pracował poprawnie.

    Jeszcze jedno: w urządzeniu dla którego wtedy to pisałem projektant zastosował sprytny "myk". Dioda transoptora była połączona z portem uP za pomocą niewielkiego kondensatora. W momencie załączania triaka (na czas wyznaczony z tabeli) na wyjście uP podawany był przebieg prostokątny. Trochę to dla mnie nadmiarowe rozwiązanie, ale urządzenie stanowiło część aparatury medycznej i projektant elektroniki uparł się przy nim. Na wypadek uszkodzenia wyjścia uP lub zawisu programu triak samoczynnie się wyłączy w takiej konfiguracji przy najbliższym przejściu przez zero.
  • Tespol
  • #4
    MES Mariusz
    Level 36  
    Zamiast wstawiania statycznej tabeli obliczonych 100 kroków, byłbym skłonny użyć funkcji trygonometrycznych dostępnych w tym języku.

    http://avrhelp.mcselec.com/index.html?sin.htm

    Choć z drugiej strony z całkami i liczeniem pola byłoby sporo zabawy.

    Ciekawe, czy i jaka będzie wówczas oszczędność pamięci procesora.

    Odnośnie podlinkowanego softu Moc.exe i mojego urządzenia.

    Wykorzystuję procka ATmega644P, wejście Int1 do wykrywania przejścia przez zero oraz Timer1 (16-bit), prescale = 1, wyliczona wartość początkowa timera = 64736 do wyliczania odcinków czasu o wartości 0,0001s.

    Dzięki temu uzyskuję podział połowy sinusoidy przebiegu 50 Hz na 100 części / sto kroków sterowania jasnością żarówki (zliczenie odpowiedniej liczby kroków 0,0001s i załączenie triaka, aż do kolejnego przejścia przez zero).

    Oczywiście 100 liniowych kroków po x-ie daje 100 nieliniowych kroków regulacji oświetlenia (wypadałoby liczyć pole pod sinusem).

    Co do softu moc.exe. Do wyboru są tam timery 0, 1, 2, nie jest jednak napisane który timer ilu bitowy jest (a z pewnością zależy to od wybranego procesora).