- Werking van een op IoT gebaseerde plafondventilatorregelaar
- Benodigde materialen voor AC-ventilatorsnelheidsregelcircuit
- AC-regelcircuit voor ventilatorregelaar
- PCB-ontwerp voor de IoT-gestuurde plafondventilatorregelaar
- Een Firebase-account instellen
- Arduino-code om de ventilatorregelaar te bedienen met NodeMCU
- Bouwen van de Fan Regulator-app met MIT App Inventor
- Het op ESP32 gebaseerde aanraaksensorcircuit testen
- Verdere verbeteringen
In dit artikel bouwen we een AC-ventilatorregelaarcircuit, dat de snelheid van de ventilator kan regelen door de stroomstroom naar de ventilator te beperken. De term AC-plafondventilatorregelaar is een mondvol, daarom zullen we het vanaf nu gewoon een ventilatorregelaar noemen. Een ventilatorregelaarcircuit is een cruciaal onderdeel dat wordt gebruikt om de snelheid van een AC-ventilator / motor naar behoefte te verhogen of te verlagen. Een paar jaar geleden had je de keuze tussen een conventionele resistieve ventilatorregelaar of een elektronische regelaar, maar tegenwoordig is alles vervangen door het elektronische ventilatorregelaarcircuit.
In een vorig artikel hebben we je laten zien hoe je een AC Phase Angle Control Circuit kunt bouwen met een Arduino die in staat was om de helderheid van een gloeilamp te regelen en ook de snelheid van een ventilator te regelen, dus om nog een stap verder te gaan in dit artikel gaan we een IoT-gebaseerd AC-plafondventilatorregelaarcircuit bouwen. Die in staat zal zijn om de snelheid van uw plafondventilator te regelen met behulp van een Android-applicatie.
Werking van een op IoT gebaseerde plafondventilatorregelaar
Het Fan Regulator-circuit is een eenvoudig circuit dat de snelheid van een AC-plafondventilator kan regelen door de fasehoek van de AC-sinusgolf te wijzigen of, in eenvoudige bewoordingen, nauwkeurige regeling van de TRIAC. Zoals ik alle basisfuncties van het AC-ventilatorregelaarcircuit heb genoemd in het artikel AC Phase Angle Control met 555 Timer en PWM, zullen we ons concentreren op het eigenlijke bouwen van het circuit. En nogmaals, als je meer wilt weten over het onderwerp, bekijk dan ook het artikel over AC Light Dimmer met Arduino en TRIAC Project.
Het basisblokschema hierboven laat zien hoe het circuit echt werkt. Zoals ik eerder heb gezegd, zullen we een PWM-signaal genereren met behulp van de Firebase IoT en NodeMCU, waarna het PWM-signaal door het laagdoorlaatfilter wordt geleid dat de poort van een MOSFET bestuurt, daarna zal een 555-timer besturen de eigenlijke TRIAC met behulp van een optocoupler.
In dit geval wijzigt de Android-app de waarde in de firebaseDB en controleert de ESP voortdurend op eventuele wijzigingen die in die DB plaatsvinden als er een wijziging optreedt die wordt afgebroken en de waarde wordt geconverteerd naar een PWM-signaal
Benodigde materialen voor AC-ventilatorsnelheidsregelcircuit
De onderstaande afbeelding toont het materiaal dat is gebruikt om dit circuit te bouwen, aangezien dit is gemaakt met zeer algemene componenten, zou u al het vermelde materiaal in uw plaatselijke hobbywinkel moeten kunnen vinden.
Ik heb ook de componenten in een onderstaande tabel met type en aantal vermeld, aangezien het een demonstratieproject is, ik gebruik hiervoor een enkel kanaal. Maar het circuit kan eenvoudig worden opgeschaald volgens de vereisten.
- Schroefaansluiting 5,04 mm connector - 2
- Mannelijke header 2,54 mm connector - 1
- 56K, 1W weerstand - 2
- 1N4007 Diode - 4
- 0.1uF, 25V Condensator - 2
- AMS1117 Spanningsregelaar - 1
- 1000uF, 25V condensator - 1
- DC-voedingsaansluiting - 1
- 1K weerstand - 1
- 470R-weerstand - 2
- 47R Weerstand - 2
- 82 K weerstanden - 1
- 10 K weerstanden - 5
- PC817 Optocoupler - 1
- NE7555 IC - 1
- MOC3021 Opto TriacDrive - 1
- IRF9540 MOSFET - 1
- 3.3uF Condensator - 1
- Verbindingsdraden - 5
- 0.1uF, 1KV Condensator - 1
- ESP8266 (ESP-12E) Microcontroller - 1
AC-regelcircuit voor ventilatorregelaar
Het schema voor het IoT-ventilatorregelaarcircuit wordt hieronder weergegeven, dit circuit is heel eenvoudig en maakt gebruik van generieke componenten om fasehoekregeling te bereiken.
Dit circuit is opgebouwd uit zeer zorgvuldig ontworpen componenten. Ik zal ze allemaal doornemen en elk blok uitleggen.
ESP8266 (ESP-12E) Wi-Fi-chip:
Dit is het eerste deel van ons circuit en het is het deel waar we veel dingen hebben veranderd, andere delen blijven precies hetzelfde, dwz als je het vorige artikel hebt gevolgd.
In deze sectie hebben we de pinnen Enable, Reset en GPIO0 uitgetrokken, ook hebben we GPIO15 en de Ground Pin naar beneden getrokken, die worden aanbevolen door het gegevensblad van de chip. Wat het programmeren betreft, hebben we een 3-pins header geplaatst die de TX, RX en de grondpin blootlegt, waardoor we de chip heel gemakkelijk kunnen programmeren. Ook hebben we een tactiele schakelaar geplaatst om de GPIO0 op aarde te zetten, dit is een noodzakelijke stap om de ESP in programmeermodus te zetten. We hebben de GPIO14-pin geselecteerd als uitgang waardoor het PWM-signaal wordt gegenereerd.
Notitie! Op het moment van programmeren moeten we op de knop drukken en het apparaat van stroom voorzien met de DC-vataansluiting.
Detectiecircuit nuldoorgang:
Ten eerste staat op onze lijst het nuldoorgangsdetectieschakeling gemaakt met twee 56K, 1W-weerstanden in combinatie met vier 1n4007-diodes en een PC817-optocoupler. En dit circuit is verantwoordelijk voor het leveren van het nuldoorgangssignaal aan de 555 timer-IC. We hebben ook het fase- en neutrale signaal afgeplakt om het verder te gebruiken in de TRIAC-sectie.
AMS1117-3.3V Spanningsregelaar:
De AMS1117 spanningsregelaar wordt gebruikt om het circuit van stroom te voorzien, het circuit is verantwoordelijk voor het leveren van stroom aan het hele circuit. Daarnaast hebben we twee 1000uF condensatoren en een 0.1uF condensator gebruikt als ontkoppelingscondensator voor de AMS1117-3.3 IC.
Besturingscircuit met NE555-timer:
De bovenstaande afbeelding toont het 555 timerbesturingscircuit, de 555 is geconfigureerd in een monostabiele configuratie, dus wanneer een triggersignaal van het nuldoorgangdetectiecircuit de trigger raakt, begint de 555-timer de condensator op te laden met behulp van een weerstand (in het algemeen), maar ons circuit heeft een MOSFET in plaats van een weerstand, en door de poort van de MOSFET te besturen, regelen we de stroom die naar de condensator gaat, daarom regelen we de oplaadtijd, vandaar dat we de output van de 555-timers regelen.
TRIAC en het TRIAC-Driver Circuit:
De TRIAC fungeert als de hoofdschakelaar die daadwerkelijk wordt in- en uitgeschakeld en dus de output van het AC-signaal regelt. Door de TRIAC aan te drijven met behulp van de MOC3021 Opto-Triac-drive, drijft hij niet alleen de TRIAC aan, maar biedt hij ook optische isolatie, de 0,01uF 2KV hoogspanningscondensator en de 47R-weerstand vormt een snubbercircuit, dat ons circuit beschermt tegen hoogspanningspieken die optreden wanneer het is aangesloten op een inductieve belasting. De niet-sinusvormige aard van het geschakelde AC-signaal is verantwoordelijk voor de pieken. Het is ook verantwoordelijk voor problemen met de arbeidsfactor, maar dat is een onderwerp voor een ander artikel.
Laagdoorlaatfilter en P-kanaal MOSFET (fungeert als de weerstand in het circuit):
De 82K-weerstand en de 3.3uF-condensator vormen het laagdoorlaatfilter dat verantwoordelijk is voor het afvlakken van het hoogfrequente PWM-signaal dat door de Arduino wordt gegenereerd. Zoals eerder vermeld, fungeert de P-Channel MOSFET als de variabele weerstand, die de oplaadtijd van de condensator regelt. Het is het PWM-signaal dat wordt afgevlakt door het laagdoorlaatfilter.
PCB-ontwerp voor de IoT-gestuurde plafondventilatorregelaar
De printplaat voor ons IoT-circuit voor plafondventilatorregelaars is ontworpen in een enkelzijdig bord. Ik heb Eagle PCB-ontwerpsoftware gebruikt om mijn PCB te ontwerpen, maar u kunt elke ontwerpsoftware van uw keuze gebruiken. De 2D-afbeelding van mijn bordontwerp wordt hieronder weergegeven.
Er wordt voldoende grondvulling gebruikt om goede aardverbindingen te maken tussen alle componenten. De 3.3V DC input en de 220 Volt AC input zijn aan de linkerkant gevuld, de output zit aan de rechterkant van de print. Het complete ontwerpbestand voor Eagle samen met de Gerber kan worden gedownload via onderstaande link.
- PCB-ontwerp, GERBER & PDF-bestanden voor regelcircuit voor plafondventilatoren
Handgemaakte printplaat:
Voor het gemak heb ik mijn handgemaakte versie van de PCB gemaakt en deze wordt hieronder weergegeven.
Hiermee is onze hardware klaar volgens ons schakelschema, nu moeten we onze Android-applicatie en Google Firebase gereed maken.
Een Firebase-account instellen
Voor de volgende stap moeten we een firebase-account opzetten. Alle communicatie verloopt via het firebase-account. Om een firebase-account aan te maken, gaat u naar de Firebase-website en klikt u op 'aan de slag'.
Zodra u klikt, moet u inloggen met uw Google-account, en
Als je eenmaal bent ingelogd, moet je een project aanmaken door op de knop project aanmaken te klikken.
Als u dit doet, wordt u doorgestuurd naar een pagina die lijkt op de afbeelding hierboven. Typ de naam van uw project en klik op doorgaan.
Klik nogmaals op doorgaan.
Als je dat eenmaal hebt gedaan, moet je akkoord gaan met enkele algemene voorwaarden door op het selectievakje te klikken, vervolgens moet je op de knop Project maken klikken.
Als je alles goed hebt gedaan, krijg je na enige tijd een melding als deze. Als u klaar bent, zou uw firebase-console eruit moeten zien als de onderstaande afbeelding.
Nu moeten we hier twee dingen verzamelen. Om dat te doen, moet u op de naam van het project klikken dat u zojuist hebt gemaakt. Voor mij is het CelingFanRegulator, zodra je erop klikt, krijg je een dashboard dat lijkt op de afbeelding hieronder.
Klik op instellingen en vervolgens op projectinstellingen, de pagina die u krijgt, ziet eruit als de onderstaande afbeeldingen.
Klik op serviceaccount -> databasegeheim.
Kopieer het databasegeheim en bewaar het ergens voor later gebruik.
Klik vervolgens op de realtime database en kopieer de URL. bewaar die ook voor later gebruik.
En dat is alles, er is aan de vuurbasiskant van de dingen.
Arduino-code om de ventilatorregelaar te bedienen met NodeMCU
Een eenvoudige Arduino-code zorgt voor de communicatie tussen Firebase en de ESP-12E-module, de circuit- en code-uitleg wordt hieronder gegeven. Eerst definiëren we alle benodigde bibliotheken, u kunt de volgende bibliotheken downloaden via de gegeven links Arduino JSON-bibliotheek en FirebaseArduino-bibliotheek
# omvatten
We zullen de FirebaseArduino- bibliotheek gebruiken om communicatie met Firebase tot stand te brengen.
// Stel deze in om voorbeelden uit te voeren. #define FIREBASE_HOST "celingfanregulator.firebaseio.com" #define FIREBASE_AUTH "1qAnDEuPmdy4ef3d9QLEGtYcA1cOehKmpmzxUtLr" #define WIFI_SSID "uw SSID" #define WIFI_PASSWORD "uw pas"
Vervolgens hebben we de firebase-host, firebase auth, gedefinieerd die we eerder hadden opgeslagen toen we het firebase-account aan het maken waren. Vervolgens hebben we de SSID en het wachtwoord van onze router gedefinieerd.
String Resivedata; # definiëren PWM_PIN 14;
Vervolgens hebben we een stringtype variabele gedefinieerd, Resivedata waar alle gegevens worden opgeslagen en we hebben ook de PWM_PIN gedefinieerd waar we de PWM-uitvoer zullen krijgen.
Vervolgens doen we in het gedeelte void setup () de nodige,
Serial.begin (9600); pinMode (PWM_PIN, OUTPUT); WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("verbinden"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vertraging (500); } Serial.println (); Serial.print ("verbonden:"); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); Firebase.setString ("Variabele / waarde", "FirstTestStrig");
Eerst schakelen we de serie in door de functie Serial.begin () aan te roepen. Vervolgens hebben we de PWM-pin ingesteld als OUTPUT. We beginnen de Wi-Fi-verbinding met behulp van de WiFi.begin () -functie en we geven de SSID en het wachtwoord door in de functie. We controleren de verbindingsstatus in een while-lus en eenmaal verbonden, doorbreken we de lus en gaan verder. Vervolgens printen we het verbonden bericht met het IP-adres.
Ten slotte beginnen we de communicatie met de firebase met de functie Firebase.begin () en geven we de parameters FIREBASE_HOST en FIREBASE_AUTH door die we eerder hebben gedefinieerd. En we stellen de string in met de setString () functie, die het einde van de setup-functie markeert. In de void loop () sectie,
Resivedata = Firebase.getString ("Variabele / waarde"); Serial.println (Resivedata); analogWrite (PWM_PIN, kaart (Resivedata.toInt (), 0, 80, 80, 0)); Serial.println (Resivedata); vertraging (100);
We noemen de functie getString () met Variable / Value waar de gegevens worden opgeslagen in de firebase, een voorbeeld zou zijn als de afbeelding hieronder-
Vervolgens printen we de waarde alleen voor foutopsporing. Vervolgens gebruiken we de kaartfunctie om de waarde in kaart te brengen, 80 wordt gebruikt omdat we binnen het bereik van 0 - 80 de poort van de MOSFET nauwkeurig kunnen besturen, en het RC-laagdoorlaatfilter is enigszins verantwoordelijk voor deze waarde. Binnen dit bereik werkt het fasehoekregelcircuit nauwkeurig, je mag de waarde noemen als een hardware-software sweet spot. Als je dit project doet en problemen ondervindt, moet je met de waarde spelen en zelf de resultaten bepalen.
En daarna gebruiken we de functie analogWrite () om de gegevens in te voeren en de PWM in te schakelen, daarna gebruiken we de functie Serial.println () opnieuw om het resultaat te bekijken, en tot slot gebruiken we een vertragingsfunctie om de hit-count naar de firebase API die het einde van ons programma maakt.
Bouwen van de Fan Regulator-app met MIT App Inventor
Met behulp van AppInventor gaan we een Android-app maken die communiceert met de firebase en de autoriteit heeft om de gegevens die in de firebase-database zijn opgeslagen te wijzigen.
Ga hiervoor naar de appInventors-website, log in met uw Google-account en accepteer de algemene voorwaarden. Zodra u dit doet, krijgt u een scherm te zien dat lijkt op de onderstaande afbeelding.
Klik op het start een nieuw project-pictogram en geef het een naam en druk op OK. Zodra u dat doet, krijgt u een scherm te zien zoals de onderstaande afbeelding.
Eenmaal daar moet je eerst twee labels plaatsen, waar dit is om de schuif een beetje naar beneden te zetten, vervolgens moet je enkele modules binnenhalen en dit zijn de FirebaseDB- module en de web-module.
De firebaseDB- module communiceert met de firebase, de webmodule wordt gebruikt om het Http-verzoek te verwerken. Dat lijkt op de afbeelding hieronder.
Zodra dat is gebeurd, moet je de schuifregelaar en een label met de naam PWM naar binnen trekken. Als je op dit moment in de war raakt, kun je enkele andere tutorials bekijken over het maken van een app met een app-uitvinder.
Nadat we klaar zijn met het proces, klikt u op het firebase DB-pictogram en voert u het firebase-token en de firebase-URL in die we hebben opgeslagen tijdens het maken van het firebase-account.
Nu zijn we klaar met het ontwerpgedeelte en moeten we het blokgedeelte opzetten. Om dat te doen, moeten we op de blokkeerknop in de rechterbovenhoek naast de ontwerper klikken.
Zodra u op de schuifregelaar klikt, krijgt u een lange lijst met modules te zien, trekt u de eerste module eruit en beweegt u uw muis over de duimpositieknop. U wordt begroet met nog twee modules, trek ze allebei uit. Die gaan we later gebruiken.
Nu koppelen we de thumbposition- variabele, we ronden deze af en we krijgen de thumb position-waarde. Vervolgens klikken we op de firebasedb en halen we de aanroep FirebaseDB.storeValue- tagwaarde eruit om deze op te slaan, te moduleren en aan de onderkant van de duimpositiewaarde te bevestigen.
Als we klaar zijn, halen we een leeg tekstvak tevoorschijn door op het tekstblok te klikken en het te bevestigen met de tag, dit is de tag die we in de Arduino IDE hebben ingesteld om de gegevens op firebase te lezen en te schrijven. Koppel nu de thumb value-variabele aan de value to store-tag. Als je alles correct hebt gedaan, kun je door de schuifregelaar te verplaatsen de waarden in de firebaseDB wijzigen.
- De.aia (opgeslagen bestand) en.apk (gecompileerd bestand)
Dat markeert het einde van ons proces voor het maken van apps. Een momentopname van de Android-applicatie die we zojuist hebben gemaakt, wordt hieronder weergegeven.
Het op ESP32 gebaseerde aanraaksensorcircuit testen
Om het circuit te testen, heb ik een gloeilamp parallel aan de plafondventilator aangesloten en ik heb het circuit gevoed met een 5V DC-adapter, zoals je kunt zien in de bovenstaande afbeelding, staat de app-schuifregelaar te laag, daarom de lamp gloeit met een lage helderheid. En de ventilator draait ook langzaam.
Verdere verbeteringen
Voor deze demonstratie is het circuit gemaakt op een handgemaakte PCB, maar het circuit kan eenvoudig worden gebouwd op een PCB van goede kwaliteit, in mijn experimenten is de grootte van de PCB echt een beetje vanwege de grootte van het onderdeel, maar in een productieomgeving is het kan worden verminderd door goedkope SMD-componenten te gebruiken, ik vond het gebruik van een 7555-timer in plaats van een 555-timer de controle aanzienlijk vergroten, bovendien neemt ook de stabiliteit van het circuit toe.