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

Sprawdzenie poprawności sch.-programu na podstawie Attiny13

Mateziorek 03 Mar 2010 23:08 2663 15
  • #1 7780632
    Mateziorek
    Poziom 12  
    Siema,
    Czy mógł by mi ktoś sprawdzić czy taki schemat "włącznika/wyłącznika" na pilota rc5 ma prawo działać?

    Tylko bardzo proszę nie piszcie "było, poszukaj gotowca" itp. bo ja chce coś sam wyskrobać :)

    Schemat wyjątkowo na zewnętrznym serwerze, ale co poradzę jak nie mogłem wrzucic na elektrodę :|
    Sprawdzenie poprawności sch.-programu na podstawie Attiny13

    Elementy: (nie wiem ale eagle mi nie pokazuje)
    -rezystor przy TSOP 220 Ohm
    -kondensator przy TSOP 100uF elektrolit ~6.3-10V
    -rezystor diody led 470 Ohm
    -rezystor diody w MOC3041 470 Ohm
    -rezystor podłączony do bramki triaka BT136 -330 Ohm
    -rezystor podłączony miedzy triak a 6 nogę MOC -360 Ohm

    Elementy zasilania:
    elektrolit 220uF/10V
    niespolaryzowany 100nF

    Czekam i pozdrawiam xD!
  • #2 7780739
    mario06
    Poziom 15  
    Coś źle podłączony jest odbiornik IR Vo (wyjście sygnału) i Vs (zasilanie), na schemacie jest odwrotnie. Najwyżej, że jakieś inne oznaczenia ma ten odbiornik.
  • #3 7781055
    manekinen
    Poziom 29  
    Dorzuć jeszcze gasik RC dla triaka, dla świętego spokoju.
  • #4 7781251
    Mateziorek
    Poziom 12  
    Podłączenie TSOP1736 robiłem tak jak jest w nocie katalogowej, co do gasika, wystarczy podłączyć równolegle z triakiem połączenie RC 100 Ohm + 100n ?
  • #5 7781347
    mario06
    Poziom 15  
    W nocie katalogowej jest odwrotnie niż na schemacie, zobacz jak jest na mozajce połączone od razu widać, że połączenia są inaczej.
  • #6 7782005
    manekinen
    Poziom 29  
    100ohm, kondensator jakiś mniejszy, 48n albo nawet i mniej. Spójrz jeszcze na ten kondensator przy odbiorniku. Może warto go dać za rezystorem tak aby pełnił rolę filtra a nie tylko dodatkowej pojemności?

    Co do połączenia tego odbiornika, to na schemacie oczywiście jest błędnie. Ale tak właśnie wyglądają wyprowadzenia w praktyce, pierwsza GND, potem VCC, a na końcu z brzegu jest OUT.
  • #7 7782978
    Mateziorek
    Poziom 12  
    Ok poprawiłem ten TSOP1736 jak sie już tak go czepiacie ;p
    to jest poprawiony schemat:
    Sprawdzenie poprawności sch.-programu na podstawie Attiny13
    Czy kondensator i rezystor do gasika musi być jakiś specjalnie mocny? i czy dobrze jest podłączony, bo pewności nie mam. Pozdrawiam

    edit:
    Czy gasik ma być tak podłączony?
    Czy mogę zastosować kondensator 250V 47nF MKT ?
    Czy wystarczy rezystor 100Ohm 2W ?
    Mam jeszcze kondensatory wysoko napięciowe
    ale max 2.2nF 2kV
  • #8 7788641
    Mateziorek
    Poziom 12  
    Odświeżam temat gdyż chciałbym sie już zabrać za pcb.
  • #9 7789394
    marco47
    Poziom 41  
    Czy mogę zastosować kondensator 250V 47nF MKT ? nie - 47n/400V !
    Czy wystarczy rezystor 100Ohm 2W ? tak
  • #10 7798323
    Mateziorek
    Poziom 12  
    Schemat poprawiony wszystko już "gra" (chyba xD). Jeżeli ktoś był by tak dobry i chciało mu się sprawdzić to proszę o sprawdzenie programu. Jeżeli będzie miał jakieś głupie błędy to sorry ale to mój pierwszy ) piszcie co i jak, nie tak. p Pozdrawiam


    $regfile = "tiny13.DAT"
    $crystal = 4000000

    Config Rc5 = Pinb.2 'odbieranie Rc5 na pinb.2

    Portb.1 = 0 'stany początkowe
    Portb.0 = 0

    Dim Adres As Byte , Komenda As Byte 'zmienne
    Enable Interrupts 'włączenie przerwań

    Do

    Getrc5(adres , Komenda) 'odebranie Rc5

    Komenda = Komenda And &B01111111

    Waitms 50

    If Adres = 0 And Komenda = 55 Then 'czerwony txt na pilocie tv
    Portb.0 = 1 'włączenie optotriaka-żarówki
    Portb.1 = 1 'Dioda sygnalizująca odbiór-zapala sie i gasi po pół sekundy
    Waitms 500
    Toggle portb.1
    Waitms 100
    End If

    If Adres = 0 And Komenda = 54 Then 'zielony txt na pilocie tv
    Toggle portb.0 'zmiana stanu na optotriaku-wyłączenie
    Portb.1 = 1 'dioda j/w
    Waitms 500
    Toggle portb.1
    Waitms 100
    End If


    Loop
    End
  • #11 7799024
    marco47
    Poziom 41  
    Należy cały kod ( program ) zaznaczyć i dopiero wtedy nacisnąć 'Code'
  • #12 7801864
    Mateziorek
    Poziom 12  
    Próbowałem właśnie tak jak mówisz i dalej nic ;s, ps. czekam az ktos odpisze czy ten program ma sens
  • #13 7801889
    marco47
    Poziom 41  
    Jak się nie da , jedno zaznaczenie i po sprawie .

    [size=7]$regfile = "tiny13.DAT"
    $crystal = 4000000
    Config Rc5 = Pinb.2 'odbieranie Rc5 na pinb.2
    Portb.1 = 0 'stany początkowe
    Portb.0 = 0
    Dim Adres As Byte , Komenda As Byte 'zmienne
    Enable Interrupts 'włączenie przerwań
    Do
    Getrc5(adres , Komenda) 'odebranie Rc5
    Komenda = Komenda And &B01111111
    Waitms 50
    If Adres = 0 And Komenda = 55 Then 'czerwony txt na pilocie tv
    Portb.0 = 1 'włączenie optotriaka-żarówki
    Portb.1 = 1 'Dioda sygnalizująca odbiór-zapala sie i gasi po pół sekundy
    Waitms 500
    Toggle portb.1
    Waitms 100
    End If
    If Adres = 0 And Komenda = 54 Then 'zielony txt na pilocie tv
    Toggle portb.0 'zmiana stanu na optotriaku-wyłączenie
    Portb.1 = 1 'dioda j/w
    Waitms 500
    Toggle portb.1
    Waitms 100
    End If
    Loop
    End[/size]
  • #14 7801986
    landy13
    Poziom 31  
    ATtiny13 nie ma wewnętrznego zegara 4MHz a zewnętrznego na schemacie nie widać.
    Błędna deklaracja procesora.
    Przy domyślnych ustawieniach stosu zabraknie pamięci.
  • #15 7802357
    manekinen
    Poziom 29  
    
    $regfile = "attiny13.dat"
    $crystal = 1200000
    $hwstack = 16
    $swstack = 16
    $framesize = 16
    Config Rc5 = Pinb.2                                         'odbieranie Rc5 na pinb.2
    Config Portb.1 = Output
    Config Portb.0 = Output
    Portb.1 = 0 'stany początkowe
    Portb.0 = 0
    Dim Adres As Byte , Komenda As Byte 'zmienne
    Enable Interrupts 'włączenie przerwań
    
    Do
    Getrc5(adres , Komenda) 'odebranie Rc5
    Komenda = Komenda And &B01111111
    Waitms 50
    
    If Adres = 0 And Komenda = 55 Then 'czerwony txt na pilocie tv
    Portb.0 = 1 'włączenie optotriaka-żarówki
    Portb.1 = 1                                                 'Dioda sygnalizująca odbiór-zapala sie i gasi po pół sekundy
    Waitms 500
    Portb.1 = 0
    Waitms 100
    End If
    
    If Adres = 0 And Komenda = 54 Then 'zielony txt na pilocie tv
    Toggle portb.0 'zmiana stanu na optotriaku-wyłączenie
    Portb.1 = 1 'dioda j/w
    Waitms 500
    Portb.1 = 0
    Waitms 100
    End If
    
    Loop
    End

    End na końcu możesz sobie darować jeśli nie masz zamiaru kończyć programu - a będzie o całe 4 bajty mniejszy ;)

    W twoim kodzie zabrakło ustawienia kierunku pracy pinów optotriaka i diody, i jak kolega napisał błędna deklaracja procesora i zegara - użyj domyślnego czyli wraz z fuskiem CLKDIV8 będziesz miał 1,2MHz. Taki kod się kompiluje (49%) i wygląda ok, ale czy działa musisz sprawdzić w praktyce. W symulatorze działa. Nie wiem też po co te 50ms przerwy po sprawdzeniu komendy, a niech sobie sprawdza cały czas - i tak nie ma nic innego do roboty.
  • #16 7802543
    Mateziorek
    Poziom 12  
    Czarna magia, mój kod sie nie chciał kompilować bo za mało pamięci, a twój sie kompiluje i działa w symulatorze (sprawdzałem ;p) czyli gotowy kod wygląda tak :)

    $regfile = "attiny13.dat" 
    $crystal = 1200000 
    $hwstack = 16 
    $swstack = 16 
    $framesize = 16 
    Config Rc5 = Pinb.2
    Config Portb.1 = Output 
    Config Portb.0 = Output
    Portb.0 = 0 
    Dim Adres As Byte , Komenda As Byte 
    Enable Interrupts 
    
    Do 
    Getrc5(adres , Komenda) 
    Komenda = Komenda And &B01111111 
     
    If Adres = 0 And Komenda = 55 Then 
    Portb.0 = 1
    Portb.1 = 1                       
    Waitms 500 
    Portb.1 = 0 
    Waitms 100 
    End If 
    
    If Adres = 0 And Komenda = 54 Then
    Toggle portb.0  
    Portb.1 = 1 
    Waitms 500 
    Portb.1 = 0 
    Waitms 100 
    End If
    
    Loop 
    End


    Z czasem go wykonam tylko najpierw muszę rozwiązać problem zasilania układu, przy lampie (sufitowej), lub w gnieździe (w ścianie ,takim pod włącznik, bo mam 2 obok siebie) ew. jak będzie sie dało pociągnę kabel z puszki albo podepne układ pod puszkę i w nocy będę miał zabawę żeby trafić mniej więcej w nią xD
REKLAMA