Mesurer la force du vent

FunduinoDernière mise à jour le

Ein Schalenanemometer auslesen und den Messwert in km/h umrechnen

Ein Schalenanemometer ist im Grunde ein kleiner Generator: Der Wind dreht die Halbschalen, die Drehbewegung treibt einen Gleichstrommotor an, und je stärker der Wind weht, desto höher ist die Spannung. Genau diese Spannung liest der Arduino ein.

In dieser Anleitung schließt du das Anemometer an, lässt dir den rohen Sensorwert anzeigen und rechnest ihn anschließend über einen selbst ermittelten Referenzwert in eine Windgeschwindigkeit um.

Schalenanemometer mit drei Halbschalen neben einem Arduino
Das Schalenanemometer im Aufbau

So funktioniert ein Schalenanemometer

Ein Anemometer ist eines von mehreren Messgeräten für die Geschwindigkeit eines Luftstroms. Der Aufbau ist meist sehr einfach.

Wir verwenden ein Schalenanemometer, auch Schalenstern- oder Kugelschalenanemometer genannt. Der Wind wird von Halbschalen aufgefangen und treibt die senkrechte Rotorachse an. Durch die Form der Halbschalen dreht sich die Konstruktion immer in dieselbe Richtung, egal woher der Wind kommt. Eine Welle leitet die Drehbewegung an einen Gleichstrommotor weiter, in dem durch den Generatoreffekt ein Gleichstrom entsteht. Je schneller sich der Rotor dreht, desto höher ist die Spannung.

Schalenanemometer mit drei Halbschalen neben einem Arduino
Das Schalenanemometer im Aufbau

Anemometer anschließen

Der Arduino hat analoge Eingänge, mit denen sich eine Spannung auslesen lässt. Unser Anemometer erzeugt selbst bei starkem Wind weniger als 5 Volt – du kannst es also direkt anschließen, ohne weitere Module.

Wir verwenden zusätzlich ein Schraubklemmen-Shield, damit sich die Kabelenden bequemer anschließen lassen. In den Sketchen hängt das Anemometer am analogen Pin A7.

Achtung bei der Board-Wahl: Den analogen Pin A7 gibt es beim Arduino NANO, nicht aber beim UNO – dort enden die analogen Eingänge bei A5. Verwendest du einen UNO, schließt du das Anemometer an einen vorhandenen analogen Pin an und trägst diesen im Sketch statt A7 ein.

Anemometer am Arduino NANO mit Expansion Board für Schraubklemmen
Anschluss über ein Schraubklemmen-Shield

Sensorwert auslesen

Auch bei der Programmierung erwarten dich keine großen Hürden: Der Sketch misst nur die Spannung am analogen Pin und gibt sie aus. Zunächst erscheint der rohe Sensorwert im seriellen Monitor.

Serieller Monitor mit den Sensorwerten des Anemometers
Der rohe Sensorwert im seriellen Monitor
Sensorwert des Anemometers auslesen
// Das Anemometer wird am analogen Pin A7 angeschlossen.
// Wir nennen den Pin ab jetzt "Sensor".
int Sensor = A7;
// Unter der Variablen "sensorwert" wird der Spannungswert des Sensors gespeichert.
int sensorwert;
// Der Wert fuer "t" gibt die zeitlichen Abstände zwischen den Messungen vor.
int t = 500;

void setup()
{
  // Im Setup beginnt die serielle Kommunikation. Über sie sendet das Board die
  // Messwerte an den Computer. In der Arduino-Software startest du den seriellen
  // Monitor unter "Werkzeuge", um die Messwerte zu sehen.
  Serial.begin(9600);
}

void loop()
{
  sensorwert = analogRead(Sensor);  // Auslesen des Sensorwertes
  delay(t);                         // Nach jeder Messung eine kurze Pause

  Serial.print("Sensorwert des Anemometers: ");
  Serial.println(sensorwert);
}

Vom Sensorwert zur Windgeschwindigkeit

Die angezeigten Zahlen sind noch keine Windstärke, sondern nur der Sensorwert. Um daraus eine Geschwindigkeit zu machen, brauchst du den map-Befehl – und vorher einen Referenzwert: Du musst wissen, welcher Sensorwert welcher Geschwindigkeit entspricht.

Ein Beispiel aus unserem Test: Wir haben den Aufbau mitsamt Laptop ins Auto gesetzt und den Sensor bei 50 km/h aus dem Fenster gehalten. Dabei erschien der Messwert 500. Diese beiden Zahlen tragen wir in den map-Befehl ein.

Deine eigenen Referenzwerte werden abweichen – ermittle sie einmal und setze sie in den Sketch ein.

Serieller Monitor mit der umgerechneten Windgeschwindigkeit
Nach der Umrechnung: die Windgeschwindigkeit
Sensorwert in eine Windgeschwindigkeit umrechnen
// In der neuen Variablen "Wind" speichern wir die Windgeschwindigkeit.
int Wind = 0;
// Das Anemometer wird am analogen Pin A7 angeschlossen.
int Sensor = A7;
// Unter der Variablen "sensorwert" wird der Spannungswert des Sensors gespeichert.
int sensorwert;
// Der Wert fuer "t" gibt die zeitlichen Abstände zwischen den Messungen vor.
int t = 500;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  sensorwert = analogRead(Sensor);  // Auslesen des Sensorwertes
  delay(t);                         // Nach jeder Messung eine kurze Pause

  // Der Sensorwert 500 entspricht in unserem Test 50 km/h.
  // Diese beiden Werte stehen hinten im map-Befehl.
  Wind = map(sensorwert, 0, 500, 0, 50);

  Serial.print("Windgeschwindigkeit: ");
  Serial.println(Wind);
}
Évaluer le guide

Commentaires

Poser une question ou partager une expérience

Écris-nous si quelque chose ne fonctionne pas. Indique-nous ton modèle de carte et le message d’erreur.

Nous vérifions chaque commentaire avant sa publication. Ton adresse e-mail reste chez nous.