- Radno objašnjenje:
- Komponente:
- Programiranje:
- Dizajn sklopova i PCB-a pomoću EasyEDA-e:
- Izračun i naručivanje uzoraka PCB-a putem interneta:
U ovom projektu koristit ćemo PIC mikrokontroler za daljinsko upravljanje nekoliko opterećenja izmjeničnom strujom samo pomoću IR daljinskog upravljača. Sličan projekt IR daljinsko upravljane kućne automatizacije već je izveden i s Arduinom, ali ovdje smo ga dizajnirali na PCB-u koristeći EasyEDA-in mrežni dizajner PCB-a i simulator i koristili njihove usluge dizajniranja PCB-a za naručivanje PCB ploča kao što je prikazano u sljedećem odjeljku članak.
Na kraju ovog projekta moći ćete uključiti (UKLJUČITI / ISKLJUČITI) bilo koje AC opterećenje pomoću običnog daljinskog upravljača iz udobnosti svoje stolice / kreveta. Da bismo ovaj projekt učinili zanimljivijim, omogućili smo i značajku za kontrolu brzine ventilatora uz pomoć Triaca. Sve se to može učiniti jednostavnim klikom na vaš daljinski upravljač. Za ovaj projekt možete koristiti bilo koji daljinski upravljač za TV / DVD / MP3. Različite IR signale s daljinskog upravljača prima mikrokontroler koji zatim upravlja odgovarajućim relejima putem kruga pokretača releja. Ovi se releji koriste za spajanje i odvajanje AC opterećenja (svjetla / ventilator).
Radno objašnjenje:
Rad ovog projekta prilično je jednostavan za razumjeti. Kada se na IR daljinskom upravljaču pritisne tipka, on šalje slijed koda u obliku kodiranih impulsa koristeći modulacijsku frekvenciju od 38 Khz. Te impulse prima senzor TSOP1738, a zatim ih čita upravljač. Zatim kontroler dekodira primljeni niz impulsa u hex vrijednost i uspoređuje ga s unaprijed definiranim hex vrijednostima u našem programu.
Ako se dogodi bilo kakvo podudaranje, tada regulator vrši relativnu operaciju aktiviranjem odgovarajućeg releja / triaka, a odgovarajući rezultat također se ukazuje na ugrađenim LED lampicama. Ovdje smo u ovom projektu koristili 4 žarulje (male žarulje) različitih boja kao svjetlosna opterećenja, a druga žarulja (veća žarulja) smatra se ventilatorom u svrhu demonstracije.
Odabrali smo tipku 1 za prebacivanje releja1, 2 za prebacivanje releja2, 3 za prebacivanje releja3, 4 za prebacivanje releja4 i Vol + za povećanje brzine ventilatora i Vol- za smanjenje brzine ventilatora.
Napomena: Ovdje smo umjesto ventilatora koristili žarulju od 100 W.
Postoji mnogo vrsta IR daljinskih upravljača dostupnih za različite uređaje, ali većina njih radi na frekvenciji od 38 KHz. Ovdje u ovom projektu kontroliramo kućanske uređaje pomoću daljinskog upravljača IR TV-a, a za otkrivanje IR signala koristimo TSOP1738 IR prijemnik. Ovaj senzor TSOP1738 može osjetiti frekvencijski signal od 38 kHz. Rad IR daljinskog upravljača i TSOP1738 detaljno je opisan u ovom članku: IR odašiljač i prijemnik
Naš PIC mikrokontroler radi na + 5V, a releji na + 12V, stoga koristimo transformator za spuštanje 220V izmjeničnog napona i njegovo ispravljanje pomoću punog ispravljača mosta. Ovaj ispravljeni istosmjerni napon tada se regulira na + 12V i + 5V pomoću IC-regulatora IC 7812, odnosno 7805.
Za aktiviranje releja koristimo tranzistore poput BC547 koji mogu djelovati kao elektronički prekidač za UKLJUČIVANJE / ISKLJUČIVANJE releja na temelju signala iz PIC mikrokontrolera. Dalje za kontrolu brzine ventilatora koristimo TRIAC. TRIAC je poluvodič snage koji je sposoban kontrolirati izlazni napon; ova se sposobnost koristi za kontrolu brzine ventilatora.
Također smo koristili Triac Driver za kontrolu Triaca pomoću našeg PIC mikrokontrolera. Ovaj pokretač koristi se za davanje impulsa kuta pucanja Triacu, tako da se može kontrolirati izlazna snaga. Ovdje smo koristili 6 nivoa kontrole brzine. Kad je razina 0 tada će ventilator biti isključen. Kada razina bude 1 tada će brzina biti 1/5 od pune brzine. Kada razina bude 2 tada će brzina biti 2/5 pune brzine, odnosno za ostale. Trenutna razina brzine može se pratiti pomoću 7-segmentnog zaslona na ploči.
Blok dijagram projekta prikazan je u nastavku.

Komponente:
Komponente potrebne za izgradnju ovog projekta dane su u nastavku:
- PIC18f2520 Mikrokontroler -1
- TSOP1738 -1
- Daljinski upravljač za IR TV / DVD -1
- Tranzistor BC547 -4
- Releji od 12 volti -4
- Žarulja s držačem -5
- Priključne žice -
- EasyEda PCB -1
- LCD 16x2
- Napajanje 12v
- Konektor stezaljke 2-polni `-8
- Konektor priključka 3-polni -1
- Transformator 12-0-12 -1 -
- Regulator napona 7805 -1
- Regulator napona 7812 -1
- Kondenzator 1000uf -1
- Kondenzator 10uf -1
- Kondenzator 0,1uf -1
- Kondenzator 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Uobičajeni katodni segment -1
- 1n4007 dioda -10
- BT136 trijak -1
- Muško / žensko zaglavlje -
- LED diode -6
- Opto-spojnica moc3021 -1
- Opto-spojnica mtc2e ili 4n35 -1
- Kristal od 20 MHz - 1
- 33pf kondenzator -2
- 5.1v zener dioda -1
- Otpor od 47 vata od 2 vata -1
Sve se ove komponente obično koriste i mogu se jednostavno kupiti. Međutim, ako tražite najpovoljniju kupovinu na mreži, tada bismo vam preporučili LCSC.
LCSC je izvrsna internetska trgovina za kupnju vaših elektroničkih komponenata za sve vrste projekata. Sadrže oko 25 000 vrsta komponenata, a najbolja stvar je što prodaju čak i male količine predmeta za male projekte, a imaju i Global Shipping.
Dekodiranje IR daljinskog upravljača:
Kao što je ranije rečeno, za svoj projekt možete koristiti bilo koji daljinski upravljač. Ali moramo znati za kakav se signal generira s tog daljinskog upravljača. Za svaki pojedinačni ključ na daljinskom upravljaču postojat će ekvivalentna HEX vrijednost za taj ključ. Pomoću ove HEX vrijednosti možemo razlikovati svaku tipku na našoj strani mikrokontrolera. Dakle, prije nego što odlučimo koristiti daljinski upravljač, trebali bismo znati HEX vrijednost za tipke unaprijed postavljene na tom daljinskom upravljaču. U ovom smo projektu koristili NEC daljinski upravljač. Vrijednosti HEX za tipke na daljinskom upravljaču NEC navedene su u nastavku.

Kao što možete primijetiti, HEX vrijednost ima 7 znakova od kojih se razlikuju samo posljednje dvije, stoga možemo razmotriti samo posljednje dvije znamenke kako bismo razlikovali svaku tipku.

Kružni dijagram:
Shema projekta prikazana je u nastavku.

Gornja shema olakšana je korištenjem esayEDA shematskog uređivača jer pružaju raspored svih komponenata korištenih u ovom projektu. Također ne zahtijeva instalaciju i može se koristiti putem interneta u pokretu.
Vrijednosti pinouta i komponenata jasno su navedene u gornjoj shemi. Shematsku datoteku možete preuzeti i ovdje.
Programiranje:
Program za ovaj projekt izrađen je pomoću MPLABX-a, kôd je također prilično jednostavan i lak za razumijevanje. Kompletni kod dat će se na kraju ovog vodiča, a sljedećih nekoliko važnih dijelova programa objašnjeno je u nastavku.
Na početku koda trebali bismo uključiti potrebne knjižnice, definirati pinove i deklarirati varijable.
#include
Nakon toga stvorili smo jednostavnu funkciju odgode pomoću petlje "for".
void delay (int time) {for (int i = 0; i
Nakon toga inicijalizirali smo tajmer pomoću sljedeće funkcije
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Izvor sata tajmera je iz Prescalera T0CS = 0; // Prescaler dobiva sat od FCPU (5MHz) T08BIT = 0; // 16-bitni način rada TMR0IE = 1; // Omogući TIMER0 Prekid PEIE = 1; // Omogući periferni prekid GIE = 1; // Globalno omogućiti INT-ove TMR0ON = 1; // A sada pokrenite timer! }
Sada u glavnoj funkciji moramo dati upute odabranim pinovima i inicijalizirati tajmer i vanjski prekid int0 za otkrivanje prelaska nule.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; relej1 = 0; relej2 = 0; relej3 = 0; relej4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; trik = 0; mjerač vremena (); INTEDG0 = 0; // Prekid na padajućem rubu INT0IE = 1; // Omogući vanjski prekid INT0 (RB0) INT0IF = 0; // Briše INT0 vanjski znak prekida bit PEIE = 1; // Omogući periferni prekid GIE = 1; // Omogućite INT-ove globalno
Ovdje ne koristimo način prekida ili snimanja i usporedbe za otkrivanje IR signala. Ovdje smo upravo koristili digitalni pin za čitanje podataka baš kao što čitamo gumb. Kad god signal prijeđe na visoku ili nisku vrijednost, jednostavno stavimo metodu debouncinga i pokrenimo tajmer. Kad god pin promijeni svoje stanje u drugo, tada će se vrijednosti vremena spremiti u niz.
IR logika daljinskog slanja 0 kao 562,5us i logika 1 kao 2250us. Kad god timer očita oko 562,5us, tada ga pretpostavimo 0, a kada timer očita oko 2250us, pretpostavljamo kao 1. Tada ga pretvaramo u hex.
Dolazni signal s daljinskog upravljača sadrži 34 bita. Spremimo sve bajtove u polje, a zatim dekodiramo zadnji bajt koji se koristi.
dok (ir == 1); INT0IE = 0; dok (ir == 0); TMR0 = 0; dok (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} else {i = 0; INT0IE = 1; } if (i> = 33) {GIE = 0; kašnjenje (50); cmd = 0; za (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; inače ako (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Gornji dio koda prima i dekodira IC signal pomoću prekidača s odbrojavanjem i pohranjuje odgovarajuću HEX vrijednost u varijablu cmd. Sada možemo usporediti ovu HEX vrijednost (cmd varijabla) s našim unaprijed definiranim HEX vrijednostima i prebaciti relej kao što je prikazano dolje
if (cmd == 0xAF) {relej1 = ~ relej1; rly1LED = ~ rly1LED; } inače if (cmd == 0x27) {relej2 = ~ relej2; rly2LED = ~ rly2LED; } inače if (cmd == 0x07) {relej3 = ~ relej3; rly3LED = ~ rly3LED; } inače if (cmd == 0xCF) {relej4 = ~ relej4; rly4LED = ~ rly4LED; } inače if (cmd == 0x5f) {brzina ++; if (brzina> 5) {brzina = 5; }} inače if (cmd == 0x9f) {speed--; if (brzina <= 0) {brzina = 0; }}
Da bismo znali na kojem ventilatoru trenutno radi, trebali bismo koristiti 7-segmentni zaslon. Sljedeći se retci koriste za upućivanje pinova 7-segmentnog zaslona.
ako (brzina == 5) // isključen 5x2 = 10ms triger // brzina 0 {PORTA = 0xC0; // prikaz 0 RB6 = 1; fanLED = 0; } else if (brzina == 4) // 8 ms okidač // brzina 1 {PORTA = 0xfc; // prikazuje se 1 RB6 = 1; ventilator LED = 1; } else if (brzina == 3) // 6 ms okidač // brzina 2 {PORTA = 0xE4; // prikazuje se 2 RB6 = 0; ventilator LED = 1; } else if (brzina == 2) // okidač od 4 ms // brzina 3 {PORTA = 0xF0; // prikazuje se 3 RB6 = 0; ventilator LED = 1; } else if (brzina == 1) // okidač od 2 ms // brzina 4 {PORTA = 0xD9; // prikazuje se 4 RB6 = 0; ventilator LED = 1; } else if (brzina == 0) // 0ms okidač // brzina 5 pune snage {PORTA = 0xD2; // prikazuje se 5 RB6 = 0; ventilator LED = 1; }
Sljedeća je funkcija za vanjski prekid i prelijevanje vremena. Ova je funkcija odgovorna za otkrivanje prelaska nule i vožnju Triaca.
void interrupt isr () {if (INT0IF) {kašnjenje (brzina); trik = 1; za (int t = 0; t <100; t ++); trik = 0; INT0IF = 0; } if (TMR0IF) // Provjerite je li TMR0 Overflow ISR {TMR0IF = 0; }}
Konačna PCB za ovu IC daljinsko upravljanu kućnu automatizaciju izgleda kako je prikazano dolje:

Dizajn sklopova i PCB-a pomoću EasyEDA-e:
Za dizajniranje ove kućanske automatizacije na daljinsko upravljanje koristili smo EasyEDA koji je besplatni mrežni EDA alat za stvaranje bežičnih krugova i PCB-a. Prethodno smo naručili nekoliko PCB-a od EasyEDA-e i još uvijek koristimo njihove usluge jer smo pronašli čitav postupak, od crtanja krugova do naručivanja PCB-a, prikladnijih i učinkovitijih u usporedbi s drugim proizvođačima PCB-a. EasyEDA nudi besplatno crtanje, simulaciju i dizajn PCB-a, a također nudi i kvalitetnu, ali nisku cijenu prilagođenu uslugu PCB-a. Ovdje potražite cjelovitu lekciju o tome kako koristiti Easy EDA za izradu shema, izgleda PCB-a, simulacije krugova itd.
EasyEDA se poboljšava iz dana u dan; dodali su mnoge nove značajke i poboljšali cjelokupno korisničko iskustvo, što EasyEDA čini lakšim i upotrebljivijim za projektiranje sklopova. Uskoro će lansirati njegovu verziju za radnu površinu, koja se može preuzeti i instalirati na vaše računalo za izvanmrežnu upotrebu.
U EasyEDA-i možete učiniti svoj dizajn sklopa i PCB-a javnim, tako da ih drugi korisnici mogu kopirati ili urediti i od toga imati koristi. Također smo za ovaj daljinski upravljač kućne automatizacije učinili javnim cijeli raspored krugova i PCB-a .
Ispod je Snimka gornjeg sloja izgleda PCB-a tvrtke EasyEDA, možete pregledati bilo koji sloj (gornji, donji, gornji dio dna, dno itd.) PCB-a odabirom sloja iz prozora "Slojevi".


Izračun i naručivanje uzoraka PCB-a putem interneta:
Nakon dovršetka dizajna PCB-a možete kliknuti ikonu izlaza za izradu koja će vas odvesti na stranicu za narudžbu PCB-a. Ovdje možete pregledati svoju PCB u pregledniku Gerber Viewer ili preuzeti Gerber datoteke s PCB-a i poslati ih bilo kojem proizvođaču, a puno je lakše (i jeftinije) naručiti je izravno u EasyEDA-i. Ovdje možete odabrati broj PCB-a koje želite naručiti, koliko slojeva bakra trebate, debljinu PCB-a, težinu bakra, pa čak i boju PCB-a. Nakon što odaberete sve mogućnosti, kliknite "Spremi u košaricu" i dovršite narudžbu, a zatim ćete u roku od nekoliko dana dobiti svoje PCB-ove.

Ovu PCB možete izravno naručiti ili preuzeti Gerber datoteku pomoću ove poveznice.
Nakon nekoliko dana naručivanja PCB-a dobili smo PCB-ove. Daske koje smo dobili prikazane su u nastavku.

Nakon što smo dobili PCB-ove, montirao sam sve potrebne komponente preko PCB-a, i konačno smo pripremili našu IR daljinsku kontrolu automatizacije kuće, provjerite ovaj sklop koji radi u demonstracijskom videu na kraju članka.


