Sailboat Paddlewheel Calibration (Part II)

See my original post first.

Paddlewheels are notoriously inaccurate, especially at low speeds. Even with the "ideal hull shape" calibration from my other post, the reading will still be pretty far off due to differences between my sailboat's hull, sensor location, and what B&G tested for their corrections.

The only proper way forward then is to do some on the water testing with no wind and no current. How often does that happen in the San Francisco Bay?

Never.

But I finally found a calm morning that was pretty close. The wind was hardly there, and it was at slack tide--an extremely rare combination that, although not perfect, was the best I'd ever get.

The plan: motor back and forth in a straight line in my marina, recording the NMEA stream in OpenCPN. Twice at low speed, and two more times at high speed. With each run consisting of an "up" and "down" leg, that gives me a total of 8 runs to get good data.

After importing this NMEA stream into Google Sheets, I then isolated the groundspeed from the GPS and the water speed from the DST paddlewheel sensor and put both on the same graph. Here's an example from the first leg (groundspeed is blue):


Note how, at low groundspeeds, the paddlewheel essentially reads zero. That second dip is when I was turning the boat around to go "down" the run, during which the paddlewheel can't really get turning above the minimum threshold to get it to measure a speed.

Using this, I then isolated the section of data where the data was most consistent on the run (which in this case is after the first dip).


I then took the average groundspeed (2.02 knots) and the average water speed (1.3 knots), and compared the two (the water speed is .72 knots off, or only 64% of what it should be). Here's the same portion from one of the fast runs:


This one's a little closer and a little less consistent. But that's why I did eight runs total--to get a solid average. Once I got the correct "slices" of consistent data for each run, I averaged the "slow" values and the "fast" values, and ended up with the following two data points:

  • When the paddlewheel reads 1.26 knots, the correct and calibrated speed is 2.02 knots (a correction factor of 1.6)
  • When the paddlewheel reads 3.39 knots, the correct and calibrated speed is 4.17 knots (a correction factor of 1.23)
As you can see, the faster the paddlewheel moves, the less correction it needs--something which checks out given the low speed inaccuracy of paddlewheels.

Using these two data points, and using the linear algebra equation of y = mx + b, the formula to get the correction factor is:

y = -.17 * x + 1.82

where y is the correction factor (to be multiplied with by the raw value), and x is the raw paddlewheel value (which is itself corrected using the ideal hull shape from my previous post). If you follow this corrected line down, eventually you'll see that it merges with the raw readings around 4.82 knots. Meaning, at about 4.8 knots and above, no correction is needed (the correction factor equals exactly 1).

So now we know our correction factor. All we have to do is multiply this correction factor by the original, raw reading, and we have our new calibrated waterspeed (only valid below 4.8 knots). So the new, final equation is simply:

y = x * (-.17 * x + 1.82)

We can plot this using a graphing program to display the uncalibrated raw speed (green) vs the calibrated speed (blue).



Or, as a long table:


ABC
1
Raw ValueCorrectionNew Value
2
0.11.80.2
3
0.21.80.4
4
0.31.80.5
5
0.41.80.7
6
0.51.70.9
7
0.61.71.0
8
0.71.71.2
9
0.81.71.3
10
0.91.71.5
11
1.01.71.7
12
1.11.61.8
13
1.21.61.9
14
1.31.62.1
15
1.41.62.2
16
1.51.62.3
17
1.61.52.5
18
1.71.52.6
19
1.81.52.7
20
1.91.52.8
21
2.01.53.0
22
2.11.53.1
23
2.21.43.2
24
2.31.43.3
25
2.41.43.4
26
2.51.43.5
27
2.61.43.6
28
2.71.43.7
29
2.81.33.8
30
2.91.33.8
31
3.01.33.9
32
3.11.34.0
33
3.21.34.1
34
3.31.34.2
35
3.41.24.2
36
3.51.24.3
37
3.61.24.3
38
3.71.24.4
39
3.81.24.5
40
3.91.24.5
41
4.01.14.6
42
4.11.14.6
43
4.21.14.6
44
4.31.14.7
45
4.41.14.7
46
4.51.14.7
47
4.61.04.8
48
4.71.04.8
49
4.81.04.8
50
4.91.04.9
51
5.01.05.0
52
5.11.05.1
53
5.21.05.2
54
5.31.05.3
55
5.41.05.4
56
5.51.05.5
57
5.61.05.6
58
5.71.05.7
59
5.81.05.8

All we have to do is add the following python code after the previous post's correction:

if waterspeed < 4.8:
    waterspeed = round(waterspeed * (-.17 * waterspeed + 1.82), 1)

Here is the same graph from my original log, only with the new calibrated waterspeed in orange:


This isn't a perfect solution by any means, but I'd say this gets you as close as possible to the actual waterspeed. Now that this is calibrated, and as reliable as it'll ever be, the next step is to calculate the boat's leeway due to the wind.

Comments

Popular Posts