In our weather station, an individual data period is about 5 seconds and the averaging time is 5 minutes. For the direction data, each 5 second data period results in one of 16 numbers which represent the state of the reed switches closed by a moving magnetic connected to the wind vane. Each of the 16 numbers represent a section of azimuth. The numbers 0, 2, 4, 6, 8, 10, 12, 14 represent 45 degree sections centered on the N, NE, E, SE, S, SW, W, NW directions. The odd numbers 1, 3, 5, 7, 9, 11, 13, 15 represent 22.5 degree sections centered between the directions represented by even numbers. In 5 minutes, we will get about 60 counts total in the 16 different azimuth bins. It is convenient to let the units of azimuth be half degrees, so that in a complete rotation of the wind vane it goes through 720 units or half degrees.
Assume that the center of rotation of the wind vane is directly north of the support point. If this is not the case, a software input allows you to enter the offset so that the wind vane can be oriented in any direction.
We start with 16 bins numbered i = 0, 1, 2, ... , 15 where increasing i implies clockwise rotation and each bin has a number n(i) indicating the number of counts that were in that azimuth bin during the 5 minute period. Then add 4 more bins with numbers as shown below.
Bin Number Direction 0 n(0) N 1 n(1) NNE 2 n(2) NE 3 n(3) ENE 4 n(4) E 5 n(5) ESE 6 n(6) SE 7 n(7) SSE 8 n(8) S 9 n(9) SSW 10 n(10) SW 11 n(11) WSW 12 n(12) W 13 n(13) WNW 14 n(14) NW 15 n(15) NNW 16 n(16) = n(0) 17 n(17) = n(1) 18 n(18) = n(2) 19 n(19) = n(3)Next set up a pointer that starts at bin 0 and goes to bin 15. The purpose of this is to find which set of five adjacent bins has the most total counts. When the pointer is at bin i, form this sum,
sum = n(i) + n(i+1) + n(i+2) + n(i+3) + n(i+4).Then find which i = 0,...,15 has the largest sum (call that bin I) and what this maximum sum is (call it S) and save both. The number of half degrees from north to the region we will start the averaging is I * 45.
Next, do the actual averaging by forming this weighted sum,
W = ( n(I+1) + 2 * n(I+2) + 3 * n(I+3) + 4 * n(I+4) ) * 45 / SNote that we don't have to include 0 * n(I) since it is always zero. The division here (which should be done last) can be integer division.
Then form the term, D = I * 45 + W, which is the direction in half degrees. This could exceed 720, so check to see if D > 720 and if so then subtract 720. Next, to convert to degrees, divide by 2 and the result is the average direction in degrees.
If there is an offset from north due to how the unit is mounted, then add that
offset, check to see if the resultant is greater than 360, and if so then
subtract 360 to get the direction. This is the number which is transmitted as
the wind direction every 5 minutes.
Imagine our sensor had only 45-degree accuracy and average wind direction was
22.5 degrees. When the wind vane wobbles around, half the time it would be
read as 45 degrees, and the other half, it would read 0 degrees. The average
of all those readings (1/2 at 0, 1/2 at 45) will be 22.5. If the average wind
direction was 34 degrees (3/4ths between 0 and 45), then as the wind vane
wobbled around that average direction, ¼ of the samples would be 0 and 3/4
would be 45.
That is the general idea on why 16 points are enough. If you want to get into
a lot more math behind the justification, see the link "HOW ACCURATE IS OUR
WIND DIRECTION DATA?" below.
Back to the top
Why are 16 points for wind direction enough?
With only 16 points for wind direction data, it is natural to be concerned if
that is enough points to be able to report wind direction with any decent kind
of accuracy. Russ and I had the same concerns when we first evaluated the
Dallas weather station too. After a lot of thinking (and a lot of math for
Russ), we feel that 16 points is indeed enough. Two things work in our favor.
First, the wind direction is very "noisy" data. Even with a consistent wind
direction, the weather vane wiggles a LOT around the average position. This
is due to lots of localized turbulence. This is normal, and unavoidable.
The second thing in our favor is that we do lots of averaging (60 samples per
5-minute window). This has two very nice effects. The first is to get a more
accurate picture of the average wind direction. In doing so, we also greatly
enhance the accuracy of our samples beyond the level of the basic sensor
themselves. This can be explained better with a few examples:
Back to the top
HOW ACCURATE IS OUR WIND DIRECTION DATA?
A reasonable question is "what is the error for this type of averaging
on a quantized measurement like the wind direction in the 1-Wire weather
station?" To answer this question, a simulation with mean wind
direction over a 45 degree sector was perturbed by adding white noise to
the true wind. The consensus averaging technique was used to average
the noisy wind direction data.
This simulation was done at 1 degree increments from 270 degrees 315
degrees. This is from the W reed relay switch to the adjacent NW reed
relay switch. There is a boundary in the quantization scheme at 285
degrees and another one at 300 degrees. In between 285 and 300 degrees,
both the W and NW reed relay switches are closed.
Each 5 seconds a new measurement is obtained and these were averaged for
5 minutes to arrive at an averaged value of the wind direction. Since the
simulated wind direction was known, the error (absolute value of the
difference between the simulated direction and the averaged direction) can
be found. This procedure was repeated 1000 times for each degree and
the average error is the average over those 1000 trials. The maximum
error is the maximum that occurred in those 1000 trials. These results,
in degrees, are given in the list below as a function of angle.
Angle Average Error Maximum Error
270 .04 .38
271 .96 1.4
272 1.9 2.2
273 2.8 3.2
274 3.7 4.2
275 4.5 5.0
276 5.2 6.0
277 5.8 7.0
278 6.2 7.8
279 6.4 8.2
280 6.4 8.3
281 6.2 9.1
282 5.8 9.0
283 5.2 7.9
284 4.5 7.8
285 3.8 7.3
286 2.9 6.1
287 2.1 5.0
288 1.6 4.9
289 1.2 3.8
290 .86 3.5
291 .69 3.2
292 .62 2.7
293 .62 2.7
294 .69 3.4
295 .84 3.7
296 1.1 4.4
297 1.6 4.5
298 2.2 5.2
299 3.0 7.4
300 3.7 7.1
301 4.5 8.0
302 5.2 8.3
303 5.7 8.4
304 6.2 8.9
305 6.4 8.5
306 6.4 8.3
307 6.1 7.6
308 5.8 7.0
309 5.2 6.0
310 4.5 5.0
311 3.7 4.2
312 2.8 3.2
313 1.9 2.2
314 .96 1.4
315 .04 .56
The small scale turbulence effect on the wind vane was modeled as a zero
mean white Gaussian random process with standard deviation of about 5
degrees. If you were looking at the wind vane, you would see a random
motion over a range of about 15 degrees with rare excursions outside
this range and with the wind vane pointing in the mean direction of the
wind more than in any other direction. Wind in the lower atmosphere is
always accompanied by small scale turbulence which causes random motion
of a wind vane. If there is no wind or extremely light winds, there may
be little motion of the wind vane, but in that case the direction is
unimportant. The simulation here is for the case where there is enough
wind speed so that the wind direction is important.
So, we can use average error or maximum error as the measure of
"goodness" of this averaging technique for wind vane output. The list
above shows the relationship between the two for the conditions given.
Similar results would be obtained for all other directions.
Back to the top
This page was last updated Aug 1, 1999.