I would assume that both Dynon as well as GRT would use a very similar, if not identical formula to what we use at MGL.
You do not give ALL of the required input values so I can't punch this into the formula to see what pops out.
You need:
a) Ground speed from GPS
b) TAS (you have given that).
c) Heading from compass (you have given that)
d) Ground track from GPS.
I have copied the complete formula text below for those that want to play a bit.
There is nothing difficult about this but it does require accurate inputs to give meaningful outputs. Errors tend to relate to TAS and heading as GPS tends to be quite accurate.
Magnetic heading relates to the direction your aircraft is pointing. This means the difference your aircraft is pointing vs ground track (corrected for variation of course) is your aircraft's crab angle.
Crab angle is important here. It also means that if you fly wing low (ball not in the center) the formula will not work right as the crab angle is not measured right. We also can't use this in a turn. Straight and level, ball in the middle.
If there is any sort of crab angle - wind is coming from the side. Difference between ground speed and TAS would indicate if wind is from behind or on the nose. If you have both differences, you can work out the wind triangle and thus the apparent wind speed.
Good numbers in - good numbers out.
Your listed measurements already show significant differences between the GRT and Dynon systems, quite enough to give you the results you see even if we do not know all of the factors involved.
TAS should be reasonably accurate if OAT is measured correct. Magnetic heading is where things usually go wrong. It can be difficult to calibrate a compass so it is accurate to say 1-2 degrees on all headings (which is what you want) AND for it to stay that way !
Hope this helps...
Rainier
CEO MGL Avionics
From "Aviation Formulary V1.45"
Wind Triangles
In all formulae, all angles are in radians. Convert back and forth as in the Great Circle section. [This is unnecessary on calculators which have a "degree mode" for trig functions. Most programming languages provide only "radian mode".]
angle_radians=(pi/180)*angle_degrees
angle_degrees=(180/pi)*angle_radians
A further conversion is required if using degrees/minutes/seconds:
angle_degrees=degrees+(minutes/60.)+(seconds/3600.)
degrees=int(angle_degrees)
minutes=int(60*(angle_degrees-degrees))
seconds=60*(60*(angle_degrees-degrees)-minutes))
[ You may have a built-in HH <-> HH:MM:SS conversion to do this efficiently]
Let CRS=course, HD=heading, WD=wind direction (from), TAS=True airpeed, GS=groundspeed, WS=windspeed.
Units of the speeds do not matter as long as they are all the same.
(1) Unknown Wind:
WS=sqrt( (TAS-GS)^2+ 4*TAS*GS*(sin((HD-CRS)/2))^2 )
WD=CRS + atan2(TAS*sin(HD-CRS), TAS*cos(HD-CRS)-GS) (**)
IF (WD<0) THEN WD=WD+2*pi
IF (WD>2*pi) THEN WD=WD-2*pi
( (**) assumes atan2(y,x), reverse arguments if your implementation
has atan2(x,y) )
(2) Find HD, GS
SWC=(WS/TAS)*sin(WD-CRS)
IF (abs(SWC)>1)
"course cannot be flown-- wind too strong"
ELSE
HD=CRS+asin(SWC)
if (HD<0) HD=HD+2*pi
if (HD>2*pi) HD=HD-2*pi
GS=TAS*sqrt(1-SWC^2)-WS*cos(WD-CRS)
if (GS < 0) "course cannot be flown-- wind too strong"
ENDIF
Note:
The purpose of the "if (HD<0) HD=HD+2*pi; if (HD>2*pi) HD=HD-2*pi" is to ensure the final heading ends up in the range (0, 2*pi). Another way to do this, with the MOD function available is:
HD=MOD(HD,2*pi)
(3) Find CRS, GS
GS=sqrt(WS^2 + TAS^2 - 2*WS*TAS*cos(HD-WD))
WCA=atan2(WS*sin(HD-WD),TAS-WS*cos(HD-WD)) (*)
CRS=MOD(HD+WCA,2*pi)
(*) WCA=asin((WS/GS)*sin(HD-WD)) works if the wind correction angle is less than 90 degrees, which will always be the case if WS < TAS. The listed formula works in the general case