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

Zdalne sterowanie na podczerwień (RC5)

bogdanbb2 02 Wrz 2009 17:20 25414 59
  • Zdalne sterowanie na podczerwień (RC5)

    Witam!
    To mój pierwszy DIY i chciałbym się nim pochwalić.

    Ostatnio z racji nagłej potrzeby sterowania światłem na odległość wykonałem taki prosty układzik w oparciu o ATTINY2313 (bo taki był pod ręką) jest to zdalnie sterowany wyłącznik. Do sterowania wykorzystano pilota od tunera "telewizji na kartę" (czerwony przycisk nie wywołuje reakcji na tunerze). W planie mam wykonać jeszcze kilka takich urządze, więc zrobię PCB, ale to za jakiś tydzień najwcześniej.

    Użyte elementy (takie miałem w domu)
    2 x złącze ARK podwójne
    1 x ATTINY2313 + podstawka
    1 x 7805
    1 x 470 uF/16V
    1 x TSOP1736
    1 x BC547
    1 x 4,7 k - baza tranzystora
    1 x 0,33 k - zasilanie TSOP
    1 x przekaźnik z cewką na 12V - symbol już nieczytelny
    1 x dioda prostownicza - zabezpieczenie tranzystora
    - zasilacz - ja miałem jakiś 12V do gniazdka

    kod:
    Code:
    'wyłącznik RC5 by BM
    
    $crystal = 1000000
    $regfile "attiny2313.dat"
    Config Portb.0 = Output
    Portb.0 = 0
    Config Rc5 = Pind.6
    Dim Address As Byte , Command As Byte
    Enable Interrupts
    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    If Address = 10 And Command = 107 Then
    Toggle Portb.0
    Waitms 400
    End If
    Loop
    End

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    bogdanbb2
    Poziom 12  
    Offline 
    bogdanbb2 napisał 80 postów o ocenie 36, pomógł 0 razy. Mieszka w mieście Tychy. Jest z nami od 2007 roku.
  • PCBwayPCBway
  • #2
    elvis1990
    Poziom 14  
    Na programowaniu nie znam się za bardzo więc zapytam czy na jednym attiny2313 lub atmega8 można zrobić taki sterownik, tylko że 4 kanałowy??. Jaki ma to zasięg??
  • #3
    maly_elektronik
    Poziom 23  
    Można zrobić tyle kanałów ile jest pinów IO :)
  • #4
    mrowaa
    Poziom 15  
    a nawet wiecej teoretycznie nieskończoność:D
    co z tego że to przykład, wykonaniem też można się pochwalić ;P
    nie pisałem nigdy w BASCOMie i mam takie pytanie:
    skąd uK bedzie wiedział że ktoś rozpoczął nadawanie RC5?
    Pind.6 jest nóżką od przerwania? czy poprostu uK wiedząc że tam jest odbiornik co chwila sprawdza jego stan i w razie czego robi takie jakby swoje przerwanie? Pisałem tylko na '51 i nie wiem jak to jest z tymi uK, a zamierzam się na BASCOMa przerzucić.
  • PCBwayPCBway
  • #5
    otapi
    Poziom 25  
    to skąd uK wie wynika bezpośrednio z przedstawionego kodu... pętla Do Loop a wewnątrz sprawdzanie czyli tak jak jedna z Twoich teorii program ciągle sprawdza czy coś się nie pojawiło
  • #6
    Jaduda
    Poziom 32  
    Układ fajny, ale ze zdjęcia, a także spisu elementów wywnioskowałem, że zapomniałeś dać diody, która zabezpiecza tranzystor przed przepięciami powstającymi w chwili wyłączania przekaźnika (więc dodaj ją bo nie wiadomo ile "przełączeń" tranzystor wytrzyma).
  • #7
    bogdanbb2
    Poziom 12  
    Witam!
    Co do pytania elvisa1990 to 14 kanałów można zrobić na attiny2313. Jeden pin musi być zarezerwowany na odbiór kodu RC5. Zasięg taki jak pilota którego użyjesz. Kiedyś zrobiłem na tym line followera z możliwością sterowania przez RC5 i czujnikami zbliżeniowymi aby nie uderzał w przeszkody przed sobą i za sobą (przy cofaniu). Gdybyś chciał takie coś zrobić to w miarę możliwości pomogę.

    Wiem o diodzie, zapomniałem o niej napisać, a przylutowana jest od spodu do nóżek przekaźnika :)
  • #8
    konrad92
    Poziom 15  
    de facto projekt prosty a zarazem użyteczny. Nie myślałeś czasami o funkcji "uczenia się"? Do każdego przycisku na pilocie np. 1 długi impuls i 1 krótki, wtedy wyeliminował byś przypadkowe włączenie światła i nie musiał szukać "czerwonego przycisku" :) Można by też wywalić przekaźnik i dorobić funkcję ściemniacza.
  • #9
    bogdanbb2
    Poziom 12  
    konrad92 napisał:
    de facto projekt prosty a zarazem użyteczny. Nie myślałeś czasami o funkcji "uczenia się"? Do każdego przycisku na pilocie np. 1 długi impuls i 1 krótki, wtedy wyeliminował byś przypadkowe włączenie światła i nie musiał szukać "czerwonego przycisku" :) Można by też wywalić przekaźnik i dorobić funkcję ściemniacza.


    Pilota znam na pamięć więc przycisku nie muszę szukać. Przypadkowych włączeń nie ma, bo przycisk ma jeden indywidualny kod i jego oczekuje procesor. Komendy z innych klawiszy nie spełniają warunku

    ...
    If Address = 10 And Command = 107 Then
    ...

    Co do ściemniacza to można, ale trzeba by układ skomplikować i program. Wykrywanie przejścia przez "0" gdyby to robić na triaku. można na jakimś tranzystorze typu BUS, ale musiałyby być to halogenki na stałe napięcie. Ja mam niestety 230V :(
    Gdyby ktoś chciał wsad z opcją PWM to mam taki. Proszę pisać na PW
  • #10
    otapi
    Poziom 25  
    konrad92 napisał:
    de facto projekt prosty a zarazem użyteczny. Nie myślałeś czasami o funkcji "uczenia się"? Do każdego przycisku na pilocie np. 1 długi impuls i 1 krótki, wtedy wyeliminował byś przypadkowe włączenie światła i nie musiał szukać "czerwonego przycisku" :) Można by też wywalić przekaźnik i dorobić funkcję ściemniacza.


    o ile mi wiadomo kod RC5 to nie jakieś impulsy wymyślone przez programistę ale określony kod składający się z adresu i komendy gdzie adres określa zazwyczaj rodzaj urządzenia (TV, magnetowid, DVD... ) i komenda określająca przycisk na pilocie.... tak wiec tu nie powinien wystąpić problem przypadkowego włączenia światła. chyba ze adres i komenda będzie się pokrywała z kodami jakiegoś innego odbiornika i przy zmienia kanałów w TV będzie gasło światło ;]
  • #11
    dymbol1992
    Poziom 18  
    Projekt ciekawy. Prosił bym o schemat, i mam pytanie czy każdy pilot ma swoje "komendy" czy ogólnie do wszystkich pilotów na RC5 sa te same kody klawiszy?

    Edit: Odwołuje pytanie poszukałem i znalazłem odpowiedz.
  • #12
    Bartek47
    Poziom 10  
    To podziel się tą wiedzą :P

    Da się sprawdzić jaki kod wysyła mój czerwony guzik? :]
  • #13
    dymbol1992
    Poziom 18  
    Link Tam masz kody przycisków tylko jeszcze sie zastanawiam dlaczego nasz autor ma kod 107?? czy waśnie te 107 to nr klawisza?
  • #14
    bogdanbb2
    Poziom 12  
    Da się sprawdzić jakie kody wysyła twój pilot. Poszukaj go tu http://lirc.sourceforge.net/remotes/
    A jeśli go nie znajdziesz, to trzeba zrobić prosty odbiornik, potrzebny jest wyświetlacz LCD aby wyświetlać na nim kody. Przykłady są na elektrodzie
  • #15
    dymbol1992
    Poziom 18  
    Czyli w tym przykładzie to kod rc z pilota to?


    Command = Command And &B01111111

    I prosił bym jeszcze jakiegoś linka do tematu gdzie znajde dekoder tych kodów z wyświetlaczem, o którym kolega wczesniej wspomniał .
  • #17
    bogdanbb2
    Poziom 12  
    Witam!
    W związku z prośbami wsad z funkcją PWM, aby działało to z triakiem to program należy zmienić i zbudować układ wykrywania przejścia przez "0", ale halogenkami na 12 V po dołożeniu mostka prostującego można się już pobawić jeśli ktoś ma ochotę.

    'odbiornik by bm
    $crystal = 1000000
    $regfile "attiny2313.dat"
    Declare Sub 1
    Declare Sub 2
    Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down
    Ddrb = &B11111111
    Config Rc5 = Pind.6
    Dim Address As Byte , Command As Byte , A As Byte , B As Bit
    Enable Interrupts
    B = 0
    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    If Address = 10 And Command = 107 Then
    Toggle B
    Waitms 200
    If B = 1 Then 1
    If B = 0 Then 2
    End If

    Loop

    Sub 1
    For A = 0 To 255 Step 5
    Pwm1a = A
    Waitms 15
    Next A

    End Sub


    Sub 2
    For A = 255 To 0 Step -5
    Pwm1a = A
    Waitms 10
    Next A
    End Sub

    End

    Dodano po 2 [godziny] 13 [minuty]:

    Dla Ciekawych odbiornika z wyświetlaczem LCD

    kod

    $crystal = 1000000
    $regfile "attiny2313.dat"
    Config Lcd = 16 * 2
    Cursor Off
    Cls
    Config Rc5 = Pind.5
    Dim Address As Byte , Command As Byte
    Enable Interrupts

    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    Cls
    Lcd "adres: " ; Address
    Lowerline
    Lcd "komenda: " ; Command
    Waitms 100
    Loop
    End

    schemat ideowy - ładniejszego nie mam.
    Zdalne sterowanie na podczerwień (RC5)
    Dla ciekawych, to większość swoich urządzeń robię na płytce testowej do ATTINY2313 i ATMEGI8, oraz na płytkach stykowych a później jak wszystko działa to robię PCB
  • #18
    miswierz
    Poziom 14  
    Bogdanbb2 mam pytanie odnośnie odbiornika z wyświetlaczem.Czy jest możliwość zastosowania LCD 1x16 ??i czy to wiązało by się tylko ze zmiana linijki gdzie deklarujesz wyświetlacz??Jestem noga z programowania wiec był bym wdzięczny za przeróbke kodu.Pozdrawiam
  • #19
    zmorex
    Poziom 11  
    miswierz napisał:
    Bogdanbb2 mam pytanie odnośnie odbiornika z wyświetlaczem.Czy jest możliwość zastosowania LCD 1x16 ??i czy to wiązało by się tylko ze zmiana linijki gdzie deklarujesz wyświetlacz??Jestem noga z programowania wiec był bym wdzięczny za przeróbke kodu.Pozdrawiam


    Jest możliwość zastosowania takiego wyświetlacza. Jedyna zmiana jaka musi nastąpić to usunięcie komendy lowerline oraz zmiana deklaracji wyświetlacza ( Config Lcd = 16 * 1)

    kod

    $crystal = 1000000
    $regfile "attiny2313.dat"
    Config Lcd = 16 * 1
    Cursor Off
    Cls
    Config Rc5 = Pind.5
    Dim Address As Byte , Command As Byte
    Enable Interrupts

    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    Cls
    Lcd "a: " ; Address ; "k: " ; Command


    Waitms 100
    Loop
    End

    Pozdrawiam
  • #20
    Lukaszinfer
    Poziom 12  
    Witam, fajny projekt. Czy może mi ktoś wytłumaczyc zasade działania tej części kodu:?

    Code:

    ................
    Command = Command And &B01111111
    If Address = 10 And Command = 107 Then
    ................



    Szczerze mówiąc można było użyc ATTINY13.
  • #21
    miswierz
    Poziom 14  
    A czy do tego urządzenia można zastosować inny odbiornik podczerwienie?np z odtwarzacza dvd ?
  • #22
    seba_x
    Poziom 31  
    miswierz napisał:
    A czy do tego urządzenia można zastosować inny odbiornik podczerwienie?np z odtwarzacza dvd ?


    a znasz częstotliwość jaką on odbiera ?
  • #23
    tom3kk
    Poziom 19  
    dorob opcje samo-programowania, a uklad bedzie o wiele praktyczniejszy,
    pomimo tego gratulacje za pomysl

    jak ktos szuka programowalnego ukladu, 'stand-by' to polecam moj (dziala z pilotami w standardzie RC5):
    http://tomekk.oswiecim.eu.org/projects/stand-by/

    Sam uczy sie kodow pilota, uklad powstal do sterowania subwooferem lecz nic nie stoi na przeszkodzie aby zastosowac go w innym urzadzeniu (w koncu tam jest przekaznik tylko),
    w topicu ktorym podalem znajduje sie film na dole

    P.S
    mam nadzieje ze auto nie ma nic przeciwko, ze zamiescilem link do swojego

    Pozdrawiam !
  • #24
    zmorex
    Poziom 11  
    miswierz napisał:
    A czy do tego urządzenia można zastosować inny odbiornik podczerwienie?np z odtwarzacza dvd ?


    Można o ile jest to nadajnik ( bo chyba o nadajnik Ci chodziło) nadający w kodzie RC5. Oczywiście wiąże się to ze zmiana komendy i adresu, tak więc bez układu sprawdzającego wysyłany sygnał się raczej nie obejdzie.
  • #25
    11111olo
    Poziom 42  
    bogdanbb2 napisał:
    Witam!
    Co do pytania elvisa1990 to 14 kanałów można zrobić na attiny2313.

    Można nawet 18! rezygnujemy z RESETu i zewnętrznego oscylatora ;)
  • #26
    otapi
    Poziom 25  
    tak prawdę mówiąc to można zrobić ile się chce dodając expandery na i2c nawet na ATTiny13 ;]
  • #27
    Popak
    Moderator na urlopie...
    zmorex napisał:
    miswierz napisał:
    A czy do tego urządzenia można zastosować inny odbiornik podczerwienie?np z odtwarzacza dvd ?

    Można o ile jest to nadajnik ( bo chyba o nadajnik Ci chodziło) nadający w kodzie RC5. Oczywiście wiąże się to ze zmiana komendy i adresu, tak więc bez układu sprawdzającego wysyłany sygnał się raczej nie obejdzie.

    Czy kolega nie widzi co miswierz napisał?
    miswierz napisał:
    A czy do tego urządzenia można zastosować inny odbiornik podczerwienie?np z odtwarzacza dvd ?

    Proszę przeczytać to podkreślone :) Koledze chodzi o odbiornik a nie nadajnik!

    Pozdrawiam
  • #28
    Tranzystor_1992
    Poziom 16  
    Proste użyteczne urządzenie ;) Jak dla mnie można by było dodać diodę LED, która miałaby na celu sygnalizowanie stanu przekaźnika (włączony/wyłączony). Dodatkowo jak już ktoś wspomniał, zabezpieczyłbym tranzystor diodą 1N4148 przed przepięciami. I mógłbyś się również postarać o jakiś ciekawy pilot :D W BASCOMie również istnieje funkcja nadawania w RC5 :)

    Pozdrawiam ;)
  • #29
    otapi
    Poziom 25  
    co do odbiornika wystarczy sięgnąć do helpa... jest tam mowa o odbiorniku SFH506-36 który działa na częstotliwości 36 kHz, tak więc o ile odbiornik dziala na tej częstotliwości to powinien zadziałać
  • #30
    Tranzystor_1992
    Poziom 16  
    Myślę, że podczerwień jest trochę przestarzała :) Fajne urządzenie do włączania/wyłączania urządzeń można by skonstruować na modułach radiowych ;) Może na RFM12 :?:

    Pozdrawiam ;)