- Munka magyarázat:
- Alkatrészek:
- Programozás:
- Áramkör és NYÁK tervezés az EasyEDA segítségével:
- PCB-minták kiszámítása és megrendelése online:
Ebben a projektben egy PIC mikrokontrollert fogunk használni néhány váltakozó áramú terhelés távvezérléséhez, csak egy IR távirányítóval. Az IRU távirányítású otthoni automatizálását már elvégezték az Arduinóval is, de itt azt az EasyEDA online NYÁK-tervezője és szimulátorának felhasználásával PCB-re terveztük, és NYÁK-tervező szolgáltatásaikat felhasználva megrendeltük a NYÁK-kártyákat, amint az a következő részben látható. cikk.
A projekt végén a váltóáramú terhelést be- és kikapcsolhatja egy hagyományos távirányítóval a szék / ágy kényelméből. A projekt érdekesebbé tétele érdekében engedélyeztük azt a funkciót is, amely a Triac segítségével szabályozza a ventilátor sebességét. Mindezek egyszerűen elvégezhetők az infravörös távirányítón. Bármelyik TV / DVD / MP3 távvezérlőt használhatja ehhez a projekthez. A távvezérlő különböző infravörös jeleit a mikrovezérlő fogadja, amely egy relé meghajtó áramkörön keresztül vezérli a megfelelő reléket. Ezeket a reléket használják az AC terhelések (lámpák / ventilátor) csatlakoztatására és leválasztására.
Munka magyarázat:
A projekt működése meglehetősen egyszerű megérteni. Ha egy gombot megnyom az IR távirányítón, akkor kódsort küld el kódolt impulzusok formájában, 38 kHz-es modulációs frekvenciát használva. Ezeket az impulzusokat a TSOP1738 érzékelő fogadja, majd a vezérlő olvassa fel. Ezután a Vezérlő dekódolja az impulzusok fogadott sávját hex értékre, és összehasonlítja azt a programunkban előre definiált hex értékekkel.
Ha bármilyen egyezés következik be, akkor a vezérlő relatív műveletet hajt végre a megfelelő relé / triac aktiválásával, és a megfelelő eredményt fedélzeti LED-ek is jelzik. Ebben a projektben 4 különböző színű izzót (kis izzót) használtunk megvilágítási terhelésként, és egy másik izzót (nagyobb izzót) demonstrációs célú ventilátornak tekintünk.
Kiválasztottuk az 1-es gombot az 1. relé, a 2-es, a 2-es, a 3-as, a 4-es, a 4-es, a Vol + -ot a ventilátor sebességének növeléséhez, és a Vol + -ot a ventilátor sebességének növeléséhez, és Vol- a ventilátor sebességének csökkentéséhez.
Megjegyzés: Itt ventilátor helyett 100 wattos izzót használtunk.
Számos típusú IR távirányító áll rendelkezésre különböző eszközökhöz, de a legtöbbjük a 38KHz frekvenciát használja. Ebben a projektben a háztartási készülékeket IR TV távirányítóval vezéreljük, az IR jelek detektálásához pedig egy TSOP1738 IR vevőt használunk. Ez a TSOP1738 érzékelő képes érzékelni a 38Khz frekvencia jelet. Az IR távirányító és a TSOP1738 működését részletesen tárgyalja ez a cikk: IR adó és vevő
PIC mikrovezérlőnk + 5V feszültségen, a relék + 12V feszültségen működnek, ezért transzformátort használunk a 220 V váltóáram csökkentésére és egy teljes híd egyenirányítóval történő kijavítására. Ezt az egyenirányított egyenfeszültséget ezután + 12V és + 5V értékre állítják a 7812, illetve a 7805 szabályozó IC segítségével.
A relé beindításához olyan tranzisztorokat használunk, mint a BC547, amelyek elektronikus kapcsolóként működhetnek a relék be- és kikapcsolására a PIC mikrovezérlő jele alapján. Ezenkívül a ventilátor sebességének szabályozásához használunk TRIAC-ot. A TRIAC egy félvezető, amely képes a kimeneti feszültség szabályozására. ezt a képességet használják a ventilátor sebességének szabályozására.
Triac illesztőprogramot is használtunk a Triac vezérlésére PIC mikrovezérlőnk segítségével. Ezt a meghajtót arra használják, hogy a Triac számára lökésszög-impulzust adjon, hogy a kimeneti teljesítmény szabályozható legyen. Itt 6 fokozatú sebességszabályozást használtunk. Ha a szint 0, akkor a ventilátor kikapcsol. Amikor a szint 1, akkor a sebesség a teljes sebesség 1/5-e lesz. Amikor a szint 2 lesz, akkor a sebesség a teljes sebesség 2/5-e, másoké pedig. A sebesség aktuális szintje a fedélzeti 7 szegmenses kijelzővel követhető nyomon.
A projekt blokkvázlata az alábbiakban látható.
Alkatrészek:
A projekt elkészítéséhez szükséges összetevők az alábbiak:
- PIC18f2520 mikrokontroller -1
- TSOP1738 -1
- IR TV / DVD távirányító -1
- BC547 -4 tranzisztor
- Relék 12 volt -4
- Izzó tartóval -5
- Csatlakozó vezetékek -
- EasyEda NYÁK -1
- 16x2 LCD
- Tápegység 12v
- Sorkapocs csatlakozó 2 tűs `-8
- Csatlakozó csatlakozó 3 tűs -1
- Transzformátor 12-0-12 -1 -
- Feszültségszabályozó 7805 -1
- Feszültségszabályozó 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
- Közös katódszegmens -1
- 1n4007 dióda -10
- BT136 triac -1
- Férfi / női fejléc -
- LED -6
- Opto-csatoló moc3021 -1
- Opto-csatoló mtc2e vagy 4n35 -1
- 20Mhz kristály -1
- 33pf kondenzátor -2
- 5,1 V-os zener-dióda -1
- 47 ohmos 2 wattos ellenállás -1
Ezeket az alkatrészeket gyakran használják, és könnyen megvásárolhatók. Ha azonban a legjobb online vásárlást keresi, akkor javasoljuk az LCSC-t.
Az LCSC egy nagyszerű online áruház, amely megvásárolja az elektronikai alkatrészeket mindenféle projekthez. Körülbelül 25 000 féle alkatrészt tartalmaznak, és a legjobb az, hogy még kis mennyiségű termékeket is értékesítenek kis projektek számára, és rendelkeznek globális szállítással is.
Az IR távirányító dekódolása:
Mint korábban említettük, bármilyen távvezérlőt használhat a projektjéhez. De tudnunk kell, hogy milyen jel jön létre az adott távvezérlőből. A távvezérlő minden egyes kulcsához meg lesz egy egyenértékű HEX értéke ehhez a kulcshoz. Ennek a HEX értéknek a felhasználásával megkülönböztethetjük a mikrovezérlő oldalán található kulcsokat. Tehát mielőtt a távvezérlő használata mellett döntünk, tudnunk kell az adott távvezérlőben előre beállított kulcsok HEX értékét. Ebben a projektben egy NEC távirányítót használtunk. A NEC távvezérlő gombjainak HEX-értékeit az alábbiakban adjuk meg.
Amint észreveheti, a HEX értéknek 7 karaktere van, amelyek közül csak az utolsó kettő különbözik, ezért csak az utolsó két számjegyet vesszük figyelembe az egyes kulcsok megkülönböztetéséhez.
Kördiagramm:
A projekt vázlata az alábbiakban látható.
A fenti vázlatot az esayEDA vázlatszerkesztő használatával tették egyszerűvé, mivel ezek biztosítják a projektben használt összes komponens elrendezését. Emellett nem igényel telepítést, és menet közben online is használható.
A pinouts és az alkatrészértékeket egyértelműen meghatározza a fenti vázlat. A sematikus fájlt innen is letöltheti.
Programozás:
A projekt programja az MPLABX használatával történik, a kód szintén nagyon egyszerű és könnyen érthető. A teljes kódot az oktatóanyag végén adjuk meg, a program további néhány fontos részletét az alábbiakban ismertetjük.
A kód elején fel kell tennünk a szükséges könyvtárakat, meg kell határoznunk a csapokat és deklarálnunk kell a változókat.
#include
Ezt követően létrehoztunk egy egyszerű késleltetési funkciót a „for” hurok használatával.
void delay (int idő) {for (int i = 0; i
Ezt követően a következő függvény segítségével inicializáltuk az időzítőt
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Az időzítő óra forrása a Prescaler T0CS = 0; // Az előmérő kap órát az FCPU-tól (5MHz) T08BIT = 0; 16 BIT MÓD TMR0IE = 1; // TIMER0 engedélyezése PEIE = 1 megszakítása; // Perifériás megszakítás engedélyezése GIE = 1; // INT-ek globális engedélyezése TMR0ON = 1; // Most indítsa el az időzítőt! }
Most a fő funkcióban irányokat adunk a kiválasztott csapokhoz, és inicializáljuk az időzítőt és az int0 külső megszakítást a nulla keresztezés észleléséhez.
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; időzítő(); INTEDG0 = 0; // Megszakítás zuhanó élnél INT0IE = 1; // Engedélyezi az INT0 külső megszakítást (RB0) INT0IF = 0; // Törli az INT0 külső megszakító jelző bitet PEIE = 1; // Perifériás megszakítás engedélyezése GIE = 1; // Az INT-ek globális engedélyezése
Most itt nem használunk megszakítási vagy rögzítési és összehasonlítási módot az IR jel detektálására. Itt éppen digitális tűt használtunk az adatok olvasására, csakúgy, mint egy nyomógombot. Amikor a jel magasra vagy alacsonyra megy, csak a visszaváltási módszert alkalmazzuk és futtatjuk az időzítőt. Amikor a pin megváltoztatja az állapotát egy másikra, akkor az időértékek el lesznek mentve egy tömbben.
IR távoli küldési logika 0 562.5us és 1 logika 2250us. Amikor az időzítő 562.5us körüli értéket olvas, akkor azt feltételezzük, hogy 0, és amikor az időzítő 2250us körüli értéket olvas, akkor azt 1-nek vesszük. Ezután hexán alakítjuk át.
A távvezérlőről érkező jel 34 bitet tartalmaz. Az összes bájtot a tömbben tároljuk, majd dekódoljuk az utoljára használt bájtot.
míg (ir == 1); INT0IE = 0; míg (ir == 0); TMR0 = 0; míg (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} else {i = 0; INT0IE = 1; } if (i> = 33) {GIE = 0; késés (50); cmd = 0; for (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; else if (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
A fenti kóddarab időzítő megszakításokkal fogadja és dekódolja az IR jelet, és a megfelelő HEX értéket eltárolja a cmd változóban. Most összehasonlíthatjuk ezt a HEX értéket (cmd változó) az előre definiált HEX értékeinkkel, és az alábbiak szerint kapcsolhatjuk a relét
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) {sebesség ++; if (sebesség> 5) {sebesség = 5; }} else if (cmd == 0x9f) {sebesség--; if (sebesség <= 0) {sebesség = 0; }}
Most, hogy megtudjuk, melyik ventilátorunk működik, 7-szegmenses kijelzőt kell használnunk. Az alábbi sorok adják meg a 7 szegmenses kijelző csapjainak utasításait.
if (sebesség == 5) // kikapcsolva 5x2 = 10ms triger // sebesség 0 {PORTA = 0xC0; // kijelző 0 RB6 = 1; fanLED = 0; } else if (sebesség == 4) // 8 ms trigger // sebesség 1 {PORTA = 0xfc; // 1 RB6 = 1 megjelenítése; fanLED = 1; } else if (sebesség == 3) // 6 ms trigger // sebesség 2 {PORTA = 0xE4; // 2 RB6 = 0 megjelenítése; fanLED = 1; } else if (sebesség == 2) // 4ms trigger // sebesség 3 {PORTA = 0xF0; // 3 megjelenítése RB6 = 0; fanLED = 1; } else if (sebesség == 1) // 2ms trigger // sebesség 4 {PORTA = 0xD9; // 4 RB6 = 0 megjelenítése; fanLED = 1; } else if (sebesség == 0) // 0ms trigger // sebesség 5 teljes teljesítmény {PORTA = 0xD2; // 5 RB6 = 0 megjelenítése; fanLED = 1; }
Az alábbi funkció a külső megszakításra és az idő túlcsordulására szolgál. Ez a funkció felelős a nulla keresztezés észleléséért és a Triac vezetéséért.
void megszakítás isr () {if (INT0IF) {késleltetés (sebesség); tric = 1; for (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Ellenőrizze, hogy TMR0 túlcsordulás ISR-e {TMR0IF = 0; }}
Az infravörös távvezérelt otthoni automatika végső nyomtatott áramköre az alábbiak szerint néz ki:
Áramkör és NYÁK tervezés az EasyEDA segítségével:
A távvezérlő otthoni automatizálásának megtervezéséhez az EasyEDA-t használtuk, amely egy ingyenes online EDA eszköz áramkörök és NYÁK-ok zökkenőmentes létrehozásához. Korábban kevés nyomtatott áramköri lapot rendeltünk az EasyEDA-tól, és továbbra is igénybe vesszük szolgáltatásaikat, mivel az egész folyamatot megtaláltuk, az áramkörök rajzolásától a NYÁK-k megrendeléséig, kényelmesebbé és hatékonyabbá, mint más NYÁK-gyártók. Az EasyEDA ingyen kínál áramköri rajzokat, szimulációkat, NYÁK tervezéseket, és kiváló minőségű, de alacsony árú, személyre szabott NYÁK szolgáltatást is kínál. Itt megtalálja a teljes oktatóanyagot az Easy EDA használatáról sematikák, NYÁK-elrendezések, áramkörök szimulálásához stb.
Az EasyEDA napról napra javul; sok új funkcióval egészítették ki és javították az általános felhasználói élményt, ami megkönnyíti és használhatóvá teszi az EasyEDA-t áramkörök tervezéséhez. Hamarosan elindítják Desktop verzióját, amely offline használatra letölthető és telepíthető a számítógépre.
Az EasyEDA-ban nyilvánosságra hozhatja áramköri és NYÁK-terveit, hogy más felhasználók másolhassák vagy szerkeszthessék azokat, és kihasználhassák az előnyeiket. Nyilvánosságra hoztuk az egész áramköri és NYÁK-elrendezésünket is ehhez a távvezérlő otthoni automatizáláshoz.
Az alábbiakban bemutatjuk az EasyEDA PCB elrendezésének felső rétegének pillanatképét. Megtekintheti a NYÁK bármely rétegét (felső, alsó, Topsilk, alsó tej stb.), Ha kiválasztja a réteget a „Rétegek” ablakból.
PCB-minták kiszámítása és megrendelése online:
A NYÁK tervezésének befejezése után rákattinthat a Gyártás kimenet ikonjára, amely a NYÁK megrendelés oldalán található. Itt megtekintheti a nyomtatott áramköri lapot a Gerber Viewer alkalmazásban, vagy letöltheti a számítógép Gerber fájljait, és elküldheti őket bármelyik gyártónak. Sokkal könnyebb (és olcsóbb) megrendelni közvetlenül az EasyEDA-ban. Itt kiválaszthatja a megrendelni kívánt NYÁK-k számát, hány rézrétegre van szüksége, a NYÁK vastagságát, a réz súlyát és még a NYÁK színét is. Miután kiválasztotta az összes lehetőséget, kattintson a „Mentés a kosárba” gombra, és teljesítse megrendelését, majd néhány napon belül megkapja a NYÁK-kat.
Közvetlenül megrendelheti ezt a nyomtatott áramköri lapot, vagy letöltheti a Gerber fájlt ezen a linken keresztül.
Néhány napos PCB-k megrendelése után beszereztük a PCB-ket. Az általunk kapott táblákat az alábbiakban mutatjuk be.
Miután megkaptuk a NYÁK-kat, az összes szükséges elemet felhelyeztem a NYÁK-ra, és végül elkészült az IR távirányítós otthoni automatizálásunk, ellenőrizze ezt az áramkört a cikk végén bemutató videóban.