I dette projekt vil vi interface et relæ med PIC Microcontroller PIC16F877A. Relæ er en mekanisk enhed til at styre apparater med høj spænding, høj strøm ' TIL ' eller ' FRA ' fra lavere spændingsniveauer. Relæet giver isolation mellem to spændingsniveauer, og det bruges generelt til at styre vekselstrømsapparater. Fra mekaniske til solid state-relæer findes der forskellige typer relæer i elektronik. I dette projekt vil vi bruge mekanisk relæ.
I dette projekt vil vi gøre følgende ting-
- Vi vil interface en switch til input fra brugeren.
- Styr en 220V AC pære med 5V relæ.
- For at kontrollere relæet bruger vi BC547 NPN-transistor, og transistoren styres fra PIC16F877A. En led meddeler relæet TIL eller FRA.
Hvis du er ny hos PIC Microcontroller, skal du starte med Kom godt i gang med PIC Microcontroller.
Komponent påkrævet:
- PIC16F877A
- 20Mhz krystal
- 2 stk. 33pF keramik
- 3 stk 4,7 k modstande
- 1k modstand
- 1 LED
- BC547 Transistor
- 1N4007 Diode
- 5V kubikrelæ
- AC-pære
- Brødbræt
- Ledninger til tilslutning af delene.
- 5V adapter eller en hvilken som helst 5V strømkilde med mindst 200mA nuværende kapaciteter.
Relæ og dets funktion:
Relæet fungerer som den typiske switch. Mekaniske relæer bruger midlertidig magnet fremstillet af elektromagnetisk spole. Når vi leverer tilstrækkelig strøm på tværs af denne spole, blev den energisk og trækker en arm. På grund af dette kan kredsløbet, der er forbundet over relæet, være lukket eller åbent. Input og Output har ingen elektriske forbindelser, og det isolerer således input og output. Lær mere om relæ og dets konstruktioner her.
Relæer findes i forskellige spændingsområder som 5V, 6V, 12V, 18V osv. I dette projekt vil vi bruge 5V relæ, da vores arbejdsspænding er 5 volt her. Dette 5V kubikrelæ er i stand til at skifte 7A belastning ved 240VAC eller 10A belastning ved 110VAC. Men i stedet for den enorme belastning bruger vi en 220VAC-pære og skifter den ved hjælp af relæet.
Dette er 5V-relæet, vi bruger i dette projekt. Den aktuelle rating er tydeligt specificeret for to spændingsniveauer, 10A ved 120VAC og 7A ved 240VAC. Vi er nødt til at forbinde belastning på tværs af relæet mindre end den specificerede klassificering.
Dette relæ har 5 ben. Hvis vi ser pinout, kan vi se-
The L1 og L2 er den interne elektromagnetisk spolens pin. Vi er nødt til at kontrollere disse to ben for at tænde relæet ' ON ' eller ' OFF '. De næste tre ben er POLE, NO og NC. Stangen er forbundet med den interne metalplade, som ændrer forbindelsen, når relæet tænder. I normal tilstand er POLE kortsluttet med NC. NC står for normalt tilsluttet. Når relæet tænder, skifter polen sin position og bliver forbundet med NO. NO står for Normally Open.
I vores kredsløb har vi oprettet relæforbindelse med transistor og diode. Relæ med transistor og diode fås på markedet som relæmodul, så når du bruger relæmodul, behøver du ikke at forbinde dets driverkreds (transistor og diode).
Relæ bruges i alle hjemmeautomatiseringsprojekter til styring af AC-husholdningsapparater.
Kredsløbsdiagram:
Komplet kredsløb til tilslutning af relæ med PIC Microcontroller er angivet nedenfor:
I ovenstående skematisk anvendes pic16F877A, hvor på port B er LED og transistor forbundet, som styres yderligere ved hjælp af TAC-kontakten på RBO. Den R1 giver forspændingsstrøm til transistor. R2 er en pull-down modstand, der bruges på tværs af taktil switch. Det giver logik 0, når der ikke trykkes på kontakten. Den 1N4007 er en klemme diode, der anvendes til relæets elektromagnetiske spole. Når relæet slukkes, er der chancer for højspændingsspidserog dioden vil undertrykke den. Transistoren er påkrævet for at køre relæet, da det kræver mere end 50 mA strøm, som mikrocontrolleren ikke er i stand til at levere. Vi kan også bruge ULN2003 i stedet for transistoren, det er et klogere valg, hvis der kræves mere end to eller tre relæer til applikationen, kontroller relæmodulkredsløbet. Den LED tværs havn RB2 vil anmelde ” relæet tændt ”.
Det sidste kredsløb vil se sådan ud -
Du kan lære at kontrollere relæ med Arduino her, og hvis du virkelig er interesseret i relæ, skal du kontrollere alle relækredsløbene her.
Kode Forklaring:
I begyndelsen af main.c- filen tilføjede vi konfigurationslinjerne til pic16F877A og definerede også pinnavne på tværs af PORTB.
Som altid først skal vi indstille konfigurationsbitene i pic-mikrocontrolleren, definere nogle makroer, inklusive biblioteker og krystalfrekvens. Du kan kontrollere koden for alle dem i den komplette kode, der er angivet i slutningen. Vi lavede RB0 som input. I denne pin er kontakten tilsluttet.
#omfatte
Derefter kaldte vi system_init () -funktionen, hvor vi initialiserede pinretning og også konfigurerede standardtilstanden for stifterne.
I system_init () -funktionen ser vi
ugyldigt system_init (ugyldigt) { TRISBbits.TRISB0 = 1; // Indstilling af Sw som input TRISBbits.TRISB1 = 0; // indstilling af LED som output TRISBbits.TRISB2 = 0; // indstilling af relæstift som output- LED = 0; RELÆ = 0; }
I hovedfunktionen kontrollerer vi konstant kontakttrykket, hvis vi registrerer kontakten, tryk ved at registrere logik højt over RB0; vi venter et stykke tid og ser, om der stadig er trykket på kontakten eller ej. Hvis der stadig trykkes på kontakten, vil vi vende RELAY- og LED-pin-tilstanden.
ugyldigt hoved (ugyldigt) { system_init (); // System gør sig klar, mens (1) { hvis (SW == 1) {// kontakten trykkes __delay_ms (50); // afvis forsinkelse, hvis (SW == 1) {// kontakten stadig er trykket LED =! LED; // invertering af pin-status. RELÆ =! RELÆ; } } } vende tilbage; }
Komplet kode og demonstrationsvideo til denne relægrænseflade er angivet nedenfor.