Mit einem Anemometer bestimmt man die Windgeschwindigkeit. Für kleinste Strömungen eignet sich ein herkömmliches Anemometer natürlich nicht. Aber mit einer kaputten Glühbirne lässt sich ein extrem sensibles Anemometer basteln, welches schon beim leichtesten Luftzug ausschlägt. Basis bildet wie schon beim Piranisensor (https://stoppi-homemade-physics.de/pirani-drucksensor/) eine sog. Wheatstonebrücke.
Mit dem 1 kOhm-Potentiometer stellt man die Versorgungsspannung der Wheatstonebrücke und damit die Verstärkung des Ausgangsignals ein. Mit den beiden 10 Ohm- und 100 Ohm-Potentiometern gleicht man die Brücke ab, sodass zum Beispiel bei einer Strömungsgeschwindigkeit v = 0 am Ausgang auch 0 V anliegen. Kühlt nun eine Strömung die Heizwendel, so sinkt ihre Temperatur und damit auch ihr Widerstand. Die Brücke ist dann nicht mehr abgeglichen und man erhält eine Ausgangsspannung ungleich 0.
Tipp: Diese Methode, eine kaputte Glühbirne als Strömungssensor zu verwenden, kann man auch bei der Gaschromatographie einsetzen. Die zu untersuchenden Gase strömen dann am Ende der Trennsäule an der Heizwendel vorbei und verändern das Ausgangssignal. Dieses könnte man dann etwa mit einem Arduino erfassen und dann am PC graphisch darstellen. Gesagt, getan: https://stoppi-homemade-physics.de/gaschromatographie/.
Zuerst versuchte ich das Hitzdrahanemometer mit einer Modelleisenbahn zu kalibrieren. Ich bestimmte die Ausgangsspannung in Abhängigkeit von der Zuggeschwindigkeit. Damit ich beim Ablesen der Spannung keine Probleme habe, sendete ich diese per Bluetooth an mein Smartphone.
Den Eisenbahnkreis inkl. Trafo, Lok und Waggons habe ich mir gebraucht auf der österreichischen Verkaufsplattform http://www.willhaben.at besorgt.
Der komplette Arduino-Schaltplan:
Die verwendete Smartphone-App Arduino Bluetooth Terminal zum Empfangen der Ausgangsspannung:
Der Arduino-Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include<SoftwareSerial.h> SoftwareSerial BT(0,1); // 0 = RX, 1 = TX int sensorPin = A1; // select the input pin for the analog voltage int i; // counting variable int n; // calculate the mean value out of n values float sensorValue = 0; // variable to store the value coming from the analog input void setup() { BT.begin(38400); //Serial.begin(9600); // don't use BT-transfer and Serial-transfer to the computer at the same time!!! n = 30; // number of averaging } void loop() { sensorValue = 0.0; for(i = 1; i <= n; i++) { sensorValue = sensorValue + analogRead(sensorPin) * 5.0 / 1023; } sensorValue = sensorValue / n; //Serial.println(sensorValue); BT.print(sensorValue); BT.print(";"); // don't forget the semicolon at the end of the data transfer !!! delay(100); } |
Die 24V/2W Glühbirnen kommen von http://www.pollin.de:
Der frei liegende Glühfaden, nachdem ich das Glas entfernte:
Da die Lokomotive allerdings nur geringe Geschwindigkeiten schaffte, verwendete ich bei einer zweiten Kalibrierung meinen kleinen Windgenerator. Der leicht abgeänderte Schaltplan:
Das kommerzielle Hitzdrahtanemometer, welches ich von einem sehr netten Herrn aus Berlin geschenkt bekommen habe 🙂
Da die Ausgangsspannung relativ stark schwankt, habe ich den Mittelwert aus 500 – 1000 Messungen ausgegeben und notiert:
Meine aufgenommenen Graphen U(v) und dessen Umkehrfunktion v(U):
Der gesuchte Graph v(U) lässt sich recht schön durch das Polynom v(U) = 1.5 · U^ 2 + 0.15 · U^ 3 + 0.025 · U^ 6 annähern. Diesen Ausdruck habe ich dann in den Arduino-sketch geschrieben:
Das Arduino-Programm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include<SoftwareSerial.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display. ACHTUNG: Adresse kann auch 0x3F sein !!! // Anschlüsse: // GND - GND // VCC - 5V // SDA - ANALOG Pin 4 // SCL - ANALOG pin 5 int sensorPin = A1; // select the input pin for the analog voltage int i; // counting variable int n; // calculate the mean value out of n values float sensorValue = 0; // variable to store the value coming from the analog input float velocity; // wind velocity void setup() { Serial.begin(9600); n = 100; // number of averaging lcd.begin(); // initialize the lcd lcd.backlight(); lcd.setCursor(0,0); lcd.print("Hitzdraht-"); lcd.setCursor(0,1); lcd.print("anemometer"); delay(3000); lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); } void loop() { sensorValue = 0.0; for(i = 1; i <= n; i++) { sensorValue = sensorValue + analogRead(sensorPin) * 5.0 / 1023; } sensorValue = sensorValue / n; //Serial.println(sensorValue); velocity = 1.5 * sensorValue * sensorValue + 0.15 * sensorValue * sensorValue * sensorValue + 0.025 * sensorValue * sensorValue * sensorValue * sensorValue * sensorValue * sensorValue; //Serial.println(velocity); lcd.setCursor(0,0); lcd.print("v = "); lcd.print(velocity,2); lcd.print(" km/h "); delay(100); } |
Da ich jetzt die Funktion v(U) kannte, konnte ich erste Messungen der Windgeschwindigkeit durchführen:
Kein Wind:
Mit Wind:
Das Youtube-Video reiche ich wie immer nach…