- Arbeider av en IoT-basert takvifteregulator
- Materialer som kreves for viftehastighetskontrollkrets
- AC Fan Regulator Control Circuit
- PCB Design for IoT Controlled Ceiling Fan Regulator
- Sette opp en Firebase-konto
- Arduino-kode for å kontrollere vifteregulator med NodeMCU
- Bygg Fan Regulator-appen med MIT App Inventor
- Testing av ESP32-basert berøringssensorkrets
- Ytterligere forbedringer
I denne artikkelen bygger vi en AC Fan Regulator Circuit, som er i stand til å kontrollere viftehastigheten ved å begrense strømmen til viften. Begrepet AC Ceiling Fan Regulator er en munnfull, derfor vil vi ganske enkelt kalle det en fan regulator fra nå av. En vifteregulatorkrets er en viktig komponent som brukes til å øke eller redusere hastigheten til en vifte / motor etter behov. For noen år tilbake hadde du valget mellom en konvensjonell motstandsvifteregulator eller en elektronisk regulator, men i dag er alt erstattet av den elektroniske vifteregulatorkretsen.
I en forrige artikkel har vi vist deg hvordan du kan bygge en vekselstrømskrets for vekselstrøm med en Arduino som var i stand til å kontrollere lysstyrken til en glødelampe og også kontrollere hastigheten på en vifte, så for å trappe den opp et hakk i denne artikkelen skal vi bygge en IoT-basert AC Ceiling Fan Regulator- krets. Som vil være i stand til å kontrollere hastigheten på takviften din ved hjelp av en Android-applikasjon.
Arbeider av en IoT-basert takvifteregulator
Fan Regulator-kretsen er en enkel krets som er i stand til å kontrollere hastigheten til en AC-takvifte ved å endre fasevinkelen til AC-sinusbølgen eller i enkle termer presis kontroll av TRIAC. Som jeg har nevnt alle de grunnleggende funksjonene til AC-viftereguleringskretsen i AC Phase Angle Control med 555 Timer og PWM- artikkelen, vil vi konsentrere oss om selve kretsbyggingen. Og igjen, hvis du vil vite mer om emnet, kan du også sjekke artikkelen om AC Light Dimmer ved hjelp av Arduino og TRIAC Project.
Det grunnleggende blokkdiagrammet ovenfor viser hvordan kretsen faktisk fungerer. Som jeg har sagt tidligere, vil vi generere et PWM-signal ved hjelp av Firebase IoT og NodeMCU, så vil PWM-signalet bli sendt gjennom lavpassfilteret som vil kontrollere porten til en MOSFET etter at en 555 timer vil kontrollere selve TRIAC ved hjelp av en optokobler.
I dette tilfellet endrer Android-appen verdien i firebaseDB, og ESP sjekker kontinuerlig for eventuelle endringer som skjer med DB hvis noen endring oppstår som blir trukket ned og verdien konverteres til et PWM-signal.
Materialer som kreves for viftehastighetskontrollkrets
Bildet nedenfor viser materialet som ble brukt til å bygge denne kretsen, ettersom dette er laget med veldig generiske komponenter, bør du kunne finne alt det oppførte materialet i din lokale hobbybutikk.
Jeg har også listet opp komponentene i en tabell nedenfor med type og mengde siden det er et demonstrasjonsprosjekt, bruker jeg en enkelt kanal for å gjøre det. Men kretsen kan enkelt skaleres opp etter behov.
- Skrueterminal 5.04mm-kontakt - 2
- Mannlig hode 2,54 mm-kontakt - 1
- 56K, 1W motstand - 2
- 1N4007 Diode - 4
- 0.1uF, 25V kondensator - 2
- AMS1117 Spenningsregulator - 1
- 1000uF, 25V kondensator - 1
- DC-strømkontakt - 1
- 1K motstand - 1
- 470R Motstand - 2
- 47R motstand - 2
- 82 K motstander - 1
- 10 K motstander - 5
- PC817 Optokobler - 1
- NE7555 IC - 1
- MOC3021 Opto TriacDrive - 1
- IRF9540 MOSFET - 1
- 3.3uF kondensator - 1
- Koble ledninger - 5
- 0.1uF, 1KV kondensator - 1
- ESP8266 (ESP-12E) Microcontroller - 1
AC Fan Regulator Control Circuit
Skjematisk diagram for IoT-viftereguleringskretsen er vist nedenfor, denne kretsen er veldig enkel og bruker generiske komponenter for å oppnå fasevinkelkontroll.
Denne kretsen består av veldig nøye utformede komponenter. Jeg vil gå gjennom hver og forklare hver blokk.
ESP8266 (ESP-12E) Wi-Fi-brikke:
Dette er den første delen av kretsen vår, og det er den delen der vi har endret mange ting, andre deler forblir nøyaktig de samme, dvs. hvis du har fulgt forrige artikkel.
I denne delen har vi trukket opp pins Aktiver, Tilbakestill og GPIO0, også har vi trukket ned GPIO15 og bakkenålen, som anbefales av databladet til brikken. Når det gjelder programmering, har vi plassert en 3-pin topptekst som eksponerer TX, RX og bakken pin som vi kan programmere brikken veldig enkelt gjennom. Vi har også satt en taktil bryter for å sette GPIO0 i bakken, dette er et nødvendig trinn for å sette ESP i programmeringsmodus. Vi har valgt GPIO14-pinnen som utgang som PWM-signalet genereres gjennom.
Merk! På tidspunktet for programmeringen må vi trykke på knappen og slå på enheten med DC fat-kontakten.
Zero-Crossing Detection Circuit:
For det første, på listen vår, er nullkryssingsdeteksjonskretsen laget med to 56K, 1W motstander i forbindelse med fire 1n4007-dioder og en PC817 optokobler. Og denne kretsen er ansvarlig for å gi nullkryssingssignalet til 555 timer IC. Vi har også tatt opp fasen og det nøytrale signalet for å bruke den videre i TRIAC-delen.
AMS1117-3.3V spenningsregulator:
AMS1117 spenningsregulatoren brukes til å drive kretsen, kretsen er ansvarlig for å gi strøm til hele kretsen. I tillegg har vi brukt to 1000uF kondensatorer og en 0.1uF kondensator som en frakoblingskondensator for AMS1117-3.3 IC.
Kontrollkrets med NE555-tidtaker:
Ovennevnte bilde viser 555 tidtakerkontrollkrets, 555 er konfigurert i en monostabil konfigurasjon, så når et utløsersignal fra nullkryssingsdeteksjonskretsen treffer utløseren, begynner 555 tidtakeren å lade kondensatoren ved hjelp av en motstand (generelt), men kretsen vår har en MOSFET i stedet for en motstand, og ved å kontrollere porten til MOSFET, styrer vi strømmen som går til kondensatoren, det er derfor vi kontrollerer ladetiden, og derfor kontrollerer vi utgangen til 555 timere.
TRIAC og TRIAC-driverkretsen:
TRIAC fungerer som hovedbryter som faktisk slår seg av og på, og dermed styrer utgangen fra AC-signalet. Å kjøre TRIAC ved hjelp av MOC3021 Opto-Triac-stasjonen, den driver ikke bare TRIAC, men den gir også optisk isolasjon, 0.01uF 2KV høyspenningskondensator, og 47R-motstanden danner en snubberkrets, som beskytter kretsen vår mot høyspennings pigger som oppstår når den er koblet til en induktiv belastning. Den ikke-sinusformede naturen til det koblede vekselstrømssignalet er ansvarlig for piggene. Dessuten er det ansvarlig for kraftfaktorproblemer, men det er tema for en annen artikkel.
Lavpassfilter og P-kanal MOSFET (fungerer som motstand i kretsen):
82K-motstanden og 3.3uF-kondensatoren danner lavpassfilteret som er ansvarlig for å glatte ut høyfrekvent PWM-signal generert av Arduino. Som tidligere nevnt fungerer P-Channel MOSFET som den variable motstanden, som kontrollerer ladetiden til kondensatoren. Styring av det er PWM-signalet som glattes ut av lavpasfilteret.
PCB Design for IoT Controlled Ceiling Fan Regulator
PCB for vår IoT Ceiling Fan Regulator-krets er designet i et ensidig kort. Jeg har brukt Eagle PCB-designprogramvare for å designe PCB-en, men du kan bruke hvilken som helst designprogramvare du ønsker. 2D-bildet av taveldesignet mitt er vist nedenfor.
Tilstrekkelig bakkefylling brukes til å lage riktig jordforbindelse mellom alle komponentene. 3.3V DC-inngangen og 220 Volt AC-inngangen er fylt på venstre side, utgangen er plassert på høyre side av PCB. Den komplette designfilen for Eagle sammen med Gerber kan lastes ned fra lenken nedenfor.
- PCB Design, GERBER & PDF-filer for Ceiling Fan Regulator Circuit
Håndlaget PCB:
For enkelhets skyld laget jeg min håndlagde versjon av PCB, og den er vist nedenfor.
Med dette er maskinvaren vår klar i henhold til kretsskjemaet vårt, nå må vi gjøre Android-applikasjonen vår og Google Firebase klar.
Sette opp en Firebase-konto
For neste trinn må vi opprette en firebase-konto. All kommunikasjon vil gå gjennom Firebase-kontoen. For å opprette en firebase-konto, gå til Firebase-nettstedet og klikk på "kom i gang".
Når du har klikket, må du logge på med Google-kontoen din, og
Når du er logget inn, må du opprette et prosjekt ved å klikke på Opprett et prosjekt-knapp.
Hvis du gjør det, blir du omdirigert til en side som ser ut som bildet ovenfor. Skriv inn navnet på prosjektet og klikk på Fortsett.
Klikk igjen på Fortsett.
Når du har gjort det, må du godta noen vilkår ved å klikke i avkrysningsruten. Deretter må du klikke på Opprett prosjekt-knappen.
Hvis du har gjort alt riktig, etter en tid, vil du få en melding som denne. Når du er ferdig, skal firebase-konsollen din se ut som bildet nedenfor.
Nå må vi samle to ting herfra. For å gjøre det må du klikke på navnet på prosjektet du nettopp har opprettet. For meg er det CelingFanRegulator. Når du klikker på det, vil du få et dashbord som ligner på bildet nedenfor.
Klikk på innstillinger, deretter prosjektinnstillinger, siden du får vil se ut som bildene nedenfor.
Klikk på tjenestekonto -> databasehemmelighet.
Kopier databasens hemmelighet og oppbevar den et sted for senere bruk.
Klikk deretter på sanntidsdatabasen og kopier URL-en. oppbevar det også for senere bruk.
Og det er alt, det er til brannbase-siden av ting.
Arduino-kode for å kontrollere vifteregulator med NodeMCU
En enkel Arduino-kode tar seg av kommunikasjonen mellom firebase og ESP-12E-modulen, krets- og kodeforklaringen er gitt nedenfor. Først definerer vi alle nødvendige biblioteker, du kan laste ned følgende biblioteker fra de gitte lenkene Arduino JSON-biblioteket og FirebaseArduino-biblioteket
#inkludere
Vi bruker FirebaseArduino- biblioteket for å etablere kommunikasjon med firebase.
// Sett disse til å kjøre eksempler. #define FIREBASE_HOST "celingfanregulator.firebaseio.com" #define FIREBASE_AUTH "1qAnDEuPmdy4ef3d9QLEGtYcA1cOehKmpmzxUtLr" #define WIFI_SSID "your SSID" #define WIFI "
Deretter har vi definert firebase-verten, firebase auth, som vi tidligere hadde lagret da vi opprettet firebase-kontoen. Så har vi definert SSID og passord til ruteren vår.
String Resivedata; #define PWM_PIN 14;
Deretter har vi definert en strengtypevariabel , Resivedata der alle dataene vil bli lagret, og vi definerte også PWM_PIN der vi får PWM-utgangen.
Deretter, i delen om tomromoppsett () , gjør vi det nødvendige,
Serial.begin (9600); pinMode (PWM_PIN, OUTPUT); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("tilkobling"); mens (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (500); } Serial.println (); Serial.print ("tilkoblet:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); Firebase.setString ("Variabel / verdi", "FirstTestStrig");
Først aktiverer vi serien ved å ringe funksjonen Serial.begin () . Deretter har vi satt PWM-pinnen som UTGANG. Vi begynner Wi-Fi-tilkoblingen ved hjelp av WiFi.begin () -funksjonen, og vi sender SSID og passord i funksjonen. Vi sjekker tilkoblingsstatusen på en stundsløyfe og når vi først er koblet til, bryter vi sløyfen og fortsetter videre. Deretter skriver vi ut den tilkoblede meldingen med IP-adressen.
Til slutt begynner vi kommunikasjonen med firebase med Firebase.begin () -funksjonen og vi passerer parametrene FIREBASE_HOST og FIREBASE_AUTH som vi har definert tidligere. Og vi setter strengen med setString () -funksjonen, som markerer slutten på oppsettfunksjonen. I tomrumsløyfen () -delen,
Resivedata = Firebase.getString ("Variabel / verdi"); Serial.println (Resivedata); analogWrite (PWM_PIN, kart (Resivedata.toInt (), 0, 80, 80, 0)); Serial.println (Resivedata); forsinkelse (100);
Vi kaller getString () -funksjonen med Variabel / Verdi der dataene er lagret i brannbasen, et eksempel vil være som bildet nedenfor-
Deretter skriver vi ut verdien bare for feilsøking. Deretter bruker vi kartfunksjonen til å kartlegge verdien, 80 brukes fordi vi innen området 0 - 80 er i stand til å kontrollere porten til MOSFET nøyaktig, og RC lavpassfilter er noe ansvarlig for denne verdien. Innenfor dette området fungerer fasevinkelkontrollkretsen nøyaktig, du kan kalle verdien som en hardware-software sweet spot. Hvis du gjør dette prosjektet og står overfor problemer, må du leke med verdien og bestemme resultatene selv.
Og etter det bruker vi analogWrite () -funksjonen til å mate dataene og aktivere PWM, etter det bruker vi Serial.println () -funksjonen igjen bare for å se gjennom resultatet, og til slutt bruker vi en forsinkelsesfunksjon for å redusere hit-count til Firebase API som slutter på programmet vårt.
Bygg Fan Regulator-appen med MIT App Inventor
Ved hjelp av AppInventor skal vi lage en android-app som vil kommunisere med firebase og har myndighet til å endre dataene som er lagret i Firebase-databasen.
For å gjøre det, gå til appInventors-nettstedet, logg inn med Google-kontoen din og godta vilkårene. Når du har gjort det, vil du bli presentert for en skjerm som ser ut som bildet nedenfor.
Klikk på start et nytt prosjektikon og gi det et navn og trykk OK, når du har gjort det, vil du bli presentert med en skjerm som bildet nedenfor.
Når det må du først sette to etiketter, der dette er å sette glidebryteren litt ned, siden du må trekke i noen moduler og de er FirebaseDB modul og web-modulen.
De firebaseDB modul kommuniserer med utskytningsbase, den web-modulen blir brukt til å h andle. Som ser ut som bildet nedenfor.
Når det er gjort, må du trekke inn glidebryteren og en etikett som vi kalte PWM. Hvis du blir forvirret for øyeblikket, kan du sjekke ut noen andre opplæringsprogrammer angående å lage en app med en appoppfinner.
Når vi er ferdige med prosessen, klikker du på Firebase DB-ikonet og legger inn Firebase-token og Firebase URL som vi har lagret mens du oppretter Firebase-kontoen.
Nå er vi ferdige med designseksjonen, og vi må sette opp blokkseksjonen. For å gjøre det, må vi klikke på blokkeringsknappen øverst til høyre ved siden av designeren.
Når du klikker på glidebryteren, blir du presentert med en lang liste over moduler, trekker ut den første modulen og holder musen over tommelposisjonsknappen, du blir møtt med to moduler til, trekk dem begge ut. Vi kommer til å bruke dem senere.
Nå fester vi tommelposisjonsvariabelen , vi avrunder den og vi får tommelposisjonsverdien . Deretter klikker vi på firebasedb og trekker ut samtalen FirebaseDB.storeValue- merkeverdi for å lagre, modulere og feste den til bunnen av tommelposisjonsverdien.
Når det er gjort, trekker vi ut en tom tekstboks ved å klikke på tekstblokken og feste den sammen med koden, dette er koden som vi har satt i Arduino IDE for å lese og skrive dataene på firebase. Fest nå tommelverdivariabelen til verdien som skal lagres. Hvis du har gjort alt riktig, ved å flytte glidebryteren, vil du kunne endre verdiene i firebaseDB.
- .Aia (lagret fil) og.apk (kompilert fil)
Som markerer slutten på prosessen vår for å lage apper. Et øyeblikksbilde av Android-applikasjonen som vi nettopp opprettet, vises nedenfor.
Testing av ESP32-basert berøringssensorkrets
For å teste kretsen har jeg koblet en glødelampe parallelt med takviften, og jeg har drevet kretsen med en 5V DC-adapter, som du kan se på bildet ovenfor, app-glidebryteren er satt til lav, det er derfor lyspæren lyser med lav lysstyrke. Og viften roterer også sakte.
Ytterligere forbedringer
For denne demonstrasjonen er kretsen laget på et håndlaget kretskort, men kretsen kan lett bygges på kretskort av god kvalitet, i mine eksperimenter er størrelsen på kretskortet veldig på grunn av komponentstørrelsen, men i et produksjonsmiljø er det kan reduseres ved å bruke billige SMD-komponenter, fant jeg ut av å bruke en 7555 timer i stedet for en 555 timer øke kontrollen mye, dessuten øker også stabiliteten i kretsen.