- Työselitys:
- Komponentit:
- Ohjelmointi:
- Piirin ja piirilevyn suunnittelu EasyEDA: n avulla:
- PCB-näytteiden laskeminen ja tilaaminen verkossa:
Tässä projektissa aiomme käyttää PIC-mikrokontrolleria muutamien vaihtovirtakuormien etäohjaamiseen vain IR-kaukosäätimellä. Samanlainen projekti IR-kauko-ohjattu kotiautomaatio on jo tehty myös Arduinon kanssa, mutta tässä suunniteltiin se piirilevylle käyttämällä EasyEDA: n online-piirilevysuunnittelijaa ja simulaattoria, ja käytimme heidän piirilevyjen suunnittelupalvelujaan piirilevyjen tilaamiseen, kuten seuraavassa osassa artikla.
Tämän projektin lopussa voit vaihtaa (PÄÄLLE / POIS) minkä tahansa vaihtovirran normaalilla kaukosäätimellä tuolisi / sängyn mukavuudesta. Jotta projekti olisi mielenkiintoisempi, olemme myös ottaneet käyttöön ominaisuuden, jolla ohjataan tuulettimen nopeutta Triacin avulla. Kaikki nämä voidaan tehdä yksinkertaisilla napsautuksilla IR-kaukosäätimellä. Voit käyttää mitä tahansa TV / DVD / MP3-kaukosäädintä tähän projektiin. Eri infrapunasignaalit kaukosäätimeltä vastaanotetaan mikro-ohjaimelta, joka sitten ohjaa vastaavia releitä releohjainpiirin kautta. Näitä releitä käytetään vaihtovirtakuormien (valot / tuuletin) kytkemiseen ja irrottamiseen.
Työselitys:
Tämän projektin toimintaa on melko helppo ymmärtää. Kun IR-kaukosäätimen painiketta painetaan, se lähettää koodisarjan koodattujen pulssien muodossa käyttäen 38 KHz: n modulointitaajuutta. TSOP1738- anturi vastaanottaa nämä pulssit ja sitten ohjain lukee ne. Ohjain purkaa sitten vastaanotetun pulssijonon hex-arvoksi ja vertaa sitä ohjelmassa ennalta määritettyihin hex-arvoihin.
Jos yhtäläisyyksiä tapahtuu, ohjain suorittaa suhteellisen toiminnan laukaisemalla vastaavan releen / Triacin, ja vastaava tulos ilmaistaan myös ajoneuvon LEDeillä. Tässä projektissa olemme käyttäneet 4 eriväristä polttimoa (pieniä lamppuja) valaistuskuormina ja toisen lampun (isompi lamppu) katsotaan olevan tuuletin esittelytarkoituksessa.
Olemme valinneet näppäimen 1 vaihtaaksesi releen 1, 2 vaihtaaksesi releen 2, 3 vaihtaaksesi releen 3, 4 vaihtaaksesi releen 4 ja Vol + lisätäksesi tuulettimen nopeutta ja Vol- vähentääksesi tuulettimen nopeutta.
Huomaa: Tässä olemme käyttäneet 100 watin lamppua tuulettimen sijaan.
Eri laitteille on saatavana monenlaisia IR-kaukosäätimiä, mutta suurin osa niistä toimii 38KHz-taajuuden ympäri. Tässä projektissa ohjaamme kodinkoneita IR TV -kaukosäätimellä ja infrapunasignaalien havaitsemiseksi käytämme TSOP1738 IR-vastaanotinta. Tämä TSOP1738-anturi tunnistaa 38 kHz: n taajuussignaalin. IR-kaukosäätimen ja TSOP1738: n toimintaa käsitellään yksityiskohtaisesti tässä artikkelissa: IR-lähetin ja vastaanotin
PIC-mikrokontrollerimme toimii + 5 V: lla ja releet + 12 V: lla, joten käytämme muuntajaa 220 V AC: n alasajoon ja tasasuuntaamiseen käyttämällä täyttä silta-tasasuuntaajaa. Tämä tasasuuntainen tasajännite säädetään sitten + 12 V: een ja + 5 V: iin käyttämällä vastaavasti säädinpiirejä 7812 ja 7805.
Releen laukaisemiseksi käytämme transistoreita, kuten BC547, jotka voivat toimia elektronisena kytkimenä releiden kytkemiseksi päälle / pois päältä PIC-mikrokontrollerin signaalin perusteella ja lisäksi TRIAC-puhaltimen nopeuden säätämiseksi. TRIAC on tehopuolijohde, joka kykenee ohjaamaan lähtöjännitettä; tätä ominaisuutta käytetään puhaltimen nopeuden säätämiseen.
Olemme myös käyttäneet Triac-ohjainta Triacin ohjaamiseen PIC-mikrokontrollerillamme. Tätä ohjainta käytetään antamaan ampumakulmapulssi Triacille, jotta lähtötehoa voidaan hallita. Tässä olemme käyttäneet 6 nopeuden ohjaustasoa. Kun taso on 0, tuuletin on pois päältä. Kun taso on 1, nopeus on 1/5 täydestä nopeudesta. Kun taso on 2, nopeus on 2/5 täydestä nopeudesta ja vastaavasti muille. Nopeuden nykyistä tasoa voidaan seurata sisäisellä 7-segmenttinäytöllä.
Projektin lohkokaavio on esitetty alla.
Komponentit:
Tämän projektin rakentamiseen tarvittavat komponentit on annettu alla:
- PIC18f2520-mikrokontrolleri -1
- TSOP1738-1
- IR-TV / DVD-kaukosäädin -1
- Transistori BC547 -4
- Releet 12 V -4
- Polttimo pidikkeellä -5
- Johtojen liittäminen -
- EasyEda-piirilevy -1
- 16x2 LCD
- Virtalähde 12v
- Liitin 2-napainen `-8
- Liitin 3-napainen -1
- Muuntaja 12-0-12 -1 -
- Jännitesäädin 7805 -1
- Jännitesäädin 7812 -1
- Kondensaattori 1000uf -1
- Kondensaattori 10uf -1
- Kondensaattori 0,1uf -1
- Kondensaattori 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100 ohmia -7
- Yhteinen katodisegmentti -1
- 1n4007-diodi -10
- BT136 triac -1
- Mies / nainen otsikko -
- LEDit -6
- Opto-kytkin moc3021 -1
- Opto-kytkin mtc2e tai 4n35-1
- 20 MHz kristalli -1
- 33 pf kondensaattori -2
- 5,1 V: n zener-diodi -1
- 47 ohmin 2 watin vastus -1
Kaikkia näitä komponentteja käytetään yleisesti ja ne on helppo ostaa. Kuitenkin, jos etsit parasta ostoa verkossa, suosittelemme sinulle LCSC: tä.
LCSC on loistava verkkokauppa ostamaan elektroniikkakomponentteja kaikenlaisiin projekteihin. Niissä on noin 25 000 erilaista komponenttia, ja parasta on, että he myyvät pieniä määriä tuotteita pieniin projekteihin ja heillä on myös Global Shipping.
IR-kaukosäätimen dekoodaus:
Kuten aiemmin mainittiin, voit käyttää mitä tahansa kaukosäädintä projektissasi. Mutta meidän on tiedettävä, millaista signaalia siitä tietystä kaukosäätimestä generoidaan. Jokaiselle kaukosäätimen yksittäiselle avaimelle on sama HEX-arvo tälle avaimelle. Tätä HEX-arvoa käyttämällä voimme erottaa jokaisen avaimen mikrokontrolleripuolellamme. Joten ennen kuin päätämme käyttää kauko-ohjainta, meidän tulisi tietää HEX-arvo avaimille, jotka on ennalta asetettu kyseiseen kaukosäätimeen. Tässä projektissa olemme käyttäneet NEC-kaukosäädintä. NEC-kauko-ohjaimen HEX-arvot on annettu alla.
Kuten huomaat, HEX-arvossa on 7 merkkiä, joista vain kaksi viimeistä eroavat, joten voimme harkita vain kahta viimeistä numeroa erottaaksemme jokaisen näppäimen.
Piirikaavio:
Projektin kaavio on esitetty alla.
Yllä oleva kaavio tehtiin helpoksi käyttämällä esayEDA-kaavamaista editoria, koska ne tarjoavat kaikkien tässä projektissa käytettyjen komponenttien asettelut. Se ei myöskään vaadi asennusta, ja sitä voidaan käyttää verkossa tien päällä.
Pinoutit ja komponenttien arvot on määritelty selvästi yllä olevassa kaaviossa. Voit myös ladata kaaviotiedoston täältä.
Ohjelmointi:
Tämän projektin ohjelma tehdään MPLABX: n avulla, koodi on myös melko yksinkertainen ja helppo ymmärtää. Koko koodi annetaan tämän opetusohjelman lopussa, muutamia tärkeitä ohjelman osia selitetään alla.
Koodin alkuun meidän tulisi sisällyttää vaaditut kirjastot, määritellä nastat ja ilmoittaa muuttujat.
#sisältää
Sen jälkeen olemme luoneet yksinkertaisen viivetoiminnon käyttämällä ”for” -silmukkaa.
void delay (int-aika) {for (int i = 0; i
Sen jälkeen olemme alustaneet ajastimen seuraavalla toiminnolla
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Ajastinkellon lähde on esijäähdytin T0CS = 0; // Esilaajennin saa kellon FCPU: lta (5MHz) T08BIT = 0; // 16 BITITILA TMR0IE = 1; // Ota TIMER0-keskeytys PEIE = 1; // Ota perifeerinen keskeytys käyttöön GIE = 1; // Enable INTs globally TMR0ON = 1; // Käynnistä nyt ajastin! }
Nyt päätoiminnossa olemme antaneet ohjeet valituille nastoille ja alustaneet ajastimen ja ulkoisen keskeytyksen int0 nollan ylityksen havaitsemiseksi.
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; rele 4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; tuuletinLED = 0; i = 0; ir = 0; tric = 0; ajastin(); INTED0 = 0; // Keskeytys putoavalla reunalla INT0IE = 1; // Ota käyttöön ulkoinen INT0-keskeytys (RB0) INT0IF = 0; // Tyhjentää INT0-ulkoisen keskeytyslippubitin PEIE = 1; // Ota perifeerinen keskeytys käyttöön GIE = 1; // Ota INT: t käyttöön globaalisti
Nyt täällä emme käytä keskeytys- tai kaappaus- ja vertailutilaa IR-signaalin havaitsemiseksi. Tässä olemme juuri käyttäneet digitaalista nastaa tietojen lukemiseen aivan kuten lukemme painikkeen. Aina kun signaali menee korkealle tai matalalle, asetamme vain poistoprosessin ja ajame ajastimen. Aina kun tappi vaihtaa tilansa toiseen, aika-arvot tallennetaan taulukkoon.
IR-etälähetyslogiikka 0 muodossa 562.5us ja logiikka 1 muodossa 2250us. Aina kun ajastin lukee noin 562.5us, oletamme sen olevan 0 ja kun ajastin lukee noin 2250us, oletamme sen olevan 1. Sitten muunnetaan se heksadesimaalina.
Kaukosäätimestä tuleva signaali sisältää 34 bittiä. Tallennamme kaikki tavut ryhmään ja puretaan sitten viimeinen käytetty tavu.
kun (ir == 1); INT0IE = 0; kun (ir == 0); TMR0 = 0; kun (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} muu {i = 0; INT0IE = 1; } jos (i> = 33) {GIE = 0; viive (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;
Yllä oleva koodikappale vastaanottaa ja dekoodaa IR-signaalin ajastinkeskeytyksillä ja tallentaa vastaavan HEX-arvon muuttujaan cmd. Nyt voimme verrata tätä HEX-arvoa (cmd-muuttuja) ennalta määritettyihin HEX-arvoihimme ja vaihtaa releä alla olevan kuvan mukaisesti
if (cmd == 0xAF) {rele1 = ~ rele1; rly1LED = ~ rly1LED; } else if (cmd == 0x27) {rele2 = ~ rele2; rly2LED = ~ rly2LED; } else if (cmd == 0x07) {rele3 = ~ rele3; rly3LED = ~ rly3LED; } else if (cmd == 0xCF) {rele4 = ~ rele4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {nopeus ++; if (nopeus> 5) {nopeus = 5; }} else if (cmd == 0x9f) {nopeus--; if (nopeus <= 0) {nopeus = 0; }}
Nyt tietääksemme, missä puhaltimemme toimii, meidän on käytettävä 7-segmenttistä näyttöä. Seuraavia rivejä käytetään 7-segmenttisen näytön nastojen ohjaamiseen.
if (nopeus == 5) // pois päältä 5x2 = 10ms triger // nopeus 0 {PORTA = 0xC0; // näyttö 0 RB6 = 1; tuuletinLED = 0; } else if (nopeus == 4) // 8 ms liipaisin // nopeus 1 {PORTA = 0xfc; // näytetään 1 RB6 = 1; tuuletinLED = 1; } else if (nopeus == 3) // 6 ms liipaisin // nopeus 2 {PORTA = 0xE4; // näytetään 2 RB6 = 0; tuuletinLED = 1; } else if (nopeus == 2) // 4 ms: n liipaisin // nopeus 3 {PORTA = 0xF0; // näytetään 3 RB6 = 0; tuuletinLED = 1; } else if (nopeus == 1) // 2 ms: n laukaisu // nopeus 4 {PORTA = 0xD9; // näytetään 4 RB6 = 0; tuuletinLED = 1; } else if (nopeus == 0) // 0 ms: n laukaisin // nopeus 5 täydellä teholla {PORTA = 0xD2; // näytetään 5 RB6 = 0; tuuletinLED = 1; }
Alla oleva toiminto koskee ulkoista keskeytystä ja ajan ylivuotoa. Tämä toiminto on vastuussa nollan ylityksen havaitsemisesta ja Triacin ajamisesta.
void keskeytys isr () {if (INT0IF) {viive (nopeus); tric = 1; for (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Tarkista, onko se TMR0 Ylivuoto ISR {TMR0IF = 0; }}
Tämän infrapunakaukosäätimen kotiautomaation lopullinen piirilevy näyttää seuraavalta:
Piirin ja piirilevyn suunnittelu EasyEDA: n avulla:
Tämän kauko-ohjattavan kodiautomaation suunnittelussa olemme käyttäneet EasyEDA: ta, joka on ilmainen online-EDA-työkalu piirien ja piirilevyjen luomiseen saumattomasti. Aiemmin olemme tilanneet muutamia piirilevyjä EasyEDA: lta ja käytämme edelleen niiden palveluja, kun löysimme koko prosessin piirien piirtämisestä piirilevyjen tilaamiseen, mukavampaa ja tehokkaampaa verrattuna muihin piirilevyvalmistajiin. EasyEDA tarjoaa piirinpiirustuksen, simulaation, piirilevysuunnittelun ilmaiseksi ja tarjoaa myös laadukkaita, mutta edullisia, räätälöityjä piirilevyjä. Tarkista täältä täydellinen opas siitä, miten Easy EDA: ta käytetään kaavojen, piirilevyjen asettelujen, piirien simuloinnin jne.
EasyEDA paranee päivittäin; ne ovat lisänneet monia uusia ominaisuuksia ja parantaneet yleistä käyttökokemusta, mikä tekee EasyEDA: sta helpompaa ja käyttökelpoisempaa piirien suunnittelussa. He aikovat pian käynnistää sen Desktop-version, jonka voi ladata ja asentaa tietokoneellesi offline-käyttöä varten.
EasyEDA-ohjelmassa voit tehdä piirisi ja piirilevymallisi julkiseksi, jotta muut käyttäjät voivat kopioida tai muokata niitä ja hyötyä sieltä. Olemme myös julkaisseet koko piiri- ja piirilevyasettelumme tälle kaukosäätimen kotiautomaatiolle.
Alla on tilannekuva EasyEDA: n piirilevyasettelun ylimmästä kerroksesta. Voit tarkastella mitä tahansa piirilevyn tasoa (ylä-, ala-, yläsilkki-, pullonsilkki jne.) Valitsemalla kerroksen Tasot-ikkunasta.
PCB-näytteiden laskeminen ja tilaaminen verkossa:
Suoritettuaan suunnittelu PCB, voit klikata kuvaketta Fabrication tuotos , joka vie sinut PCB järjestyksessä sivulle. Täällä voit katsella piirilevyäsi Gerber Viewer -sovelluksessa tai ladata Gerber-tiedostoja piirilevyllesi ja lähettää ne mille tahansa valmistajalle, on myös paljon helpompaa (ja halvempaa) tilata se suoraan EasyEDA: sta. Täällä voit valita tilattavien piirilevyjen määrän, kuinka monta kuparikerrosta tarvitset, piirilevyn paksuuden, kuparin painon ja jopa piirilevyn värin. Kun olet valinnut kaikki vaihtoehdot, napsauta "Tallenna ostoskoriin" ja suorita tilauksesi, niin saat piirilevyt muutaman päivän sisällä.
Voit tilata tämän piirilevyn suoraan tai ladata Gerber-tiedoston tämän linkin avulla.
Muutaman päivän kuluttua piirilevyjen tilaamisesta saimme piirilevyt. Saamamme taulut näkyvät alla.
Kun saimme piirilevyt, asensin kaikki vaaditut komponentit piirilevyn päälle, ja lopuksi meillä on IR-kauko-ohjattava kotiautomaatiomme valmis, tarkista tämä piiri, joka toimii esittelyvideossa artikkelin lopussa.