3d Printed Anemometer Under 5$

by AdrienR in Workshop > 3D Printing

12674 Views, 40 Favorites, 0 Comments

3d Printed Anemometer Under 5$

IMG_0860.jpg

I am building a small stand alone meteorological station. As always, I am trying not to buy each instrument but building them as far as I can because it is :

  1. much more fun and instructive
  2. much cheaper

So I needed to find a way to measure the wind speed. An anemometer is basically a rotor with hemispherical cups mounted on it so it was a good pretext to get my 3D printer working. I also needed a way to measure the rotation speed of the rotor. I thought that a magnet and a hall sensor was a good solution.

Each time the south pole pass in front of the hall sensor, a service interrupt routine is called and a counter is incremented in the microcontroller. Each minute, the counter value is written on an SD card and reset to zero. For the moment, the result is only in rpm but if you want to have it in your favorite unit (m/h or km/h) you need to calibrate it. I will explain how I will do it. The anemometer is already on site so I will do it when returned.

Tools and Material

Tools:

  • 3D printer
  • soldering iron
  • screwdriver
  • cutter
  • sand paper
  • metal saw

Material:

  • ball bearing (D internal=5mm, D external=11mm, h=4) (it is an RC car wheel bearing)
  • hall sensor (https://www.adafruit.com/product/158)
  • magnet (cylinder d=5mm, h=10mm)
  • 3 short male headers (https://www.adafruit.com/product/3002)
  • plastic glue (I like epoxy glue like Araldite)
  • aluminium tube (d=5mm, l=27mm)
  • 3 screws without head (M3*6)

Printing and Parts Preparation

IMG_0763.JPG
IMG_0785.JPG
IMG_0786.JPG
IMG_0782.JPG
IMG_0787.JPG

  • Print the part with support for best result and clean it. I also like to use the brim printing option. Be sure that the parts are well adjusted before gluing it.
  • Cut your aluminium tube at 27mm length.
  • Solder the hall sensor on the header (3 pin)

Assembly

IMG_0788.JPG
IMG_0780.JPG
IMG_0789.JPG
IMG_0790.JPG
IMG_0784.JPG
IMG_0783.JPG
IMG_0791.JPG
IMG_0781.JPG

  1. Assemble with glue the three cups with the central part
  2. Assemble with glue the tube with the central part.
  3. Press the bearing in its compartment
  4. Press the magnet in its compartment
  5. Place the bearings on the tube
  6. Press the magnet holder on the other tube end
  7. Press the three pins into its slot
  8. Screw the hall sensor box

Program the Controller

  • You need to declare the anemometer pin (hallPin) as input and also branch a pullup resistor (physically or inside the controller by software). I did this by software with the command:

pinMode(hallPin,INPUT_PULLUP);

  • I renomment to use interruptions. In the arduino IDE, it can be done with the command:

attachInterrupt(digitalPinToInterrupt(hallPin), isr, FALLING);

  • In the ISR function I simply added the instruction:

    counter++;

  • In the main loop I check if 60 second have passed like in the arduino example (https://www.arduino.cc/en/tutorial/BlinkWithoutDelay)

unsigned long currentMillis = millis();

if (currentMillis - previousMillis > 60000) {

previousMillis = currentMillis;

//do what you want

counter=0;

}

Calibration

As said in the introduction, my anemometer is now on site and I have all the time to prepare the calibration plan.
The plan consist in making a bike tour with the anemometer on board. By recording the anemometer speed and the wheel speed, we can calculate the relationship between the anemometer speed and the wind speed. We assume that the wind speed is equal to the bike speed so choose a day without wind.

I will soon release the code who does that.