Daljinsko upravljanje svjetlom

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

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
78L05
Pravo sam se raspisao :)
Pravo sam se raspisao :)
Posts: 1402
Joined: 28-05-2009, 13:22
Location: Hrvatska

Daljinsko upravljanje svjetlom

Post by 78L05 »

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=AAF0MIQ ... e=youtu.be

Slike:
1.jpg
1.jpg (26.77 KiB) Viewed 8348 times
2.jpg
2.jpg (35.58 KiB) Viewed 8348 times
3.jpg
3.jpg (30.07 KiB) Viewed 8348 times
4.jpg
4.jpg (18.9 KiB) Viewed 8348 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 ... h-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
niho
Pravi forumaš
Pravi forumaš
Posts: 1895
Joined: 24-09-2009, 17:26
Location: Brcko, Bosnia and Herzegovina

Re: Daljinsko upravljanje svjetlom

Post by niho »

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
78L05
Pravo sam se raspisao :)
Pravo sam se raspisao :)
Posts: 1402
Joined: 28-05-2009, 13:22
Location: Hrvatska

Re: Daljinsko upravljanje svjetlom

Post by 78L05 »

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!
trofazni
Posts: 14
Joined: 06-07-2014, 21:05

Re: Daljinsko upravljanje svjetlom

Post by trofazni »

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
Post Reply