- Delovna razlaga:
- Sestavni deli:
- Programiranje:
- Oblikovanje vezij in tiskanih vezij s pomočjo EasyEDA:
- Izračun in naročanje vzorcev PCB na spletu:
V tem projektu bomo uporabili mikrokrmilnik PIC za daljinsko upravljanje nekaj AC obremenitev z uporabo IR daljinskega upravljalnika. Podoben projekt IR daljinsko vodene avtomatizacije doma je bil že izveden tudi z Arduino, vendar smo ga tukaj zasnovali na PCB z uporabo spletnega oblikovalca in simulatorja EasyEDA in uporabili njihove storitve oblikovanja PCB za naročanje plošč PCB, kot je prikazano v naslednjem poglavju Članek.
Na koncu tega projekta boste lahko z običajnim daljinskim upravljalnikom preklapljali (VKLOP / IZKLOP) katero koli izmenično obremenitev iz udobja svojega stola / postelje. Da bi bil ta projekt bolj zanimiv, smo omogočili tudi funkcijo za nadzor hitrosti ventilatorja s pomočjo Triaca. Vse to lahko storite s preprostimi kliki na vašem IR daljincu. Za ta projekt lahko uporabite kateri koli daljinski upravljalnik za TV / DVD / MP3. Različne IR signale z daljinskega upravljalnika sprejema mikrokrmilnik, ki nato preko vezja gonilnika releja krmili ustrezne releje. Ti releji se uporabljajo za priključitev in odklop AC napetosti (luči / ventilator).
Delovna razlaga:
Delo tega projekta je dokaj enostavno razumeti. Ko na IR daljinskem upravljalniku pritisnete gumb, pošlje zaporedje kode v obliki kodiranih impulzov z modulacijsko frekvenco 38Khz. Te impulze sprejme senzor TSOP1738 in jih nato prebere krmilnik. Nato krmilnik dekodira prejeti impulz v šestnajstiško vrednost in jo primerja z vnaprej določenimi šestnajstiškimi vrednostmi v našem programu.
Če pride do kakršnega koli ujemanja, krmilnik izvede relativno operacijo s sprožitvijo ustreznega releja / triaka, ustrezen rezultat pa prikažejo tudi vgrajene LED. V tem projektu smo uporabili 4 žarnice (majhne žarnice) različnih barv kot svetlobne obremenitve, druga žarnica (večja žarnica) pa se šteje za ventilator za predstavitev.
Izbrali smo tipko 1 za preklop releja1, 2 za preklop releja2, 3 za preklop releja3, 4 za preklop releja4 in Vol + za povečanje hitrosti ventilatorja in Vol- za zmanjšanje hitrosti ventilatorja.
Opomba: Tu smo namesto ventilatorja uporabili 100-vatno žarnico.
Za različne naprave je na voljo veliko vrst IR daljincev, vendar večina od njih deluje na frekvenci 38 KHz. V tem projektu nadzorujemo gospodinjske aparate z daljinskim upravljalnikom IR TV, za zaznavanje IR signalov pa uporabljamo IR sprejemnik TSOP1738. Ta senzor TSOP1738 lahko zazna frekvenčni signal 38 kHz. Delovanje IR daljinskega upravljalnika in TSOP1738 je podrobno opisano v tem članku: IR oddajnik in sprejemnik
Naš mikrokrmilnik PIC deluje pri + 5V, releji pa pri + 12V, zato z transformatorjem odstopimo 220V AC in ga popravimo s celotnim mostičnim usmernikom. Ta izravnana enosmerna napetost se nato z uporabo regulatorjev IC 7812 in 7805 uravna na + 12V in + 5V.
Za sprožitev releja uporabljamo tranzistorje, kot je BC547, ki lahko delujejo kot elektronsko stikalo za VKLOP / IZKLOP relejev na podlagi signala mikrokrmilnika PIC. Nadalje za nadzor hitrosti ventilatorja uporabljamo TRIAC. TRIAC je močni polprevodnik, ki je sposoben nadzorovati izhodno napetost; ta sposobnost se uporablja za nadzor hitrosti ventilatorja.
Za nadzor Triaca smo uporabili tudi gonilnik Triac z našim mikrokrmilnikom PIC. Ta gonilnik se uporablja za oddajanje impulza kota streljanja Triacu, tako da je mogoče nadzorovati izhodno moč. Tu smo uporabili 6 nivojev nadzora hitrosti. Ko je nivo 0, bo ventilator izključen. Ko bo nivo 1, bo hitrost 1/5 polne hitrosti. Ko bo nivo 2, bo hitrost 2/5 polne hitrosti in za ostale. Trenutni nivo hitrosti lahko spremljate s pomočjo vgrajenega 7-segmentnega zaslona.
Blokovni diagram projekta je prikazan spodaj.
Sestavni deli:
Sestavni deli, potrebni za izdelavo tega projekta, so navedeni spodaj:
- PIC18f2520 Mikrokrmilnik -1
- TSOP1738 -1
- IR TV / DVD daljinec -1
- Tranzistor BC547 -4
- Releji 12 voltov -4
- Žarnica z držalom -5
- Priključne žice -
- EasyEda PCB -1
- 16x2 LCD
- Napajanje 12v
- Priključek priključka 2-polni `-8
- Priključek priključka 3-polni -1
- Transformator 12-0-12 -1 -
- Napetostni regulator 7805 -1
- Napetostni regulator 7812 -1
- Kondenzator 1000uf -1
- Kondenzator 10uf -1
- Kondenzator 0,1uf -1
- Kondenzator 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Skupni katodni segment -1
- 1n4007 dioda -10
- BT136 triak -1
- Moška / ženska glava -
- LED -6
- Optična spojka moc3021 -1
- Optična spojka mtc2e ali 4n35 -1
- 20Mhz kristal -1
- 33pf kondenzator -2
- 5.1v cener dioda -1
- 47 ohm 2-vatni upor -1
Vse te komponente se pogosto uporabljajo in jih je mogoče enostavno kupiti. Če pa iščete najboljši nakup na spletu, vam priporočamo LCSC.
LCSC je odlična spletna trgovina za nakup elektronskih komponent za vse vrste projektov. Vsebujejo približno 25.000 vrst komponent, najboljše pa je, da prodajajo tudi majhne izdelke za manjše projekte in imajo tudi Global Shipping.
Dekodiranje IR daljinskega upravljalnika:
Kot že rečeno, lahko za svoj projekt uporabite kateri koli daljinski upravljalnik. Vedeti pa moramo, za kakšen signal se ustvarja ta daljinski upravljalnik. Za vsak posamezen ključ na daljinskem upravljalniku bo enakovredna HEX vrednost tega ključa. S pomočjo te šestnajstiške vrednosti lahko ločimo vsako tipko na strani mikrokrmilnika. Torej, preden se odločimo za uporabo daljinskega upravljalnika, moramo vedeti vrednost HEX za prednastavljene tipke na tem daljinskem upravljalniku. V tem projektu smo uporabili daljinski upravljalnik NEC. Vrednosti HEX za tipke na daljinskem upravljalniku NEC so navedene spodaj.
Kot lahko opazite, ima vrednost HEX 7 znakov, od katerih se razlikujeta le zadnji dve, zato lahko za razlikovanje med posameznimi tipkami upoštevamo samo zadnji dve števki.
Shema vezja:
Shema projekta je prikazana spodaj.
Zgornjo shemo smo olajšali z uporabo urejevalnika shem esayEDA, saj zagotavljajo postavitve vseh komponent, uporabljenih v tem projektu. Prav tako ne zahteva namestitve in jo lahko uporabljate v spletu na poti.
Vrednosti pinov in komponent so jasno določene v zgornji shemi. Shematsko datoteko lahko prenesete tudi od tukaj.
Programiranje:
Program za ta projekt je narejen z uporabo MPLABX, koda je tudi precej preprosta in lahko razumljiva. Popolna koda bo podana na koncu te vadnice, spodaj je pojasnjenih nadaljnjih nekaj pomembnih delov programa.
Na začetku kode bi morali vključiti zahtevane knjižnice, definirati zatiče in prijaviti spremenljivke.
#include
Po tem smo s pomočjo zanke »for« ustvarili preprosto funkcijo zakasnitve.
void delay (int time) {for (int i = 0; i
Po tem smo časovnik inicializirali z uporabo naslednje funkcije
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Timer Clock Source je iz prescalerja T0CS = 0; // Prescaler dobi uro iz FCPU (5MHz) T08BIT = 0; // 16-bitni način TMR0IE = 1; // Omogoči TIMER0 Prekinitev PEIE = 1; // Omogoči periferno prekinitev GIE = 1; // Globalno omogoči INTs TMR0ON = 1; // Zdaj zaženite časovnik! }
Zdaj imamo v glavni funkciji navodila za izbrane nožice in inicializiramo časovnik in zunanjo prekinitev int0, da zaznamo prehod nič.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; rele1 = 0; rele2 = 0; rele3 = 0; rele4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; trik = 0; časovnik (); INTEDG0 = 0; // Prekinitev na padajočem robu INT0IE = 1; // omogoči zunanjo prekinitev INT0 (RB0) INT0IF = 0; // Počisti bit oznake zunanje prekinitve INT0 PEIE = 1; // Omogoči periferno prekinitev GIE = 1; // Globalno omogočite INT-je
Zdaj tukaj ne uporabljamo nobenega načina prekinitve ali zajema in primerjave za zaznavanje IR signala. Tu smo pravkar uporabili digitalni zatič za branje podatkov, tako kot beremo tipko. Kadar gre signal visok ali nizek, samo uporabimo metodo razbremenitve in zaženemo časovnik. Kadar koli pin spremeni svoje stanje v drugo, se časovne vrednosti shranijo v matriko.
IR logika daljinskega pošiljanja 0 kot 562,5us in logika 1 kot 2250us. Kadar odštevalnik prebere približno 562,5us, potem vzamemo 0, ko pa odšteva približno 2250us, pa to štejemo kot 1. Nato ga pretvorimo v šestnajstiško.
Dohodni signal z daljinskega upravljalnika vsebuje 34 bitov. Vse bajte shranimo v matriko in nato dešifriramo zadnji bajt, ki ga uporabimo.
medtem ko (ir == 1); INT0IE = 0; medtem ko (ir == 0); TMR0 = 0; medtem ko (ir == 1); i ++; dat = TMR0; če (dat> 5000 && dat <12000) {} sicer {i = 0; INT0IE = 1; } if (i> = 33) {GIE = 0; zamuda (50); cmd = 0; for (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; sicer če (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Zgornji del kode sprejme in dekodira IR signal s pomočjo časovnih prekinitev in shrani ustrezno vrednost HEX v spremenljivko cmd. Zdaj lahko primerjamo to vrednost HEX (spremenljivka cmd) z našimi vnaprej določenimi vrednostmi HEX in preklopimo rele, kot je prikazano spodaj
če (cmd == 0xAF) {rele1 = ~ rele1; rly1LED = ~ rly1LED; } sicer če (cmd == 0x27) {rele2 = ~ rele2; rly2LED = ~ rly2LED; } sicer če (cmd == 0x07) {rele3 = ~ rele3; rly3LED = ~ rly3LED; } sicer če (cmd == 0xCF) {rele4 = ~ rele4; rly4LED = ~ rly4LED; } sicer če (cmd == 0x5f) {hitrost ++; če (hitrost> 5) {hitrost = 5; }} sicer če (cmd == 0x9f) {hitrost--; če (hitrost <= 0) {hitrost = 0; }}
Zdaj, da vemo, pri katerem ventilatorju trenutno deluje, bi morali uporabiti 7-segmentni zaslon. Naslednje vrstice so namenjene navodilom zatičev 7-segmentnega zaslona.
če (hitrost == 5) // izklopljen 5x2 = 10ms triger // hitrost 0 {PORTA = 0xC0; // prikaz 0 RB6 = 1; fanLED = 0; } sicer če (hitrost == 4) // 8 ms sprožilec // hitrost 1 {PORTA = 0xfc; // prikaz 1 RB6 = 1; ventilator LED = 1; } sicer če (hitrost == 3) // 6 ms sprožilec // hitrost 2 {PORTA = 0xE4; // prikaz 2 RB6 = 0; ventilator LED = 1; } sicer če (hitrost == 2) // sprožitev 4ms // hitrost 3 {PORTA = 0xF0; // prikaz 3 RB6 = 0; ventilator LED = 1; } sicer če (hitrost == 1) // sprožitev 2ms // hitrost 4 {PORTA = 0xD9; // prikaz 4 RB6 = 0; ventilator LED = 1; } sicer če (hitrost == 0) // 0ms sprožilec // hitrost 5 polna moč {PORTA = 0xD2; // prikaz 5 RB6 = 0; ventilator LED = 1; }
Spodnja funkcija je namenjena zunanjim prekinitvam in časovnemu prelivanju. Ta funkcija je odgovorna za zaznavanje prehoda ničle in vožnjo trica.
void interrupt isr () {if (INT0IF) {zamuda (hitrost); trik = 1; za (int t = 0; t <100; t ++); trik = 0; INT0IF = 0; } if (TMR0IF) // Preverite, ali je TMR0 Overrow ISR {TMR0IF = 0; }}
Končni PCB za to IR daljinsko vodeno avtomatizacijo doma je videti spodaj:
Oblikovanje vezij in tiskanih vezij s pomočjo EasyEDA:
Za zasnovo tega sistema za avtomatizacijo na daljavo smo uporabili EasyEDA, ki je brezplačno spletno orodje EDA za nemoteno ustvarjanje vezij in PCB-jev. Pred tem smo pri EasyEDA naročili nekaj PCB-jev in še vedno uporabljamo njihove storitve, saj smo ugotovili, da je celoten postopek, od risanja vezij do naročanja PCB-jev, bolj primeren in učinkovit v primerjavi z drugimi proizvajalci PCB. EasyEDA ponuja brezplačno risanje vezij, simulacije in oblikovanje tiskanih vezij, poleg tega pa nudi tudi visoko kakovostno, a nizko ceno prilagojeno storitev PCB Tukaj si oglejte celotno vadnico o tem, kako uporabljati Easy EDA za izdelavo shem, postavitev PCB, simulacijo vezij itd.
EasyEDA se izboljšuje iz dneva v dan; dodali so številne nove funkcije in izboljšali splošno uporabniško izkušnjo, zaradi česar je EasyEDA enostavnejša in uporabnejša za načrtovanje vezij. Kmalu bodo lansirali svojo namizno različico, ki jo lahko naložite in namestite v računalnik za uporabo brez povezave.
V EasyEDA lahko svoje načrte vezij in tiskanih vezij objavite javno, tako da jih lahko drugi uporabniki kopirajo ali urejajo in od tega izkoristijo. Za to avtomatizacijo doma na daljavo smo objavili tudi celotno postavitev vezij in tiskanih plošč .
Spodaj je Snapshot of Top layer of PCB layout from EasyEDA, lahko si ogledate katero koli plast (Top, Bottom, Topsilk, bottomomskil itd.) PCB-ja tako, da v oknu 'Layers' izberete plast.
Izračun in naročanje vzorcev PCB na spletu:
Po končanem oblikovanju PCB-ja lahko kliknete ikono Fabrication output , ki vas popelje na stran za naročilo PCB-ja. Tu si lahko ogledate tiskano vezje v pregledovalniku Gerber Viewer ali prenesete Gerberjeve datoteke s tiskanega vezja in jih pošljete kateremu koli proizvajalcu, prav tako je veliko lažje (in cenejše), da ga naročite neposredno v EasyEDA. Tu lahko izberete število PCB-jev, ki jih želite naročiti, koliko bakrenih plasti potrebujete, debelino PCB-ja, težo bakra in celo barvo PCB-ja. Ko izberete vse možnosti, kliknite »Shrani v košarico« in dokončajte naročilo, nato boste v nekaj dneh prejeli PCB.
To PCB lahko neposredno naročite ali prenesete datoteko Gerber s pomočjo te povezave.
Po nekaj dneh naročanja PCB-jev smo dobili PCB-je. Plošče, ki smo jih prejeli, so prikazane spodaj.
Ko smo prejeli tiskane plošče, sem preko PCB-ja namestil vse zahtevane komponente in končno pripravil IR daljinsko vodeno avtomatizacijo doma, preverite to vezje v predstavitvenem videu na koncu članka.