- Arbeitserklärung:
- Komponenten:
- Programmierung:
- Schaltungs- und Leiterplattendesign mit EasyEDA:
- Online-Berechnung und Bestellung von Leiterplattenmustern:
In diesem Projekt werden wir einen PIC-Mikrocontroller verwenden, um wenige Wechselstromlasten mit nur einer IR-Fernbedienung fernzusteuern. Ein ähnliches Projekt IR Remote Remote Automated Home Automation wurde bereits mit Arduino durchgeführt, aber hier haben wir es mit dem Online-Leiterplattendesigner und -simulator von EasyEDA auf Leiterplatten entworfen und die Leiterplattenentwurfsdienste mithilfe ihrer Leiterplattenentwurfsdienste bestellt, wie im folgenden Abschnitt des Artikel.
Am Ende dieses Projekts können Sie jede Wechselstromlast mit einer normalen Fernbedienung bequem von Ihrem Stuhl / Bett aus ein- und ausschalten. Um dieses Projekt interessanter zu gestalten, haben wir auch eine Funktion aktiviert, mit der die Drehzahl des Lüfters mithilfe von Triac gesteuert werden kann. All dies kann mit einfachen Klicks auf Ihrer IR-Fernbedienung erfolgen. Sie können für dieses Projekt eine beliebige TV / DVD / MP3-Fernbedienung verwenden. Die verschiedenen IR-Signale von der Fernbedienung werden vom Mikrocontroller empfangen, der dann die jeweiligen Relais über eine Relaistreiberschaltung steuert. Diese Relais dienen zum Anschließen und Trennen der Wechselstromlasten (Lichter / Lüfter).
Arbeitserklärung:
Die Arbeitsweise dieses Projekts ist ziemlich einfach zu verstehen. Wenn eine Taste auf der IR-Fernbedienung gedrückt wird, sendet sie eine Codesequenz in Form von codierten Impulsen mit einer Modulationsfrequenz von 38 kHz. Diese Impulse werden vom TSOP1738- Sensor empfangen und dann von der Steuerung gelesen. Der Controller decodiert dann die empfangene Folge der Impulse in einen Hex-Wert und vergleicht sie mit den in unserem Programm vordefinierten Hex-Werten.
Wenn eine Übereinstimmung auftritt, führt die Steuerung eine relative Operation durch Auslösen des jeweiligen Relais / Triac durch, und das entsprechende Ergebnis wird auch durch integrierte LEDs angezeigt. Hier in diesem Projekt haben wir 4 Lampen (kleine Lampen) in verschiedenen Farben als Beleuchtungslasten verwendet, und eine andere Lampe (größere Lampe) wird zu Demonstrationszwecken als Lüfter betrachtet.
Wir haben die Taste 1 zum Umschalten des Relais1, 2 zum Umschalten des Relais2, 3 zum Umschalten des Relais3, 4 zum Umschalten des Relais4 und Vol + zum Erhöhen der Lüfterdrehzahl und Vol- zum Verringern der Lüfterdrehzahl ausgewählt.
Hinweis: Hier haben wir eine 100-Watt-Lampe anstelle eines Lüfters verwendet.
Es gibt viele Arten von IR-Fernbedienungen für verschiedene Geräte, die meisten arbeiten jedoch mit einer Frequenz von 38 kHz. Hier in diesem Projekt steuern wir Haushaltsgeräte mit einer IR-TV-Fernbedienung und zur Erkennung der IR-Signale verwenden wir einen TSOP1738-IR-Empfänger. Dieser TSOP1738-Sensor kann ein 38-kHz-Frequenzsignal erfassen. Die Funktionsweise der IR-Fernbedienung und des TSOP1738 wird in diesem Artikel ausführlich behandelt: IR-Sender und -Empfänger
Unser PIC-Mikrocontroller arbeitet mit +5 V und die Relais mit +12 V. Daher verwenden wir einen Transformator, um den 220-V-Wechselstrom herunterzufahren und ihn mit einem Vollbrückengleichrichter zu korrigieren. Diese gleichgerichtete Gleichspannung wird dann unter Verwendung der Regler-ICs 7812 bzw. 7805 auf +12 V und +5 V geregelt.
Zum Auslösen des Relais verwenden wir Transistoren wie BC547, die als elektronischer Schalter zum Ein- und Ausschalten der Relais auf der Grundlage des Signals vom PIC-Mikrocontroller dienen können. Zur weiteren Steuerung der Drehzahl des Lüfters verwenden wir einen TRIAC. TRIAC ist ein Leistungshalbleiter, der die Ausgangsspannung steuern kann. Diese Funktion wird verwendet, um die Drehzahl des Lüfters zu steuern.
Wir haben auch einen Triac-Treiber verwendet, um den Triac mit unserem PIC-Mikrocontroller zu steuern. Dieser Treiber wird verwendet, um Triac einen Zündwinkelimpuls zu geben, damit die Ausgangsleistung gesteuert werden kann. Hier haben wir 6 Geschwindigkeitsstufen verwendet. Wenn der Pegel 0 ist, ist der Lüfter ausgeschaltet. Wenn der Pegel 1 ist, beträgt die Geschwindigkeit 1/5 der vollen Geschwindigkeit. Wenn die Stufe 2 ist, beträgt die Geschwindigkeit 2/5 der vollen Geschwindigkeit bzw. für andere. Der aktuelle Drehzahlpegel kann über das integrierte 7-Segment-Display überwacht werden.
Das Blockdiagramm des Projekts ist unten dargestellt.
Komponenten:
Die für die Erstellung dieses Projekts erforderlichen Komponenten sind nachstehend aufgeführt:
- PIC18f2520 Mikrocontroller -1
- TSOP1738 -1
- IR-TV / DVD-Fernbedienung -1
- Transistor BC547 -4
- Relais 12 Volt -4
- Glühbirne mit Halter -5
- Kabel anschließen -
- EasyEda PCB -1
- 16x2 LCD
- Stromversorgung 12V
- Klemmenstecker 2 Pin `-8
- Klemmenstecker 3 Pin -1
- Transformator 12-0-12 -1 -
- Spannungsregler 7805 -1
- Spannungsregler 7812 -1
- Kondensator 1000uf -1
- Kondensator 10uf -1
- Kondensator 0.1uf -1
- Kondensator 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100 Ohm -7
- Gemeinsames Kathodensegment -1
- 1n4007 Diode -10
- BT136 Triac -1
- Männlicher / weiblicher Header -
- LEDs -6
- Optokoppler moc3021 -1
- Optokoppler mtc2e oder 4n35 -1
- 20 MHz Kristall -1
- 33pf Kondensator -2
- 5,1 V Zenerdiode -1
- 47 Ohm 2 Watt Widerstand -1
Alle diese Komponenten werden häufig verwendet und können leicht erworben werden. Wenn Sie jedoch nach einem Best Buy online suchen, empfehlen wir Ihnen LCSC.
LCSC ist ein großartiger Online-Shop, in dem Sie Ihre Elektronikkomponenten für alle Arten von Projekten kaufen können. Sie verfügen über etwa 25.000 Arten von Komponenten und das Beste ist, dass sie auch kleine Mengen für kleine Projekte verkaufen und außerdem über einen globalen Versand verfügen.
Dekodieren der IR-Fernbedienung:
Wie bereits erwähnt, können Sie für Ihr Projekt jede Art von Fernbedienung verwenden. Aber wir müssen wissen, für welche Art von Signal von dieser bestimmten Fernbedienung erzeugt wird. Für jeden einzelnen Schlüssel auf der Fernbedienung gibt es einen entsprechenden HEX-Wert für diesen Schlüssel. Mit diesem HEX-Wert können wir zwischen den einzelnen Schlüsseln auf unserer Mikrocontrollerseite unterscheiden. Bevor wir uns für eine Fernbedienung entscheiden, sollten wir den HEX-Wert für die in dieser bestimmten Fernbedienung voreingestellten Schlüssel kennen. In diesem Projekt haben wir eine NEC-Fernbedienung verwendet. Die HEX-Werte für die Tasten einer NEC-Fernbedienung sind unten angegeben.
Wie Sie sehen können, hat der HEX-Wert 7 Zeichen, von denen sich nur die letzten beiden unterscheiden. Daher können wir nur die letzten beiden Ziffern berücksichtigen, um zwischen den einzelnen Tasten zu unterscheiden.
Schaltplan:
Das Schema für das Projekt ist unten gezeigt.
Das obige Schema wurde durch die Verwendung des esayEDA-Schema-Editors vereinfacht, da es die Layouts aller in diesem Projekt verwendeten Komponenten enthält. Es erfordert auch keine Installation und kann online unterwegs verwendet werden.
Die Pinbelegung und Komponentenwerte sind im obigen Schema klar angegeben. Sie können die Schaltplandatei auch hier herunterladen.
Programmierung:
Das Programm für dieses Projekt wird mit MPLABX erstellt, der Code ist auch ziemlich einfach und leicht zu verstehen. Der vollständige Code wird am Ende dieses Tutorials angegeben. Weitere wichtige Teile des Programms werden im Folgenden erläutert.
Am Anfang des Codes sollten wir die erforderlichen Bibliotheken einschließen, die Pins definieren und die Variablen deklarieren.
#einschließen
Danach haben wir mithilfe der for-Schleife eine einfache Verzögerungsfunktion erstellt.
ungültige Verzögerung (int Zeit) {für (int i = 0; i
Danach haben wir den Timer mit der folgenden Funktion initialisiert
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Timer Clock Source ist vom Prescaler T0CS = 0; // Prescaler erhält Takt von FCPU (5MHz) T08BIT = 0; // 16 BIT MODE TMR0IE = 1; // TIMER0 aktivieren Interrupt PEIE = 1; // Peripheral Interrupt aktivieren GIE = 1; // INTs global aktivieren TMR0ON = 1; // Starten Sie jetzt den Timer! }}
In der Hauptfunktion haben wir nun den ausgewählten Pins Anweisungen gegeben und den Timer und den externen Interrupt int0 initialisiert, um den Nulldurchgang zu erkennen.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; Relais1 = 0; Relais2 = 0; Relais3 = 0; Relais4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; Timer(); INTEDG0 = 0; // Interrupt bei fallender Flanke INT0IE = 1; // Aktiviere den externen Interrupt INT0 (RB0) INT0IF = 0; // Löscht das INT0 External Interrupt Flag Bit PEIE = 1; // Peripheral Interrupt aktivieren GIE = 1; // INTs global aktivieren
Jetzt verwenden wir hier keinen Interrupt- oder Erfassungs- und Vergleichsmodus, um das IR-Signal zu erkennen. Hier haben wir gerade einen digitalen Pin verwendet, um Daten zu lesen, genau wie wir einen Druckknopf lesen. Immer wenn das Signal hoch oder niedrig geht, setzen wir einfach die Entprellungsmethode und lassen den Timer laufen. Immer wenn der Pin seinen Status in einen anderen ändert, werden Zeitwerte in einem Array gespeichert.
IR-Fernsende-Logik 0 als 562.5us und Logik 1 als 2250us. Immer wenn der Timer ungefähr 562,5us liest, nehmen wir 0 an, und wenn der Timer ungefähr 2250us liest, nehmen wir ihn als 1 an. Dann konvertieren wir ihn in hexadezimal.
Das eingehende Signal von der Fernbedienung enthält 34 Bit. Wir speichern alle Bytes im Array und dekodieren dann das letzte zu verwendende Byte.
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; Verzögerung (50); cmd = 0; für (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; sonst wenn (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Der obige Code empfängt und decodiert das IR-Signal unter Verwendung von Timer-Interrupts und speichert den entsprechenden HEX-Wert in der Variablen cmd. Jetzt können wir diesen HEX-Wert (cmd-Variable) mit unseren vordefinierten HEX-Werten vergleichen und das Relais wie unten gezeigt umschalten
if (cmd == 0xAF) {Relais1 = ~ Relais1; rly1LED = ~ rly1LED; } else if (cmd == 0x27) {Relais2 = ~ Relais2; rly2LED = ~ rly2LED; } else if (cmd == 0x07) {Relais3 = ~ Relais3; rly3LED = ~ rly3LED; } else if (cmd == 0xCF) {Relay4 = ~ Relay4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {speed ++; if (Geschwindigkeit> 5) {Geschwindigkeit = 5; }} else if (cmd == 0x9f) {speed--; if (Geschwindigkeit <= 0) {Geschwindigkeit = 0; }}
Um zu wissen, an welchem Lüfter gerade gearbeitet wird, sollten wir ein 7-Segment-Display verwenden. Die folgenden Zeilen werden verwendet, um die Pins der 7-Segment-Anzeige anzuweisen.
if (speed == 5) // ausgeschaltet 5x2 = 10ms triger // speed 0 {PORTA = 0xC0; // Anzeige 0 RB6 = 1; fanLED = 0; } else if (Geschwindigkeit == 4) // 8 ms Trigger // Geschwindigkeit 1 {PORTA = 0xfc; // Anzeige von 1 RB6 = 1; fanLED = 1; } else if (Geschwindigkeit == 3) // 6 ms Trigger // Geschwindigkeit 2 {PORTA = 0xE4; // 2 RB6 = 0 anzeigen; fanLED = 1; } else if (Geschwindigkeit == 2) // 4ms Trigger // Geschwindigkeit 3 {PORTA = 0xF0; // 3 RB6 = 0 anzeigen; fanLED = 1; } else if (Geschwindigkeit == 1) // 2 ms Trigger // Geschwindigkeit 4 {PORTA = 0xD9; // Anzeige von 4 RB6 = 0; fanLED = 1; } else if (Geschwindigkeit == 0) // 0 ms Trigger // Geschwindigkeit 5 volle Leistung {PORTA = 0xD2; // Anzeige von 5 RB6 = 0; fanLED = 1; }}
Die folgende Funktion ist für externen Interrupt und Zeitüberlauf. Diese Funktion ist für die Erkennung des Nulldurchgangs und das Fahren des Triac verantwortlich.
void Interrupt isr () {if (INT0IF) {Verzögerung (Geschwindigkeit); tric = 1; für (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Überprüfen Sie, ob es sich um einen TMR0-Überlauf handelt. ISR {TMR0IF = 0; }}
Die endgültige Leiterplatte für diese ferngesteuerte IR-Hausautomation sieht wie folgt aus:
Schaltungs- und Leiterplattendesign mit EasyEDA:
Für die Entwicklung dieser ferngesteuerten Hausautomation haben wir EasyEDA verwendet, ein kostenloses Online-EDA-Tool zum nahtlosen Erstellen von Schaltkreisen und Leiterplatten. Wir haben zuvor nur wenige Leiterplatten bei EasyEDA bestellt und nutzen ihre Dienste weiterhin, da wir den gesamten Prozess, vom Zeichnen der Schaltkreise bis zur Bestellung der Leiterplatten, im Vergleich zu anderen Leiterplattenherstellern bequemer und effizienter fanden. EasyEDA bietet kostenlos Schaltungszeichnung, Simulation und Leiterplattendesign sowie qualitativ hochwertigen und kostengünstigen kundenspezifischen Leiterplattenservice. Hier finden Sie das vollständige Tutorial zur Verwendung von Easy EDA zum Erstellen von Schaltplänen, Leiterplattenlayouts, Simulieren der Schaltkreise usw.
EasyEDA verbessert sich von Tag zu Tag; Sie haben viele neue Funktionen hinzugefügt und die allgemeine Benutzererfahrung verbessert, was EasyEDA einfacher und benutzerfreundlicher für das Entwerfen von Schaltungen macht. In Kürze wird die Desktop-Version veröffentlicht, die heruntergeladen und zur Offline-Verwendung auf Ihrem Computer installiert werden kann.
In EasyEDA können Sie Ihre Schaltungs- und Leiterplattenentwürfe veröffentlichen, damit andere Benutzer sie kopieren oder bearbeiten können, und davon profitieren. Außerdem haben wir unsere gesamten Schaltungs- und Leiterplattenlayouts für diese ferngesteuerte Hausautomation veröffentlicht.
Unten finden Sie den Schnappschuss der obersten Ebene des PCB-Layouts von EasyEDA. Sie können jede Ebene (oben, unten, Oberschicht, untere Seide usw.) der Leiterplatte anzeigen, indem Sie die Ebene aus dem Fenster "Ebenen" auswählen.
Online-Berechnung und Bestellung von Leiterplattenmustern:
Nachdem Sie das Design der Leiterplatte abgeschlossen haben, können Sie auf das Symbol der Fertigungsausgabe klicken, um zur Bestellseite für die Leiterplatte zu gelangen. Hier können Sie Ihre Leiterplatte im Gerber Viewer anzeigen oder Gerber-Dateien Ihrer Leiterplatte herunterladen und an einen beliebigen Hersteller senden. Es ist auch viel einfacher (und billiger), sie direkt in EasyEDA zu bestellen. Hier können Sie die Anzahl der zu bestellenden Leiterplatten, die Anzahl der benötigten Kupferschichten, die Leiterplattendicke, das Kupfergewicht und sogar die Leiterplattenfarbe auswählen. Nachdem Sie alle Optionen ausgewählt haben, klicken Sie auf "In den Warenkorb" und schließen Sie Ihre Bestellung ab. Innerhalb weniger Tage erhalten Sie Ihre Leiterplatten.
Sie können diese Platine direkt bestellen oder die Gerber-Datei über diesen Link herunterladen.
Nach einigen Tagen der Bestellung von Leiterplatten haben wir die Leiterplatten bekommen. Die Boards, die wir erhalten haben, sind unten gezeigt.
Nachdem wir die Leiterplatten erhalten haben, habe ich alle erforderlichen Komponenten über die Leiterplatte montiert. Schließlich haben wir unsere ferngesteuerte IR-Hausautomation bereit. Überprüfen Sie diese Schaltung im Demonstrationsvideo am Ende des Artikels.