- Būtini komponentai
- Kintamosios srovės ventiliatorių valdymas naudojant „Arduino“
- 1. Nulio kirtimo detektorius
- 2. Fazės kampo valdymo grandinė
- 3. Potenciometras ventiliatoriaus greičiui reguliuoti
- 4. PWM signalo generavimo blokas
- Grandinės schema
- „Arduino“ programavimas kintamosios srovės ventiliatoriaus greičio valdymui
ĮSPĖJIMAS! Šiame projekte aptarta grandinės schema skirta tik švietimo tikslams. Praneškite, kad dirbant su 220 V kintamosios srovės tinklo įtampa reikia imtis ypatingų atsargumo priemonių ir reikia laikytis saugos procedūrų. Kai grandinė veikia, nelieskite jokių komponentų ar laidų.
Bet kurį buitinį prietaisą lengva įjungti arba išjungti naudojant jungiklį arba naudojant kokį nors valdymo mechanizmą, kaip tai darėme daugelyje „Arduino“ pagrįstų namų automatikos projektų. Tačiau yra daugybė programų, kuriose turime iš dalies valdyti kintamosios srovės galią, pavyzdžiui, norėdami valdyti ventiliatoriaus greitį ar lempos intensyvumą. Šiuo atveju naudojama PWM technika, todėl čia sužinosime, kaip naudoti „Arduino“ sugeneruotą PWM kintamosios srovės ventiliatoriaus greičiui valdyti naudojant „Arduino“.
Šiame projekte mes pademonstruosime „ Arduino AC“ ventiliatoriaus greičio valdymą naudojant TRIAC. Čia kintamosios srovės signalo fazės valdymo metodas naudojamas kintamosios srovės ventiliatoriaus greičiui valdyti, naudojant „Arduino“ generuojamus PWM signalus. Ankstesnėje pamokoje mes kontroliavome nuolatinės srovės ventiliatoriaus greitį naudodami PWM.
Būtini komponentai
- „Arduino UNO“
- 4N25 (nulio kirtimo detektorius)
- 10k potenciometras
- MOC3021 0pto-mova
- (0–9) V, 500 mA pakopinis transformatorius
- BT136 TRIAC
- 230 VAC ašinis kintamosios srovės ventiliatorius
- Jungiamieji laidai
- Rezistoriai
Kintamosios srovės ventiliatorių valdymas naudojant „Arduino“
Darbą galima suskirstyti į keturias skirtingas dalis. Jie yra tokie
1. Nulinio kryžminimo detektorius
2. Fazės kampo valdymo grandinė
3. Potenciometras ventiliatoriaus greičio kiekiui valdyti
4. PWM signalo generavimo grandinė
1. Nulio kirtimo detektorius
Kintamosios srovės šaltinis, kurį gauname savo namuose, yra 220 V kintamosios srovės efektinis efektas, 50 Hz. Šis kintamosios srovės signalas yra kintamo pobūdžio ir periodiškai keičia savo poliškumą. Pirmoje kiekvieno ciklo pusėje ji teka viena kryptimi, pasiekdama didžiausią įtampą, o tada sumažėja iki nulio. Tada kitame pusės cikle jis teka pakaitine kryptimi (neigiama) iki didžiausios įtampos ir vėl ateina į nulį. Norint reguliuoti kintamosios srovės ventiliatoriaus greitį, reikia suskaidyti arba valdyti didžiausią abiejų pusinių ciklų įtampą. Tam turime nustatyti nulinį tašką, iš kurio signalas turi būti valdomas / kapojamas. Šis įtampos kreivės taškas, kur įtampa keičia kryptį, vadinamas nulinės įtampos kirtimu.
Žemiau parodyta grandinė yra nulio kirtimo detektoriaus grandinė, naudojama nulio kirtimo taškui gauti. Pirma, 220 V kintamosios įtampos įtampa sumažinama iki 9 V kintamosios srovės, naudojant pakaitinį transformatorių, ir tada ji tiekiama į 4N25 optinį jungiklį jo 1 ir 2 kaiščiuose. katodas. Taigi, kaip nurodyta žemiau esančioje grandinėje, kai kintamosios srovės banga artėja prie nulio kirtimo taško, įmontuotas 4N25 šviesos diodas bus išjungtas ir dėl to 4N25 išėjimo tranzistorius taip pat bus išjungtas, o išvesties impulso kaištis bus prisitraukia iki 5 V. Panašiai, kai signalas palaipsniui didėja iki pikotaško, tada šviesos diodas įsijungia, o tranzistorius taip pat įsijungs įžeminimo kaiščiu, prijungtu prie išvesties kaiščio, todėl šis kaištis yra 0 V. Naudojant šį impulsą, nulio kirtimo tašką galima aptikti naudojant „Arduino“.
2. Fazės kampo valdymo grandinė
Aptikę nulio kirtimo tašką, dabar turime kontroliuoti laiko, kuriam bus įjungta ir išjungta, kiekį. Šis PWM signalas nulems kintamosios srovės variklio išėjimo įtampos kiekį, kuris savo ruožtu kontroliuoja jo greitį. Čia naudojamas BT136 TRIAC, kuris valdo kintamosios srovės įtampą, nes tai yra galios elektroninis jungiklis kintamosios įtampos signalui valdyti.
TRIAC yra trijų gnybtų kintamosios srovės jungiklis, kurį gali įjungti mažos energijos signalas jo vartų gnybte. SCR jis veikia tik viena kryptimi, tačiau TRIAC atveju galia gali būti valdoma abiem kryptimis. Norėdami sužinoti daugiau apie TRIAC ir SCR, skaitykite ankstesnius mūsų straipsnius.
Kaip parodyta aukščiau esančiame paveikslėlyje, TRIAC suveikia 90 laipsnių šaudymo kampu, taikant jam mažą vartų impulsinį signalą. Laikas „t1“ yra uždelsimo laikas, nurodytas pagal pritemdymo reikalavimą. Pavyzdžiui, šiuo atveju šaudymo kampas yra 90 procentų, taigi galia taip pat bus sumažinta perpus, taigi lempa taip pat šviečia puse intensyvumo.
Mes žinome, kad kintamosios srovės signalo dažnis čia yra 50 Hz. Taigi laikotarpis bus 1 / f, o tai yra 20 ms. Pusę ciklo tai bus 10 ms arba 10 000 mikrosekundžių. Taigi, norint valdyti kintamosios srovės lempos galią, „t1“ diapazoną galima keisti nuo 0 iki 10000 mikrosekundžių.
Optronas:
„Optocoupler“ taip pat žinomas kaip „Optoisolator“. Jis naudojamas išlaikyti izoliaciją tarp dviejų elektros grandinių, tokių kaip nuolatinės ir kintamosios srovės signalai. Iš esmės jis susideda iš šviesos diodo, skleidžiančio infraraudonąją spinduliuotę, ir jį aptinkančio fotojutiklio. Čia MOC3021 optinis jungiklis naudojamas kintamosios srovės ventiliatoriui valdyti iš mikrovaldiklio signalų, kuris yra nuolatinės srovės signalas.
TRIAC ir „Optocoupler“ jungties schema:
3. Potenciometras ventiliatoriaus greičiui reguliuoti
Čia kintamosios srovės ventiliatoriaus greičiui keisti naudojamas potenciometras. Mes žinome, kad potenciometras yra 3 terminalų įtaisas, veikiantis kaip įtampos daliklis ir užtikrinantis kintamą įtampos išėjimą. Ši kintama analoginio išėjimo įtampa pateikiama „Arduino“ analoginio įėjimo gnybte, kad būtų galima nustatyti kintamosios srovės ventiliatoriaus greičio vertę.
4. PWM signalo generavimo blokas
Paskutiniame etape TRIAC suteikiamas PWM impulsas pagal greičio reikalavimus, o tai savo ruožtu keičia kintamosios srovės signalo įjungimo / išjungimo laiką ir suteikia kintamą išėjimą ventiliatoriaus greičiui valdyti. Čia „Arduino“ naudojamas generuoti PWM impulsą, kuris ima įvestį iš potenciometro ir duoda PWM signalo išėjimą TRIAC ir optrono grandinei, kuri toliau valdo kintamosios srovės ventiliatorių norimu greičiu. Sužinokite daugiau apie PWM generavimą naudojant „Arduino“ čia.
Grandinės schema
Šios „ Arduino“ pagrįstos 230 V ventiliatoriaus greičio valdymo grandinės schema pateikta žemiau:
Pastaba: Duonos lentoje visą grandinę parodžiau tik tam, kad suprasčiau. Jūs neturėtumėte naudoti 220 V kintamosios srovės maitinimo šaltinio tiesiai ant savo duonos lentos, aš naudoju punktyrinę lentą, kad sujungčiau, kaip matote paveikslėlyje žemiau
„Arduino“ programavimas kintamosios srovės ventiliatoriaus greičio valdymui
Prijungę aparatinę įrangą, turime užrašyti „Arduino“ kodą, kuris generuos PWM signalą, kad valdytų kintamosios srovės signalo įjungimo / išjungimo laiką, naudojant potenciometro įvestį. Anksčiau mes naudojome PWM metodus daugelyje projektų.
Visas šio „ Arduino AC“ ventiliatoriaus greičio valdymo projekto kodas pateiktas šio projekto apačioje. Pakopinis kodo paaiškinimas pateiktas žemiau.
Pirmiausia deklaruokite visus reikalingus kintamuosius, kurie bus naudojami visame kode. Čia „BT136 TRIAC“ yra prijungtas prie „Arduino“ 6 kaiščio. Deklaruojamas kintamasis greitis_val, kad būtų išsaugota greičio žingsnio reikšmė.
int TRIAC = 6; int greitis_val = 0;
Tada, nustatymo funkcijos viduje, deklaruokite TRIAC kaištį kaip išvestį, nes per šį kaištį bus sukurta PWM išvestis. Tada sukonfigūruokite pertraukimą, kad aptiktumėte nulio kirtimą. Čia mes panaudojome funkciją, vadinamą „ attachInterrupt“, kuri sukonfigūruos „Arduino“ 3 skaitmeninį kaištį kaip išorinį pertraukimą ir iškvies funkciją „ zero_crossing“, kai aptiks bet kokius pertraukimus savo kaište.
negaliojanti sąranka () {pinMode (LAMP, OUTPUT); „attachInterrupt“ („digitalPinToInterrupt“ (3), „zero_crossing“, „CHANGE“); }
Begalinėje kilpoje perskaitykite analoginę vertę iš potenciometro, kuris yra prijungtas prie A0, ir suskirstykite jį į vertės diapazoną (10–49).
Norėdami sužinoti šį diapazoną, turime atlikti nedidelį skaičiavimą. Anksčiau sakoma, kad kiekvienas pusės ciklas prilygsta 10 000 mikrosekundžių. Taigi čia pritemdymas bus valdomas 50 žingsnių, o tai yra savavališka vertė ir gali būti pakeista. Minimalūs veiksmai atliekami kaip 10, o ne „Nulis“, nes 0–9 žingsniai suteikia maždaug tą pačią galios galią, o maksimalūs žingsniai atliekami kaip 49, nes praktiškai nerekomenduojama atlikti viršutinės ribos (šiuo atveju tai yra 50).
Tada kiekvieno žingsnio laiką galima apskaičiuoti kaip 10000/50 = 200 mikrosekundžių. Tai bus naudojama kitoje kodo dalyje.
void loop () {int pot = analogRead (A0); int duomenys1 = žemėlapis (puodas, 0, 1023,10,49); greitis_val = duomenys1; }
Paskutiniame etape sukonfigūruokite pertraukimo valdomą funkciją zero_crossing. Čia pritemdymo laiką galima apskaičiuoti padauginus atskirą žingsnio laiką iš Nr. žingsnių. Tada praėjus šiam uždelsimo laikui, TRIAC gali būti įjungtas naudojant nedidelį didelį 10 mikrosekundžių impulsą, kurio pakanka įjungti TRIAC.
void zero_crossing () {int chop_time = (200 * greičio_val); delsaMikrosekundės (chop_time); „digitalWrite“ (TRIAC, HIGH); vėlavimasMikrosekundės (10); „digitalWrite“ (TRIAC, LOW); }
Pilnas kodas ir veikiantis vaizdo įrašas, skirtas šiam kintamosios srovės ventiliatoriaus valdymui naudojant „Arduino“ ir „PWM“, pateikiamas žemiau.