totalreverse / ttyT1941

Simple demonstrator to show how to control a Tacx T1941 motor brake via a serial connection
GNU General Public License v3.0
16 stars 3 forks source link

Explanation for Power2LoadMagic and speedScale #1

Closed WouterJD closed 4 years ago

WouterJD commented 4 years ago

Thanks for the great explanation of the interface. It sure helps a lot to understand how Tacx Fortius communicates. Excellent work. I will keep you posted when I find more info.

I would like to understand the two magic constants beging used, Power2LoadMagic and speedScale.

  1. What is the unit for "wheel speed" and what is the speedScale so that division results in km/h?
  2. And what is the logic behind the Power2LoadMagic?

I would really appreciate some background on these two formula's.

Thanks, Wouter

totalreverse commented 4 years ago

Hi Wouter, the speedScale was estimated (calibrated) by comparing the "raw wheel speed" value from the brake unit with a speedometer. The unit for the raw speed seems to be about 1 mm per second. So, to convert from "raw speed" to kph, you have to multiply it with 3.6/1000 which is about 1/290. Other implementations are using values between 1/277 and 1/360.

The "Power2LoadMagic" was estimated with the assumption, that the "raw load" value from the motor brake scales with the force and after fitting a measurement series to the function power = const * raw-load * raw-speed with const = 1/Power2LoadMagic Very probably the assumption is not correct and the conversion from "load" to real power needs further investigations.

WouterJD commented 4 years ago

Thanks for response, I appreciate that.

I have measured speed using TTS4 and my Tacx Fortius at a given ratio. Cadence=92 gives 40 km/hour. Let's assum "Tacx knows Tacx"

Using the 289.75 magic, Cadence = 92 gives a slightly higher speed. And with 301 the speed gets close to the TTS measurement.

Since it's just the display value in the used software, any value would be good.

totalreverse commented 4 years ago

I did another run.

A comparison with TTS4 confirms these values. Strange.

What kind of powerback/brake do you have? Is it a US (110V / 60Hz) or EU (230V / Hz) ?

My powerback says: firmwareVersion= 00.00.09.65 serial= 410502330 (Tacx T1941 Year 2005 #02330) Date= 0c.08 Unknown= 00.00


I've also done some further investigations.

The calibration value in byte 10,11 of the command frame is a simple offset to the brake-load. A load of "1000" with calibration 0 results in the same force as a load of 2000 with calibration 1000. So, real brake load is: realLoad = commandLoad - calibration.

The problem with the brake calibration is a drift when the brake, or the wheel, or whatever gets warm.

I made a calibration run after a very long warm-up. At the end of the warm-up the brake gave calibration values of about 0x430. The motor was warm (but not hot) at the end. The calibration run itself was done with calibration_0=0 and with the assumption of

power = a + b1_0 * rawSpeed + c1 * rawSpeed * commandLoad

The fitting gave the following values: a ~= -35.4
b1_0 ~= .01334
c1 ~= .0000070529

So, you can use these values to estimate the power for a given load (with calibration=0 in byte 10,11) and after a similar calibration run (speed=20 kph , load=0x430). At least the force (loss) of turning the rear wheel should be the same . The loss between your pedal and the rear wheel can be different and cannot be compensated with a calibration run of the brake.


Or if you assume a calibration_0 <> 0:

power = a + (b1_0 + c1 * ( commandLoad - calibration_0 ) * rawSpeed

I.e with calibration_0=1040 (the standard tacx value)

power = a + b1_1040 * rawSpeed + c1 * commandLoad * rawSpeed

a ~= -35.4
b1_1040 ~= 0,006 c1 ~= .0000070529

With theses values you can estimate the power of a given load (but now with calibration=1040 in byte 10,11).

--

There is still a drift over time. After some time my power meter shows smaller values than the software model and the brake is very warm. To correct this, one have to reduce the calibration (byte 10,11 in the command) by about "25" for 1 Watt at 20 kph. The brake increase the force (without increasing the power values of the software model).

Maybe a temperature sensor at the brake may help to compensate the drift.

WouterJD commented 4 years ago

I have tested the algorithm as described below. Summary: the algorithm does what it should do.

Method: bike on the Fortius, power meter on bicycle.

  1. Select gear so you can run 10km/hr at a reasonable cadence. Manually select power 50Watt (up/down button on headunit). Ride untill reading from FortiusAnt and PowerMeter is stable. Write down power from PowerMeter (46 in table). -- Increase power on headunit 100, 150, 200, 250, 300 Watt. Repeat test.
  2. Select gears for 20, 30, 40, 50 km/hr. Repeat test at reasonable cadence.

Test Results (Target Power in column header, result power in the table)

             50W     100W    150W    200W    250W    300W
10 km/hr    46      97      145     194     245     285
20 km/hr    50      100     145     197     245     290
30 km/hr    63      102     154     196     245     295
40 km/hr    105     120     160     210     260     305
50 km/hr    123     130     165     210     250     310

Conclusions: a- 50Watt at 50km/hr gives odd readings but that's not too strange. b- Overall measured power correponds with TargetPower. c- Multiple measurements give different results within 5% Tests are done intermittently and hence have different brake and tyre temperatures.

Assumption Attempts to improve the algorithm may be useless, since it should not be more exact than the Tacx Fortius (was designed for). After all, changing the algorythm remains empirical

WouterJD commented 4 years ago

No more info required, thanks