Power aus Tabelle anhand der Umdrehungen an ANT+ senden.

  • An meinem Crosstrainer ist ein Display vorhanden:

    Im ganzen sieht der so aus:

    Nun möchte ich damit auf Zwift "fahren" http://www.zwift.com

    Zur Zeit benutze ich einen ANT+ PowerTap Cal Brustgurt und einen Ant+ Cadence Sensor. Funktioniert auch, aber die Werte sind nicht richtig.

    Nun habe ich aus der Anleitung des Crosstrainers eine Powertabelle und weiß anhand der Umdrehungen und des Levels die Leistung:

    Level | RPM 20 30 40 50 60 70 80 90 100 110 120 130
    ------------------------------------------------------
    6 15 31 52 75 105 135 166 202 231 275 289
    7 16 35 58 85 118 152 185 226 260 305 332
    8 18 39 65 96 131 169 208 249 289 333 375

    Meine Idee ist, mit einem Reed Contact, oder dem ANT+ Cadence Sensor die Umdrehungen zu zählen.

    Die + und - Tasten habe ich aus dem Crosstrainer herausgeführt. Somit kann ich an den GPIO Ports eines Raspeberrys diese Tasten anschliessen um + und - zu drücken.

    Wenn ich jetzt beim Starten des Programms den Level vorgebe zum Beispiel 6 dann kann anhand der Umdrehungen die Wattleistung ermittelt werden.

    Ich habe jetzt aus diesem Projekt:
    https://github.com/olympum/ant-cycling-power

    gesehen das man die Werte an ANT+ übergeben kann, was in dem Beispiel test.js bei mir an einem Raspberry auch funktioniert. (Benutze 2 ANT+ Sticks)

    Die Benutzung ist im test.js:

    var power_meter = require('./power-meter');
    var pm = new power_meter.PowerMeter();
    pm.broadcast(320, 95); // 320 watts and 95 rpm

    Ich möchte natürlich nicht cheaten und reale Werte aus meiner Tabelle laden und übertragen während des Trainings.

    Alternativ würde ich auch eine python Lösung benutzen.

    Leider ist das bei mir mit dem Programmieren nicht so der Hit. Ich scheitere schon an dem Array.

    Kann mir da Jemand helfen?

    Ich denke das man mit einem Array und der Umdrehungen die Werte übertragen kann!?

    Mir wäre das sogar ein paar Euro wert. Die Lösung soll natürlich trotzdem jedem zur Verfügung stehen.

    Viele Grüße
    Andreas

  • Power aus Tabelle anhand der Umdrehungen an ANT+ senden.? Schau mal ob du hier fündig wirst!

  • Vollkommen OT aber ich hoffe das sich das durchsetzt. Diese ganzen als Tour de France Teilnehmer verkleideten Radfahrer, die glauben, nur weil sie besonders bunt angezogen sind brauchen Sie keine Radwege zu benutzen, gehen mir ja schon Jahrelang auf den Sack.

    Zu deinem Problem. du willst

    Code
    pm.broadcast(320, 95); // 320 watts and 95 rpm

    das hier durch reale Werte aus der Tabelle ersetzen? so richtig versteh ich das noch nicht.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv (April 25, 2017 at 11:14 AM).

  • Hallo Andreas,


    Vollkommen OT aber ich hoffe das sich das durchsetzt. Diese ganzen als Tour de France Teilnehmer verkleideten Radfahrer, die glauben, nur weil sie besonders bunt angezogen sind brauchen Sie keine Radwege zu benutzen, gehen mir ja schon Jahrelang auf den Sack.

    Zu deinem Problem. du willst

    Code
    pm.broadcast(320, 95); // 320 watts and 95 rpm

    das hier durch reale Werte aus der Tabelle ersetzen? so richtig versteh ich das noch nicht.

    Ich glaube, dass Du so nicht weiter kommst. Meiner Meinung nach musst Du die angegebenen Werte (Leistung in Abhängigkeit von Level und Umdrehungszahl) als Stützpunkte einer Regressionsanalyse (oder eines anderen geeigneten Verfahrens) verwenden. Der erste Blick sagt, dass da kein linearer Zusammenhang zwischen Leistung und Umdrehungszahl vorliegt.

    Dann brauchst Du eine Funktion, die mit den Messwerten (Level und Umdrehungszahl) gespeist wird und die Leistung anhand dieser Analyse ermittelt.

    Kriegst Du diese Analyse hin?


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • Vollkommen OT aber ich hoffe das sich das durchsetzt. Diese ganzen als Tour de France Teilnehmer verkleideten Radfahrer, die glauben, nur weil sie besonders bunt angezogen sind brauchen Sie keine Radwege zu benutzen, gehen mir ja schon Jahrelang auf den Sack.

    Hehe, mir auch, ich fahre auf dem Fahrradweg. Mein auspowern mache ich entweder mit Joggen oder Zwift.

    Quote


    Zu deinem Problem. du willst

    Code
    pm.broadcast(320, 95); // 320 watts and 95 rpm

    das hier durch reale Werte aus der Tabelle ersetzen? so richtig versteh ich das noch nicht.

    ja genau, allerdings müssen die Daten ja irgendwo herkommen. Die sollen dann aus der Statischen Tabelle kommen.
    Sollte ich also in Level 6 mit 40 RPM petten ist die Leistung 52W <- diese sollen dann entsprechend auch an den ANT+ Master übertragen werden.

    Die Fragestellung ist aber auch schwer.
    Ich muss also meine RPM eingelesen bekommen um die Leisutng aus der Tabelle zu ziehen, zusätzlich muss das "Programm" wissen in welchem Level ich bin, was ich am Start vorgeben möchte. Durch + und - werden die Level entsprechend geändert.
    Automatisch zusammengefügt:


    Ich glaube, dass Du so nicht weiter kommst. Meiner Meinung nach musst Du die angegebenen Werte (Leistung in Abhängigkeit von Level und Umdrehungszahl) als Stützpunkte einer Regressionsanalyse (oder eines anderen geeigneten Verfahrens) verwenden. Der erste Blick sagt, dass da kein linearer Zusammenhang zwischen Leistung und Umdrehungszahl vorliegt.
    Dann brauchst Du eine Funktion, die mit den Messwerten (Level und Umdrehungszahl) gespeist wird und die Leistung anhand dieser Analyse ermittelt.

    Kriegst Du diese Analyse hin?
    Beste Grüße
    Andreas

    Hall Andreas, sind aber viele Andreas"e" hier :)

    Die Watt Daten aus der Tabelle sind ja statisch, Ich weiss ja wann bei welcher Umdrehungszahl welche Leistung erzeugt wird.
    Ich muss dem Programm mitteilen in welchem Level ich bin und wieviel Umdrehungen ich mache, dadurch möchte ich den Leistngswert abrufen und übertragen.
    Ich dachte an <> als, noch toller wäre natürlich zwischen den Werten zu interpolieren, allerdings will ich auch nicht gleich durchdrehen :)

    Gruß
    Andreas

    Edited once, last by Landixus (April 25, 2017 at 11:53 AM).

  • Ich denke die Matrix sollte als Beispiel so aussehen?

  • Hallo Andreas,



    Die Watt Daten aus der Tabelle sind ja statisch, Ich weiss ja wann bei welcher Umdrehungszahl welche Leistung erzeugt wird.
    Ich muss dem Programm mitteilen in welchem Level ich bin und wieviel Umdrehungen ich mache, dadurch möchte ich den Leistngswert abrufen und übertragen.
    Ich dachte an <> als, noch toller wäre natürlich zwischen den Werten zu interpolieren, allerdings will ich auch nicht gleich durchdrehen :)


    Um eine (nichtlineare) Ausgleichsrechnung wirst Du nicht herum kommen, da Du selten exakt die Umdrehungszahl treffen wirst - und ab- und aufrunden ist auch Käse, da Du Dir da ziemliche Ungenauigkeiten hereinholst.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • Um eine (nichtlineare) Ausgleichsrechnung wirst Du nicht herum kommen, da Du selten exakt die Umdrehungszahl treffen wirst - und ab- und aufrunden ist auch Käse, da Du Dir da ziemliche Ungenauigkeiten hereinholst.

    Also auf das Watt genau muss es nicht sein, ich denke ein wenig runden sollte schon langen, zur Not schreibe ich noch die Mittelwerte mit also RPM 15 25 35 etc. Faul bin ich da nicht :)

  • Die RPM könnte ich ja mit Python erfassen:

  • Das klappt ja schon mal gut, ich kann RPM lesen. :)

    mit:

    Code
    sudo apt-get update
    
    
    sudo apt-get install pigpio python-pigpio python3-pigpio

    daemon starten mit:

    Code
    sudo pigpiod


    Das muss ich doch jetzt irgendwie für meine Tabelle nutzen können.
    Ich setze mich mal an den Schalter für die Level + -.
    Automatisch zusammengefügt:
    Weiter gehts:
    Taster bekomme ich gelesen mit:

    Ich glaube viel weiter kann ich da nicht machen, ausser die Matrix zu schreiben.
    Irgendjemand? :helpnew:
    Automatisch zusammengefügt:
    Eventuell hilft ja auch mein alter c# code aus unity weiter:

    Hab ich benutzt für mein altes CrosstrainerProject:

    https://www.instructables.com/id/Turn-your-C…n-a-VR-Machine/

    ist aber halt c# und es hat mir damals auch Jemand viel geholfen :)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!