# Laser Anemometer

22,972

181

38

## Introduction: Laser Anemometer

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)

• 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

• 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)

Step 3

Install the Processing3 software

• 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

• Connect the VL6180X sensors to your Arduino
• 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.

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.

First Prize in the
Laser Challenge

## Recommendations

16 1.5K
81 9.6K
1 188 19K
8 901

• ### Baking Contest

After running for a certain period of time I get this error message:

Processing 4 ->
Error, disabling serialEvent() for COM6
null

What is the reason for this error? How can I fix it?

I have never encountered this message so I cannot comment. You appear to be using Processing 4 ... my code is written in Processing 3, Perhaps there is a slight incompatibility?

About the laser anemometer project,hello, first of all I like your project very much and I want to implement this project.
How did we get the speed from the distance dx and dy we found?
What exactly is scale?
Shouldn't we divide the distance we found by time?
I didn't quite understand this part:
Windspeed = sqrt(sq(dX) + sq(dY)) * Scale;

The anemometer uses the Pythagoras formula sqrt(sq(dX) + sq(dY))to calculate the wind direction from dX and dY. If the pipe deflection is proportional to wind-speed then wind-direction multiplied by an arbitary scale factor gives us the wind speed. Methods of calibrating the anemometer are discussed in https://www.instructables.com/Laser-Anemometer/

Excellent and ingenious idea. I was wondering, if the same effect could be accomplished with a 3-axis accelerometer/gyroscope chip?

Thank you for commenting :)
With regards to using a 3-axis accelerometer/gyroscope chip ... probably not.
In theory it should work but gyro drift is likely to be a problem.

Can you explain how to override the I2C address? I am
stuck now. The laser is working but default address is 0x29.

Thank you for your interest in my project :)

The the default addresses of your VLX6180X sensors are automatically over-ridden when you install and run the "laser_anemometer_sender.ino" found in Step 4 "Software".

This is achieved as follows:
- Code lines 43, 44 contain the over-ride addresses.
- Code lines 94~96 shutdown both sensors to avoid address conflict
- Code lines 98~104 set the North facing sensor to 0x30 (Note ... this address does not conflict with 0x29 when the East-facing sensor is reactivated)
- Code lines 125~131 set the East-facing sensor to 0x31 (Note ... not necessary but done in case future sensors need to be added)

Thank you,
I can see the address change using the code.
I2C scanner. Scanning ...
Done.
Found 2 device(s).
Is it possible to change the address permanently?

Thank you for the information and help.
It is working now just need to do the final assembly and calibration.

Great news ... glad you have got it working :)

Great application for laser ToF sensor. I do have a concern about maintenance regarding dust and dirt accumulation, and insects obstructing the light path.
Your design got me thinking about a similar solution using load cells and flat panels. You may be interested to consult this web site...https://www.engineeringtoolbox.com/wind-load-d_177... as it provides math to extrapolate static pressure into wind speed.
Keep on making!

Thank you for your interest in my project and commenting :)
I guess time will tell whether dust and insects are a problem. At the time the contest was announced I had been experimenting with several different types of anemometer. It so happened that I had my "Laser Anemometer" working.

This is truly an excellent idea!!! I am currently trying to design a low cost weather station, so I think I will give it a try.

It would be nice if you could try it in real world conditions.

Also, I suppose there is maximum speed it can measure, depending on the radius of the cylinder. Am I correct? Have you calculated this parameter?

Thank you for commenting :)
With regards to the maximum speed, the pipe won't move if it is infinitely heavy or infinitely small, so there is no maximum ... it's just a case of finding a cylinder/cone that gives a suitable reading in your wind conditions and adjusting the length and damping to suit.
Good luck with your weather station ... let's know how you get on.

This is a really neat idea, I’ve wanted to build an anemometer with no moving parts using a system of ports and channels leading to 4 differential pressure sensors, referencing the difference in pressure between a compass direction and the housing at atmospheric pressure (kind of like a pitot static tube). I may have to try this method too and see how accurate it could be compared to cup and vane systems.

It's not "no moving parts". The whole idea is that the pipe moves, and the lasers detect how far. Kind of stretching the idea of a 'laser anemometer', IMO.

Thank you for commenting.
Let's know how you get on ... your project sounds interesting :)

This is one of the most clever ideas I've seen on Instructables! I'm sure there are many tweeks and alternate embodiments that can be applied, but it opens the door for much experimentation.

For instance, simply capping the "darg pipe" with a heavier, and possibly wieghted, one would give a higher range of readings for those hurricanes we get around here that has a nasty habit of ripping away the typical vane-type anemometers!