- Arbetar med en IoT-baserad takfläktregulator
- Material som krävs för AC-fläkthastighetskontrollkrets
- AC-fläktregulatorns styrkrets
- PCB-design för IoT-kontrollerad takfläktregulator
- Konfigurera ett Firebase-konto
- Arduino-kod för att styra fläktregulator med NodeMCU
- Bygga fläktregulatorappen med MIT App Inventor
- Testar den ESP32-baserade pekssensorkretsen
- Ytterligare förbättringar
I den här artikeln bygger vi en AC Fan Regulator Circuit, som kan styra fläktens hastighet genom att begränsa strömmen till fläkten. Termen AC Ceiling Fan Regulator är en munfull, därför kommer vi helt enkelt att kalla det en fläktregulator från och med nu. En fläktregulatorkrets är en viktig komponent som används för att öka eller minska hastigheten på en AC-fläkt / motor beroende på behov. För några år tillbaka hade du valet mellan en konventionell fläktregulator av resistiv typ eller en elektronisk regulator, men numera har allt ersatts av den elektroniska fläktregulatorns krets.
I en tidigare artikel har vi visat dig hur du kan bygga en AC-fasvinkelkontrollkrets med en Arduino som kunde styra ljusstyrkan hos en glödlampa och också styra hastigheten på en fläkt, så att öka den i ett hack i den här artikeln ska vi bygga en IoT-baserad AC-takfläktregulatorkrets. Som kommer att kunna styra hastigheten på din takfläkt med hjälp av en Android-applikation.
Arbetar med en IoT-baserad takfläktregulator
Fan Regulator-kretsen är en enkel krets som kan styra hastigheten på en AC-takfläkt genom att ändra fasvinkeln för AC-sinusvågen eller i enkla termer exakt kontroll av TRIAC. Som jag har nämnt alla de grundläggande funktionerna i AC-fläktregulatorns krets i AC Phase Angle Control med 555 Timer och PWM- artikel kommer vi att koncentrera oss på den faktiska uppbyggnaden av kretsen. Och igen, om du vill veta mer om ämnet, kolla också artikeln om AC Light Dimmer med Arduino och TRIAC Project.
Det grundläggande blockschemat ovan visar hur kretsen faktiskt fungerar. Som jag har sagt tidigare kommer vi att generera en PWM-signal med hjälp av Firebase IoT och NodeMCU, sedan kommer PWM-signalen att skickas genom lågpassfiltret som styr porten till en MOSFET efter det att en 555 timer kommer att styra själva TRIAC med hjälp av en optokopplare.
I det här fallet ändrar Android-appen värdet i firebaseDB och ESP kontrollerar ständigt för ändringar som händer i DB: n om någon förändring inträffar som dras ner och värdet omvandlas till en PWM-signal
Material som krävs för AC-fläkthastighetskontrollkrets
Bilden nedan visar materialet som används för att bygga denna krets, eftersom det är tillverkat med mycket generiska komponenter, bör du kunna hitta allt listat material i din lokala hobbybutik.
Jag har också listat komponenterna i en tabell nedan med typ och kvantitet eftersom det är ett demonstrationsprojekt, jag använder en enda kanal för att göra det. Men kretsen kan enkelt skalas upp enligt krav.
- Skruvplint 5.04mm-kontakt - 2
- Huvudkontakt 2,54 mm-kontakt - 1
- 56K, 1W motstånd - 2
- 1N4007 Diod - 4
- 0.1uF, 25V kondensator - 2
- AMS1117 Spänningsregulator - 1
- 1000uF, 25V kondensator - 1
- DC-uttag - 1
- 1K motstånd - 1
- 470R Motstånd - 2
- 47R Motstånd - 2
- 82 K Motstånd - 1
- 10 K motstånd - 5
- PC817 Optokopplare - 1
- NE7555 IC - 1
- MOC3021 Opto TriacDrive - 1
- IRF9540 MOSFET - 1
- 3.3uF kondensator - 1
- Anslutningskablar - 5
- 0.1uF, 1KV kondensator - 1
- ESP8266 (ESP-12E) Microcontroller - 1
AC-fläktregulatorns styrkrets
Schemat för IoT-fläktregulatorns krets visas nedan, den här kretsen är mycket enkel och använder generiska komponenter för att uppnå fasvinkelkontroll.
Denna krets består av mycket noggrant designade komponenter. Jag kommer att gå igenom var och en och förklara varje block.
ESP8266 (ESP-12E) Wi-Fi-chip:
Det här är den första delen av vår krets och det är den del där vi har bytt många saker, andra delar förblir exakt samma, dvs om du har följt den tidigare artikeln.
I det här avsnittet har vi dragit upp stiften Enable, Reset och GPIO0, vi har också dragit ner GPIO15 och Ground Pin, som rekommenderas av databladet för chipet. När det gäller programmering har vi placerat en 3pin-rubrik som exponerar TX, RX och markstiftet genom vilken vi kan programmera chipet mycket enkelt. Vi har också satt en taktil switch för att sätta GPIO0 i mark, detta är ett nödvändigt steg för att sätta ESP i programmeringsläge. Vi har valt GPIO14-stiftet som utgång genom vilken PWM-signalen genereras.
Notera! Vid tidpunkten för programmeringen måste vi trycka på knappen och driva enheten med DC-uttaget.
Zero-Crossing Detection Circuit:
Först på vår lista är nollkorsningsdetekteringskretsen gjord med två 56K, 1W motstånd i kombination med fyra 1n4007-dioder och en PC817-optokopplare. Och denna krets är ansvarig för att tillhandahålla nollgenomgångssignalen till 555 timer IC. Vi har också tagit av fasen och den neutrala signalen för att vidare använda den i TRIAC-sektionen.
AMS1117-3.3V spänningsregulator:
Spänningsregulatorn AMS1117 används för att driva kretsen, kretsen är ansvarig för att ge ström till hela kretsen. Dessutom har vi använt två 1000uF kondensatorer och en 0.1uF kondensator som en frikopplingskondensator för AMS1117-3.3 IC.
Kontrollkrets med NE555-timer:
Ovanstående bild visar 555 timer-styrkrets, 555 är konfigurerad i en monostabil konfiguration, så när en utlösarsignal från nollkorsningsdetekteringskretsen träffar utlösaren börjar 555-timern att ladda kondensatorn med hjälp av ett motstånd i allmänhet), men vår krets har en MOSFET i stället för ett motstånd, och genom att styra porten till MOSFET styr vi strömmen som går till kondensatorn, det är därför vi styr laddningstiden, därför styr vi utgången från 555 timers.
TRIAC och TRIAC-förarkretsen:
TRIAC fungerar som huvudströmbrytaren som faktiskt slås på och av och därmed styr utsignalen från växelströmssignalen. Körning av TRIAC med MOC3021 Opto-Triac-enhet, den driver inte bara TRIAC utan ger också optisk isolering, 0,01uF 2KV högspänningskondensator och 47R-motståndet bildar en snubberkrets som skyddar vår krets mot högspänningsspikar som uppstår när den är ansluten till en induktiv belastning, den icke-sinusformade naturen hos den växlade växelsignalen är ansvarig för spikarna. Det ansvarar också för problem med effektfaktorer, men det är ett ämne för en annan artikel.
Lågpassfilter och P-kanal MOSFET (fungerar som motstånd i kretsen):
82K-motståndet och kondensatorn 3.3uF bildar lågpassfiltret som är ansvarigt för att utjämna högfrekventa PWM-signalen som genereras av Arduino. Som tidigare nämnts fungerar P-Channel MOSFET som det variabla motståndet, som kontrollerar kondensatorns laddningstid. Styr det är PWM-signalen som utjämnas av lågpassfiltret.
PCB-design för IoT-kontrollerad takfläktregulator
Kretskortet för vår IoT Ceiling Fan Regulator-krets är utformad i ett ensidigt kort. Jag har använt Eagle PCB designprogramvara för att designa min PCB men du kan använda valfri designprogramvara. 2D-bilden av min brädedesign visas nedan.
Tillräcklig markpåfyllning används för att göra korrekt jordanslutning mellan alla komponenter. 3.3V DC-ingången och 220 Volt AC-ingången är fyllda på vänster sida, utgången finns på högra sidan av kretskortet. Den kompletta designfilen för Eagle tillsammans med Gerber kan laddas ner från länken nedan.
- PCB-design, GERBER & PDF-filer för Ceiling Fan Regulator Circuit
Handgjord PCB:
För enkelhets skull gjorde jag min handgjorda version av kretskortet och den visas nedan.
Med detta är vår hårdvara redo enligt vårt kretsschema, nu måste vi göra vår Android-applikation och Google Firebase redo.
Konfigurera ett Firebase-konto
För nästa steg måste vi skapa ett firebase-konto. All kommunikation går genom Firebase-kontot. För att skapa ett Firebase-konto, gå till Firebase-webbplatsen och klicka på "Kom igång".
När du klickar måste du logga in med ditt Google-konto och
när du är inloggad måste du skapa ett projekt genom att klicka på knappen skapa ett projekt.
Om du gör det omdirigeras du till en sida som ser ut som bilden ovan. Skriv in namnet på ditt projekt och klicka på Fortsätt.
Klicka igen på Fortsätt.
När du har gjort det måste du godkänna vissa villkor genom att klicka på kryssrutan. Därefter måste du klicka på knappen Skapa projekt.
Om du har gjort allt korrekt, efter en tid, får du ett meddelande som detta. När du är klar ska din firebase-konsol se ut som bilden nedan.
Nu måste vi samla in två saker härifrån. För att göra det måste du klicka på namnet på det projekt du just skapat. För mig är det CelingFanRegulator, när du klickar på den får du en instrumentpanel som liknar bilden nedan.
Klicka på inställningar, sedan projektinställningar, sidan du kommer att se ut som bilderna nedan.
Klicka på servicekonto -> databashemlighet.
Kopiera databashemligheten och förvara den någonstans för senare användning.
Klicka sedan på realtidsdatabasen och kopiera URL: en. behåll också det för senare användning.
Och det är allt, det finns till eldstaden.
Arduino-kod för att styra fläktregulator med NodeMCU
En enkel Arduino-kod tar hand om kommunikationen mellan Firebase och ESP-12E-modulen, krets- och kodförklaringen ges nedan. Först definierar vi alla nödvändiga bibliotek som krävs, du kan ladda ner följande bibliotek från givna länkar Arduino JSON-bibliotek och FirebaseArduino-biblioteket
#omfatta
Vi kommer att använda FirebaseArduino- biblioteket för att upprätta kommunikation med firebase.
// Ställ in dessa för att köra exempel. #define FIREBASE_HOST "celingfanregulator.firebaseio.com" #define FIREBASE_AUTH "1qAnDEuPmdy4ef3d9QLEGtYcA1cOehKmpmzxUtLr" #define WIFI_SSID "your SSID" #define WIFI "
Därefter har vi definierat firebase-värd, firebase auth, som vi tidigare hade sparat när vi skapade firebase-kontot. Sedan har vi definierat SSID och lösenord för vår router.
Sträng Resivedata; #define PWM_PIN 14;
Därefter har vi definierat en strängtypsvariabel , Resivedata där all data kommer att lagras och vi definierade också PWM_PIN där vi får PWM-utdata.
Därefter gör vi det nödvändiga i avsnittet om tomrumsuppsättning () ,
Serial.begin (9600); pinMode (PWM_PIN, OUTPUT); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("anslutande"); medan (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); fördröjning (500); } Serial.println (); Serial.print ("ansluten:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); Firebase.setString ("Variabel / värde", "FirstTestStrig");
Först aktiverar vi serien genom att ringa funktionen Serial.begin () . Därefter har vi ställt in PWM-stiftet som OUTPUT. Vi startar Wi-Fi-anslutningen med hjälp av WiFi.begin () -funktionen och vi skickar SSID och lösenord i funktionen. Vi kontrollerar anslutningsstatusen i en stundslinga och när vi väl är anslutna bryter vi slingan och fortsätter vidare. Därefter skriver vi ut det anslutna meddelandet med IP-adressen.
Slutligen börjar vi kommunikationen med firebase med Firebase.begin () -funktionen och vi skickar parametrarna FIREBASE_HOST och FIREBASE_AUTH som vi har definierat tidigare. Och vi ställer in strängen med setString () -funktionen, vilket markerar slutet på installationsfunktionen. I avsnittet om tomrumsslinga ()
Resivedata = Firebase.getString ("Variabel / värde"); Serial.println (Resivedata); analogWrite (PWM_PIN, karta (Resivedata.toInt (), 0, 80, 80, 0)); Serial.println (Resivedata); fördröjning (100);
Vi kallar funktionen getString () med variabel / värde där data lagras i eldplatsen, ett exempel skulle vara som bilden nedan-
Sedan skriver vi ut värdet bara för felsökning. Därefter använder vi kartfunktionen för att kartlägga värdet, 80 används för att inom intervallet 0 - 80 kan vi styra porten till MOSFET exakt, och RC lågpassfilter är något ansvarig för detta värde. Inom detta område fungerar fasvinkelstyrkretsen korrekt, du kan kalla värdet som en hårdvaruprogram. Om du gör detta projekt och möter problem måste du leka med värdet och bestämma resultaten själv.
Och efter det använder vi analogWrite () -funktionen för att mata in data och aktivera PWM, efter det använder vi funktionen Serial.println () bara för att granska resultatet och slutligen använder vi en fördröjningsfunktion för att minska hit-count till Firebase API som gör slutet på vårt program.
Bygga fläktregulatorappen med MIT App Inventor
Med hjälp av AppInventor ska vi skapa en Android-app som kommer att kommunicera med Firebase och har befogenhet att ändra de data som lagras i Firebase-databasen.
För att göra det, gå till appInventors webbplats, logga in med ditt Google-konto och acceptera villkoren. När du har gjort det kommer du att presenteras med en skärm som ser ut som bilden nedan.
Klicka på starta en ny projektikon och ge den ett namn och tryck OK, när du väl gör det kommer du att få en skärm som bilden nedan.
När du väl är där måste du först sätta två etiketter, där detta är för att sätta skjutreglaget lite ner, nästa måste du dra in några moduler och de är FirebaseDB- modulen och webbmodulen.
De firebaseDB modul kommunicerar med Firebase, den webbmodul används för att h andle begäran. Som ser ut som bilden nedan.
När det är klart måste du dra in skjutreglaget och en etikett som vi heter PWM. Om du blir förvirrad just nu kan du kolla in några andra handledning om hur du skapar en app med en appuppfinnare.
När vi är klara med processen klickar du på Firebase DB-ikonen och lägger in Firebase-token och Firebase URL som vi har sparat när du skapar Firebase-kontot.
Nu är vi färdiga med designavsnittet och vi måste ställa in blockavsnittet. För att göra det måste vi klicka på blockknappen i det övre högra hörnet bredvid designern.
När du väl har klickat på skjutreglaget så kommer du att få en lång lista med moduler, dra ut den första modulen och håll musen över tumplaceringsknappen, du hälsas med ytterligare två moduler, dra ut dem båda. Vi kommer att använda dem senare.
Nu bifogar vi tumplaceringsvariabeln , vi avrundar den och vi får tumplaceringsvärdet. Därefter klickar vi på firebasedb och drar ut samtalet FirebaseDB.storeValue-taggvärde för att lagra, modulera och fästa det till botten av tummen.
När du är klar drar vi ut en tom textruta genom att klicka på textblocket och bifoga den med taggen, det här är taggen som vi har ställt in i Arduino IDE för att läsa och skriva data på firebase. Fäst nu tumvärdesvariabeln till värdet som ska lagras. Om du har gjort allt korrekt genom att flytta skjutreglaget kan du ändra värdena i firebaseDB.
- .Aia (sparad fil) och.apk (kompilerad fil)
Vilket markerar slutet på vår apptillverkningsprocess. En ögonblicksbild av Android-applikationen som vi just skapade visas nedan.
Testar den ESP32-baserade pekssensorkretsen
För att testa kretsen har jag anslutit en glödlampa parallellt med takfläkten och jag har drivit kretsen med en 5V likströmsadapter, som du kan se på bilden ovan är appreglaget inställt på lågt, det är därför glödlampan lyser med låg ljusstyrka. Och fläkten roterar också långsamt.
Ytterligare förbättringar
För denna demonstration är kretsen gjord på ett handgjort kretskort men kretsen kan enkelt byggas på en kretskort av god kvalitet, i mina experiment är storleken på kretskortet verkligen lite på grund av komponentstorleken, men i en produktionsmiljö är det kan reduceras genom att använda billiga SMD-komponenter, jag tyckte att med en 7555 timer istället för en 555 timer ökar kontrollen kraftigt, dessutom ökar också kretsens stabilitet.