- Potrebne komponente
- Delovanje krmiljenja ventilatorja z uporabo Arduina
- 1. Detektor ničelnega križanja
- 2. Vezje za nadzor faznega kota
- 3. Potenciometer za nadzor hitrosti ventilatorja
- 4. Enota za generiranje PWM signala
- Shema vezja
- Programiranje Arduina za nadzor hitrosti ventilatorja AC
OPOZORILO!! Shema vezja, obravnavana v tem projektu, je samo za izobraževalne namene. Upoštevajte, da je za delo z napetostjo 220 V izmenične napetosti potreben izreden previdnost in da je treba upoštevati varnostne postopke. Med delovanjem vezja se ne dotikajte nobene komponente ali žic.
Kakršen koli gospodinjski aparat je enostavno vklopiti ali izklopiti s stikalom ali z uporabo kakšnega nadzornega mehanizma, kot smo to storili pri mnogih projektih za avtomatizacijo na daljavo, ki temeljijo na Arduinu. Obstaja pa veliko aplikacij, pri katerih moramo delno nadzorovati izmenično moč, na primer za nadzor hitrosti ventilatorja ali jakosti žarnice. V tem primeru se uporablja tehnika PWM, zato se bomo tukaj naučili, kako uporabiti PWM, ustvarjen z Arduino, za nadzor hitrosti ventilatorja z Arduino.
V tem projektu bomo prikazali nadzor hitrosti ventilatorja Arduino AC z uporabo TRIAC. Tu se za nadzor hitrosti ventilatorja AC uporablja metoda faznega krmiljenja izmeničnega signala z uporabo PWM signalov, ki jih generira Arduino. V prejšnji vadnici smo s PWM nadzorovali hitrost enosmernega ventilatorja.
Potrebne komponente
- Arduino UNO
- 4N25 (detektor ničelnega prehoda)
- 10k potenciometer
- MOC3021 0-sklopka
- (0-9) V, 500 mA Stepdown transformator
- BT136 TRIAC
- 230 VAC Aksialni AC ventilator
- Priključne žice
- Upori
Delovanje krmiljenja ventilatorja z uporabo Arduina
Delo lahko razdelimo na štiri različne dele. Ti so naslednji
1. Detektor ničelnega križanja
2. Krmiljenje faznega kota
3. Potenciometer za nadzor količine hitrosti ventilatorja
4. Vezje za generiranje PWM signala
1. Detektor ničelnega križanja
Oskrba z električno energijo, ki jo dobimo v našem gospodinjstvu, je 220 V efektivne vrednosti AC, 50 HZ. Ta AC signal je izmenične narave in občasno spreminja polarnost. V prvi polovici vsakega cikla teče v eno smer in doseže najvišjo napetost, nato pa se zmanjša na nič. Nato v naslednjem polkrogu teče v izmenični smeri (negativni) do najvišje napetosti in nato spet pride na nič. Za nadzor hitrosti ventilatorja AC je treba vršno napetost obeh polciklov sesekljati ali nadzorovati. Za to moramo zaznati ničelno točko, s katere naj bo signal nadzorovan / sesekljan. Ta točka na napetostni krivulji, kjer napetost spreminja smer, se imenuje prehod brez napetosti.
Spodnje vezje je vezje detektorja prehoda nič, ki se uporablja za doseganje točke prehoda nič. Najprej se napetost 220 V izmeničnega toka s pomočjo padajočega transformatorja zniža na 9 V, nato pa se napaja na optični sklopnik 4N25 na zatičih 1 in 2. Optični sklopnik 4N25 ima vgrajeno LED z zatičem 1 kot anodo in zatičem 2 kot katoda. Torej, glede na spodnje vezje, ko se izmenični val približa točki prehoda nič, se vgrajena LED 4N25 izklopi in posledično se izklopi tudi izhodni tranzistor 4N25 in izhodni impulzni zatič potegnite do 5V. Podobno, ko se signal postopoma povečuje do vrhatočke, potem se LED vklopi in tranzistor se bo vključil tudi z ozemljitvenim zatičem, priključenim na izhodni zatič, zaradi česar je ta zatič 0V. Z uporabo tega impulza je mogoče z Arduinom zaznati točko prehoda nič.
2. Vezje za nadzor faznega kota
Po zaznavanju točke prehoda ničle moramo zdaj nadzorovati količino časa, za katerega bo napajanje vklopljeno in izklopljeno. Ta signal PWM bo določil količino napetosti, ki jo odda AC motor, ta pa nadzira njegovo hitrost. Tu se uporablja BT136 TRIAC, ki nadzoruje izmenično napetost, saj je to močnostno elektronsko stikalo za nadzor izmeničnega napetostnega signala.
TRIAC je trikončno AC stikalo, ki ga lahko sproži signal z nizko energijo na svojem terminalu vrat. Pri SCR-jih deluje le v eno smer, v primeru TRIAC pa je moč moč krmiliti v obe smeri. Če želite izvedeti več o TRIAC in SCR, sledite našim prejšnjim člankom.
Kot je prikazano na zgornji sliki, se TRIAC sproži pod kotom streljanja 90 stopinj, tako da nanj uporabi impulzni signal majhnih vrat. Čas "t1" je čas zakasnitve, ki je podan v skladu z zahtevo za zatemnitev. Na primer, v tem primeru je kot streljanja 90 odstotkov, zato se bo tudi izhodna moč prepolovila in zato bo tudi svetilka svetila s polovično jakostjo.
Vemo, da je tukaj frekvenca izmeničnega signala 50 Hz. Torej bo časovno obdobje 1 / f, kar je 20ms. Za pol cikla bo to 10 ms ali 10 000 mikrosekund. Za nadzor moči AC žarnice lahko torej obseg "t1" variira med 0-10000 mikrosekund.
Optični sklopnik:
Optocoupler je znan tudi kot Optoisolator. Uporablja se za vzdrževanje izolacije med dvema električnima vezjema, kot sta enosmerni in izmenični signal. V bistvu je sestavljen iz LED, ki oddaja infrardečo svetlobo, in fotosenzorja, ki jo zazna. Tu je optični sklopnik MOC3021 uporabljen za krmiljenje AC ventilatorja iz signalov mikrokrmilnika, ki je enosmerni signal.
Diagram povezave TRIAC in Optocoupler:
3. Potenciometer za nadzor hitrosti ventilatorja
Tu se potenciometer uporablja za spreminjanje hitrosti ventilatorja. Vemo, da je potenciometer tri terminalna naprava, ki deluje kot delilnik napetosti in zagotavlja spremenljivo izhodno napetost. Ta spremenljiva analogna izhodna napetost je podana na analognem vhodnem terminalu Arduino za nastavitev vrednosti hitrosti AC ventilatorja.
4. Enota za generiranje PWM signala
V zadnjem koraku se TRIAC-u dodeli impulz PWM v skladu z zahtevami glede hitrosti, ki nato spreminja čas vklopa / izklopa AC-signala in zagotavlja spremenljiv izhod za nadzor hitrosti ventilatorja. Tu se Arduino uporablja za generiranje PWM impulza, ki zajema vhod potenciometra in daje signal PWM na TRIAC in optično sklopno vezje, ki dodatno poganja ventilator AC z želeno hitrostjo. Več o generiranju PWM z uporabo Arduina najdete tukaj.
Shema vezja
Shema vezja za to krmiljenje hitrosti ventilatorja 230v na osnovi Arduino je podana spodaj:
Opomba: Celotno vezje sem prikazal na tabli samo z namenom razumevanja. Napajanja 220V AC ne smete uporabljati neposredno na svoji plošči, za povezave sem uporabil pikčasto ploščo, kot lahko vidite na spodnji sliki
Programiranje Arduina za nadzor hitrosti ventilatorja AC
Po povezavi s strojno opremo moramo napisati kodo za Arduino, ki bo ustvaril signal PWM za nadzor vklopa / izklopa izmeničnega signala z vhodom potenciometra. Pred tem smo v mnogih projektih uporabljali tehnike PWM.
Popolna koda tega projekta nadzora hitrosti ventilatorja Arduino AC je navedena na dnu tega projekta. Postopna razlaga kode je podana spodaj.
V prvem koraku navedite vse zahtevane spremenljivke, ki bodo uporabljene v celotni kodi. Tu je BT136 TRIAC povezan z zatičem 6 Arduina. In spremenljivka speed_val je razglašena za shranjevanje vrednosti koraka hitrosti.
int TRIAC = 6; int hitrost_val = 0;
Nato v nastavitveni funkciji prijavite zatič TRIAC kot izhod, saj bo izhod PWM ustvarjen prek tega zatiča. Nato nastavite prekinitev za zaznavanje prehoda nič. Tu smo uporabili funkcijo, imenovano attachInterrupt, ki bo digitalni Pin 3 Arduina konfigurirala kot zunanjo prekinitev in poklicala funkcijo z imenom zero_crossing, ko zazna kakršne koli prekinitve na svojem pinu.
void setup () {pinMode (LAMP, OUTPUT); attachInterrupt (digitalPinToInterrupt (3), zero_crossing, CHANGE); }
Znotraj neskončne zanke preberite analogno vrednost s potenciometra, ki je priključen na A0, in jo preslikajte v območje vrednosti (10-49).
Da bi ugotovili ta obseg, moramo narediti majhen izračun. Prej je bilo rečeno, da je vsak pol cikel enak 10.000 mikrosekundam. Tu bo torej zatemnitev nadzorovana v 50 korakih, kar je poljubna vrednost in jo je mogoče spremeniti. Tu se štejejo najmanjši koraki kot 10, ne pa nič, ker 0-9 korakov daje približno enako izhodno moč, največ pa 49 kot ne, ker praktično ni priporočljivo sprejeti zgornje meje (v tem primeru je 50).
Potem se lahko čas vsakega koraka izračuna kot 10000/50 = 200 mikrosekund. To bo uporabljeno v naslednjem delu kode.
void loop () {int pot = analogRead (A0); int data1 = map (pot, 0, 1023,10,49); hitrost_val = podatki1; }
V zadnjem koraku konfigurirajte prekinitveno funkcijo zero_crossing. Tu lahko čas zatemnitve izračunamo tako, da posamezni čas koraka pomnožimo s številom. korakov. Po tem času zakasnitve lahko TRIAC sprožite z majhnim visokim impulzom 10 mikrosekund, kar zadostuje za vklop TRIAC-a.
void zero_crossing () {int chop_time = (200 * hitrost_val); delayMicroseconds (chop_time); digitalWrite (TRIAC, HIGH); delayMicroseconds (10); digitalWrite (TRIAC, LOW); }
Spodaj je navedena celotna koda skupaj z delujočim videoposnetkom za to krmiljenje ventilatorja z uporabo Arduina in PWM.