- Arbejde med en IoT-baseret loftsventilator
- Nødvendige materialer til AC-blæserhastighedskontrolkredsløb
- AC-ventilatorregulator kontrolkredsløb
- PCB-design til IoT-styret loftsventilatorregulator
- Opsætning af en Firebase-konto
- Arduino-kode til kontrol af ventilatorregulator med NodeMCU
- Opbygning af Fan Regulator-appen med MIT App Inventor
- Test af ESP32-baseret berøringsfølerkreds
- Yderligere forbedringer
I denne artikel bygger vi et AC Fan Regulator Circuit, som er i stand til at kontrollere ventilatorens hastighed ved at begrænse strømmen til strømmen til ventilatoren. Udtrykket AC Ceiling Fan Regulator er en mundfuld, derfor vil vi blot kalde det en fan regulator fra nu af. Et ventilatorreguleringskredsløb er en vigtig komponent, der bruges til at øge eller mindske hastigheden på en AC-ventilator / motor alt efter behov. For et par år tilbage havde du et valg mellem en konventionel resistiv ventilatorregulator eller en elektronisk regulator, men i dag er det hele blevet erstattet af det elektroniske ventilatorregulator kredsløb.
I en tidligere artikel har vi vist dig, hvordan du kunne opbygge et vekselstrømsfasestyringskredsløb med en Arduino, som var i stand til at kontrollere lysstyrken på en glødepære og også styre hastigheden på en blæser, så du kan øge den i et hak i denne artikel skal vi opbygge et IoT-baseret AC Ceiling Fan Regulator- kredsløb. Hvilket vil være i stand til at kontrollere hastigheden på din loftsventilator ved hjælp af en Android-applikation.
Arbejde med en IoT-baseret loftsventilator
Ventilatorregulator-kredsløbet er et simpelt kredsløb, der er i stand til at kontrollere hastigheden på en AC-loftsventilator ved at ændre fasevinklen på AC-sinusbølgen eller i enkle vendinger præcis kontrol af TRIAC. Som jeg har nævnt alle de grundlæggende funktioner i AC-ventilatorreguleringskredsløbet i AC-fase vinkelstyring med 555 Timer og PWM- artiklen, vil vi koncentrere os om selve kredsløbets opbygning. Og igen, hvis du vil vide mere om emnet, skal du også kontrollere artiklen om AC Light Dimmer ved hjælp af Arduino og TRIAC Project.
Det grundlæggende blokdiagram ovenfor viser, hvordan kredsløbet faktisk fungerer. Som jeg har sagt tidligere, genererer vi et PWM-signal ved hjælp af Firebase IoT og NodeMCU, hvorefter PWM-signalet sendes gennem lavpasfilteret, som styrer porten til en MOSFET, hvorefter en 555 timer styrer den egentlige TRIAC ved hjælp af en optokobler.
I dette tilfælde ændrer Android-appen værdien i firebaseDB, og ESP kontrollerer konstant for ændringer, der sker i den DB, hvis der sker en ændring, der bliver trukket ned, og værdien konverteres til et PWM-signal
Nødvendige materialer til AC-blæserhastighedskontrolkredsløb
Billedet nedenfor viser det materiale, der bruges til at bygge dette kredsløb, da dette er lavet med meget generiske komponenter, skal du være i stand til at finde alt det anførte materiale i din lokale hobbybutik.
Jeg har også anført komponenterne i nedenstående tabel med type og mængde, da det er et demonstrationsprojekt, jeg bruger en enkelt kanal til at gøre det. Men kredsløbet kan let skaleres op efter krav.
- Skrueterminal 5.04mm stik - 2
- Hanhoved 2,54 mm stik - 1
- 56K, 1W modstand - 2
- 1N4007 Diode - 4
- 0.1uF, 25V kondensator - 2
- AMS1117 Spændingsregulator - 1
- 1000uF, 25V kondensator - 1
- DC-strømstik - 1
- 1K modstand - 1
- 470R modstand - 2
- 47R modstand - 2
- 82 K modstande - 1
- 10 K modstande - 5
- PC817 Optokobler - 1
- NE7555 IC - 1
- MOC3021 Opto TriacDrive - 1
- IRF9540 MOSFET - 1
- 3.3uF kondensator - 1
- Tilslutning af ledninger - 5
- 0.1uF, 1KV kondensator - 1
- ESP8266 (ESP-12E) Mikrocontroller - 1
AC-ventilatorregulator kontrolkredsløb
Skematisk for IoT ventilatorregulator kredsløb er vist nedenfor, dette kredsløb er meget simpelt og bruger generiske komponenter til at opnå fasevinkelkontrol.
Dette kredsløb består af meget omhyggeligt designede komponenter. Jeg vil gennemgå hver enkelt og forklare hver blok.
ESP8266 (ESP-12E) Wi-Fi-chip:
Dette er den første del af vores kredsløb, og det er den del, hvor vi har ændret mange ting, andre dele forbliver nøjagtigt de samme, dvs. hvis du har fulgt den forrige artikel.
I dette afsnit har vi trukket op stifter Aktiver, Nulstil og GPIO0, vi har også trukket GPIO15 og Ground Pin ned, som anbefales af databladet til chippen. Med hensyn til programmering har vi placeret et 3-pin header, der udsætter TX, RX og jordnålen, hvorigennem vi meget let kan programmere chippen. Vi har også sat en taktil switch for at sætte GPIO0 i jorden, dette er et nødvendigt skridt for at sætte ESP i programmeringstilstand. Vi har valgt GPIO14-stiften som output, hvorigennem PWM-signalet genereres.
Bemærk! På tidspunktet for programmeringen er vi nødt til at trykke på knappen og tænde for enheden med jævnstrømsstikket.
Nulkrydsningsdetektionskredsløb:
For det første er på vores liste nulkrydsningsdetekteringskredsløb lavet med to 56K, 1W modstande i forbindelse med fire 1n4007-dioder og en PC817-optokobler. Og dette kredsløb er ansvarlig for at levere nul-kryds signalet til 555 timer IC. Vi har også optaget fasen og det neutrale signal for at bruge den yderligere i TRIAC-sektionen.
AMS1117-3.3V spændingsregulator:
AMS1117 spændingsregulatoren bruges til at forsyne kredsløbet, kredsløbet er ansvarlig for at levere strøm til hele kredsløbet. Derudover har vi brugt to 1000uF kondensatorer og en 0.1uF kondensator som en afkoblingskondensator til AMS1117-3.3 IC.
Kontrolkredsløb med NE555-timer:
Ovenstående billede viser 555 timer kontrolkredsløb, 555 er konfigureret i en monostabil konfiguration, så når et trigger signal fra nulkrydsningsdetekteringskredsløbet rammer triggeren, begynder 555 timeren at oplade kondensatoren ved hjælp af en modstand (generelt), men vores kredsløb har en MOSFET i stedet for en modstand, og ved at kontrollere porten til MOSFET styrer vi strømmen, der går til kondensatoren, det er derfor, vi styrer opladningstiden, og derfor styrer vi output fra 555 timere.
TRIAC og TRIAC-Driver Circuit:
TRIAC fungerer som hovedafbryderen, der faktisk tænder og slukker og styrer således udgangen af AC-signalet. Kørsel af TRIAC ved hjælp af MOC3021 Opto-Triac-drev, det driver ikke kun TRIAC, men det giver også optisk isolering, 0.01uF 2KV højspændingskondensator, og 47R-modstanden danner et snubber-kredsløb, der beskytter vores kredsløb mod højspændingsspidser, der opstår, når den er forbundet med en induktiv belastning.Det skiftede vekselstrømssignals ikke-sinusformede natur er ansvarlig for spidserne. Det er også ansvarligt for magtfaktorproblemer, men det er et emne for en anden artikel.
Lavpasfilter og P-kanal MOSFET (fungerer som modstand i kredsløbet):
82K-modstanden og 3.3uF kondensatoren danner lavpasfilteret, som er ansvarlig for at udjævne det højfrekvente PWM-signal genereret af Arduino. Som tidligere nævnt fungerer P-Channel MOSFET som den variable modstand, der styrer kondensatorens opladningstid. Styring af det er PWM-signalet, der udjævnes af lavpasfilteret.
PCB-design til IoT-styret loftsventilatorregulator
Printkortet til vores IoT Ceiling Fan Regulator kredsløb er designet i et ensidet kort. Jeg har brugt Eagle PCB-designsoftware til at designe min PCB, men du kan bruge enhver designsoftware efter eget valg. 2D-billedet af mit kortdesign er vist nedenfor.
Tilstrækkelig jordfyldning bruges til at skabe korrekte jordforbindelser mellem alle komponenterne. 3.3V DC-indgangen og 220 Volt AC-indgangen er befolket på venstre side, udgangen er placeret på højre side af printkortet. Den komplette designfil til Eagle sammen med Gerber kan downloades fra nedenstående link.
- PCB Design, GERBER & PDF-filer til Ceiling Fan Regulator Circuit
Håndlavet printkort:
For nemheds skyld lavede jeg min håndlavede version af printkortet, og det er vist nedenfor.
Med dette er vores hardware klar i henhold til vores kredsløbsdiagram, nu skal vi gøre vores Android-applikation og Google Firebase klar.
Opsætning af en Firebase-konto
Til det næste trin skal vi oprette en firebase-konto. Al kommunikation gennemgår firebase-kontoen. For at oprette en firebase-konto skal du gå til Firebase-webstedet og klikke på 'kom i gang'.
Når du har klikket, skal du logge ind med din Google-konto og
når du er logget ind, skal du oprette et projekt ved at klikke på knappen Opret et projekt.
Dette omdirigerer dig til en side, der ligner billedet ovenfor. Indtast navnet på dit projekt, og klik på Fortsæt.
Klik igen på Fortsæt.
Når du har gjort det, skal du acceptere nogle vilkår og betingelser ved at klikke på afkrydsningsfeltet, og derefter skal du klikke på knappen Opret projekt.
Hvis du har gjort alt korrekt, efter et stykke tid, får du en besked som denne. Når du er færdig, skal din firebase-konsol se ud som billedet nedenfor.
Nu skal vi samle to ting herfra. For at gøre det skal du klikke på navnet på det projekt, du lige har oprettet. For mig er det CelingFanRegulator, når du først klikker på det, får du et dashboard svarende til billedet nedenfor.
Klik på indstillinger, derefter projektindstillinger, den side, du får, ser ud som nedenstående billeder.
Klik på servicekonto -> databasehemmelighed.
Kopier databasehemmeligheden, og opbevar den et sted til senere brug.
Klik derefter på realtidsdatabasen og kopier URL'en. opbevar det også til senere brug.
Og det er alt, der er til firebase-siden af tingene.
Arduino-kode til kontrol af ventilatorregulator med NodeMCU
En simpel Arduino-kode tager sig af kommunikationen mellem firebase og ESP-12E-modulet, kredsløbet og kodeforklaringen er angivet nedenfor. For det første definerer vi alle nødvendige biblioteker, du kan downloade følgende biblioteker fra de givne links Arduino JSON-bibliotek og FirebaseArduino-biblioteket
#omfatte
Vi bruger FirebaseArduino- biblioteket til at etablere kommunikation med firebase.
// Indstil disse til at køre eksempler. #define FIREBASE_HOST "celingfanregulator.firebaseio.com" #define FIREBASE_AUTH "1qAnDEuPmdy4ef3d9QLEGtYcA1cOehKmpmzxUtLr" #define WIFI_SSID "your SSID" #define WIFI "
Dernæst har vi defineret firebase-værten, firebase auth, som vi tidligere havde gemt, da vi oprettede firebase-kontoen. Så har vi defineret SSID og adgangskode til vores router.
String Resivedata; #definer PWM_PIN 14;
Dernæst har vi defineret en strengtypevariabel , Resivedata, hvor alle data lagres, og vi definerede også PWM_PIN, hvor vi får PWM-output.
Derefter i afsnittet om tomrumsopsætning () gør vi det nødvendige,
Serial.begin (9600); pinMode (PWM_PIN, OUTPUT); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("forbinder"); mens (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (500); } Serial.println (); Serial.print ("forbundet:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); Firebase.setString ("Variabel / værdi", "FirstTestStrig");
Først aktiverer vi serien ved at kalde funktionen Serial.begin () . Dernæst har vi indstillet PWM-stiften som OUTPUT. Vi begynder Wi-Fi-forbindelsen ved hjælp af WiFi.begin () -funktionen, og vi sender SSID og adgangskode i funktionen. Vi kontrollerer forbindelsesstatus på et stykke tid, og når vi først er tilsluttet, bryder vi sløjfen og fortsætter. Dernæst udskriver vi den tilsluttede besked med IP-adressen.
Endelig begynder vi kommunikationen med firebase med Firebase.begin () -funktionen, og vi passerer parametrene FIREBASE_HOST og FIREBASE_AUTH , som vi har defineret tidligere. Og vi indstiller strengen med funktionen setString () , som markerer slutningen af installationsfunktionen. I void sløjfe () sektion,
Resivedata = Firebase.getString ("Variabel / værdi"); Serial.println (Resivedata); analogWrite (PWM_PIN, kort (Resivedata.toInt (), 0, 80, 80, 0)); Serial.println (Resivedata); forsinkelse (100);
Vi kalder getString () -funktionen med variabel / værdi, hvor dataene er gemt i firebasen, et eksempel ville være som billedet nedenfor-
Derefter udskriver vi værdien kun til fejlfinding. Dernæst bruger vi kortfunktionen til at kortlægge værdien, 80 bruges, fordi vi inden for området 0 - 80 er i stand til at styre porten til MOSFET nøjagtigt, og RC lavpasfilter er noget ansvarlig for denne værdi. Inden for dette område fungerer fasevinkelkontrolkredsløbet nøjagtigt, du kan kalde værdien som en hardware-software sweet spot. Hvis du laver dette projekt og står over for problemer, skal du lege med værdien og selv bestemme resultaterne.
Og derefter bruger vi analogWrite () -funktionen til at føde dataene og aktivere PWM, derefter bruger vi funktionen Serial.println () igen bare for at gennemgå resultatet, og til sidst bruger vi en forsinkelsesfunktion til at reducere hit-count til firebase API, som slutter vores program.
Opbygning af Fan Regulator-appen med MIT App Inventor
Ved hjælp af AppInventor opretter vi en android-app, der kommunikerer med firebase og har myndighed til at ændre de data, der er gemt i firebase-databasen.
For at gøre det skal du gå til appInventors-webstedet, logge ind med din Google-konto og acceptere vilkårene og betingelserne. Når du har gjort det, vil du blive præsenteret for en skærm, der ligner billedet nedenfor.
Klik på start et nyt projektikon, og giv det et navn, og tryk på OK, når du gør det, vil du blive præsenteret for en skærm som nedenstående billede.
Når du er der, skal du først sætte to etiketter, hvor dette er for at lægge skyderen lidt ned, næste skal du trække nogle moduler ind, og de er FirebaseDB- modulet og webmodulet.
De firebaseDB modul kommunikerer med Firebase, den webmodulet anvendes til h andle. Som ligner billedet nedenfor.
Når det er gjort, skal du trække i skyderen og en etiket, som vi kaldte PWM, hvis du bliver forvirret i dette øjeblik, kan du tjekke nogle andre vejledninger vedrørende oprettelse af en app med en appopfinder.
Når vi er færdige med processen, skal du klikke på firebase DB-ikonet og sætte firebase-token og firebase-URL'en, som vi har gemt, mens du opretter firebase-kontoen.
Nu er vi færdige med designsektionen, og vi er nødt til at oprette blokafsnittet. For at gøre det skal vi klikke på blokknappen i øverste højre hjørne ved siden af designeren.
Når du først klikker på skyderen, får du en lang liste over moduler, trækker det første modul ud og holder musen over tommelfingerpositionsknappen, du bliver mødt med to yderligere moduler, træk dem begge ud. Vi skal bruge dem senere.
Nu vedhæfter vi tommelfingervariablen , vi afrunder den, og vi får tommelfingerpositionens værdi. Dernæst klikker vi på firebasedb og trækker opkaldet FirebaseDB.storeValue-tagværdi ud for at gemme, modulere og vedhæfte det til bunden af tommelfingerpositionens værdi.
Når det er gjort, trækker vi en tom tekstboks ud ved at klikke på tekstblokken og vedhæfte den med tagget, dette er det tag, som vi har indstillet i Arduino IDE til at læse og skrive dataene på firebase. Vedhæft nu variabel med tommelfingerværdi til den værdi, der skal gemmes. Hvis du har gjort alt korrekt, ved at flytte skyderen, vil du være i stand til at ændre værdierne i firebaseDB.
- .Aia (gemt fil) og.apk (kompileret fil)
Hvilket markerer afslutningen på vores appfremstillingsproces. Et øjebliksbillede af Android-applikationen, som vi lige har oprettet, vist nedenfor.
Test af ESP32-baseret berøringsfølerkreds
For at teste kredsløbet har jeg tilsluttet en glødepære parallelt med loftsventilatoren, og jeg har forsynet kredsløbet med en 5V DC-adapter, som du kan se på billedet ovenfor, app-skyderen er indstillet til lav, det er derfor pæren lyser ved lav lysstyrke. Og ventilatoren roterer også langsomt.
Yderligere forbedringer
Til denne demonstration er kredsløbet lavet på et håndlavet printkort, men kredsløbet kan let bygges på et printkort af god kvalitet, i mine eksperimenter er størrelsen på printkortet virkelig lidt på grund af komponentstørrelsen, men i et produktionsmiljø er det kan reduceres ved at bruge billige SMD-komponenter, jeg fandt ud af at bruge en 7555-timer i stedet for en 555-timer øge kontrollen meget, desuden øges kredsløbets stabilitet også.