- Komponenter, der kræves
- Arbejde med AC-ventilatorstyring ved hjælp af Arduino
- 1. Nulkrydsningsdetektor
- 2. Fase vinkelstyrende kredsløb
- 3. Potentiometer til styring af blæserhastigheden
- 4. PWM-signalgenereringsenhed
- Kredsløbsdiagram
- Programmering af Arduino til AC-ventilatorhastighedskontrol
ADVARSEL!! Kredsløbsdiagrammet diskuteret i dette projekt er kun til uddannelsesmæssige formål. Vær opmærksom på, at arbejde med 220V AC-netspænding kræver ekstrem forsigtighed, og sikkerhedsprocedurer skal følges. Rør ikke ved nogen af komponenterne eller ledningerne, når kredsløbet er i drift.
Det er let at tænde eller slukke for ethvert husholdningsapparat ved hjælp af en switch eller ved hjælp af en kontrolmekanisme, som vi gjorde i mange Arduino-baserede Home Automation-projekter. Men der er mange applikationer, hvor vi skal styre vekselstrømmen delvist, for eksempel for at kontrollere blæserens hastighed eller en lampes intensitet. I dette tilfælde anvendes PWM-teknikken, så her lærer vi, hvordan man bruger Arduino-genereret PWM til at styre AC-blæserhastighed med Arduino.
I dette projekt vil vi demonstrere Arduino AC-ventilatorhastighedskontrol ved hjælp af TRIAC. Her anvendes fasestyrende metode til AC-signalet til at kontrollere AC-blæserhastigheden ved hjælp af PWM-signaler genereret af Arduino. I den foregående vejledning styrede vi DC-blæserhastigheden ved hjælp af PWM.
Komponenter, der kræves
- Arduino UNO
- 4N25 (nul krydsdetektor)
- 10k Potentiometer
- MOC3021 0pto-kobling
- (0-9) V, 500 mA Stepdown Transformer
- BT136 TRIAC
- 230 VAC aksial AC-blæser
- Tilslutning af ledninger
- Modstande
Arbejde med AC-ventilatorstyring ved hjælp af Arduino
Arbejdet kan opdeles i fire forskellige dele. De er som følger
1. Nulkrydsningsdetektor
2. Fasevinkelstyringskredsløb
3. Potentiometer til styring af ventilatorhastighedsmængden
4. PWM-signalgenereringskredsløb
1. Nulkrydsningsdetektor
Den vekselstrømsforsyning, vi får i vores husstand, er 220 v vekselstrøm, 50 Hz. Dette vekselstrømssignal skifter af natur og ændrer dets polaritet periodisk. I den første halvdel af hver cyklus strømmer den i en retning og når en spids og falder derefter ned til nul. Derefter strømmer den i den næste halve cyklus i skiftevis retning (negativ) til en spids og når derefter nul. For at kontrollere hastigheden på AC-ventilatoren skal spændingen i begge halvcykler hugges eller styres. Til dette skal vi registrere det nulpunkt, hvorfra signalet skal styres / hugges. Dette punkt på spændingskurven, hvor spændingen ændrer retning, kaldes nul spændingskrysning.
Nedenstående kredsløb er nulkrydsningsdetektorkredsløbet, der bruges til at få nulkrydsningsstedet. Først trappes 220V vekselspændingen ned til 9V vekselstrøm ved hjælp af en nedadgående transformer, og den fødes derefter til en 4N25 optokobler ved sin pin 1 og 2. 4N25 optocoupler har en indbygget LED med pin 1 som anode og pin 2 som en katode. Så som i nedenstående kredsløb, når vekselstrømsbølgen går tættere på nul-krydsningspunktet, bliver den indbyggede LED på 4N25 slukket, og som et resultat vil udgangstransistoren på 4N25 også blive slukket, og udgangspulsstiften vil få trukket op til 5V. Tilsvarende når signalet stiger gradvist til toppenpunkt, så tænder LED'en, og transistoren tænder også med jordstiften tilsluttet udgangsstiften, hvilket gør denne pin 0V. Ved hjælp af denne puls kan nul-krydsningspunktet detekteres ved hjælp af Arduino.
2. Fase vinkelstyrende kredsløb
Efter at have detekteret punktet med nul krydsning, skal vi nu kontrollere mængden af timing, som strømmen vil være TIL og FRA. Dette PWM-signal bestemmer mængden af spændingsoutput til vekselstrømsmotoren, som igen styrer hastigheden på den. Her anvendes en BT136 TRIAC, som styrer vekselstrømmen, da den er en strømelektronisk afbryder til styring af et vekselstrømsignal.
TRIAC er en tre-terminal vekselstrømsafbryder, der kan udløses af et lavenergisignal ved portens terminal. I SCR'er udføres den kun i en retning, men i tilfælde af TRIAC kan strømmen styres i begge retninger. For at lære mere om TRIAC og SCR, følg vores tidligere artikler.
Som vist i figuren ovenfor udløses TRIAC i en skydevinkel på 90 grader ved at anvende et lille portpulssignal til det. Tiden “t1” er den forsinkelsestid, der er angivet i henhold til dæmpningskravet. For eksempel er fyringsvinklen i dette tilfælde 90 procent, hvorefter effektudgangen også halveres, og lampen vil derfor også lyse med halv intensitet.
Vi ved, at frekvensen af AC-signalet er 50 Hz her. Så tidsperioden vil være 1 / f, hvilket er 20 ms. I en halv cyklus vil dette være 10 ms eller 10.000 mikrosekunder. Derfor kan rækkevidden "t1" varieres fra 0-10000 mikrosekunder til styring af en AC-lampe.
Optokobler:
Optokobler er også kendt som Optoisolator. Det bruges til at opretholde isolation mellem to elektriske kredsløb som DC- og AC-signaler. Dybest set består den af en LED, der udsender infrarødt lys og fotosensoren, der registrerer det. Her bruges en MOC3021-optokobler til at styre AC-blæseren fra mikrocontrollersignalerne, som er et DC-signal.
TRIAC og Optocoupler forbindelsesdiagram:
3. Potentiometer til styring af blæserhastigheden
Her bruges et potentiometer til at variere hastigheden på AC-blæser. Vi ved, at et potentiometer er en 3 terminalenhed, der fungerer som en spændingsdeler og giver en variabel spændingsudgang. Denne variable analoge udgangsspænding gives på Arduino analoge indgangsterminal for at indstille hastighedsværdien på AC-blæseren.
4. PWM-signalgenereringsenhed
I det sidste trin tildeles en PWM-puls til TRIAC i henhold til hastighedskravene, hvilket igen varierer ON / OFF-timingen for AC-signalet og giver en variabel udgang til styring af blæserhastigheden. Her bruges Arduino til at generere PWM-puls, som tager input fra potentiometeret og giver PWM-signaloutput til TRIAC og optokoblingskredsløb, som yderligere driver AC-blæseren med den ønskede hastighed. Lær mere om PWM-generation ved hjælp af Arduino her.
Kredsløbsdiagram
Kredsløbsdiagram for dette Arduino-baserede 230v ventilatorhastighedsreguleringskredsløb er angivet nedenfor:
Bemærk: Jeg har kun vist hele kredsløbet på et brødbræt for at forstå det. Du bør ikke bruge 220V vekselstrømforsyning direkte på dit brødbræt, jeg har brugt et prikket kort til at oprette forbindelserne, som du kan se på billedet nedenfor
Programmering af Arduino til AC-ventilatorhastighedskontrol
Efter hardwareforbindelsen skal vi oprette koden til Arduino, som genererer et PWM-signal til styring af AC-signalets ON / OFF-timing ved hjælp af et potentiometer-input. Vi har tidligere brugt PWM-teknikker i mange projekter.
Den komplette kode for dette Arduino AC-ventilatorhastighedsreguleringsprojekt er angivet i bunden af dette projekt. Den trinvise forklaring af koden er givet nedenfor.
I det første trin skal du erklære alle de nødvendige variabler, som skal bruges i hele koden. Her er BT136 TRIAC forbundet til pin 6 i Arduino. Og den variable hastighed_val erklæres for at gemme værdien af hastighedstrinnet.
int TRIAC = 6; int speed_val = 0;
Derefter erklærer TRIAC- stiften inden i installationsfunktionen som output, da PWM-output genereres gennem denne pin. Konfigurer derefter en afbrydelse for at registrere nulkrydsningen. Her har vi brugt en funktion kaldet attachInterrupt, som konfigurerer den digitale pin 3 i Arduino som ekstern afbrydelse og kalder funktionen kaldet zero_crossing, når den registrerer afbrydelser ved dens pin.
ugyldig opsætning () {pinMode (LAMP, OUTPUT); attachInterrupt (digitalPinToInterrupt (3), zero_crossing, CHANGE); }
Inde i den uendelige sløjfe skal du læse den analoge værdi fra potentiometeret, der er forbundet med A0, og kortlægge det til et værdiområde på (10-49).
For at finde ud af dette interval skal vi lave en lille beregning. Tidligere fortælles det, at hver halve cyklus svarer til 10.000 mikrosekunder. Så her kontrolleres dæmpningen i 50 trin, hvilket er en vilkårlig værdi og kan ændres. Her tages minimumstrinene som 10, ikke nul, fordi 0-9 trin giver omtrent den samme effekt, og de maksimale trin tages som 49, da det praktisk talt ikke anbefales at tage den øvre grænse (hvilket er 50 i dette tilfælde).
Derefter kan hvert trin beregnes som 10000/50 = 200 mikrosekunder. Dette vil blive brugt i den næste del af koden.
ugyldig sløjfe () {int pot = analogRead (A0); int data1 = kort (pot, 0, 1023,10,49); speed_val = data1; }
I det sidste trin skal du konfigurere den afbrydelsesdrevne funktion zero_crossing. Her kan dæmpningstiden beregnes ved at gange det enkelte trin med nr. trin. Efter denne forsinkelsestid kan TRIAC udløses ved hjælp af en lille høj puls på 10 mikrosekunder, hvilket er tilstrækkeligt til at tænde en TRIAC.
ugyldig zero_crossing () {int chop_time = (200 * speed_val); delayMicroseconds (chop_time); digitalWrite (TRIAC, HIGH); forsinkelseMikrosekunder (10); digitalWrite (TRIAC, LOW); }
Komplet kode sammen med en fungerende video til denne AC-ventilatorstyring ved hjælp af Arduino og PWM er angivet nedenfor.