- Explicació de treball:
- Components:
- Programació:
- Disseny de circuits i PCB amb EasyEDA:
- Càlcul i ordenació de mostres de PCB en línia:
En aquest projecte, farem servir un microcontrolador PIC per controlar remotament poques càrregues de CA només mitjançant un comandament a distància IR. Un domèstic domòtic controlat per infraroig IR ja es va fer amb Arduino, però aquí el vam dissenyar en PCB amb el dissenyador i simulador de PCB en línia d’EasyEDA i vam utilitzar els seus serveis de disseny de PCB per demanar les plaques de PCB, tal com es mostra a la secció següent del article.
Al final d'aquest projecte, podreu canviar (ON / OFF) qualsevol càrrega de CA mitjançant un comandament a distància normal des de la comoditat de la vostra cadira / llit. Per fer aquest projecte més interessant, també hem habilitat una funció per controlar la velocitat del ventilador amb l'ajuda de Triac. Tot això es pot fer amb simples clics al comandament a distància IR. Podeu utilitzar qualsevol dels vostres comandaments a distància de TV / DVD / MP3 per a aquest projecte. Els diferents senyals IR des del comandament a distància són rebuts pel microcontrolador que després controla els relés respectius mitjançant un circuit de control de relé. Aquests relés s’utilitzen per connectar i desconnectar les càrregues de CA (llums / ventilador).
Explicació de treball:
El funcionament d’aquest projecte és bastant senzill d’entendre. Quan es prem un botó al comandament IR, envia una seqüència de codi en forma de polsos codificats mitjançant una freqüència moduladora de 38 Khz. Aquests polsos són rebuts pel sensor TSOP1738 i després llegits pel controlador. El controlador descodifica el tren rebut dels impulsos en un valor hexadecimal i el compara amb els valors hexadecimals predefinits del nostre programa.
Si es produeix una coincidència, el controlador realitza una operació relativa activant el relé / Triac respectiu i el resultat corresponent també s’indica mitjançant els LED integrats. En aquest projecte, hem utilitzat 4 bombetes (bombetes petites) de diferents colors com a càrregues d’il·luminació i es considera que una altra bombeta (bombeta més gran) és un ventilador amb finalitats demostratives.
Hem seleccionat la tecla 1 per canviar el relé1, 2 per canviar el relé2, 3 per canviar el relé3, 4 per canviar el relé4 i Vol + per augmentar la velocitat del ventilador i Vol- per disminuir la velocitat del ventilador.
Nota: aquí hem utilitzat una bombeta de 100 watts en lloc d’un ventilador.
Hi ha molts tipus de comandaments a distància IR disponibles per a diferents dispositius, però la majoria funcionen al voltant de la freqüència de 38 kHz. Aquí, en aquest projecte, controlem els electrodomèstics mitjançant control remot de TV IR i, per detectar els senyals IR, utilitzem un receptor IR TSOP1738. Aquest sensor TSOP1738 pot detectar un senyal de freqüència de 38 KHz. El funcionament del control remot IR i del TSOP1738 es descriu detalladament en aquest article: Transmissor i receptor IR
El nostre microcontrolador PIC funciona a + 5 V i els relés funcionen a + 12 V, per tant, fem servir un transformador per reduir el corrent altern de 220 V i rectificar-lo mitjançant un rectificador de pont complet. Aquest voltatge continu rectificat es regula a + 12V i + 5V mitjançant l'ús dels reguladors IC 7812 i 7805 respectivament.
Per activar el relé fem ús de transistors com el BC547, que poden actuar com a commutador electrònic per activar / desactivar els relés en funció del senyal del microcontrolador PIC. Per controlar la velocitat del ventilador, estem utilitzant un TRIAC. TRIAC és un semiconductor de potència que és capaç de controlar la tensió de sortida; aquesta capacitat s'utilitza per controlar la velocitat del ventilador.
També hem utilitzat un controlador Triac per controlar el Triac mitjançant el nostre microcontrolador PIC. Aquest controlador s’utilitza per donar un impuls d’angle de tret a Triac, de manera que es pot controlar la potència de sortida. Aquí hem utilitzat 6 nivells de control de velocitat. Quan el nivell sigui 0, el ventilador estarà apagat. Quan el nivell serà 1, la velocitat serà 1/5 de la velocitat màxima. Quan el nivell serà 2, la velocitat serà 2/5 de la velocitat màxima i, respectivament, per a altres. El nivell actual de la velocitat es pot controlar mitjançant la pantalla integrada de 7 segments.
A continuació es mostra el diagrama de blocs del projecte.

Components:
A continuació es detallen els components necessaris per construir aquest projecte:
- PIC18f2520 Microcontrolador -1
- TSOP1738 -1
- Comandament IR TV / DVD -1
- Transistor BC547 -4
- Relleus de 12 volts -4
- Bombeta amb suport -5
- Connexió de cables -
- EasyEda PCB -1
- LCD de 16x2
- Alimentació 12v
- Connector de terminal 2 pins `-8
- Connector de terminal 3 pins -1
- Transformador 12-0-12 -1 -
- Regulador de voltatge 7805 -1
- Regulador de tensió 7812 -1
- Condensador 1000uf -1
- Condensador 10uf -1
- Condensador 0.1uf -1
- Condensador 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Segment -1 de càtode comú
- 1n4007 díode -10
- BT136 triac -1
- Capçalera masculí / femení:
- LEDs -6
- Optoacoblador moc3021 -1
- Optoacoblador mtc2e o 4n35 -1
- Cristall de 20 MHz -1
- Condensador de 33pf -2
- Diode zener de 5.1v -1
- 47 ohm de resistència de 2 watts -1
Tots aquests components s’utilitzen habitualment i es poden comprar fàcilment. Tanmateix, si busqueu una millor compra en línia, us recomanem LCSC.
LCSC és una gran botiga en línia per comprar components electrònics per a tot tipus de projectes. Inclouen aproximadament 25.000 tipus de components i el millor és que venen articles fins i tot en petites quantitats per a petits projectes i també tenen enviament global.
Descodificació del comandament IR:
Com s'ha dit anteriorment, podeu utilitzar qualsevol tipus de comandament a distància per al vostre projecte. Però hem de saber per a quin tipus de senyal es genera aquest control remot concret. Per a cada clau individual del comandament a distància hi haurà un valor HEX equivalent per a aquesta clau. Mitjançant aquest valor HEX podem distingir entre cada tecla del nostre costat de microcontrolador. Per tant, abans de decidir utilitzar un comandament a distància hauríem de conèixer el valor HEX de les tecles predefinides en aquest comandament en particular. En aquest projecte, hem utilitzat un comandament a distància NEC. A continuació es mostren els valors HEX de les claus d’un comandament a distància NEC.

Com podeu observar, el valor HEX té 7 caràcters, dels quals només es diferencien els dos darrers, de manera que només podem considerar els dos darrers dígits per distingir entre cada tecla.

Esquema de connexions:
A continuació es mostra l’esquema del projecte.

L'esquema anterior es va facilitar amb l'ús d'un editor d'esquemes esayEDA, ja que proporcionen els dissenys de tots els components utilitzats en aquest projecte. Tampoc no requereix una instal·lació i es pot utilitzar en línia a qualsevol lloc.
Els pinouts i els valors dels components s’especifiquen clarament a l’esquema anterior. També podeu descarregar el fitxer esquemàtic des d’aquí.
Programació:
El programa d’aquest projecte es fa mitjançant MPLABX, el codi també és bastant senzill i fàcil d’entendre. El codi complet es donarà al final d’aquest tutorial, a continuació s’expliquen alguns trossos importants del programa.
Al principi del codi, hauríem d’incloure les biblioteques necessàries, definir els pins i declarar les variables.
#incloure
Després d'això, hem creat una funció de retard senzilla mitjançant l'ús del bucle "per".
retard nul (temps int) {for (int i = 0; i
Després d'això, hem inicialitzat el temporitzador mitjançant la funció següent
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // La font del rellotge del temporitzador prové de Prescaler T0CS = 0; // Prescaler obté el rellotge de FCPU (5 MHz) T08BIT = 0; // 16 BIT MODE TMR0IE = 1; // Activa TIMER0 Interrupt PEIE = 1; // Habilita la interrupció perifèrica GIE = 1; // Activa INTs globalment TMR0ON = 1; // Ara inicieu el temporitzador. }
Ara, a la funció principal, hem de donar adreces als pins seleccionats i inicialitzar el temporitzador i la interrupció externa int0 per detectar el pas zero.
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; temporitzador (); INTEDG0 = 0; // Interrompre la vora descendent INT0IE = 1; // Activeu la interrupció externa INT0 (RB0) INT0IF = 0; // Esborra el bit de bandera d'interrupció externa INT0 PEIE = 1; // Habilita la interrupció perifèrica GIE = 1; // Activeu les INT a tot el món
Ara, aquí no estem utilitzant cap manera d’interrupció ni captura i comparació per detectar el senyal IR. Aquí acabem d’utilitzar un pin digital per llegir dades igual que llegim un polsador. Sempre que el senyal augmenta o baixa, simplement posem el mètode de rebouncing i executem el temporitzador. Sempre que el pin canvia el seu estat a un altre, es guardaran els valors horaris en una matriu.
Lògica d’enviament remot IR 0 com 562.5us i lògica 1 com 2250us. Sempre que el temporitzador llegeix al voltant de 562,5us, assumim que és 0 i quan el temporitzador llegeix al voltant de 2250us, ho assumim com a 1. Després el convertim en hexadecimal.
El senyal entrant des del comandament remot conté 34 bits. Emmagatzemem tots els bytes a la matriu i després descodificem l’últim byte a utilitzar.
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; retard (50); cmd = 0; per a (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; else if (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
El fragment de codi anterior rep i descodifica el senyal IR mitjançant interrupcions del temporitzador i emmagatzema el valor HEX corresponent a la variable cmd. Ara podem comparar aquest valor HEX (variable cmd) amb els nostres valors HEX predefinits i canviar el relé com es mostra a continuació
if (cmd == 0xAF) {relé1 = ~ relé1; rly1LED = ~ rly1LED; } else if (cmd == 0x27) {relé2 = ~ relé2; rly2LED = ~ rly2LED; } else if (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } else if (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {speed ++; si (velocitat> 5) {velocitat = 5; }} else if (cmd == 0x9f) {speed--; if (velocitat <= 0) {velocitat = 0; }}
Ara, per saber en quin punt funciona el nostre ventilador, hauríem d’utilitzar una pantalla de 7 segments. Les línies següents s’utilitzen per instruir els pins de la pantalla de 7 segments.
if (velocitat == 5) // desactivat 5x2 = 10ms triger // velocitat 0 {PORTA = 0xC0; // mostra 0 RB6 = 1; fanLED = 0; } else if (velocitat == 4) // activador de 8 ms // velocitat 1 {PORTA = 0xfc; // mostrant 1 RB6 = 1; fanLED = 1; } else if (velocitat == 3) // 6 ms activador // velocitat 2 {PORTA = 0xE4; // mostrant 2 RB6 = 0; fanLED = 1; } else if (velocitat == 2) // activador de 4 ms // velocitat 3 {PORTA = 0xF0; // mostrant 3 RB6 = 0; fanLED = 1; } else if (velocitat == 1) // activador de 2 ms // velocitat 4 {PORTA = 0xD9; // mostrant 4 RB6 = 0; fanLED = 1; } else if (speed == 0) // 0ms trigger // speed 5 full power {PORTA = 0xD2; // mostrant 5 RB6 = 0; fanLED = 1; }
La funció següent és per a interrupcions externes i excés de temps. Aquesta funció s’encarrega de detectar el pas zero i conduir el Triac.
void interrupt isr () {if (INT0IF) {delay (velocitat); tric = 1; per a (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Comproveu si és TMR0 Overflow ISR {TMR0IF = 0; }}
El PCB final per a aquesta automatització domèstica controlada a distància per IR és el que es mostra a continuació:

Disseny de circuits i PCB amb EasyEDA:
Per dissenyar aquesta domòtica de control remot hem utilitzat EasyEDA que és una eina EDA gratuïta en línia per crear circuits i PCB de manera perfecta. Anteriorment hem demanat pocs PCB a EasyEDA i seguim fent servir els seus serveis ja que trobem tot el procés, des de dibuixar els circuits fins a demanar els PCB, més còmodes i eficients en comparació amb altres fabricants de PCB. EasyEDA ofereix dibuix de circuits, simulació, disseny de PCB de forma gratuïta i també ofereix un servei de PCB personalitzat d’alta qualitat però de baix preu. Consulteu aquí el tutorial complet sobre Com utilitzar Easy EDA per fer esquemes, dissenys de PCB, simulació de circuits, etc.
EasyEDA millora dia a dia; han afegit moltes funcions noves i han millorat l’experiència general de l’usuari, cosa que fa que EasyEDA sigui més fàcil i útil per al disseny de circuits. Aviat llançaran la seva versió d’escriptori, que es pot descarregar i instal·lar a l’ordinador per a ús fora de línia.
A EasyEDA, podeu fer públics els vostres dissenys de circuits i PCB perquè altres usuaris puguin copiar-los o editar-los i aprofitar-los, també hem fet públics tots els dissenys de circuits i PCB per a aquesta domòtica de control remot.
A continuació es mostra la instantània de la capa superior del disseny de PCB des d’EasyEDA, podeu veure qualsevol capa (superior, inferior, de llana superior, de seda inferior, etc.) del PCB seleccionant la capa de la finestra “Capes”.


Càlcul i ordenació de mostres de PCB en línia:
Després de completar el disseny de PCB, podeu fer clic a la icona de sortida de fabricació , que us portarà a la pàgina de comandes de PCB. Aquí podeu veure el vostre PCB a Gerber Viewer o descarregar fitxers Gerber del vostre PCB i enviar-los a qualsevol fabricant, també és molt més fàcil (i més barat) demanar-lo directament a EasyEDA. Aquí podeu seleccionar el nombre de PCB que voleu demanar, quantes capes de coure necessiteu, el gruix del PCB, el pes del coure i fins i tot el color del PCB. Un cop hàgiu seleccionat totes les opcions, feu clic a "Desa a la cistella" i completeu la comanda i, en pocs dies, rebreu els vostres PCB.

Podeu demanar directament aquest PCB o descarregar el fitxer Gerber mitjançant aquest enllaç.
Després d’uns dies de demanar PCB, vam aconseguir els PCB. Els taulers que hem rebut es mostren a continuació.

Un cop hem rebut els PCB, he muntat tots els components necessaris sobre el PCB i, finalment, tenim la nostra automatització domèstica controlada a distància per infrarrojos, comproveu que aquest circuit funciona en un vídeo de demostració al final de l'article.


