- Arbetsförklaring:
- Komponenter:
- Programmering:
- Krets- och kretskortsdesign med EasyEDA:
- Beräkning och beställning av PCB-prover online:
I det här projektet ska vi använda en PIC-mikrokontroller för att fjärrstyra några växelström genom att bara använda en IR-fjärrkontroll. Ett liknande projekt IR-fjärrstyrd hemautomation har redan gjorts med Arduino, men här designade vi det på PCB med EasyEDA: s online PCB-designer och simulator, och använde deras PCB-designtjänster för att beställa PCB-kort som visas i nästa avsnitt artikel.
I slutet av detta projekt kommer du att kunna växla (PÅ / AV) vilken AC-belastning som helst med en vanlig fjärrkontroll från din stol / säng. För att göra detta projekt mer intressant har vi också aktiverat en funktion för att styra fläktens hastighet med hjälp av Triac. Alla dessa kan göras med enkla klick på din IR-fjärrkontroll. Du kan använda vilken som helst av din TV / DVD / MP3-fjärrkontroll för detta projekt. De olika IR-signalerna från fjärrkontrollen tas emot av mikrokontrollern som sedan styr respektive reläer via en reläkrets. Dessa reläer används för att ansluta och koppla bort AC-belastningarna (lampor / fläkt).
Arbetsförklaring:
Arbetet med detta projekt är ganska enkelt att förstå. När du trycker på en knapp på IR-fjärrkontrollen skickar den en sekvens av kod i form av kodade pulser med 38 KHz moduleringsfrekvens. Dessa pulser tas emot av TSOP1738- sensorn och läses sedan av styrenheten. Styrenheten avkodar sedan det mottagna pulståg till ett hex-värde och jämför det med de fördefinierade hex-värdena i vårt program.
Om någon matchning inträffar utför styrenheten en relativ operation genom att utlösa respektive relä / Triac och motsvarande resultat indikeras också av inbyggda lysdioder. Här i det här projektet har vi använt fyra glödlampor (små glödlampor) i olika färger eftersom belysningslaster och en annan glödlampa (större glödlampa) anses vara en fläkt för demonstrationsändamål.
Vi har valt tangent 1 för att växla relä1, 2 för att växla relä2, 3 för att växla relä3, 4 för att växla relä4 och Vol + för att öka fläkthastigheten och Vol- för att minska fläktens hastighet.
Obs: Här har vi använt 100 watt glödlampa istället för en fläkt.
Det finns många typer av IR-fjärrkontroller tillgängliga för olika enheter, men de flesta arbetar runt 38 kHz frekvens. Här i det här projektet kontrollerar vi hushållsapparater med IR-fjärrkontroll och för att upptäcka IR-signaler använder vi en TSOP1738 IR-mottagare. Denna TSOP1738-sensor känner av 38 kHz frekvenssignal. Arbetet med IR-fjärrkontrollen och TSOP1738 beskrivs i detalj i den här artikeln: IR-sändare och mottagare
Vår PIC-mikrokontroller arbetar vid + 5V och reläerna arbetar på + 12V, därför använder vi en transformator för att trappa ner 220V växelström och rätta till den med en fullbrygglikriktare. Denna likriktade likspänning regleras sedan till + 12V och + 5V med hjälp av regulatorns IC 7812 respektive 7805.
För att utlösa reläet använder vi transistorer som BC547 som kan fungera som en elektronisk omkopplare för att slå PÅ / AV reläer baserat på signalen från PIC-mikrokontrollen. För att styra hastigheten på fläkten använder vi en TRIAC. TRIAC är en halvledare som kan styra utspänningen. denna funktion används för att styra fläktens hastighet.
Vi har också använt en Triac Driver för att styra Triac med vår PIC-mikrokontroller. Denna drivrutin används för att ge Triac en skjutvinkelpuls så att uteffekten kan regleras. Här har vi använt 6 nivåer av hastighetskontroll. När nivån är 0 är fläkten avstängd. När nivån blir 1 blir hastigheten 1/5 av full hastighet. När nivån blir 2 blir hastigheten 2/5 av full hastighet respektive för andra. Den aktuella hastighetsnivån kan övervakas med hjälp av den inbyggda 7-segmentsdisplayen.
Blockdiagrammet för projektet visas nedan.
Komponenter:
Komponenterna som krävs för att bygga detta projekt ges nedan:
- PIC18f2520 Microcontroller -1
- TSOP1738 -1
- IR TV / DVD Remote -1
- Transistor BC547 -4
- Reläer 12 volt -4
- Glödlampa med hållare -5
- Anslutningskablar -
- EasyEda PCB -1
- 16x2 LCD
- Strömförsörjning 12v
- Anslutningskontakt 2-stift `-8
- Anslutningskontakt 3 stift -1
- Transformator 12-0-12 -1 -
- Spänningsregulator 7805 -1
- Spänningsregulator 7812 -1
- Kondensator 1000uf -1
- Kondensator 10uf -1
- Kondensator 0.1uf -1
- Kondensator 0.01uf 400V '-1
- 10k -5
- 1k -5
- 100ohm -7
- Vanligt katodesegment -1
- 1n4007-diod -10
- BT136 triac -1
- Manlig / kvinnlig rubrik -
- Lysdioder -6
- Optokopplare moc3021 -1
- Optokopplare mtc2e eller 4n35 -1
- 20Mhz kristall -1
- 33pf kondensator -2
- 5.1v zenerdiod -1
- 47 ohm 2 watt motstånd -1
Alla dessa komponenter används ofta och kan enkelt köpas. Men om du letar efter ett bästa köp online rekommenderar vi dig LCSC.
LCSC är en bra onlinebutik för att köpa dina elektronikkomponenter för alla typer av projekt. De har cirka 25 000 typer av komponenter och det bästa är att de säljer även små kvantiteter för små projekt och de har också Global Shipping.
Avkodning av IR-fjärrkontrollen:
Som sagt tidigare kan du använda vilken fjärrkontroll som helst för ditt projekt. Men vi måste veta vilken typ av signal som genereras för från just den fjärrkontrollen. För varje enskild knapp på fjärrkontrollen kommer det att finnas ett motsvarande HEX-värde för den nyckeln. Med hjälp av detta HEX-värde kan vi skilja mellan varje nyckel på vår mikrokontrollersida. Så innan vi bestämmer oss för att använda en fjärrkontroll bör vi känna till HEX-värdet för de förinställda tangenterna i just den fjärrkontrollen. I det här projektet har vi använt en NEC-fjärrkontroll. HEX-värdena för knapparna på en NEC-fjärrkontroll ges nedan.
Som du kan märka har HEX-värdet 7 tecken, varav endast de två sista skiljer sig, därför kan vi bara överväga de två sista siffrorna för att skilja mellan varje tangent.
Kretsschema:
Schemat för projektet visas nedan.
Ovanstående schema gjordes enkelt med hjälp av esayEDA schematisk redigerare eftersom de tillhandahåller layouterna för alla komponenter som används i detta projekt. Det kräver inte heller någon installation och kan användas online när du är på språng.
Pinouts och komponentvärden anges tydligt i schemat ovan. Du kan också ladda ner den schematiska filen härifrån.
Programmering:
Programmet för detta projekt görs med MPLABX, koden är också ganska enkel och lätt att förstå. Den kompletta koden kommer att ges i slutet av denna handledning, ytterligare några viktiga bitar av programmet förklaras nedan.
I början av koden bör vi inkludera nödvändiga bibliotek, definiera stiften och deklarera variablerna.
#omfatta
Efter det har vi skapat en enkel fördröjningsfunktion genom att använda “for” -slingan.
tomrumsfördröjning (int-tid) {för (int i = 0; i
Efter det har vi initierat timern med hjälp av följande funktion
ogiltig timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Timer Clock Source är från Prescaler T0CS = 0; // Prescaler får klocka från FCPU (5MHz) T08BIT = 0; // 16 BIT MODE TMR0IE = 1; // Aktivera TIMER0 Avbryt PEIE = 1; // Enable Peripheral Interrupt GIE = 1; // Aktivera INT globalt TMR0ON = 1; // Starta nu timern! }
Nu i huvudfunktionen har vi anvisningar till de valda stiften och initierat timer och extern avbrott int0 för att detektera nollkorsning.
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; timer(); INTEDG0 = 0; // Avbryt på fallande kant INT0IE = 1; // Aktivera INT0 extern avbrott (RB0) INT0IF = 0; // Rensar INT0 Extern avbrottsflaggbit PEIE = 1; // Enable Peripheral Interrupt GIE = 1; // Aktivera INT globalt
Nu använder vi här inget avbrotts- eller inspelnings- och jämförelseläge för att upptäcka IR-signal. Här har vi precis använt en digital stift för att läsa data precis som vi läser en tryckknapp. När signalen går högt eller lågt sätter vi bara avvisningsmetoden och kör timern. När PIN-kod ändrar sitt tillstånd till ett annat sparas tidsvärden i en matris.
IR fjärrskick logik 0 som 562.5us och logik 1 som 2250us. När timer läser runt 562.5us antar vi att det är 0 och när timer läser runt 2250us antar vi det som 1. Sedan konverterar vi det i hex.
Den inkommande signalen från fjärrkontrollen innehåller 34 bitar. Vi lagrar alla byte i matrisen och avkodar sedan den sista byte som ska användas.
medan (ir == 1); INT0IE = 0; medan (ir == 0); TMR0 = 0; medan (ir == 1); i ++; dat = TMR0; om (dat> 5000 && dat <12000) {} annat {i = 0; INT0IE = 1; } om (i> = 33) {GIE = 0; fördröjning (50); cmd = 0; för (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; annars om (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Ovanstående kod kod tar emot och avkodar IR-signalen med hjälp av timeravbrott och lagrar motsvarande HEX-värde i variabeln cmd. Nu kan vi jämföra detta HEX-värde (cmd-variabel) med våra fördefinierade HEX-värden och växla reläet som visas nedan
om (cmd == 0xAF) {relä1 = ~ relä1; rly1LED = ~ rly1LED; } annars om (cmd == 0x27) {relä2 = ~ relä2; rly2LED = ~ rly2LED; } annat om (cmd == 0x07) {relä3 = ~ relä3; rly3LED = ~ rly3LED; } annat om (cmd == 0xCF) {relä4 = ~ relä4; rly4LED = ~ rly4LED; } annat om (cmd == 0x5f) {hastighet ++; om (hastighet> 5) {hastighet = 5; }} annat om (cmd == 0x9f) {hastighet--; om (hastighet <= 0) {hastighet = 0; }}
Nu för att veta vid vilken vår fläkt arbetar för närvarande bör vi använda en 7-segmentsdisplay. Följande rader används för att instruera stiften på 7-segmentsdisplayen.
om (hastighet == 5) // avstängd 5x2 = 10ms triger // hastighet 0 {PORTA = 0xC0; // visa 0 RB6 = 1; fanLED = 0; } annat om (hastighet == 4) // 8 ms trigger // hastighet 1 {PORTA = 0xfc; // visar 1 RB6 = 1; fanLED = 1; } annat om (hastighet == 3) // 6 ms trigger // hastighet 2 {PORTA = 0xE4; // visar 2 RB6 = 0; fanLED = 1; } annat om (speed == 2) // 4ms trigger // speed 3 {PORTA = 0xF0; // visar 3 RB6 = 0; fanLED = 1; } annat om (speed == 1) // 2ms trigger // speed 4 {PORTA = 0xD9; // visar 4 RB6 = 0; fanLED = 1; } annat om (hastighet == 0) // 0ms trigger // hastighet 5 full effekt {PORTA = 0xD2; // visar 5 RB6 = 0; fanLED = 1; }
Funktionen nedan är för extern avbrott och tidsöverflöde. Denna funktion är ansvarig för att upptäcka nollkorsning och körning av Triac.
tomrumsavbrott isr () {if (INT0IF) {fördröjning (hastighet); tric = 1; för (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Kontrollera om det är TMR0 Overflow ISR {TMR0IF = 0; }}
Det slutliga kretskortet för denna IR-fjärrstyrda hemautomation ser ut som visas nedan:
Krets- och kretskortsdesign med EasyEDA:
För att designa denna fjärrkontrollhemautomation har vi använt EasyEDA, som är ett gratis EDA-verktyg online för att skapa kretsar och kretskort på ett sömlöst sätt. Vi har tidigare beställt några kretskort från EasyEDA och använder fortfarande deras tjänster eftersom vi hittade hela processen, från att dra kretsar till att beställa kretskort, mer bekvämt och effektivt jämfört med andra kretskorttillverkare. EasyEDA erbjuder kretsritning, simulering, PCB-design gratis och erbjuder också högkvalitativ men lågt pris Anpassad PCB-tjänst. Se här för en fullständig handledning om hur man använder Easy EDA för att skapa scheman, PCB-layouter, simulera kretsar etc.
EasyEDA förbättras dag för dag; de har lagt till många nya funktioner och förbättrat den övergripande användarupplevelsen, vilket gör EasyEDA enklare och användbart för design av kretsar. De kommer snart att lansera dess Desktop-version, som kan laddas ner och installeras på din dator för offline-användning.
I EasyEDA kan du göra din krets- och kretskortsdesign offentlig så att andra användare kan kopiera eller redigera dem och dra nytta av det, vi har också gjort hela krets- och kretskortlayouterna offentliga för denna fjärrkontroll Hemautomation.
Nedan är ögonblicksbilden av toppskiktet av PCB-layout från EasyEDA, du kan se vilket lager som helst (Top, Bottom, Topsilk, bottomsilk etc) på PCB genom att välja lagret från 'Layers' Window.
Beräkning och beställning av PCB-prover online:
Efter att ha slutfört designen av PCB kan du klicka på ikonen för Fabrication-utdata , som tar dig till PCB-beställningssidan. Här kan du se din PCB i Gerber Viewer eller ladda ner Gerber-filer på din PCB och skicka dem till valfri tillverkare, det är också mycket enklare (och billigare) att beställa det direkt i EasyEDA. Här kan du välja antalet PCB du vill beställa, hur många kopparlager du behöver, PCB-tjockleken, kopparvikten och till och med PCB-färgen. När du har valt alla alternativ klickar du på "Spara i kundvagn" och slutför din beställning, så kommer du att få dina kretskort inom några dagar.
Du kan beställa denna PCB direkt eller ladda ner Gerber-filen med den här länken.
Efter några dagars beställning av kretskort fick vi kretskorten. Brädorna som vi fick visas nedan.
När vi fick PCB: erna monterade jag alla nödvändiga komponenter över PCB, och slutligen har vi vår IR-fjärrstyrda hemautomation klar, kontrollera den här kretsen som fungerar i demonstrationsvideo i slutet av artikeln.