Arduino-gestuurde Residentiële Luchtstroommeter: Bouwen & Monitoren
Onderdelen en benodigdheden
![]() |
Arduino UNO | × | 1 |
![]() |
Jumper wires (standaard) – 25 stuks totaal | × | 25 |
![]() |
Breadboard (standaard) | × | 1 |
![]() |
Draaipotentiometer, 10 kΩ | × | 1 |
![]() |
Adafruit RGB Backlight LCD - 16x2 | × | 1 |
![]() |
Doorvoert weerstand, 220 kΩ | × | 1 |
| Diymall Voltage Sensor DC 0-25V | × | 1 | |
| DROK Signaalversterker AD620 | × | 1 | |
![]() |
Cup Blade Anemometer (bekervormige aanemometer) | × | 1 |
Benodigde tools
![]() |
Soldeerbout (standaard) |
Over dit project
Achtergrond
We moesten een luchtstroommeter bouwen voor residentiële toepassingen. In de huidige HVAC-industrie zijn de enige luchtstroomsensoren bedoeld voor industriële systemen. De apparaten die gebruikt worden voor industriële roosters zijn te groot voor residentiële roosters of kunnen de luchtstroom niet meten vanwege de lagere uitvoer van residentiële HVAC-systemen.
Hoe het werkt
Om een signaal te genereren uit de luchtstroom, gebruikten we een bekeraanemometer om de lucht te vangen. We ontwierpen aangepaste 3D-geprinte bladen met Autodesk Inventor om de prestaties te optimaliseren. Ook werd een 3D-geprinte behuizing gemaakt voor de aanemometer.


Het signaal van de aanemometer wordt uitgelezen door een spanningsensor. Dit signaal moest versterkt worden voor nauwkeurigere meting. De versterker (AD620) versterkt de uitgangsspanning van de aanemometer met een factor 10 (instelbaar tussen 1.5x en 1000x afhankelijk van invoerspanning).
Een Arduino Uno leest het analoge signaal van de spanningsensor en controleert wat op het LCD-scherm wordt getoond. We wilden de windsnelheid in CFM (Cubic Feet per Minute) weergeven.
De bouw
Elektronica
Start met de aanemometer. Hieronder foto's van het apparaat.


Bekijk de "Anemometer Top View". Het punt waar de bladen verbinden is L-vormig en dun – niet geschikt voor hoge snelheden. Daarom ontwierpen we nieuwe bladen: dikker en steviger. Doel: het luchtoppervlak tussen blaad en behuizing verkleinen, meer lucht vangen, hogere spanning.

Spanningsanalyses in Autodesk Inventor tonen aan dat de nieuwe bladen veel steviger zijn bij hoge snelheden.

STL-bestanden voor de bladen zijn bijgevoegd in de bestanden-sectie. NOG NIET DE NIEUWE BLADEN BEVESTIGEN.
Plaats de gemodificeerde aanemometer in de behuizing (STL-bestanden in bestanden-sectie). Zonder bladen: schuif aanemometer door het gat in de bodem van de behuizing. Bevestig bodem van aanemometer met Gorilla Glue aan twee dunne houten cirkels (hobbywinkel). Boor 4 gaatjes: 1 voor draad, 3 voor schroeven.

Versterker aansluiten

Alle draden aan versterker zijn male-to-male.
- Soldeer rode draad aan +S (rechts) → rode draad aanemometer.
- Soldeer zwarte draad aan -S (rechts) → gele draad aanemometer.
- Isoleer met isolatietape.

Versterker aan batterijvoeding:
- Gele draad aan GND (rechts) → zwarte draad batterijpakketconnector.
- Witte draad aan Vln (rechts) → rode draad batterijpakketconnector.
Versterker aan spanningsensor:
- Blauwe draad aan GND versterker → VCC spanningsensor.
- Groene draad aan Vout versterker → GND spanningsensor.

Nu spanningsensor aan Arduino aansluiten – zie schema in schematics-sectie.
Afwerking
Plaats een stuk schuimplaat als "plafond" boven de ventilatorbehuizing (Gorilla Glue). Elektronica op schuimplaat, meer schuimplaat om te behuizen.

Gaten in schuim voor toegang tot 9V-batterijen van Arduino en versterker.

Trechter bouwen: PVC-platen in trapeziumvorm (4 stuks), verbonden met Gorilla Glue en kit. Dezelfde methode voor verbinding trechter-behuizing. Aan grote kant van trechter: weerstrips voor afdichting tegen roost. Doorsnede groot uiteinde: 14" × 14".
Kalibratie
Getest met een referentie-apparaat met bekende luchtstroom. Eerst code die spanning op LCD toonde. Verzamelde data gebruikt voor vergelijkingen om CFM te berekenen.


Op de grafiek: twee curven, initiële luchtstroom en werkelijke luchtstroom (verschil door verstuiking in trechter). We gebruiken de best-fit vergelijking voor werkelijke luchtstroom:
y = 1.1409x² + 44.958x in onze Arduino-code.
Code is verdeeld in drie regimes:
- Grote CFM: y = 1.1409x² + 44.958x
- Middel tot lage CFM: y = 40x + 20
- Nul CFM: y = 0
Code vind je in de codesectie. Na uploaden is de stroommeter klaar!
Zelf kalibreren (optioneel)
Wil je zelf kalibreren, b.v. in m/s of mph?
- Vind manier om werkelijke stroomsnelheid te meten (goedkoop: hand-aanemometer kopen).
- Plaats hand-aanemometer voor ventilator met meerdere snelheidsstanden.
- Noteer windsnelheid per stand.
- Upload "Voltage Sensor Code" naar Arduino om uitgangsspanning te meten.
- Noteer spanning per ventilatorstand.
- Maak in Excel een spreidingsdiagram "Windsnelheid vs. Spanning".
- Gebruik trendlijn voor vergelijking die "Windsnelheid vs. Spanning" modelleert.
- Niet lineair? Gebruik aparte vergelijkingen voor lager/hoog bereik.
- Vervang mijn vergelijkingen in "Flowmeter Code" door de jouwe. Upload → klaar!
Code
Flowmeter Code (C/C++)
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Weerstandswaarden in de sensor
float R1 = 30000;
float R2 = 7500;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = ((5 * sensorValue * (R1 + R2)) / (1024 * R2));
// Stukgewijze functie voor CFM
if (voltage > 1) {
// Grote CFM
float cfm = (1.1409 * voltage * voltage) + 44.258 * voltage;
Serial.println(cfm);
lcd.print("CFM = ");
lcd.setCursor(0, 1);
lcd.print(cfm);
delay(1000);
lcd.clear();
delay(1000);
}
else if (voltage > 0.01) {
// Middel tot lage CFM
float cfm = (40 * voltage) + 20;
Serial.println(cfm);
lcd.print("CFM = ");
lcd.setCursor(0, 1);
lcd.print(cfm);
delay(1000);
lcd.clear();
delay(1000);
}
else {
// Geen stroom
float cfm = 0;
Serial.println(cfm);
lcd.print("CFM = ");
lcd.setCursor(0, 1);
lcd.print(cfm);
delay(1000);
lcd.clear();
delay(1000);
}
}
Code voor Spanningsensor (calibratie)
float R1 = 30000;
float R2 = 7500;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = ((5 * sensorValue * (R1 + R2)) / (1024 * R2));
Serial.println(voltage);
delay(1000);
}
Voltage Sensor Code (met LCD voor zelf kalibreren)
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float R1 = 30000;
float R2 = 7500;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = ((5 * sensorValue * (R1 + R2)) / (1024 * R2));
Serial.println(voltage);
lcd.print("V = ");
lcd.setCursor(0, 1);
lcd.print(voltage);
delay(1000);
lcd.clear();
delay(1000);
}
Schema's
Productieproces
- Luchtreinigers: ontwerp, geschiedenis en toekomstige trends
- Zuurstoftankproductie: Van Grondstoffen tot Kwaliteitsborging
- Luchtverfrisser: Van Oude Geuren tot Moderne Plug-in Technologie
- Zuurstof: Van oude ontdekking tot moderne industriële krachthuis
- Airconditioning Systemen: Ontwerp, Productie en Toekomstige Trends
- Luchtballonnen: Van de Gebroeders Montgolfier tot Modern Vliegen
- Airbagsystemen: Ontwerp, Geschiedenis en Toekomstige Innovaties
- Bouw je eigen UFO Attack Game met Arduino UNO & MAX7219 Display
- 3D RGB Arduclock – Bluetooth LED Tijdstuk met Real-Time Clock
- Riviergezondheidsmonitor: Arduino-gebaseerd Waterkwaliteitssysteem
- Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding






