- Spiegazione di lavoro:
- Componenti:
- Programmazione:
- Progettazione di circuiti e PCB utilizzando EasyEDA:
- Calcolo e ordinazione di campioni di PCB online:
In questo progetto, utilizzeremo un microcontrollore PIC per controllare a distanza pochi carichi CA utilizzando semplicemente un telecomando IR. Un progetto simile di automazione domestica telecomandata IR è già stato fatto anche con Arduino, ma qui l'abbiamo progettato su PCB utilizzando il designer e simulatore di PCB online di EasyEDA e abbiamo utilizzato i loro servizi di progettazione di PCB per ordinare le schede PCB come mostrato nella sezione successiva del articolo.
Alla fine di questo progetto sarai in grado di attivare / disattivare qualsiasi carico CA utilizzando un normale telecomando dalla comodità della tua sedia / letto. Per rendere questo progetto più interessante abbiamo anche abilitato una funzione per controllare la velocità della ventola con l'aiuto del Triac. Tutto questo può essere fatto con semplici clic sul telecomando IR. Puoi utilizzare qualsiasi telecomando TV / DVD / MP3 per questo progetto. I diversi segnali IR dal telecomando vengono ricevuti dal microcontrollore che quindi controlla i rispettivi relè tramite un circuito di pilotaggio del relè. Questi relè vengono utilizzati per collegare e scollegare i carichi CA (luci / ventola).
Spiegazione di lavoro:
Il funzionamento di questo progetto è abbastanza semplice da capire. Quando si preme un pulsante sul telecomando IR, invia una sequenza di codice sotto forma di impulsi codificati utilizzando una frequenza di modulazione di 38 Khz. Questi impulsi vengono ricevuti dal sensore TSOP1738 e quindi letti dal controller. Il controller quindi decodifica il treno di impulsi ricevuto in un valore esadecimale e lo confronta con i valori esadecimali predefiniti nel nostro programma.
Se si verifica una corrispondenza, il controller esegue un'operazione relativa attivando il rispettivo Relay / Triac e il risultato corrispondente viene indicato anche dai LED a bordo. Qui in questo progetto, abbiamo utilizzato 4 lampadine (lampadine piccole) di diversi colori come carichi di illuminazione e un'altra lampadina (lampadina più grande) è considerata un ventilatore a scopo dimostrativo.
Abbiamo selezionato il tasto 1 per attivare il relè1, 2 per attivare il relè2, 3 per attivare il relè3, 4 per attivare il relè4 e Vol + per aumentare la velocità della ventola e Vol- per diminuire la velocità della ventola.
Nota: qui abbiamo usato una lampadina da 100 watt invece di un ventilatore.
Sono disponibili molti tipi di telecomandi IR per diversi dispositivi, ma la maggior parte di essi funziona con una frequenza di 38 KHz. Qui in questo progetto, controlliamo gli elettrodomestici utilizzando il telecomando IR TV e per rilevare i segnali IR, utilizziamo un ricevitore IR TSOP1738. Questo sensore TSOP1738 può rilevare il segnale di frequenza 38 Khz. Il funzionamento del telecomando IR e del TSOP1738 è trattato in dettaglio in questo articolo: Trasmettitore e ricevitore IR
Il nostro microcontrollore PIC funziona a + 5V ei relè funzionano a + 12V, quindi usiamo un trasformatore per abbassare la 220V AC e rettificarlo usando un raddrizzatore a ponte completo. Questa tensione CC rettificata viene quindi regolata a + 12V e + 5V utilizzando rispettivamente i circuiti integrati del regolatore 7812 e 7805.
Per attivare il relè facciamo uso di transistor come BC547 che può agire come un interruttore elettronico per accendere / spegnere i relè in base al segnale del microcontrollore PIC. Inoltre per controllare la velocità della ventola stiamo usando un TRIAC. TRIAC è un semiconduttore di potenza in grado di controllare la tensione di uscita; questa capacità viene utilizzata per controllare la velocità del ventilatore.
Abbiamo anche utilizzato un Triac Driver per controllare il Triac utilizzando il nostro microcontrollore PIC. Questo driver viene utilizzato per fornire un impulso dell'angolo di accensione al Triac, in modo che la potenza di uscita possa essere controllata. Qui abbiamo usato 6 livelli di controllo della velocità. Quando il livello è 0, la ventola si spegne. Quando il livello sarà 1, la velocità sarà 1/5 della velocità massima. Quando il livello sarà 2, la velocità sarà 2/5 della velocità massima e rispettivamente per gli altri. Il livello attuale della velocità può essere monitorato utilizzando il display a 7 segmenti di bordo.
Di seguito è riportato lo schema a blocchi del progetto.
Componenti:
Di seguito sono riportati i componenti necessari per realizzare questo progetto:
- Microcontrollore PIC18f2520 -1
- TSOP1738 -1
- Telecomando IR TV / DVD -1
- Transistor BC547 -4
- Relè 12 volt -4
- Lampadina con supporto -5
- Cavi di collegamento -
- EasyEda PCB -1
- LCD 16x2
- Alimentazione 12v
- Connettore terminale 2 pin `-8
- Connettore terminale 3 pin -1
- Trasformatore 12-0-12-1 -
- Regolatore di tensione 7805-1
- Regolatore di tensione 7812-1
- Condensatore 1000uf -1
- Condensatore 10uf -1
- Condensatore 0,1 uf -1
- Condensatore 0,01 uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Segmento di catodo comune -1
- Diodo 1n4007 -10
- BT136 triac -1
- Intestazione maschio / femmina -
- LED -6
- Optoaccoppiatore moc3021 -1
- Optoaccoppiatore mtc2e o 4n35 -1
- Cristallo da 20 Mhz -1
- Condensatore 33pf -2
- Diodo zener 5.1v -1
- Resistenza da 47 ohm 2 watt -1
Tutti questi componenti sono comunemente usati e possono essere facilmente acquistati. Tuttavia, se stai cercando il miglior acquisto online, ti consigliamo LCSC.
LCSC è un ottimo negozio online per acquistare i tuoi componenti elettronici per tutti i tipi di progetti. Presentano circa 25.000 tipi di componenti e la cosa migliore è che vendono articoli anche in piccole quantità per piccoli progetti e hanno anche la spedizione globale.
Decodifica del telecomando IR:
Come detto in precedenza puoi utilizzare qualsiasi tipo di telecomando per il tuo progetto. Ma dobbiamo sapere per quale tipo di segnale viene generato da quel particolare telecomando. Per ogni singola chiave sul telecomando ci sarà un valore HEX equivalente per quella chiave. Usando questo valore HEX possiamo distinguere tra ogni chiave sul nostro lato microcontrollore. Quindi, prima di decidere di utilizzare un telecomando, dovremmo conoscere il valore HEX per i tasti preimpostati in quel particolare telecomando. In questo progetto abbiamo utilizzato un telecomando NEC. Di seguito sono riportati i valori HEX per i tasti su un telecomando NEC.
Come puoi notare il valore HEX ha 7 caratteri di cui solo gli ultimi due differiscono, quindi possiamo considerare solo le ultime due cifre per distinguere tra ciascuna chiave.
Schema elettrico:
Di seguito è mostrato lo schema del progetto.
Lo schema sopra è stato reso semplice utilizzando l'editor di schemi esayEDA poiché fornisce i layout di tutti i componenti utilizzati in questo progetto. Inoltre non richiede installazione e può essere utilizzato online in movimento.
Le piedinature e i valori dei componenti sono chiaramente specificati nello schema sopra. Puoi anche scaricare il file schematico da qui.
Programmazione:
Il programma per questo progetto è realizzato utilizzando MPLABX, anche il codice è piuttosto semplice e facile da capire. Il codice completo verrà fornito alla fine di questo tutorial, ulteriori alcune parti importanti del programma sono spiegate di seguito.
All'inizio del codice, dovremmo includere le librerie richieste, definire i pin e dichiarare le variabili.
#includere
Successivamente, abbiamo creato una semplice funzione di ritardo utilizzando il ciclo "for".
void delay (int time) {for (int i = 0; i
Successivamente, abbiamo inizializzato il timer utilizzando la seguente funzione
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // La sorgente dell'orologio del timer proviene da Prescaler T0CS = 0; // Il prescrittore riceve il clock da FCPU (5MHz) T08BIT = 0; // MODO A 16 BIT TMR0IE = 1; // Abilita TIMER0 Interrupt PEIE = 1; // Abilita interrupt periferico GIE = 1; // Abilita gli INT a livello globale TMR0ON = 1; // Ora avvia il timer! }
Ora nella funzione principale, dobbiamo dare indicazioni ai pin selezionati e inizializzare il timer e l'interrupt esterno int0 per rilevare lo zero crossing.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; relay1 = 0; relay2 = 0; relay3 = 0; relay4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; Timer(); INTEDG0 = 0; // Interruzione su fronte di discesa INT0IE = 1; // Abilita l'interrupt esterno INT0 (RB0) INT0IF = 0; // Cancella il bit del flag di interrupt esterno INT0 PEIE = 1; // Abilita interrupt periferico GIE = 1; // Abilita gli INT a livello globale
Ora, qui non stiamo usando alcuna modalità di interruzione o cattura e confronto per rilevare il segnale IR. Qui abbiamo appena usato un pin digitale per leggere i dati proprio come leggiamo un pulsante. Ogni volta che il segnale va alto o basso, mettiamo semplicemente il metodo antirimbalzo ed eseguiamo il timer. Ogni volta che il pin cambia il suo stato in un altro, i valori temporali verranno salvati in un array.
IR remoto invia logica 0 come 562.5us e logica 1 come 2250us. Ogni volta che il timer legge intorno a 562,5us, assumiamo che sia 0 e quando il timer legge intorno a 2250us, lo assumiamo come 1. Quindi lo convertiamo in esadecimale.
Il segnale in arrivo dal telecomando contiene 34 bit. Memorizziamo tutti i byte nell'array e quindi decodifichiamo l'ultimo byte da utilizzare.
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; } se (i> = 33) {GIE = 0; ritardo (50); cmd = 0; for (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; altrimenti se (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
La parte di codice precedente riceve e decodifica il segnale IR utilizzando interruzioni del timer e memorizza il valore HEX corrispondente nella variabile cmd. Ora possiamo confrontare questo valore HEX (variabile cmd) con i nostri valori HEX predefiniti e attivare il relè come mostrato di seguito
if (cmd == 0xAF) {relay1 = ~ relay1; rly1LED = ~ rly1LED; } altrimenti se (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } altrimenti se (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } altrimenti se (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {speed ++; se (velocità> 5) {velocità = 5; }} else if (cmd == 0x9f) {speed--; se (velocità <= 0) {velocità = 0; }}
Ora per sapere a che punto è attualmente in funzione il nostro ventilatore, dovremmo utilizzare un display a 7 segmenti. Le seguenti righe vengono utilizzate per istruire i pin del display a 7 segmenti.
if (velocità == 5) // spento 5x2 = 10ms triger // velocità 0 {PORTA = 0xC0; // visualizza 0 RB6 = 1; fanLED = 0; } else if (speed == 4) // 8 ms trigger // speed 1 {PORTA = 0xfc; // visualizzazione di 1 RB6 = 1; fanLED = 1; } else if (speed == 3) // 6 ms trigger // speed 2 {PORTA = 0xE4; // visualizzazione di 2 RB6 = 0; fanLED = 1; } else if (speed == 2) // 4ms trigger // speed 3 {PORTA = 0xF0; // mostra 3 RB6 = 0; fanLED = 1; } else if (speed == 1) // 2ms trigger // speed 4 {PORTA = 0xD9; // visualizzazione di 4 RB6 = 0; fanLED = 1; } else if (speed == 0) // 0ms trigger // speed 5 full power {PORTA = 0xD2; // visualizzazione di 5 RB6 = 0; fanLED = 1; }
La seguente funzione è per interrupt esterno e overflow del tempo. Questa funzione è responsabile del rilevamento del passaggio per lo zero e dell'azionamento del Triac.
void interrupt isr () {if (INT0IF) {ritardo (velocità); tric = 1; for (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Controlla se è TMR0 Overflow ISR {TMR0IF = 0; }}
Il PCB finale per questa automazione domestica telecomandata IR appare come mostrato di seguito:
Progettazione di circuiti e PCB utilizzando EasyEDA:
Per progettare questa automazione domestica con controllo remoto abbiamo utilizzato EasyEDA, uno strumento EDA online gratuito per la creazione di circuiti e PCB in modo trasparente. In precedenza abbiamo ordinato pochi PCB da EasyEDA e continuiamo a utilizzare i loro servizi poiché abbiamo scoperto l'intero processo, dal disegno dei circuiti all'ordinazione dei PCB, più conveniente ed efficiente rispetto ad altri produttori di PCB. EasyEDA offre gratuitamente il disegno di circuiti, la simulazione, la progettazione di PCB e offre anche un servizio PCB personalizzato di alta qualità ma a basso prezzo. Controlla qui per il tutorial completo su come utilizzare Easy EDA per creare schemi, layout PCB, simulare i circuiti ecc.
EasyEDA sta migliorando giorno dopo giorno; hanno aggiunto molte nuove funzionalità e migliorato l'esperienza utente complessiva, il che rende EasyEDA più facile e utilizzabile per la progettazione di circuiti. Presto lanceranno la sua versione desktop, che può essere scaricata e installata sul tuo computer per l'utilizzo offline.
In EasyEDA, puoi rendere pubblici i tuoi progetti di circuiti e PCB in modo che altri utenti possano copiarli o modificarli e trarne vantaggio, abbiamo anche reso pubblici tutti i nostri layout di circuiti e PCB per questa automazione domestica con controllo remoto.
Di seguito è riportata l'istantanea dello strato superiore del layout PCB da EasyEDA, è possibile visualizzare qualsiasi strato (Top, Bottom, Topsilk, Bottomsilk ecc.) Del PCB selezionando lo strato dalla finestra "Layers".
Calcolo e ordinazione di campioni di PCB online:
Dopo aver completato il design del PCB, puoi fare clic sull'icona dell'output di Fabrication , che ti porterà sulla pagina dell'ordine PCB. Qui puoi visualizzare il tuo PCB in Gerber Viewer o scaricare i file Gerber del tuo PCB e inviarli a qualsiasi produttore, è anche molto più semplice (ed economico) ordinarlo direttamente in EasyEDA. Qui puoi selezionare il numero di PCB che desideri ordinare, quanti strati di rame ti servono, lo spessore del PCB, il peso del rame e persino il colore del PCB. Dopo aver selezionato tutte le opzioni, fai clic su "Salva nel carrello" e completa l'ordine, quindi riceverai i tuoi PCB entro pochi giorni.
Puoi ordinare direttamente questo PCB o scaricare il file Gerber usando questo link.
Dopo pochi giorni dall'ordinazione dei PCB abbiamo ottenuto i PCB. Le schede che abbiamo ricevuto sono mostrate di seguito.
Una volta ricevuti i PCB, ho montato tutti i componenti richiesti sul PCB, e finalmente abbiamo la nostra automazione domestica telecomandata IR pronta, controlla questo circuito funziona nel video dimostrativo alla fine dell'articolo.