Kauko-ohjattu TV:n LED taustavalo

Tämän rakentelun idea lähti oikeastaan siitä liikkeelle, kun kavereillani näin että heillä on televisiossaan LED-taustavalo, joka hämärässä ja pimeässä antaa miellyttävän taustavalon ja parantaa hieman telkkarin katselukokemusta. Kavereillani nämä LEDit toimivat käsiohjauksella kytkimellä. Itse en kuitenkaan halunnut kytkintä käyttää, joten keksinkin että ohjaan taustavaloa TV:n kaukosäätimellä.

Komponentit ja tarvikkeet

Aluksi piti hommata nettikaupasta hieman osia, että homma pääsi vauhtiin. Tilasin partcosta pari kappaletta TSOP34836 IR-vastaanottimia ja LED-valolistaa sekä muita osia, joita tarvitsin muissa jutuissa. Alle on listattu mitä osia oikeastaan tässä rojektissa tarvittiin:

  • Kotelo IR-vastaanottimelle ja ohjainyksikölle
  • 12 voltin muuntaja (tässä oli käytössä AC-muuntaja)
  • AC-muuntajan tapauksessa tasasuuntaussilta
  • Ohjausfetti P-kanavainen (käy periaatteessa mikä vaan joka kestää virrat ja jännitteen)
  • 5 voltin regulaattori TSOP34836:lle
  • 3,3 voltin regulaattori tai LDO (tässä käytetty LM317T)
  • MSP430G2231 mikrokontrolleri
  • DIP14 kanta
  • 32 kHz:n kellokide
  • 2 x 10 uF, 2x47 uF ja 2 x 100 nF kondensaattorit
  • Vastuksia 4k7, 33R, 120R 220R
  • Tinaa, johtimia, koekytkentälevyä ja kuumaliimaa

IR-dekoodaus

Aluksi tutkiskelin komponentin datalehteä, missä näytettiin kuinka komponentti voidaan kytkeä (kuva alla).

Tein yllä olevan kuvan mukaisen yksinkertaisen kytkennän vastaanottimelle ja aloin tutkimaan oskilloskoopilla ja logiikka-analysaattorilla millaista signaalia kaukosäädin lähettää. Logiikka-analysaattorilla oli helppo kaapata signaali talteen ja alkaa dekoodaamaan sitä käsin.

Signaalista huomasin aluksi, että pulssijono alkaa aina noin 2,7 millisekunnin mittaisella "0"-pulssilla. Kyseessä oli ilmiselvästi jokin protokolla, mistä minulla ei ollut minkään valtakunnan käsitystä. Onneksi kuitenkin google löytää kun kysyy vain oikeat kysymykset. SBProjects -sivuilta löytyikin paljon tietoa eri koodauksista ja vieläpä tämän kaukosäätimen koodauksesta myöskin. Selvisi, että kyseessä on RC-6 protokollan mukainen IR-koodaus. Bitit ovat manchester koodattuja ja protokollaan kuuluu pitkän 0-pulssin lisäksi start-bitti, kolme mode-bittiä, toggle-bitti sekä 16-bittiä näppäindataa (control ja information tavut).

Kun protokolla oli selvitetty, aloitin väsäämään Launchpadin avulla MSP430G2231 mikrokontrollerille koodia, joka tulkitsee näppäinten painalluksia. Kun koodi oli jokseenkin toimiva, aloitin tekemään muuta elektroniikkaa, kuten powerointia, LED-ohjausta ja kotelointia.

Elektroniikka

Kytkentäkuvaa ei tällä kertaa ole tarjolla, koska raapustin kytkentäkuvan nopsasti suttupaperin reunaan ja se ei ole mitään selvää luettavaa. Kuitenkaan kytkentä ei ole monimutkainen. Fettiä ohjataan mikrokontrollerilla 0-aktiivisella ohjauksella, MSP430G2231 mikrokontrollerille tehdään 3,3 voltin käyttöjännite LM317T regulaattorilla ja 5 voltin käyttöjännite IR-vastaanottimelle tehdään LM7805-regulaattorilla. LEDien ohjausjännite tulee suoraan muuntajalta tasasuuntaimen kautta. Niin ja tässä käytin 12 voltin AC-AC -muuntajaa joka löytyi romukopasta ja oli ylimääräisenä. Muuntaja on kytketty tasasuuntaimeen (joka on purettu vanhasta nokialaisen laturista) ja tasasuuntaimesta siis otetaan käyttöjännite regulaattoreille sekä LED-listoille. Alla muutamia kuvia elektroniikasta.

TSOP34836 vastaanotin kotelossa. Vastus ja konkka lisäkomponentteina ainoastaan. Kuumaliimakiinnitys - se perinteinen.

Kansi kiinni. Kotelo on itse asiassa sellainen mikä on tullut komponenttien mukana joskus eli täysin ilmainen siinä mielessä. Tulipahan käyttöä tuollekin "roskalle".

Piirilevyt kiinni mustassa laitekotelossa kuumaliiman avulla.

Asennus ja käyttöönotto

Lopuksi koko hässäkkä asennettiin television taakse tarranauhalla. Ei kovin komea asennus, mutta eipä se tuolta mihinkään näy... 🙂

Ja vielä vähän kuvia siitä miten tämä vaikuttaa television katselukokemukseen. Alla olevissa kuvissa taustavalo on ensin pois päältä, sitten ohjaus on minimissä ja viimeiseksi maksimissa. Alimmaisissa kuvissa voidaan siten huomata taustavalon voimakkuuden säätäminen, joka koodista löytyy myös.

Ohjelman toiminta

Mikrokontrollerin ohjelma toimii niin, että mikrokontrolleri odottaa sleep-modessa kunnes IR-signaali vastaanotetaan TSOP34836 piiriltä. Signaalin laskeva reuna aiheuttaa keskeytyksen, mikä herättää mikrokontrollerin. Herättyään mikrokontrolleri alkaa tulkitsemaan millaisen signaalin se vastaanottaa. Jos signaali on oikean protokollan mukainen, tulkitaan loputkin bitit. Kun kaikki bitit on tutkittu, niin pääohjelmalle palautetaan saadun näppäinpainalluksen arvo, minkä mukaan taustavalon ohjaus laitetaan päälle tai pois tai sen voimakkuutta muutetaan.

Alla on esitetty pääohjelman koodi, mistä nähdään että toiminta ei ole kovin monimutkaista. Suurimman osan työstä tekee DecoderGetButton() -funktio, joka tulkitsee ja palauttaa näppäinpainalluksen kaukosäätimestä.

void main(void)
{
       int btn=0;
       char lightOn=0;
       WDTCTL = WDTPW + WDTHOLD;              // Stop watchdog timer
       PWM_PORT_DIR |= PWM_PIN;	// output pwm pin P1.7
       ClockInit_1MHz();
       InitIR_pin();
       InitPWM();
       TurnLightOff();
       __enable_interrupt();
       while(1)
       {
              btn = DecoderGetButton();	// starts waiting for IR-signal in LPM0
              __delay_cycles(50000);
              if(btn == 0xFFD7)	// increase light intensity
              {
                     AddPWM(2);
              }
              if(btn == 0xFFD4)	// decrease light intensity
              {
                     AddPWM(-2);
              }
              if(btn == 0xFF8F)	// toggle light on/off depending on the previous state
              {
                     if(lightOn)
                     {
                            lightOn = 0;
                            TurnLightOff();
                     }
                     else
                     {
                            lightOn = 1;
                            TurnLightOn();
                     }
              }
       }
}

Ohjelman lähdekoodi kokonaisuudessaan löytyy zip-paketista ja koodia on jonkun verran kommentoitu englanniksi. Koodia saavat yksityishenkilöt vapaasti käyttää ja parannuksia voi vapaasti tehdä. Jos kuitenkin lainaat koodia, merkitse omassa koodissasi mistä lainasit sen. Ohjelman tekoon ja kääntämiseen käytetyn CCSv5 projektin voit ladata tästä, sen pitäisi aueta Code Composer Studiossa ongelmitta.