Introduction: Laser Anemometer

About: 55+ years in electronics, computers, and teaching ... now retired.

This instructable explains how to make an anemometer from an Arduino Uno R3, two VL6180X laser distance modules, and a section of plastic drain pipe or similar.

Processing3 is used to display the wind speed and wind direction.

The wind direction is independent of the pipe dimensions.

The sensitivity to wind speed depends on the pipe dimensions and the amount of applied damping.

Construction is simple ... all you need is a drill , a hacksaw, and a hot-glue gun.

The anemometer is purely experimental and is published in the hope that the techniques will be of use to others.

The estimated cost to build this anemometer is between $20 and $50 depending on how many parts you have on-hand.

Images

  • The cover photo shows the anemometer construction
  • Photo 2 shows the display
  • The video shows the anemometer in operation.

Supplies

The following parts were obtained from https://www.aliexpress.com/

  • 2 only VL6180X Range Finder Optical Ranging Sensor Modules for Arduino I2C
  • 1 only Arduino UNO R3

The following parts were obtained locally

  • 1 only small length (150mm) 65mm inside diameter plastic downpipe [1]
  • 1 only endcap to fit the above pipe
  • 1 only length (500mm) 10mm inside diameter aluminium pipe
  • 1 only 11/16” extension spring
  • 1 only M4 bolt
  • 1 only M4 nut
  • 1 only self-tapping screw
  • 6 only lengths of hookup wire (these are threaded through the pipe)

The estimated cost to build this anemometer is between $20 and $50 depending on how many parts you have on-hand.

Note

[1]

An opaque plastic drink bottle with the base cut off should also work providing it is circular.

Step 1: Theory

The cross-section of a pipe is a circle.

The points at which the two laser beams touch the inside of a pipe define the end points of a chord on this circle.

The length of this chord varies when the pipe is tilted (photos 1, 2, 3)

Knowing the pipe radius it is possible to calculate the X and Y displacement of the pipe from which the wind speed and direction may be calculated (photos 3, 4)

Step 2: Circuit Diagram

The anemometer circuit is shown in photo 1

Very few parts are required ... just the Arduino and two Vl6180X laser distance modules.

Step 3: Construction

Step 1

(Photo 1)

  • Cut one loop off the end of the 11/16” extension spring (I used a diamond file)
  • Press the M4 nut inside the coiled spring
  • Solder the nut through the spring ... the solder will not take to the spring but will prevent the nut pulling out.
  • Push the other end of the spring down tube
  • Fasten the spring in place using the self tapping screw. [1]


Step 2

(Photo 2)

  • Cut 20mm from the bottom of an old credit card or similar.
  • Cut the length to twice the height of a VL6180X sensor
  • Lightly score the center and fold to 90 degrees
  • Hot glue this plastic angle to the aluminium tube such that it will just be covered when the plastic downpipe (or bottle) is attached


Step 3

(Photo 3)

  • Hot glue a VL6180X sensor to each of the plastic faces.
  • Before doing this read Step 5: Calibration below


Step 4

(Photo 4)

  • Drill a 5mm hole in the tube above the sensors
  • Feed three pairs of twisted wires through the hole and out of the tube.
  • One pair of wires is for VCC and GND
  • The second pair of wires is for SDA and SCL
  • Each of the remaining wires is attached to a sensor SHDN pin


Step 5

(Photo 5)

  • Attach the pipe and end-cap


Step 6

(Photo 6)

  • Mount the pipe vertically for testing [2]


Notes

[1]

  • The amount of exposed spring determines the damping.
  • If too much spring is exposed the tube will tend to oscillate much like a playground swing
  • If too little is exposed the tube will require a large air flow before it will tilt.


[2]

  • A multispeed hair-dryer is useful when testing.

Step 4: Software

Step 1

(Photo 1)

Download and install the Pololu VL6180X library.

  • Open your Arduino IDE
  • Left-click “Sketch | Include Library | Manage Libraries
  • Type VL6180 in the search bar and wait for the above screen
  • Left-click "Install" to install the Pololu VL6180X library


Step 2

Install the Arduino Software

  • Download the attached file “laser_anemometer_sender.ino”
  • Using a text editor such as Notepad++, copy the file contents to a new Arduino sketch.
  • Save the sketch as “laser_anemometer_sender” (without the quotes)
  • Compile and up load this file to your arduino


Step 3

Install the Processing3 software

  • Download and install Processing3 from https://processing.org/download
  • Download the attached file “laser_anemometer_display.pde”
  • Using a text editor such as Notepad++, copy the file contents to a new Processing sketch.
  • Save the sketch as “laser_anemometer_display” (without the quotes)


Step 4

Testing

  • Unplug your Arduino
  • Connect the VL6180X sensors to your Arduino
  • Reconnect your Arduino to your computer
  • Open the “laser_anemometer_display” sketch
  • Left click the top-left start-button ... a display similar to photo 2 will appear. [1]


Note

[1]

If you get a red error message click the Processing Stop button then click the Start button again.

The error message is harmless and appears if the input buffer has unexpected data.

Step 5: Calibration

Step 1

Calibrating the sensors

  • The VL6180X sensors are able to measure distances 1mm .. 100mm from the sensor.
  • The data sheet indicates that this distance may be up to 15mm out ... I found mine to be around 11mm out.
  • Instructions for calibrating each sensor may be found by reading the setup() notes in the Arduino file “laser_anemometer_sender.ino”.
  • Once adjusted each sensor is able to measure distances down to 1mm from the sensor face.
  • You will get a reading of 255 if an object is not detected.
  • Photo 1 shows my test setup.

Step 2

Calibrating the anemometer wind speed.

The following steps calibrate the zero wind speed reading.

  • Change code lines 52,53 to read
  • const float North_offset = 0.0; // distance (mm) from centre-line
  • const float East_offset = 0.0 ; // distance (mm) from centre-line
  • Recompile and upload the Arduino code
  • Run the Processing3 sketch ... the red disc will be extremely large
  • Note the two right-hand numbers flowing down the processing screen
  • Copy these numbers to the North_offset and East_offset in Arduino code lines 52,53
  • Recompile and upload the Arduino code
  • Rerun the Processing3 code ... the red disc will now appear as shown in photo 2.

Possible methods for calibrating the moving wind speed, short of a wind tunnel, include:

  • Take the anemometer for a drive on a still day with a friend noting the deflection at different road speeds ... this should work providing the road is flat and level. Once you have this data it's just a matter of adjusting the scale.
  • Listen to / view your local weather forecast and note the pipe deflection for various local wind speeds over a period of time then adjust the scale.

Once the sensors have been calibrated it's just a matter of aligning the north-facing sensor due North with the aid of a compass. Be aware that True North is not the same as Magnetic North.

Step 6: Summary

This instructable describes a laser anemometer made from an Arduino Uno R3, two VL6180X laser distance modules, and a section of plastic drain pipe or similar.

The anemometer is purely experimental and is published in the hope that the techniques will be of use to others.

The anemometer is designed for land based situations ... it cannot be used on moving objects

The wind speed and wind direction are presented in graphics form

The wind direction is independent of the pipe dimensions.

The sensitivity to wind speed depends on the pipe dimensions and the amount of applied damping.

Adjustment procedures are provided.

Construction is simple ... all you need is a drill , a hacksaw, and a hot-glue gun.

The estimated cost to build this anemometer is between $20 and $50 depending on how many parts you have on-hand.

  Click here   to view my other instructables.

Laser Challenge

First Prize in the
Laser Challenge