Wind speeds are very site-dependant - with topology, ground roughness and other factors affecting the local wind speed. Knowing the wind speed and frequency of the wind speed at a particular location allows us to make a more accurate resource assessment.
An accurate resource assessment is required for ensuring the wind turbines are sited correctly - in locations where they will generate the maximum energy.
This project was to develop a low-cost, low-power wind speed monitoring unit. This has mainly been developed for use in remote rural locations with a specific application to small wind turbines for international development projects.
When looking at installing a renewable energy generator you need to be confident of the resource (solar, wind, water etc) at your particular location as this affects the energy generated at the site.
With solar PV this can be done by looking at historic data, generally from satellite readings, for the particular latitude. This will yeild pretty accurate resource data.
But the wind resource is incredibly variable and depends upon the exact topology of the area. Houses, tree and valleys can all affect the local wind resource.
For this reason wind speed data is collected at a potential wind turbine installation site. This gives real data which can be used to assess the wind speed.
Knowing the frequency at which wind speeds occur is also very useful. A site might have a high average wind speed, but it could be that there is a very high wind for a short time (which would be difficult for the wind turbine to capture) and the rest of the time the wind speed is too low for the turbine to function. For this reason it is good to know the wind speed against the frequency that the wind speed occurs.
To do this we 'bin' the data into different data range bins. For example, if the wind has been 4m/s for 10 hours and then 10m/s for 1 hour, we would bin 10 lots within the 4m/s bin and 1 lot within the 10m/s bin. This creates a wind speed frequency graph, which usually take the form of a Wiebull characteristic. There is a great explanation of wind speed variations from the Danish Wind Energy Association here.
A graph of wind speed characteristic - from Wind Energy - The Facts website.
If a developer is installing a number of very expensive large wind turbines then they must be VERY confident about the wind speed data. The data must be robust and reliable and the developer will be willing to spend a lot of money on accurate industrial equipment to have lots of confidence in the data. For a large wind farm the wind speed sensor is generally installed on a wind-up tower with remote data logging equipment to store and send data via GPRS (text) data.
Generally at least 6 months of data is required; if possible a whole year or more to get seasonal variations. This means collecting data for a large wind farm is an expensive business, but necessarily so as there are large sums of money being invested.
In a remote rural location it might be that just a single small wind turbine could provide low but vital levels of electrification. These turbines cost in the region of a few hundred dollars, so a high expense to take wind data readings would not be a sensible investment. Hence wind data is not usually recorded - the cost of recording the data outweighs the cost of the turbine.
This leads to turbine being installed in low wind areas, due to a lack of data logging.
This project intends to overcome this barrier by providing a low-cost, reusable, open-source wind speed recording unit which can be left in a remote location to record data and help improve a sites wind speed assessment.
This project was inspired by a talk given by Aran Eales and Jon Leary both of Wind Empowerment, who had been in Ethiopia looking at the potential of locally manufactured small wind turbines.
Wind Resource Assessment
Here is a list of useful resources relating to wind resource assessment. They mainly focus on large, utility-scale wind turbines and hub heights, but the information is still very important:
First we looked around to see what else was on the market.Here are some notable units and their costs (as of March 2014):
All of these units have advantages and disadvantages. The main disadvantage is the relatively high cost and lack of open-source details about the devices. The lower cost Inspeed vortex unit does not give enough detail about the wind speed, as it just records the average (and the peak gusts). This is useful, but a low-cost, open-source unit able to produce wind speed probability curves and potentially record other weather data (such as wind direction) would be most useful.
Wind speed sensors are called anemometers. There are two main types:
These are typically three small cups which rotate relative to the wind speed.
A cup anemometer.
Their output can either be a switch (typically a 'reed' switch and magnet) or a hall-effect sensor (whose output varies as a magnet passes). The cheaper versions are usually reed switch type.
These have moving and rotating parts, so they are more prone to hardware failure, but the electrical output is very simple.
These are 'solid state' - meaning they have no moving parts. They work by having a number of ultrasonic emitters and receivers. The wind speed will affect the time taken for the signal to go from the emitter to the receiver. With a number of these ultrasonic pairs the wind direction can also be calculated.
An ultrasonic wind speed sensor.
These are relatively expensive to buy off the shelf, so were not used in this project. In the future maybe a DIY ultrasonic wind sensor can be developed.
A cup anemometer is used in this design. This is simple, off the shelf and easy to interface to our circuit. The part specified is a replacement unit designed for low-cost weather stations. This is available from Maplin Electronics in the UK, part number N82NF. It is low cost, but is only available on-line.
The chosen, low-cost anemometer.
Problems with this anemometer might be robust survival in very high wind speeds - they must be installed somewhere to be tested.
The output is a reed switch to give output pulses once per rotation. One issue is the calibration of pulses relative to the wind speed. The output conversion factor must be tested.
A similar anemometer from SparkFun is available here (for folk in the US), which has a specified output curve.
Here is a new Anemometer from Adafruit Industries, which has an output voltage proportional to the wind speed which is very nice, but a bit pricey, at $45.
As mentioned, the low cost anemometer does not include a calibration coefficient. There has been quite a lot of discussion around this topic including some discussion about the mathematics and physics here. We must have an accurate conversion of pulses to wind speed as the data depends upon this for wind energy assessment.
It seems that the anemometer output depends upon the radius of the cup and also with anemometer factor. Anemometer factor is due to the fact that while one cup is being pushed around, the other two will be slowing it down. In most 3 cup anemometers, this is a value of 2-3.
The wind speed/pulse output can be calculated using the formula:
The cup will move 2 x Pi x r to generate one pulse. So if we get one pulse per second then the wind has moved 2 x Pi x r (converted to m/s). So (with r = 50mm = 0.05m) 1 pulse = 0.314 m/s, but this does not take into account anemometer factor.
It would be good to calibrate the anemometers in a wind tunnel and there is a very good paper on wind tunnel calibration of cup anemometers given at AWEA in 2012 and available here. But that paper is too in-depth for this project.
Another, pretty crude, option would be to hold the unit out of a vehicle window on a windless day and drive at different speeds, which measuring the output frequency.
This is a work in progress and more details will be written up here when available.
Update 13/8/14: These anemometers have had basic testing for their use in wind speed logging. It has been found that there are a number of disadvantages which include:
That being said, a conversion factor of 0.7m/s per Hz can be used and would give a reasonable output.
Wind speed is typically reported in miles per hour, knots, or meters per second.
At this point it is worth noting the many DIY anemometer designs available. Some of them have great plans and, if you have time, effort and parts available, this might be a very good option.
This will be the next stage of this design - a simple, rugger, low-cost, DIY pulse anemometer. Watch this space.
These are usually called a "wind vane". These are mechanical units which have a large 'flap' which is pushed by the wind so the other end points towards the direction of the wind.
A wind vane.
At present a wind vane is not used in this design, although this will be added soon. Check this space for more details.
I obtained a couple of wind vanes which are designed to work with the same weather monitoring station as the anemometer. I opened it up and saw that it works on an array of reed switches, giving 8 separate wind directions. Interestingly, these reed switches are used to introduce different resistors to the output line. Hence the output is a varying resistance, which can be measured using just one analogue pin and a potential divider.
The resistances are as follows, with all the resistors accurate to 1%. Using a potential divider of 10k for the lower resistor and an input voltage equal to the reference voltage, we can also calculate the analogue input values for each range (using the potential divider calculation where the output reading will be (10k/(10k+R))*1024):
We can see that these values are quite nicely spread out, with a good range between each one. To measure the wind vane direction we can simple 'bin' the data into different directions.
The sampling of wind direction is an interesting problem.
We are averaging the wind speed data over the sample period (usually 10mins). We do not want to just take a wind direction reading every 10 mins as this might happen during a gust and not give an accurate answer.
So one possible solution (implemented here) is to sample the wind direction every second. The wind vane gives a reading in one of eight possible directions (N,NE,E,SE,S,SW,W,NW). An array of wind directions is created in software. Each second the wind direction is sampled and the appropriate wind direction is incremented.
At the end of the sample period, the array direction with the maximum value is used as the most appropriate direction. This is then stored, along with the other data on the SD card.
This seems to work well, but I am unsure if it is the standard method. Other ways could be to use an average direction.
Update 5/7/15: An additional technique for wind direction sensing is discussed here:
This uses an unbalanced anemometer and measures the slight variation in the pulse time to measure the direction.
In the prototype, I used a temperature and humidity sensor from Embedded Adventures. A write up of using this sensor is available here. While temperature and humidity are very useful parameters to record, this unit is designed to be low-cost and hence this is not required here.
This may be added in the future. Please see this post about temperature sensing, which might help your project.
On the wind logger shield I added space for a thermistor (in this case a 47k NTC one). This is a low cost way of adding temperature sensing, but the sensor is just mounted on the PCB so does not give a great indication of the ambient temperature, especially if it is within the enclosure.
This project required a simple, low-cost and low power data logger. There are many options available for this but it was decided to use the DataDuino logger as the basis for this project. The main reason for this was that RE-Innovation developed it and hence have them in stock to play around with.
It is a very low-cost Arduino based data-logger which stores data to an SD card. It also includes a real time clock for time-stamping the data. It is designed to count pulses, read/write digital I/O and read up to 4 analogue sensors. All of this data is stored onto an SD card at a sample rate of 1 to 9999 seconds.
The Arduino environment is full of examples and so the code is fast to develop. The standard DataDuino code is useful when there is a power supply available, but has a relatively high current consumption (around 20mA) so changes were required to the standard DataDuino code.
This unit is designed for remote locations and so is battery powered. This means we must be very careful about the power consumed. A standard Arduino Uno board is not designed for low power and consumes around 20-30mA continuously. While this does not seem high, lets calculate how long some large D cell batteries will last:
To generate the correct voltage we will require 3 of these cells in series, which gives 3 x 1.5V = 4.5V which will run the microcontoller. The ATMEGA328 will function correctly down to 2.7V DC (there might be some issue with the clock speed when the voltage drops, but the real time clock does the time-critical counting and therefore there should be no problems).
If the current is 30mA then a 17000mAh battery will last for 17000mAh/30mA = 566 hours, or around 23 days. This is not good enough - we do not want to be changing batteries every three weeks...
So we must reduce the current consumption. With the power saving techniques described here the average current consumption of the device has been reduced to 2mA, so a 17000mAh battery will last for 8500 hours, or around 1 year. This is much better. With the 1W solar PV charger add-on, as shown below, the unit will run continuously in nearly every location, as long as the PV module sees 1/2 hour sunshine a day.
Three of these batteries will last around 1 year....
There were some challenges with reducing the power consumption so here are some notes on the measures implemented:
I have written a bit about sleep modes before and there is a wealth of information on sleep modes for the Arduino. Basically when the microcontroller is not doing anything we allow it to go to 'sleep'. This switches off any un-wanted peripherals, such as ADCs etc.
The mode used is the 'SLEEP_MODE_PWR_DOWN' which switches off everything except the interrupts. The unit will only awake when there is an interrupt from either the anemometer pulse (set on the external interrupt pin D3) or from the real time clock 1Hz signal (on the external interrupt pin D2).
This reduced the power consumption from 20mA when active to <100nA when asleep. Th unit wakes up to write to the SD card and flash the LED and whenever a pulse occurs, hence the average power consumption is in the region of 2mA.
One issue I had problems with was eventually found to be the SD card library in the Arduino IDE. I was using the standard SD library to write to the SD card. This worked well but it seemed that the device never went back to sleep after the first SD card write had occurred.
It turns out that there is a problem with the standard SD card library which means that the SD card never enters low power mode when the file is closed. This is a known issue. It caused the device to consume 10-13mA constantly.
The solution was to download and include the SdFat library. This solved the problem, allowing the SD card to go to low power mode when the file had been closed.
On the Arduino Uno board there are a number of power regulators - one to convert the input voltage down to the 5V required, one to give 3.3V and power is also required for the USB to serial converter FTDI IC.
The DataDuino does not include a USB-Serial converter IC, which reduces cost, but also reduces power consumption.
There is also no on-board 5V voltage regulator, so we have to be a bit careful not to apply >5V. With 3 x 1.5V 'D' cells we can directly power the IC, which removes the voltage regulator and hence reduces the power consumption.
To provide the 3.3V required by the SD card, the MCP1703 low drop out and low quiescent current voltage regulator is used. This takes very little current to run (2.0 micro Amps) when there is no power drawn.
The real time clock is designed for battery use and only takes a very low current during normal operation.
A small solar PV unit can be used to keep the internal batteries recharged.
The unit itself takes around 3mA while in use. Each day it consumes 3mA x 5V x 24h = 0.36Wh.
A 1W solar PV module would need to be in full sun for 0.36 hours (21.6 minutes) to generate this amount of energy. So even in the deepest Winter in the UK (where we receive about 1 hour of full sun per day in winter), as long as it was receiving some solar irradiance, a 1W solar PV module would generate enough to keep the device running constantly.
An off-the-shelf solution can be found with the Seed Studio Solar Charger Shield v2, along with a small solar PV module and a Lithium Polymer (LiPo) battery. This uses the CN3083 lithium ion battery charger IC, along with a LM3224 DC-DC converter IC to provide a constant 5V output.
The circuit diagram for this is available here.
This makes a solar PV add-on very sensible for remote locations, but increases the cost of the unit. The bespoke PCB will include a solar charger for a rechargeable battery pack, but this will be added in the future.
It turns out that the CN3083 IC is only really available to folk in China, so adding this to a bespoke circuit might be difficult...
One issue found when building a prototype using this add on board is that you must use the DC/DC converter to step up to 5V. This is an inefficiency and waste when the microcontroller and circuit will easily run directly from the battery voltage (around 3.5-4.2V DC). In order to sort this, I needed to hardwire from the battery positive terminal to the input voltage (wire around the DC/DC converter which maintains 5V). This required a short length of wire to go from a MOSFET pad to the 5V input to the circuit. The DC/DC converter MUST be OFF for this to work correctly - It will probably damage the converter IC if it is switched on.
****image of the hard wire around the DC/DC converter****
In the future the DC/DC converter function is not required, as the battery voltage is being measured as well.
The circuit is based upon the DataDuino PCB. Details and circuit diagrams for the DataDuino are available here.
A full schematic and circuit board design will be included here, when completed. At present I am using the DataDuino with some modifications. Please see the GITHUB repository for the KiCAD PCB design files.
The DataDuino schematic is shown here:
This circuit can also be built using a standard Arduino Uno (although power consumption will be higher due to the voltage regulator and the USB-Serial converter IC).The schematic for building this with an Arduino Uno is here:
The wiring schematic for the wind logger using and Arduino Uno.
A (slightly confusing) breadboard wiring diagram using an Arduino Uno is shown here:
The main features are the ATMEGA 328 microcontorller, the PCF8493 Real time clock unit and the SD card holder:Microcontroller - ATMEGA328
This is the 'brains' of the unit. It is an 8-bit micrcontroller with 32KB memory and 1kB EEPROM. It is used along with the Arduino Uno bootloader and the Arduino IDE. This is used in a large number of projects due to its ease of use and large array of open source libraries.
Real Time Clock - PCF8563
This keeps time on the unit and also gives a very accurate 1Hz clock signal for the micrcontroller. A crystal oscillator provides the reference frequency. For greatest accuracy the crystal oscillator should be trimmed with a variable capacitor so that the frequency is very accurate. This requires a 6-digit frequency counter, which is not available to everyone.SD card holder
Data is stored onto a standard SD card holder. A 3.3V supply is provided to power the SD card. Potential dividers are used to level shift the 5V output signals from the microcontroller.
This design is simplified by the use of the DataDuino, as it already has nearly everything required on board.
Here are the schematics and breadboard design if you are using the DataDuino (on sale here!... but I would say that.)
The schematic is much simpler with the DataDuino board, as most parts are on the PCB.
Here is the breadboard layout - much simpler!
(Note: The battery shown should be 3 x D cells, so around 4.5V.)
This version of the wind logger has been built from the DataDuino PCB, with some additions. This process is highlighted here:
You do not need the power socket nor the power LED and resistor (this will just drain power from the batteries).
The capacitors have been pushed flat before soldering to keep the profile low. Lower profile capacitors have been ordered for future versions.
The prototype also reads the battery voltage on one of the analog inputs (A1). A potential divider reduces he voltage to the input range of the analogue inputs. This can be used to see when the battery has run down as this may affect the results. This will be added to the bespoke PCB in the future.
The prototype also has a 100k pull up resistor on the anemometer input (D3) and a switch has been added to pin D7. This is used to put the device into calibrate mode, where the various EEPROM and RTC parameters can be set.
This close-up of another protoytpe shows the potential divider required for the battery voltage monitoring. It also shows a thermistor (and associated balance resistor) which was added to the prototype for interest.
I have now completed a few versions of this wind logger. I have done so many additions and variations that I needed to list them here to remind me (mainly for when I produce a new PCB dedicated as a wind logger).
I will add anything else to this list when it occurs.
Update 15/8/14: An add-on Wind Datalogger Shield has been produced which implements these changes. Please see below for details.
It has been found that reed-switch anemometers do not have any de-bouncing, and this problem gets worse at higher wind speeds.
When the switch is open or closed it sometimes 'bounces', which gives some false high frequency pulses. We can try and remove these with two main methods - either with hardware (using an RC filter or putting in some kind of debounce circuit) or in software (where we use a timer and a pulse must be of a certain length to be considered a correct pulse).
A software fix is probably easiest, but this is something to think about.
Following on from the testing of the prototype, I decided to go ahead and get a PCB made which could be added to the DataDuino base. This was mainly for a friends work in South America, where he is researching the best-practice cases of implementing small wind turbines. He wanted to use some of these loggers as a training workshop and so that they could collect wind speed data in remote locations simply and cheaply.
This was totally based upon the above prototype, but with a PCB for ease of production.
This shield was designed for the battery power supply (rather than the solar PV supply). It would work with both design though.
The schematic is here:
The PCB layout is here:
Here are some photos of the shield:
Here are the build instructions for the shield:
The shield PCB design is available on the GITHUB repository here.
The software has been written using the Arduino IDE. It requires a number of libraries to also be installed.
A flow diagram for the code is given here, to help understand what is happening.
The software basic flow diagram. The device sleeps unless the interrupts are triggered.
The Arduino code is available via GITHUB here. It contains numerous comments, which should help understand the code.
This will be left outside for a number of months. A waterproof >IP65 (Ingress Protection rating) enclosure must be used with space for either 3 x D cell batteries or the Solar Charger shield and LiPo battery.
A 3 x D cell battery holder is available from Rapid Electronics, with technical specifications here. This is 107mm wide x 71mm deep by 29mm high, so the enclosure must fit this.
The DataDuino circuit board is 65mm width x 100mm depth x 15mm height.
A standard waterproof electrical junction box is used to house everything. This is a bit bigger than required, but they are low-cost, robust and easy to find.
A compression cable gland is used for cable entry.
Here are some photos of attaching everything into an enclosure:
An IP65 rated enclosure from Rapid electronics (code **** is used). Everything fits onto a laser cut wooden base-plate which screws to the enclosure with self-tapping screws.
The shield fits onto the DataDuino PCB. The DataDuino PCB attaches to the base-plate with PCB stand-offs.
This is the base-plate and PCB unit before fitting into the enclosure.
A set of downloadable instructions is available here:
The anemometer (and wind vane in the future) is designed to fit on top of a tall guyed pole, which is raised at a reasonable (known) height above the ground. There will be very little force on the tower, hence lightweight materials can be used.
It is important that the anemometer and wind vane are kept level, otherwise they will 'rest' in a set direction and this will affect the results. To stop this some form of levelling system must be used, the simplest being a bubble level and binoculars used to see when the unit is level.
A laser-cut fixing unit which is easy to attach to a number of different poles is being developed.
The design of this will be available here when completed.
****TO DO: Anemometer fixings*****
We are also developing a DIY kit of parts, including enclosure and PCB, trying to keep the cost as low as possible.
Here are some photos of the original prototype, which has been in constant service since January 2014:
**** to be added *****
Here are the various build instructions for the wind data logging unit.
The data is stored as a new .csv file every day. It is designed to be human readable, with headings written in a human readable format. Data is taken every sample period (set by the user, but 10 mins is the standard) and stored to the SD card.
The standard format for wind data is as 10 minute averages.
Standard macros/conversion programs will be written which take the daily data and process it to return the wind speed over time and as a wind speed characteristic curve.
There are two main ways of displaying wind resource data. One is the wind-speed characteristic which plots the wind speed against the probability of that wind speed.
The other way is alongside wind direction data in the form of a wind rose:
The wind rose shows the average wind speed from a number of different directions. The wind rose can show either the probability of the wind blowing from a certain direction or the amount of energy in the wind from different directions. The first version just needs the wind direction and the time stamp. The second version shows much more about the site for wind energy potential and shows the cumulative wind energy from each direction, which incorporates the wind speed along with wind direction and time stamp.
This is work in progress - updates will be added here as they are completed.