logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8] [Atmega8][Bascom] Sterowanie fazowe - problem z detekcją zera na MOC 3021

Belialek 27 Lut 2010 21:26 2408 9
REKLAMA
  • #1 7760540
    Belialek
    Poziom 22  
    Posty: 977
    Pomógł: 19
    Ocena: 124
    Witam,

    Mam problem ze sterowaniem fazowym - konkretnie to winnym jest najprawdopodobniej układ detekcji zera (programowy bądź sprzętowy).

    Poniżej fragment schematu:

    [Atmega8] [Atmega8][Bascom] Sterowanie fazowe - problem z detekcją zera na MOC 3021

    Testuję na żarówce 25W - jedyne co udało mi się uzyskać to proste włączenie/wyłączenie żarówki, tak więc układ załączający (oparty na MOC 3021) jest sprawny.

    Oprócz własnych bojów z Bascomem, próbowałem również korzystać z programów innych forumowiczów (oczywiście numery portów itd pozmieniałem aby pasowały do mojego układu), i tak:

    Post 1

    Po wrzuceniu powyższego programu układ nie działał...

    Post 2

    A tutaj żarówka cały czas świeciła się z maksymalną jasnością.

    Ponieważ nie mam dostępu do oscyloskopu, nie mam możliwości sprawdzenia czy na wyjściu układu detekcji zera mam odpowiednie sygnały... Jednak bardzo "łopatologicznymi" metodami (próba zliczania + dioda LED) doszedłem do wniosku iż na tym wyjściu cały czas jest stan wysoki...

    Po próbie zliczania stanów niskich:
    
    $regfile = "m8def.DAT"                                      
    $crystal = 8000000 
    Config Pind.2 = Input     'Port INT0
    Config Pind.0 = Output   'Port diody LED
    
    Dim Licznik As Byte 
    
    Do 
    If Pind.2 = 0 Then 
         Incr Licznik 
         If Licznik = 200 Then 
              Licznik = 0 
              Toggle Portd.0 
         End If 
    End If   
    Loop
    

    Diody są ciągle zapalone, co świadczyć może albo o braku impulsów z układy detekcji, albo o mojej marnej znajomości elektroniki :) Zdaję sobie sprawę, że int0 można ustawić w tryb detekcji zbocza opadającego bądź rosnącego - ale pomysłu jak zliczyć te skoki nie mam (jak pisałem wyżej programy które wykorzystywały własności int0 które działały u autorów, u mnie nie działają).

    Nie mam pojęcia co jeszcze mogę zrobić i sprawdzić - schemat układu wydaje się być poprawny, przebić nigdzie nie ma. Będę wdzięczny za każdą pomoc.

    Z góry dziękuję i pozdrawiam!
  • REKLAMA
  • Pomocny post
    #2 7760624
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • Pomocny post
    #3 7760707
    alien_audio
    Poziom 21  
    Posty: 223
    Pomógł: 57
    Ocena: 18
    Witam.
    Przede wszystkim należy ustalić czy następuje prawidłowo detekcja
    zbocza. Więc w pierwszym warunku po detekcji zera wstaw waitms 5.
    W przeciwnym wypadku przy tej częstotliwości kwarcu nie zauważysz działa programu czyli migania led.
  • Pomocny post
    #4 7760723
    janbernat
    Poziom 38  
    Posty: 3954
    Pomógł: 468
    Ocena: 51
    Pind.2=0 to chyba masz prawie cały czas- przy przejściu przez 0 diody w transoptorach przestają świecić, tranzystory się zatykaja i przez chwilę na kolektorach- czyli na wejściu procesora masz 1.
    Może licz jedynki.
  • Pomocny post
    #5 7760730
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #6 7760787
    Belialek
    Poziom 22  
    Posty: 977
    Pomógł: 19
    Ocena: 124
    atom1477 napisał:
    R4 może mieć za dużą wartość.
    A R3 to po co?


    Przeglądałem kilka tematów na temat detekcji zera i u innych się sprawdzały te wartości :)

    alien_audio napisał:
    Witam.
    Przede wszystkim należy ustalić czy następuje prawidłowo detekcja
    zbocza. Więc w pierwszym warunku po detekcji zera wstaw waitms 5.
    W przeciwnym wypadku przy tej częstotliwości kwarcu nie zauważysz działa programu czyli migania led.


    Tak zrobiłem - nie widać żadnej różnicy

    janbernat napisał:
    Pind.2=0 to chyba masz prawie cały czas- przy przejściu przez 0 diody w transoptorach przestają świecić, tranzystory się zatykaja i przez chwilę na kolektorach- czyli na wejściu procesora masz 1.
    Może licz jedynki.


    Przy liczeniu jedynek momentalnie się licznik przekręcał - przy liczeniu do 10000 dioda mrugała częściej niż raz na sekundę... Z moich obliczeń wynika, że w ciągu sekundy, licznik powinien dojść zaledwie do 100. Tak więc wynika z tego, iż na Pind.2 mam ciągle stan wysoki.

    gromleon napisał:
    Wywal R3 , używam tego samego sposobu detekcji i oprócz tego r3 cała reszta jest tak samo jak u mnie i działa to dobrze. A r2 daj 100 K


    Spróbuję.

    EDIT: Żeby nie było niedomówień - u mnie VCC = 5V.
  • Pomocny post
    #7 7760922
    janbernat
    Poziom 38  
    Posty: 3954
    Pomógł: 468
    Ocena: 51
    W zasadzie co ten program robi?
    Bascom jest wolny- ale procesor wykonuje instrukcje co 0.125us przy tym zegarze.
    Załóżmy 1000 cykli w pętli- zajmie mu 125us policzenie stanów 0 na wejściu i co dalej?
    Od wykrycia 0 powinien zblokować na jakiś czas zmianę stanu, odliczyć czas w ms a nie w us i zmienić stan wyjścia.
    Timer i ewentualnie przerwanie.
  • Pomocny post
    #8 7760939
    danthe
    Poziom 30  
    Posty: 1256
    Pomógł: 125
    Ocena: 294
    Witam.

    Ja detekcję robiłem prościej - sieć przez rezystor 47k / 3W podaję na mostek prostowniczy a wyjście mostka na diodę CNY17. Tranzystor transoptora podłączałem kolektorem do wejścia INT1 atmegi, a emiter do masy. Rezystor podciągający kolektor do +5V miał wartość 4,7k lecz uważam że równie dobrze można było go nie stosować. W programie korzystałem z przerwania INT1 - przejście przez zero gasiło diodę optotriaka i ładowało wartość do timera T1, a przepełnienie timera T1 powodowało włączenie optotriaka.
  • REKLAMA
  • #9 7761038
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z detekcją zera w układzie sterowania fazowego opartym na MOC 3021. Testując na żarówce 25W, uzyskał jedynie włączanie i wyłączanie żarówki, co sugeruje, że układ załączający działa poprawnie. Problemy dotyczą detekcji zbocza, co może być spowodowane niewłaściwymi wartościami rezystorów w układzie. Użytkownicy sugerują zmiany w wartościach rezystorów oraz dodanie opóźnienia w programie, aby poprawić detekcję. Wskazano również na możliwość użycia przerwań oraz timerów do lepszej obsługi detekcji zera. Użytkownik nie ma dostępu do oscyloskopu, co utrudnia diagnozę sygnałów na wyjściu detekcji.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA