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

[Atmega8][BASCOM][TIMER1]Prosba o sprawdzenie.

12 Cze 2010 18:51 1961 7
  • #1 8183013
    Konto nie istnieje
    Konto nie istnieje  
  • #2 8183232
    deksta84
    Poziom 24  
    Witam
    Wg kodu tr1 i tr2 zmieniają się tak samo.
    A pewnie ci chodzi o naprzemienne sterowanie kluczami przetwornicy?
    Więc powinno być:
    Config Portd.0 = Output 
    Config Portd.1 = Output
    Config Portd.2 = Input
    Set pind.2
    Siec alias Pind.2 'albo portd.2 zawsze mi się to myli
    dim I as Byte
    ...
    Reset Tr1
    Reset Tr2
    Do
    if siec=0 then
     I=1
     Stop Timer1
     Reset Tr1
     Reset Tr2 
    else
     if i=1 then
     i=0
     Reset Tr1
     Set Tr2 
     Start Timer1 
     End if
    End if
    Loop
    ...
    

    Może coś takiego:
    A napięcie sieci to porównać przez CNY17-3. Emiter do GND, kolektor do Portd.2.
    Faza, rezystor 30kΩ/2W, Mostek prostowniczy 1A, zero. W stało-prądową przekątną mostka rezystor 1KΩ/2W, równolegle do rezystora 1KΩ/2W wewnętrzna diodę CNY17-3 i kondensator 10uF/25V.
    Cały ambaras, aby czujnik fazy szybko się załączał i nie reagował na przejścia przez zero. Na dodatek przetwornica nie może wpływać na ten czujnik.

    Co do nastaw timera to proponuję pobawić się symulatorem i sprawdzać czy zmiany zachodzą co 10ms. Bo 50Hz to ma 100 połówek.
  • #3 8183285
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #4 8183328
    deksta84
    Poziom 24  
    Jeżeli to jest przetwornica to nie pisz UPS.
    To kwestia tylko zamiany przed główną pętlą Do Loop:
    Reset tr1
    Set tr1
    W kodzie tym początkowym.
    Pamiętaj o tych 10ms.
  • #5 8183607
    Konto nie istnieje
    Konto nie istnieje  
  • #6 8183770
    janbernat
    Poziom 38  
    Tak, mruga co 2s.
    Jest błąd.
  • Pomocny post
    #7 8183931
    danthe
    Poziom 30  
    Witam !

    Obliczenia źle oraz pewnie źle ustawione fusebity (pewnie default - 1Mhz internal rc). Instrukcja Load jako parametr ma po ilu impulsach ma wystąpić przerwanie, więc powinno być 625, ale że pojedyńcza połówka przebiegu sieci trwa nie 20ms a tylko 10ms więc powinno być 312,5 :D. Więc lepiej chyba prescale = 64 i load timer1, 1250.

    Pozdrawiam - Daniel

    P.S. Pamiętaj o fusebitach, samo $crystal w kodzie programu nie ustawi Ci częstotliwości przy programowaniu procesora.
  • #8 8185387
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA