- Componenten vereist
- Werking van AC-ventilatorregeling met Arduino
- 1. Zero-Crossing-detector
- 2. Fasehoekcontrolecircuit
- 3. Potentiometer om de ventilatorsnelheid te regelen
- 4. PWM-signaalgeneratie-eenheid
- Schakelschema
- Programmering van de Arduino voor AC-ventilatorsnelheidsregeling
WAARSCHUWING!! Het schakelschema dat in dit project wordt besproken, is alleen voor educatieve doeleinden. Houd er rekening mee dat het werken met 220 V AC-netspanning extreme voorzorgsmaatregelen vereist en dat veiligheidsprocedures moeten worden gevolgd. Raak geen van de componenten of draden aan wanneer het circuit in werking is.
Het is gemakkelijk om elk huishoudelijk apparaat aan of uit te zetten door een schakelaar te gebruiken of door een bedieningsmechanisme te gebruiken, zoals we deden in veel Arduino-gebaseerde domotica-projecten. Maar er zijn veel toepassingen waarbij we de wisselstroom gedeeltelijk moeten regelen, bijvoorbeeld om de snelheid van de ventilator of de intensiteit van een lamp te regelen. In dit geval wordt de PWM-techniek gebruikt, dus hier zullen we leren hoe we door Arduino gegenereerde PWM kunnen gebruiken om de AC-ventilatorsnelheid met Arduino te regelen.
In dit project zullen we de Arduino AC-ventilatorsnelheidsregeling demonstreren met behulp van TRIAC. Hier wordt de fasecontrolemethode van het AC-signaal gebruikt om de AC-ventilatorsnelheid te regelen, met behulp van PWM-signalen gegenereerd door Arduino. In de vorige tutorial hebben we de DC-ventilatorsnelheid geregeld met PWM.
Componenten vereist
- Arduino UNO
- 4N25 (nuldoorgangsdetector)
- 10k Potentiometer
- MOC3021 0pto-koppeling
- (0-9) V, 500 mA stepdown-transformator
- BT136 TRIAC
- 230 VAC Axiale AC-ventilator
- Draden aansluiten
- Weerstanden
Werking van AC-ventilatorregeling met Arduino
De werking kan worden onderverdeeld in vier verschillende delen. Ze zijn als volgt
1. Zero-Crossing Detector
2. Fasehoekregelcircuit
3. Potentiometer om de ventilatorsnelheid te regelen
4. PWM-signaalgeneratiecircuit
1. Zero-Crossing-detector
De AC-voeding die we in ons huishouden krijgen, is 220v AC RMS, 50 HZ. Dit wisselspanningssignaal is afwisselend van aard en verandert periodiek van polariteit. In de eerste helft van elke cyclus stroomt het in één richting en bereikt het een piekspanning en neemt het vervolgens af tot nul. Vervolgens stroomt het in de volgende halve cyclus in afwisselende richting (negatief) naar een piekspanning en komt dan weer naar nul. Om de snelheid van de AC-ventilator te regelen, moet de piekspanning van beide halve cycli worden gehakt of gecontroleerd. Hiervoor moeten we het nulpunt detecteren van waaruit het signaal moet worden bestuurd / gehakt. Dit punt op de spanningscurve waar de spanning van richting verandert, wordt nulspanningsovergang genoemd.
Het onderstaande circuit is het nuldoorgangsdetectorcircuit dat wordt gebruikt om het nuldoorgangspunt te krijgen. Ten eerste wordt de 220 V AC-spanning verlaagd naar 9 V AC met behulp van een step-down transformator en wordt deze vervolgens toegevoerd aan een 4N25 optocoupler op pin 1 en 2. 4N25 optocoupler heeft een ingebouwde LED met pin 1 als anode en pin 2 als een kathode. Dus volgens het onderstaande circuit, wanneer de AC-golf dichter bij het nuldoorgangspunt komt, wordt de ingebouwde LED van 4N25 uitgeschakeld en als gevolg daarvan wordt de uitgangstransistor van 4N25 ook uitgeschakeld en zal de uitgangsimpulspen worden uitgeschakeld. word opgetrokken tot 5V. Evenzo wanneer het signaal geleidelijk toeneemt tot de piekpunt, dan gaat de LED AAN en zal de transistor ook AAN gaan met de aardpen aangesloten op de uitgangspen, waardoor deze pen 0V is. Met behulp van deze puls kan met Arduino het nuldoorgangspunt worden gedetecteerd.
2. Fasehoekcontrolecircuit
Nadat we het punt van nuldoorgang hebben gedetecteerd, moeten we nu de hoeveelheid timing regelen waarvoor de stroom AAN en UIT zal zijn. Dit PWM-signaal bepaalt de hoeveelheid uitgangsspanning naar de AC-motor, die op zijn beurt de snelheid ervan regelt. Hier wordt een BT136 TRIAC gebruikt, die de wisselspanning regelt, aangezien het een vermogenselektronische schakelaar is voor het regelen van een wisselspanningssignaal.
TRIAC is een AC-schakelaar met drie aansluitingen die kan worden geactiveerd door een laag-energiesignaal op de gate-aansluiting. Bij SCR's geleidt het slechts in één richting, maar in het geval van TRIAC kan het vermogen in beide richtingen worden geregeld. Volg onze vorige artikelen voor meer informatie over TRIAC en SCR.
Zoals te zien is in de bovenstaande afbeelding, wordt de TRIAC geactiveerd onder een afvuurhoek van 90 graden door er een klein poortpulssignaal op toe te passen. De tijd "t1" is de vertragingstijd die wordt gegeven volgens de dimbehoefte. In dit geval is de ontstekingshoek bijvoorbeeld 90 procent, dus het vermogen wordt ook gehalveerd en de lamp zal dus ook met halve intensiteit gloeien.
We weten dat de frequentie van het AC-signaal hier 50 Hz is. De tijdsperiode is dus 1 / f, wat 20 ms is. Voor een halve cyclus is dit 10 ms of 10.000 microseconden. Voor het regelen van het vermogen van een AC-lamp kan het bereik van "t1" dus worden gevarieerd van 0-10000 microseconden.
Optocoupler:
Optocoupler is ook bekend als Optoisolator. Het wordt gebruikt om isolatie te behouden tussen twee elektrische circuits, zoals DC- en AC-signalen. In wezen bestaat het uit een LED die infrarood licht uitzendt en de fotosensor die het detecteert. Hier wordt een MOC3021 optocoupler gebruikt om de AC-ventilator te besturen vanuit de microcontrollersignalen, wat een DC-signaal is.
Aansluitschema TRIAC en Optocoupler:
3. Potentiometer om de ventilatorsnelheid te regelen
Hier wordt een potentiometer gebruikt om de snelheid van de AC-ventilator te variëren. We weten dat een potentiometer een apparaat met drie aansluitingen is dat als spanningsdeler fungeert en een variabele uitgangsspanning levert. Deze variabele analoge uitgangsspanning wordt gegeven op de analoge ingangsklem van de Arduino om de snelheidswaarde van de AC-ventilator in te stellen.
4. PWM-signaalgeneratie-eenheid
In de laatste stap wordt een PWM-puls gegeven aan de TRIAC volgens de snelheidsvereisten, die op zijn beurt de AAN / UIT-timing van het AC-signaal varieert en een variabele output levert om de ventilatorsnelheid te regelen. Hier wordt Arduino gebruikt om de PWM-puls te genereren, die de invoer van de potentiometer ontvangt en PWM-signaaluitvoer geeft aan TRIAC en optocouplercircuit dat de AC-ventilator verder aandrijft op de gewenste snelheid. Lees hier meer over het genereren van PWM met Arduino.
Schakelschema
Het schakelschema voor dit op Arduino gebaseerde 230v ventilatorsnelheidsregelcircuit wordt hieronder gegeven:
Opmerking: ik heb het volledige circuit alleen op een breadboard laten zien om het te begrijpen. Gebruik geen 220V AC-voeding rechtstreeks op je breadboard, ik heb een gestippeld bord gebruikt om de aansluitingen te maken, zoals je kunt zien in de onderstaande afbeelding
Programmering van de Arduino voor AC-ventilatorsnelheidsregeling
Na de hardwareverbinding moeten we de code voor Arduino opschrijven, die een PWM-signaal genereert om de AAN / UIT-timing van het AC-signaal te regelen met behulp van een potentiometer-ingang. We gebruikten eerder in veel projecten PWM-technieken.
De volledige code van dit Arduino AC-project voor ventilatorsnelheidsregeling wordt onderaan dit project gegeven. De stapsgewijze uitleg van de code wordt hieronder gegeven.
Declareer in de eerste stap alle vereiste variabelen, die in de hele code zullen worden gebruikt. Hier is de BT136 TRIAC aangesloten op pin 6 van Arduino. En de variabele speed_val wordt gedeclareerd om de waarde van de snelheidsstap op te slaan.
int TRIAC = 6; int speed_val = 0;
Geef vervolgens binnen de instellingsfunctie de TRIAC- pin aan als uitvoer, aangezien PWM-uitvoer via deze pin wordt gegenereerd. Configureer vervolgens een interrupt om de nuldoorgang te detecteren. Hier hebben we een functie gebruikt genaamd attachInterrupt, die digitale Pin 3 van Arduino zal configureren als externe interrupt en de functie met de naam zero_crossing zal aanroepen wanneer het enige interrupts op zijn pin detecteert.
leegte setup () {pinMode (LAMP, OUTPUT); attachInterrupt (digitalPinToInterrupt (3), zero_crossing, CHANGE); }
Lees in de oneindige lus de analoge waarde van de potentiometer die is aangesloten op A0 en wijs deze toe aan een waardebereik van (10-49).
Om dit bereik te achterhalen, moeten we een kleine berekening maken. Eerder werd verteld dat elke halve cyclus equivalent is aan 10.000 microseconden. Hier wordt het dimmen dus in 50 stappen geregeld, wat een willekeurige waarde is en kan worden gewijzigd. Hier worden de minimale stappen genomen als 10, niet nul, omdat 0-9 stappen ongeveer hetzelfde vermogen geven en maximale stappen worden genomen als 49, aangezien het praktisch niet wordt aanbevolen om de bovengrens te nemen (wat in dit geval 50 is).
Vervolgens kan elke staptijd worden berekend als 10000/50 = 200 microseconden. Dit wordt in het volgende deel van de code gebruikt.
ongeldige lus () {int pot = analogRead (A0); int data1 = map (pot, 0, 1023,10,49); speed_val = data1; }
Configureer in de laatste stap de interruptgestuurde functie zero_crossing. Hier kan de dimtijd worden berekend door de individuele staptijd te vermenigvuldigen met nr. van stappen. Na deze vertragingstijd kan de TRIAC worden geactiveerd met een kleine hoge puls van 10 microseconden, wat voldoende is om een TRIAC in te schakelen.
void zero_crossing () {int chop_time = (200 * speed_val); delayMicroseconds (chop_time); digitalWrite (TRIAC, HIGH); delayMicroseconds (10); digitalWrite (TRIAC, LOW); }
Volledige code samen met een werkende video voor deze AC-ventilatorregeling met Arduino en PWM wordt hieronder gegeven.