Daljinsko upravljanje svjetlom

Završeni projekti naših članova foruma sa pratećom dokumentacijom za ponovnu izradu istog.

Moderators: stojke369, pedja089, [eDo], trax

Daljinsko upravljanje svjetlom

Postby 78L05 » 12-08-2014, 01:00

Kada ugasim svjetlo na prekidaču koji se nalazi kod vrata ne volim u mraku ići do kreveta, također je nezgodno ako svjetlo zatreba tokom noći jer se tada ponovno treba ustati do prekidača.
Za rješenje tih "problema" izradio sam ovaj uređaj koji se sastoji od prijamnika sa senzorom TSOP 31238 (može i neki drugi, primjerice TSOP 1738 ili TSOP 1838) te malog predajnika (daljinskog upravljača) s IR LED-icom.
Baza prijamnika je 16F84A koji za koji postoje dvije verzije koda; jedna (primitivna) je da reagira na bilo koji signal 38kHz (bilo koju tipku daljinskog), a druga je da reagira na samo određenu tipku. Ja sam ga programirao tako da reagira na POWER tipku daljinskog upravljača za TV (njezina naredba je 12), a onda napravio i vlastiti predajnik koji odašilje tu frekvenciju. Međutim, ako netko želi da prijamnik reagira na neku drugu tipku to je u kodu lako reprogramirati (potrebno je znati kod naredbe i moju 12-icu zamjeniti s dotičnim brojem).

TSOP mora biti sklonjen od svjetlosti koju emitiraju fluo cijevi jer ga ista ometa, to sam riješio tako što sam senzor izvukao izvan armature koja se nalazi na stropu.

Video:

https://www.youtube.com/watch?v=AAF0MIQskrc&feature=youtu.be

Slike:
1.jpg
1.jpg (26.77 KiB) Viewed 6763 times

2.jpg
2.jpg (35.58 KiB) Viewed 6763 times

3.jpg
3.jpg (30.07 KiB) Viewed 6763 times

4.jpg
4.jpg (18.9 KiB) Viewed 6763 times


Shema prijamnika je "klasična", dakle vanjski oscilator - kristal 4MHz + 2 x 22pF kondenzatori, TSOP je vezan na PORTB.0 a relej na PORTA.0.

Source (pisano u MikroC):

Code: Select all
int x;

void citaj(){
int i;

x = 0;

for(i=0;i<8;i++){
delay_us(1778);
}

for(i=0;i<6;i++){
if(PORTB.RB0) x = x*2;
else x = x * 2 + 1;
delay_us(1778);
}

if (x==12) PORTA.RA0=~PORTA.RA0;

delay_ms(1500);
}
void main() {
TRISA = 0;
TRISB = 1;

PORTA.RA0 = 1;

while(1){
if(PORTB.RB0 == 0) citaj();
}
}


Evo i source koda za tzv. primitivni prijamnik koji ne "pita" koja je tipka stisnuta već reagira na bilo koju:

Code: Select all
void citaj(){
delay_us(1000);
if(PORTB.RB0 == 0){
PORTA.RA0=~PORTA.RA0;
delay_ms(1500);
}
}


void main() {
TRISA = 0;
TRISB = 1;
PORTA.RA0 = 1; //pali lampu

delay_ms(2000);


while(1){
if(PORTB.RB0 == 0) citaj();
}
}


Srce predajnika 12F629 koristi interni oscilator, IR LED je vezana na GP0 a tipkalo de-facto prekida plus pol napajanja (nije vezano na kontroler).

Code: Select all
const int niz[24] = {889, 889,
                    889, 889,
                    1778, 889,
                    889, 889,
                    889, 889,
                    889, 889,
                    889, 889,
                    889, 889,
                    889, 1778,
                    889, 889,
                    1778, 889,
                    889, 0}; //power tipka GORENJE

// const int niz[24] = {889, 889,889, 889,1778, 889,889, 889,889, 889,889, 889,889, 889,889, 1778,1778, 889,889, 889,889, 889,889, 0}; volume +


int indeks = 0;
int mikrosekunde = 0;
int ugasen = 0;

void off(int ugasen){
if(ugasen == 889) delay_us(1027); //greska u tajmingu, podeseno rucno
if(ugasen == 1778) delay_us(2186);  //-||-
}


void pulseIR(int mikrosekunde){
while (mikrosekunde > 0){
GP0_bit = 1;
delay_us(10);
GP0_bit = 0;
delay_us(10);
mikrosekunde-=32;
}
}

void salji_kod(){
for (indeks = 0; indeks < 24; indeks+=2){
pulseIR(niz[indeks]);
off(niz[indeks+1]);
}

GP0_bit = 0; //gasi LED-icu
delay_ms(100);

}

void main() {
TRISIO0_bit = 0; //gpio.0 je izlazan
GP0_bit = 0; //gasi LED-icu

while(1){
salji_kod();
}
}


Napomena: odnosi titranja i pauza (upisani u const int niz) otkriveni su s pomoću Arduina: http://www.richardosgood.com/blog/clone-infrared-signals-with-arduino/
Ovo je sve rađeno za Philipsov RC-5 protokol (http://www.sbprojects.com/knowledge/ir/rc5.php), mogu samo reći da Gorenje daljinski upravljač za TV koristi isti.
Ne vjeruj u čuda - računaj na njih!
User avatar
78L05
 
Posts: 1402
Joined: 28-05-2009, 13:22
Location: Hrvatska

Re: Daljinsko upravljanje svjetlom


Re: Daljinsko upravljanje svjetlom

Postby niho » 12-08-2014, 09:40

Odlično, drago mi je da si riješio problem smetnji koje rade fluo cijevi na jako jednostavan i praktičan način. Svaka čast. Pozz. Niho.
User avatar
niho
 
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

Re: Daljinsko upravljanje svjetlom

Postby 78L05 » 12-08-2014, 09:48

Hvala Niho, samo da jos napomenem da stari prekidac zadrzava svoju funkciju, odnosno s njim se moze paliti i gasiti svjetlo kao i prije, samo sto sve ide preko releja. Nakon duzeg izbivanja bilo bi dobro ugasiti prekidac jer time i sklop gubi napajanje a time se ne skracuje nepotrebno zivotni vijek komponentama,takoder se izbjegava minimalno grijanje transformatora.
Ne vjeruj u čuda - računaj na njih!
User avatar
78L05
 
Posts: 1402
Joined: 28-05-2009, 13:22
Location: Hrvatska

Re: Daljinsko upravljanje svjetlom

Postby trofazni » 05-10-2015, 18:13

Pozdrav!



Ima li tko malo volje da mi pomogne ili da mi linka neke detaljnije sheme i tutoriale? Google-ao sam, ali nisam nasao nesto detaljnije a da je na ovakav princip...


LP Tihomir
trofazni
 
Posts: 14
Joined: 06-07-2014, 21:05


Return to Gotovi projekti - sa dokumentacijom

Who is online

Users browsing this forum: No registered users and 2 guests

GOOGLE