- Pracovné vysvetlenie:
- Komponenty:
- Programovanie:
- Dizajn obvodov a DPS pomocou EasyEDA:
- Výpočet a objednávanie vzoriek PCB online:
V tomto projekte použijeme mikrokontrolér PIC na diaľkové ovládanie niekoľkých záťaží striedavého prúdu iba pomocou IR diaľkového ovládača. Podobný projekt IR diaľkovo ovládanej domácej automatizácie už bol hotový aj v Arduine, ale tu sme ho navrhli na PCB pomocou online návrhára a simulátora PCB spoločnosti EasyEDA a na ich objednanie dosiek plošných spojov sme použili služby navrhovania PCB, ako je uvedené v nasledujúcej časti článok.
Na konci tohto projektu budete môcť z pohodlia svojej stoličky / postele prepínať (ON / OFF) akékoľvek striedavé zaťaženie pomocou bežného diaľkového ovládača. Aby bol tento projekt zaujímavejší, povolili sme tiež funkciu na reguláciu rýchlosti ventilátora pomocou Triaku. To všetko je možné vykonať jednoduchými kliknutiami na infračervenom diaľkovom ovládači. Pre tento projekt môžete použiť ktorékoľvek z vašich diaľkových ovládačov TV / DVD / MP3. Rôzne infračervené signály z diaľkového ovládača prijíma mikrokontrolér, ktorý potom riadi príslušné relé prostredníctvom obvodu relé budiča. Tieto relé sa používajú na pripojenie a odpojenie striedavého prúdu (svetlá / ventilátor).
Pracovné vysvetlenie:
Fungovanie tohto projektu je celkom jednoduché na pochopenie. Po stlačení tlačidla na IR diaľkovom ovládači odošle sekvenciu kódu vo forme kódovaných impulzov pomocou modulačnej frekvencie 38 kHz. Tieto impulzy sú prijímané snímačom TSOP1738 a potom načítané radičom. Kontrolér potom dekóduje prijatý sled impulzov na hexadecimálnu hodnotu a porovná ju s preddefinovanými hexadecimálnymi hodnotami v našom programe.
Ak dôjde k akejkoľvek zhode, potom regulátor vykoná relatívnu operáciu spustením príslušného relé / triaku a zodpovedajúci výsledok je tiež indikovaný palubnými LED diódami. Tu v tomto projekte sme použili 4 žiarovky (malé žiarovky) rôznych farieb ako svetelné zdroje a iná žiarovka (väčšia žiarovka) sa na demonštračné účely považuje za ventilátor.
Vybrali sme klávesu 1 na prepínanie relé1, 2 na prepínanie relé2, 3 na prepínanie relé3, 4 na prepínanie relé4 a Vol + na zvýšenie rýchlosti ventilátora a Vol- na zníženie rýchlosti ventilátora.
Poznámka: Tu sme použili 100W žiarovku namiesto ventilátora.
Existuje mnoho typov IR diaľkových ovládačov dostupných pre rôzne zariadenia, ale väčšina z nich pracuje s frekvenciou 38 kHz. V tomto projekte riadime domáce spotrebiče pomocou diaľkového ovládača IR TV a na detekciu IR signálov používame IR prijímač TSOP1738. Tento snímač TSOP1738 dokáže snímať frekvenčný signál 38 kHz. Fungovanie IR diaľkového ovládača a TSOP1738 je podrobne popísané v tomto článku: IR vysielač a prijímač
Náš mikrokontrolér PIC pracuje pri + 5 V a relé pri + 12V, preto používame transformátor na zníženie napätia 220 V AC a jeho nápravu pomocou úplného mostíkového usmerňovača. Toto usmernené jednosmerné napätie je potom regulované na +12 V a + 5 V pomocou integrovaných obvodov regulátora 7812, respektíve 7805.
Na spustenie relé používame tranzistory ako BC547, ktoré môžu slúžiť ako elektronický spínač na zapínanie a vypínanie relé na základe signálu z mikrokontroléra PIC. Ďalej na riadenie rýchlosti ventilátora používame TRIAC. TRIAC je výkonový polovodič, ktorý je schopný riadiť výstupné napätie; táto funkcia sa používa na riadenie rýchlosti ventilátora.
Taktiež sme použili ovládač Triac na ovládanie Triaku pomocou nášho mikrokontroléra PIC. Tento budič sa používa na poskytovanie impulzu uhla streľby Triaku, aby bolo možné ovládať výstupný výkon. Tu sme použili 6 stupňov riadenia rýchlosti. Ak je úroveň 0, potom bude ventilátor vypnutý. Keď bude úroveň 1, bude rýchlosť 1/5 plnej rýchlosti. Keď bude úroveň 2, potom bude rýchlosť 2/5 plnej rýchlosti a pre ostatných. Aktuálnu úroveň rýchlosti je možné sledovať pomocou palubného 7-segmentového displeja.
Bloková schéma projektu je uvedená nižšie.
Komponenty:
Nižšie sú uvedené komponenty potrebné na zostavenie tohto projektu:
- Mikrokontrolér PIC18f2520 -1
- TSOP1738 -1
- IR diaľkový ovládač TV / DVD -1
- Tranzistor BC547 -4
- Relé 12 voltov -4
- Žiarovka s držiakom -5
- Pripojovacie vodiče -
- DPS EasyEda -1
- 16x2 LCD
- Napájanie 12v
- Koncový konektor 2 pinový `-8
- Konektor svorkovnice 3 piny -1
- Transformátor 12-0-12 -1 -
- Regulátor napätia 7805 -1
- Regulátor napätia 7812 -1
- Kondenzátor 1000uf -1
- Kondenzátor 10uf -1
- Kondenzátor 0,1uf -1
- Kondenzátor 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Spoločný katódový segment -1
- Dióda 1n4007 -10
- BT136 triak -1
- Muž / žena hlavička -
- LED diódy -6
- Optospojka moc3021 -1
- Optospojka mtc2e alebo 4n35 -1
- 20MHz kryštál -1
- Kondenzátor 33pf -2
- 5,1 V zenerova dióda -1
- 47 ohm 2 wattový rezistor -1
Všetky tieto komponenty sa bežne používajú a dajú sa ľahko kúpiť. Ak však hľadáte najlepší nákup online, odporúčame vám LCSC.
LCSC je skvelý online obchod, kde si môžete kúpiť svoje elektronické komponenty pre všetky druhy projektov. Obsahujú asi 25 000 druhov komponentov a najlepšie je, že predávajú aj malé množstvá tovaru pre malé projekty a majú aj globálnu prepravu.
Dekódovanie IR diaľkového ovládača:
Ako už bolo povedané, pre svoj projekt môžete použiť akýkoľvek diaľkový ovládač. Musíme však vedieť, na aký druh signálu sa z daného diaľkového ovládača generuje. Pre každý jednotlivý kľúč na diaľkovom ovládaní bude ekvivalentná hodnota HEX pre tento kľúč. Pomocou tejto HEX hodnoty môžeme rozlíšiť medzi každým kľúčom na strane nášho mikrokontroléra. Takže predtým, ako sa rozhodneme použiť diaľkový ovládač, mali by sme poznať hodnotu HEX pre klávesy prednastavené v danom diaľkovom ovládači. V tomto projekte sme použili diaľkový ovládač NEC. Hodnoty HEX pre kľúče na diaľkovom ovládaní NEC sú uvedené nižšie.
Ako si môžete všimnúť, hodnota HEX má 7 znakov, z ktorých sa líšia iba posledné dve, a preto môžeme rozlišovať medzi každou klávesou iba poslednými dvoma číslicami.
Schéma zapojenia:
Schéma projektu je uvedená nižšie.
Vyššie uvedená schéma bola uľahčená pomocou editora schém esayEDA, pretože poskytuje rozloženie všetkých komponentov použitých v tomto projekte. Tiež nevyžaduje inštaláciu a dá sa použiť online na cestách.
Pinouts a hodnoty komponentov sú jasne špecifikované v schéme vyššie. Tu si môžete tiež stiahnuť schematický súbor.
Programovanie:
Program pre tento projekt je vytváraný pomocou MPLABX, kód je tiež veľmi jednoduchý a ľahko pochopiteľný. Celý kód bude uvedený na konci tohto tutoriálu. Ďalej je vysvetlených niekoľko dôležitých častí programu.
Na začiatku kódu by sme mali zahrnúť požadované knižnice, definovať piny a deklarovať premenné.
#include
Potom sme pomocou slučky „for“ vytvorili jednoduchú funkciu oneskorenia.
void delay (int time) {for (int i = 0; i
Potom sme inicializovali časovač pomocou nasledujúcej funkcie
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Zdroj časovača je z Prescaler T0CS = 0; // Prescaler získava hodiny z FCPU (5MHz) T08BIT = 0; // 16 BITOVÝ REŽIM TMR0IE = 1; // Povoliť TIMER0 Prerušiť PEIE = 1; // Povoliť prerušenie periférie GIE = 1; // Globálne povolenie INTs TMR0ON = 1; // Teraz spustite časovač! }
Teraz v hlavnej funkcii sme dali smer vybraným pinom a inicializovali časovač a externé prerušenie int0 na detekciu prechodu nulou.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; relé1 = 0; relé2 = 0; relé3 = 0; relé4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; časovač (); INTEDG0 = 0; // Prerušenie na zostupnej hrane INT0IE = 1; // Povoliť externé prerušenie INT0 (RB0) INT0IF = 0; // Vymaže INT0 externý príznak prerušenia bit PEIE = 1; // Povoliť prerušenie periférie GIE = 1; // Globálne povolenie INT
Teraz tu na detekciu IR signálu nepoužívame žiadne prerušenie ani režim snímania a porovnávania. Tu sme práve použili digitálny pin na čítanie údajov, rovnako ako sme čítali tlačidlo. Kedykoľvek signál klesne alebo klesne, jednoducho použijeme metódu odblokovania a spustíme časovač. Kedykoľvek pin zmení svoj stav na iný, časové hodnoty sa uložia do poľa.
IR diaľkové odoslanie logiky 0 ako 562,5us a logiky 1 ako 2250us. Kedykoľvek časovač číta okolo 562,5us, potom predpokladáme, že je to 0, a keď časovač číta okolo 2250us, potom to predpokladáme ako 1. Potom to prevedieme na hex.
Prichádzajúci signál z diaľkového ovládača obsahuje 34 bitov. Uložíme všetky bajty do poľa a potom dekódujeme posledný bajt, ktorý sa má použiť.
while (ir == 1); INT0IE = 0; while (ir == 0); TMR0 = 0; while (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} else {i = 0; INT0IE = 1; } if (i> = 33) {GIE = 0; oneskorenie (50); cmd = 0; pre (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; else if (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Vyššie uvedená časť kódu prijíma a dekóduje IR signál pomocou prerušenia časovača a ukladá zodpovedajúcu hodnotu HEX do premennej cmd. Teraz môžeme porovnať túto hodnotu HEX (premenná cmd) s našimi preddefinovanými hodnotami HEX a prepnúť relé, ako je uvedené nižšie
if (cmd == 0xAF) {relé1 = ~ relé1; rly1LED = ~ rly1LED; } else if (cmd == 0x27) {relé2 = ~ relé2; rly2LED = ~ rly2LED; } else if (cmd == 0x07) {relé3 = ~ relé3; rly3LED = ~ rly3LED; } else if (cmd == 0xCF) {relé4 = ~ relé4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {speed ++; if (rýchlosť> 5) {rýchlosť = 5; }} else if (cmd == 0x9f) {speed--; if (rýchlosť <= 0) {rýchlosť = 0; }}
Teraz, aby sme vedeli, na ktorej úrovni momentálne pracuje náš ventilátor, mali by sme použiť 7-segmentový displej. Nasledujúce riadky sa používajú na inštruovanie pinov 7-segmentového displeja.
if (speed == 5) // vypnute 5x2 = 10ms triger // rychlost 0 {PORTA = 0xC0; // display 0 RB6 = 1; fanLED = 0; } else if (speed == 4) // 8 ms trigger // speed 1 {PORTA = 0xfc; // zobrazovanie 1 RB6 = 1; fanLED = 1; } else if (speed == 3) // 6 ms trigger // speed 2 {PORTA = 0xE4; // zobrazenie 2 RB6 = 0; fanLED = 1; } else if (speed == 2) // 4ms trigger // speed 3 {PORTA = 0xF0; // zobrazovanie 3 RB6 = 0; fanLED = 1; } else if (speed == 1) // 2ms trigger // speed 4 {PORTA = 0xD9; // zobrazovanie 4 RB6 = 0; fanLED = 1; } else if (speed == 0) // 0ms trigger // speed 5 full power {PORTA = 0xD2; // zobrazovanie 5 RB6 = 0; fanLED = 1; }
Nasledujúca funkcia slúži na externé prerušenie a prekročenie času. Táto funkcia je zodpovedná za detekciu prechodu nulou a za riadenie triaku.
void interrupt isr () {if (INT0IF) {delay (speed); tric = 1; pre (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Skontrolujte, či nejde o TMR0 Overflow ISR {TMR0IF = 0; }}
Výsledná doska plošných spojov pre túto IR diaľkovo ovládanú domácu automatizáciu vyzerá takto:
Dizajn obvodov a DPS pomocou EasyEDA:
Na navrhnutie tejto domácej automatizácie na diaľkové ovládanie sme použili EasyEDA, čo je bezplatný online nástroj EDA na bezproblémové vytváranie obvodov a dosiek plošných spojov. Predtým sme si objednali niekoľko desiek plošných spojov od spoločnosti EasyEDA a stále využívame ich služby, pretože sme zistili, že celý proces od nakreslenia obvodov po objednanie dosiek plošných spojov je v porovnaní s ostatnými výrobcami dosiek plošných spojov pohodlnejší a efektívnejší. EasyEDA ponúka bezplatné zapojenie, simuláciu, návrh DPS a tiež ponúka vysoko kvalitnú, ale nízku cenu prispôsobenej služby DPS. Tu nájdete kompletný návod, ako používať Easy EDA na vytváranie schém, rozložení dosiek plošných spojov, simulovania obvodov atď.
EasyEDA sa zlepšuje každým dňom; pridali veľa nových funkcií a vylepšili celkovú užívateľskú skúsenosť, vďaka čomu je program EasyEDA ľahší a použiteľný na navrhovanie obvodov. Čoskoro uvedú na trh svoju verziu pre stolné počítače, ktorú si môžete stiahnuť a nainštalovať do svojho počítača na použitie v režime offline.
V aplikácii EasyEDA môžete svoje návrhy obvodov a dosiek plošných spojov zverejniť, aby ich ostatní používatelia mohli kopírovať alebo upravovať a využívať ich výhody. Pre túto automatizáciu Domáce diaľkové ovládanie sme tiež zverejnili celé naše usporiadania obvodov a dosiek plošných spojov .
Nižšie je uvedený obrázok vrchnej vrstvy rozloženia PCB z EasyEDA. Môžete si zobraziť ľubovoľnú vrstvu (vrchná, spodná, vrchná vrstva, spodná vrstva atď.) PCB výberom vrstvy z okna „Vrstvy“.
Výpočet a objednávanie vzoriek PCB online:
Po dokončení návrhu DPS môžete kliknúť na ikonu Výstup výroby , ktorá vás prevedie na stránku objednávky DPS. Tu si môžete pozrieť svoju DPS v prehliadači Gerber Viewer alebo si stiahnuť súbory Gerber z DPS a poslať ich ľubovoľnému výrobcovi. Objednávka priamo v EasyEDA je tiež oveľa ľahšia (a lacnejšia). Tu môžete zvoliť počet DPS, ktoré chcete objednať, koľko vrstiev medi potrebujete, hrúbku DPS, hmotnosť medi a dokonca aj farbu DPS. Po výbere všetkých možností kliknite na „Uložiť do košíka“ a dokončite objednávku. Do niekoľkých dní dostanete PCB.
Túto DPS si môžete priamo objednať alebo stiahnuť súbor Gerber pomocou tohto odkazu.
Po niekoľkých dňoch objednania DPS sme dostali DPS. Dosky, ktoré sme dostali, sú uvedené nižšie.
Akonáhle sme dostali PCB, namontoval som všetky požadované komponenty na PCB a konečne máme pripravenú našu IR diaľkovo ovládanú domácu automatizáciu, skontrolujte tento obvod fungujúci v ukážkovom videu na konci článku.