- Komponenter kreves
- Arbeid med AC-viftekontroll ved hjelp av Arduino
- 1. Null kryssdetektor
- 2. Fase vinkelstyrende krets
- 3. Potensiometer for å kontrollere viftehastigheten
- 4. PWM-signalgenereringsenhet
- Kretsdiagram
- Programmering av Arduino for AC-viftehastighetskontroll
ADVARSEL!! Kretsskjemaet som er diskutert i dette prosjektet, er kun for pedagogiske formål. Vær oppmerksom på at arbeid med 220V vekselstrøm krever ekstrem forsiktighet, og sikkerhetsprosedyrer bør følges. Ikke berør noen av komponentene eller ledningene når kretsen er i drift.
Det er enkelt å slå på eller av et husholdningsapparat ved å bruke en bryter eller ved å bruke en kontrollmekanisme som vi gjorde i mange Arduino-baserte hjemmeautomatiseringsprosjekter. Men det er mange applikasjoner der vi trenger å kontrollere vekselstrømmen delvis, for eksempel for å kontrollere hastigheten på viften eller intensiteten til en lampe. I dette tilfellet brukes PWM-teknikken, så her vil vi lære hvordan du bruker Arduino-generert PWM for å kontrollere viftehastigheten med Arduino.
I dette prosjektet vil vi demonstrere Arduino viftehastighetskontroll ved hjelp av TRIAC. Her brukes fasestyrende metode for vekselstrømssignalet for å kontrollere viftehastigheten, ved bruk av PWM-signaler generert av Arduino. I forrige opplæring kontrollerte vi DC-viftehastigheten ved hjelp av PWM.
Komponenter kreves
- Arduino UNO
- 4N25 (null kryssdetektor)
- 10k potensiometer
- MOC3021 0-kobling
- (0-9) V, 500 mA Stepdown Transformer
- BT136 TRIAC
- 230 VAC aksial AC-vifte
- Koble ledninger
- Motstander
Arbeid med AC-viftekontroll ved hjelp av Arduino
Arbeidet kan deles inn i fire forskjellige deler. De er som følger
1. Null kryssdetektor
2. Fasevinkelstyringskrets
3. Potensiometer for å kontrollere mengde viftehastighet
4. PWM signalgenereringskrets
1. Null kryssdetektor
Vekselstrømforsyningen vi får i husstanden vår er 220 v vekselstrøm, 50 Hz. Dette vekselstrømssignalet er vekslende og endrer polariteten med jevne mellomrom. I første halvdel av hver syklus strømmer den i en retning og når en toppspenning og senker deretter ned til null. Så i den neste halvsyklusen flyter den i alternativ retning (negativ) til en toppspenning og kommer igjen til null. For å kontrollere hastigheten på viften, må toppspenningen til begge halvsyklusene hakkes eller kontrolleres. For dette må vi oppdage nullpunktet signalet skal styres / hakkes fra. Dette punktet på spenningskurven der spenningen endrer retning kalles null spenningskryssing.
Kretsen vist nedenfor er nullkryssdetektorkretsen som brukes til å få nullkryssingspunktet. Først trappes 220V vekselstrøm ned til 9V vekselstrøm ved hjelp av en nedtransformator, og den mates deretter til en 4N25 optokobler ved pin 1 og 2. 4N25 optocoupler har en innebygd LED med pin 1 som anode og pin 2 som en katode. Så i henhold til kretsen nedenfor, når vekselstrømsbølgen går nærmere nullpunktet, vil den innebygde LED-en på 4N25 bli slått av, og som et resultat vil utgangstransistoren til 4N25 også bli slått AV og utgangspulsstiften vil bli trukket opp til 5V. Tilsvarende når signalet øker gradvis til toppenpunkt, så slås LED-en PÅ og transistoren vil også slå PÅ med jordpinnen koblet til utgangspinnen, noe som gjør denne pinnen 0V. Ved hjelp av denne pulsen kan nullkryssingspunktet oppdages ved hjelp av Arduino.
2. Fase vinkelstyrende krets
Etter å ha oppdaget punktet med null kryssing, må vi nå kontrollere hvor mye tid som strømmen vil være PÅ og AV. Dette PWM-signalet vil bestemme mengden spenning som sendes til vekselstrømsmotoren, som igjen styrer hastigheten på den. Her brukes en BT136 TRIAC, som styrer vekselstrømmen, siden den er en kraftelektronisk bryter for å kontrollere et vekselstrømssignal.
TRIAC er en tre-terminal vekselstrømbryter som kan utløses av et lavenergisignal ved portterminalen. I SCR leder den bare i en retning, men i tilfelle TRIAC kan kraften styres i begge retninger. For å lære mer om TRIAC og SCR, følg våre tidligere artikler.
Som vist i figuren ovenfor, utløses TRIAC i en skytevinkel på 90 grader ved å bruke et lite portpulssignal til det. Tiden “t1” er forsinkelsestiden som er gitt i henhold til dimningskravet. For eksempel, i dette tilfellet er avfyringsvinkelen 90 prosent, derav vil effekten også bli halvert, og dermed vil lampen også lyse med halv intensitet.
Vi vet at frekvensen til vekselstrømssignalet er 50 Hz her. Så tidsperioden vil være 1 / f, som er 20ms. I en halv syklus vil dette være 10ms eller 10.000 mikrosekunder. Derfor for å kontrollere kraften til en AC-lampe, kan området "t1" varieres fra 0-10000 mikrosekunder.
Optokobler:
Optokobler er også kjent som Optoisolator. Den brukes til å opprettholde isolasjon mellom to elektriske kretser som DC- og AC-signaler. I utgangspunktet består den av en LED som avgir infrarødt lys og fotosensoren som oppdager det. Her brukes en MOC3021 optokobler til å kontrollere viften fra mikrokontrollersignalene som er et likestrømsignal.
TRIAC og tilkoblingsskjema for optokobler:
3. Potensiometer for å kontrollere viftehastigheten
Her brukes et potensiometer til å variere hastigheten på viften. Vi vet at et potensiometer er en 3 terminalenhet som fungerer som en spenningsdeler og gir en variabel spenningsutgang. Denne variable analoge utgangsspenningen er gitt på Arduino analoge inngangsterminal for å stille hastighetsverdien til viften.
4. PWM-signalgenereringsenhet
I det siste trinnet blir en PWM-puls gitt til TRIAC i henhold til hastighetskravene, som igjen varierer ON / OFF-timingen for AC-signalet og gir en variabel utgang for å kontrollere viftehastigheten. Her brukes Arduino til å generere PWM-pulsen, som tar inngangen fra potensiometeret og gir PWM-signalutgang til TRIAC og optokoblingskrets som videre driver viften med ønsket hastighet. Lær mer om PWM-generering ved hjelp av Arduino her.
Kretsdiagram
Kretsdiagram for denne Arduino-baserte 230v viftehastighetskontrollkretsen er gitt nedenfor:
Merk: Jeg har vist hele kretsen bare på et brødbrett for å forstå det. Du bør ikke bruke 220V vekselstrømforsyning direkte på brødbordet, jeg har brukt et prikket brett for å lage tilkoblingene som du kan se på bildet nedenfor
Programmering av Arduino for AC-viftehastighetskontroll
Etter maskinvaretilkoblingen må vi skrive opp koden for Arduino, som vil generere et PWM-signal for å kontrollere vekselstrømssignalets PÅ / AV-timing ved hjelp av en potensiometerinngang. Vi har tidligere brukt PWM-teknikker i mange prosjekter.
Den komplette koden til dette Arduino viftehastighetsreguleringsprosjektet er gitt nederst i dette prosjektet. Den trinnvise forklaringen av koden er gitt nedenfor.
I det første trinnet, erklær alle nødvendige variabler, som skal brukes gjennom hele koden. Her er BT136 TRIAC koblet til pin 6 på Arduino. Og variabelen speed_val er erklært for å lagre verdien av hastighetstrinnet.
int TRIAC = 6; int speed_val = 0;
Neste, inne i oppsettfunksjonen , erklærer du TRIAC- pinnen som utgang ettersom PWM-utgang genereres gjennom denne pinnen. Konfigurer deretter et avbrudd for å oppdage nullovergangen. Her har vi brukt en funksjon kalt attachInterrupt, som vil konfigurere digital Pin 3 av Arduino som ekstern avbrytelse og vil kalle funksjonen kalt zero_crossing når den oppdager avbrudd ved pin.
ugyldig oppsett () {pinMode (LAMP, UTGANG); attachInterrupt (digitalPinToInterrupt (3), zero_crossing, CHANGE); }
Inne i den uendelige sløyfen , les den analoge verdien fra potensiometeret som er koblet til A0, og kartlegg det til et verdiområde på (10-49).
For å finne ut dette området må vi gjøre en liten beregning. Tidligere ble det fortalt at hver halvsyklus tilsvarer 10.000 mikrosekunder. Så her vil dimmingen bli kontrollert i 50 trinn, som er en vilkårlig verdi og kan endres. Her blir minimumstrinnene tatt som 10, ikke null fordi 0-9 trinn gir omtrent samme effekt og maksimale trinn blir tatt som 49, da det ikke er praktisk anbefalt å ta den øvre grensen (som er 50 i dette tilfellet).
Deretter kan hver trinntid beregnes som 10000/50 = 200 mikrosekunder. Dette vil bli brukt i neste del av koden.
void loop () {int pot = analogRead (A0); int data1 = kart (pot, 0, 1023,10,49); speed_val = data1; }
I siste trinn konfigurerer du den avbruddsdrevne funksjonen null_krysning. Her kan dimningstiden beregnes ved å multiplisere den enkelte trinntiden med nei. av trinn. Etter denne forsinkelsestiden kan TRIAC utløses ved hjelp av en liten høy puls på 10 mikrosekunder som er tilstrekkelig til å slå på en TRIAC.
ugyldig zero_crossing () {int chop_time = (200 * speed_val); delayMicroseconds (chop_time); digitalWrite (TRIAC, HIGH); delayMicroseconds (10); digitalWrite (TRIAC, LOW); }
Komplett kode sammen med en arbeidsvideo for denne viftekontrollen ved hjelp av Arduino og PWM er gitt nedenfor.