BMT - BionX-Motor mit No-Name-Akku und Kunteng-Display betreiben

Diskutiere BMT - BionX-Motor mit No-Name-Akku und Kunteng-Display betreiben im BionX Forum im Bereich Fertig-Pedelecs; Wer ist BMT ? Mit BBI kann ich sowohl mit 1.3.71 als auch mit BBI_2_offline zum Thema DMS nur einen Balken zwischen 0 und 100% anzeigen. Wie...
S

sgulond

Dabei seit
31.05.2018
Beiträge
377
Ort
CH-8355 Aadorf
Details E-Antrieb
BionX D Wheeler e-Protron
Mit dem BMT im Debug Mode
Wer ist BMT ?
Mit BBI kann ich sowohl mit 1.3.71 als auch mit BBI_2_offline zum Thema DMS nur einen Balken zwischen 0 und 100% anzeigen. Wie man damit an Rohwerte kommt müsste mit einer erklären der das BBI Glump besser bedienen kann.

BBI2offline_dms1.JPG
BBI_1.3.7.2_dms1.JPG


Screenshots mit unterschiedlichem Pedaldruck und Vorderrad an der Wand

Ich bin auch der Ansicht das man durch Modifikation von BikeInfo in Sachen auslesen von Werten besser bedient wäre.
@Auromated verstehst Du die Source von Thorsten soweit das Du die für solche Zwecke anpassen kannst?
Wäre sicher Hilfreich und längefristig einfacher als mit dem Terminal Mode in der IDE herumzuhampeln.
Leider bin ich nicht in der Lage die sehr hilfreiche Software von Thorsten selber anzupassen.
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
und in lesbare Form überführt wurde
Ich kenne ja die ganzen Parameter, verstehe aber nicht von allen deren Bedeutung und bezweifle teilweise auch die Beschreibung in den Kommentaren der CAN-Registers.h, das deckt sich nicht mit den Untersuchungen, die ich zum Beispiel mit Gauge Reference gemacht habe.
Ich bin z.B. davon ausgegangen, daß ich mit Gauge Reference die Vergleichsspannung für den DMS einstellen kann, damit müsste ich den Nullpunkt von Gauge Voltage einstellen können. Geht aber nicht....
Ein Beispiel: ich lese von meinem Controller diese Werte
Reference 0xCB: 254
Reference 0xCC: 1

Daraus folgt
hiloDez-WertSkalierungsfaktorWert in VOffset 5V
254​
1​
2033​
0,000076295​
0,15510774​
5,15510774​

?! o_O

Genauso fragwürdig: was soll Gauge Speed in rpm sein? Die Kadenz?!
Oder Gauge Value in Prozent. Prozent von was?!

Fragen, Fragen, Fragen :)
Wenn die Antworten noch nicht bekannt sind, werden wir wohl selber analysieren müssen.

Ich werde noch einen zweiten BluePill mit CAN-Transceiver einsetzen, mit dem ich die CAN-Kommunikation im Betrieb mit dem Kunteng Display belauschen und ggf. noch Register schreiben kann. Für den mache ich einen eigenen Fork im Repo.

Code:
#define REG_MOTOR_TORQUE_GAUGE_VALUE                           0x21 //- [unit:%, range:0?..100, factor:1.5625]

#define REG_MOTOR_TORQUE_GAUGE_NOISE_HI                        0xC4 //- [unit:%, range:0..100, factor:0.0015259]
#define REG_MOTOR_TORQUE_GAUGE_NOISE_LO                        0xC5

#define REG_MOTOR_TORQUE_GAUGE_DELAY_HI                        0xC6 //- [unit:s, range:0..?, factor:0.001]
#define REG_MOTOR_TORQUE_GAUGE_DELAY_LO                        0xC7

#define REG_MOTOR_TORQUE_GAUGE_SPEED                           0xC8 //- [unit:rpm, range:0..?, factor:9.091]

#define REG_MOTOR_TORQUE_GAUGE_VOLTAGE_HI                      0xC9 //- [unit:V, range:0..5, factor:0.000076295, offset:5]
#define REG_MOTOR_TORQUE_GAUGE_VOLTAGE_LO                      0xCA

#define REG_MOTOR_TORQUE_GAUGE_REFERENCE_HI                    0xCB //- [unit:V, range:0..5, factor:0.000076295, offset:5]
#define REG_MOTOR_TORQUE_GAUGE_REFERENCE_LO                    0xCC
Ich habe dieses Projekt so getauft, siehe Threadtitel. BMT = BionX Minimal Translator ☺

Gruß
hochsitzcola
 
Zuletzt bearbeitet:
A

Automated

Dabei seit
19.07.2020
Beiträge
101
Bin kein Python Mensch, und bekomme Bikeinfo auch nicht unter Linux compiliert - da fehlt mir einfach zu viel ;)

Zum DMS:
<- 20 02 00 6C R MOT 0x6C REG_MOTOR_TORQUE_GAUGE_TYPE
<- 08 04 00 6C 00 00 W CON 0x6C 0x00 Antwort an Console Type 0 sollte der interne DMS sein
<- 20 02 00 21 R MOT 0x21 REG_MOTOR_TORQUE_GAUGE_VALUE [unit:%, range:0?..100, factor:1.5625]

Akku einschalten:
<- 10 04 00 20 00 00 W BAT 0x20 0x00 unbekannt
<- 10 04 00 21 00 01 W BAT 0x21 0x01 REG_BATTERY_CONFIG_POWER_VOLTAGE_ENABLE

Akku ausschalten (System AUS):
<- 10 04 00 25 00 01 W BAT 0x25 0x01 REG_BATTERY_CONFIG_SHUTDOWN

Ladestand Akku abfragen:
<- 10 02 00 61 R BAT 0x61 REG_BATTERY_STATUS_CHARGE_LEVEL (%)
<- 08 04 00 61 00 0F W CON 0x61 0x0F

Ohne Kommunikation haut sich der Akku nach n (konfigurierbar) Minuten weg und schläft ein....

Licht einschalten (Funktion über BMS):
<- 10 04 00 22 00 00 W Bat 0x22 0x00 REG_BATTERY_CONFIG_ACCESSORY_ENABLED (hier 0x00 weil aus)

Grenzwerte Strom aus dem BMS holen:
<- 10 02 00 F9 R BAT 0xF9 REG_BATTERY_CONFIG_MAX_CHARGE_HI
<- 08 04 00 F9 00 23 W CON 0xF9 0x23
<- 10 02 00 FA R BAT 0xFA REG_BATTERY_CONFIG_MAX_CHARGE_LO
<- 10 02 00 FB R BAT 0xFB REG_BATTERY_CONFIG_MAX_DISCHARGE_HI
<- 08 04 00 FB 00 AF W CON 0xFB 0xAF
<- 10 02 00 FC R BAT 0xFC REG_BATTERY_CONFIG_MAX_DISCHARGE_LO
<- 08 04 00 FA 00 28 W CON 0xFA 0x28

REG_BATTERY_CONFIG_MAX_CHARGE = 0x2328
REG_BATTERY_CONFIG_MAX_DISCHARGE = 0xAFC8 LOW Byte wurde wohl verschluckt ;)

Grenzwerte Strom im Motor setzen:
<- 20 04 00 A5 00 AA W MOT 0xA5 0xAA REG_MOTOR_PROTECT_UNLOCK (Notwendig um die folgenden Register schreiben zu dürfen)
<- 20 04 00 7A 00 AF W MOT 0x7A 0xAF REG_BATTERY_CONFIG_MAX_DISCHARGE_HI
<- 20 04 00 7B 00 C8 W MOT 0x7B 0xC8 REG_BATTERY_CONFIG_MAX_DISCHARGE_LO
<- 20 04 00 7C 00 23 W MOT 0x7C 0x23 REG_BATTERY_CONFIG_MAX_CHARGE_HI
<- 20 04 00 7D 00 28 W MOT 0x7D 0x28 REG_BATTERY_CONFIG_MAX_CHARGE_LO

Was mir noch aufgefallen ist:
Direkt vor dem Ausschalten BMS werden folgende Kommandos an den den Motor gesendet:
<- 20 04 00 0A 00 00 - REG_MOTOR_ASSIST_WALK_LEVEL
<- 20 04 00 41 00 00 - Unbekannt
<- 20 04 00 42 00 01 - REG_MOTOR_ASSIST_DIRECTION
 
Zuletzt bearbeitet:
A

Automated

Dabei seit
19.07.2020
Beiträge
101
Auszug aus dem Log (Abfolge sichtbar):
Code:
logging started
<- 10 04 00 20 00 00    W    BAT    0x20    0x00    unbekannt
<- 10 04 00 21 00 01    W    BAT    0x21    0x01    REG_BATTERY_CONFIG_POWER_VOLTAGE_ENABLE
<- 10 02 00 3B            R    BAT    0x3B            REG_BATTERY_REV_HW 
<- 08 04 00 3B 00 34    W    CON    0x3B    0x34    Antwort an Console
<- 10 02 00 3C            R    BAT 0x3C            REG_BATTERY_REV_SW 
<- 08 04 00 3C 00 69    W    CON 0x69    0x69    Antwort an Console
<- 10 04 00 22 00 00    W    Bat 0x22    0x00    REG_BATTERY_CONFIG_ACCESSORY_ENABLED
<- 10 02 00 3D            R    BAT 0x3D            REG_BATTERY_CONFIG_TYPE
<- 08 04 00 3D 00 03    W    CON    0x3D    0x03    Antwort an Console
<- 20 04 00 02 00 00    W    MOT    0x02    0x00    
<- 20 04 00 41 00 00    W    MOT 0x41    0x00    
<- 20 04 00 42 00 01    W    MOT 0x42    0x01    REG_MOTOR_ASSIST_DIRECTION
<- 20 02 00 20            R    MOT 0x20            REG_MOTOR_REV_SW
<- 08 04 00 20 00 65    W    CON    0x20    0x65    Antwort an Console
<- 20 02 00 6C            R    MOT    0x6C            REG_MOTOR_TORQUE_GAUGE_TYPE
<- 08 04 00 6C 00 00    W    CON    0x6C    0x00    Antwort an Console
<- 20 02 00 11            R    MOT    0x11            REG_MOTOR_STATUS_SPEED
<- 08 04 00 11 00 00    W    CON    0x11    0x00    
<- 10 02 00 F9            R    BAT    0xF9            REG_BATTERY_CONFIG_MAX_CHARGE_HI
<- 08 04 00 F9 00 23    W    CON    0xF9    0x23        
<- 10 02 00 FA            R    BAT 0xFA            REG_BATTERY_CONFIG_MAX_CHARGE_LO
<- 10 02 00 FB            R    BAT 0xFB            REG_BATTERY_CONFIG_MAX_DISCHARGE_HI
<- 08 04 00 FB 00 AF    W    CON 0xFB    0xAF
<- 10 02 00 FC            R    BAT 0xFC            REG_BATTERY_CONFIG_MAX_DISCHARGE_LO
<- 08 04 00 FA 00 28    W    CON 0xFA    0x28

REG_BATTERY_CONFIG_MAX_CHARGE         = 0x2328
REG_BATTERY_CONFIG_MAX_DISCHARGE    = 0xAF??

<- 20 04 00 A5 00 AA    W    MOT 0xA5    0xAA    REG_MOTOR_PROTECT_UNLOCK 
<- 20 04 00 7A 00 AF    W    MOT    0x7A    0xAF    REG_BATTERY_CONFIG_MAX_DISCHARGE_HI    
<- 20 04 00 7B 00 C8    W    MOT 0x7B    0xC8    REG_BATTERY_CONFIG_MAX_DISCHARGE_LO
<- 20 04 00 7C 00 23    W    MOT 0x7C    0x23    REG_BATTERY_CONFIG_MAX_CHARGE_HI
<- 20 04 00 7D 00 28    W    MOT 0x7D    0x28    REG_BATTERY_CONFIG_MAX_CHARGE_LO
<- 20 02 00 21            R    MOT 0x21            REG_MOTOR_TORQUE_GAUGE_VALUE
<- 08 04 00 2100 00    W    CON    0x21    0x00    
<- 20 04 0009 00 00    W    MOT    0x09    0x00    REG_MOTOR_ASSIST_LEVEL
<- 20 04 0009 00 00    W    MOT    0x09    0x00    REG_MOTOR_ASSIST_LEVEL
<- 20 04 00 0A 00 00    W    MOT 0x0A    0x00    REG_MOTOR_ASSIST_WALK_LEVEL
<- 08 04 00 11 00 00    W    CON    0x11    0x00    REG_MOTOR_STATUS_SPEED                    !!Sehe hier keinen Request!!
<- 20 02 00 14            R    MOT 0x14            REG_MOTOR_STATUS_POWER_METER
<- 08 04 00 14 00 00    W    CON    0x14    0x00
<- 10 02 00 32            R    BAT    0x32            REG_BATTERY_STATUS_BATTERY_VOLTAGE_NORMALIZED //Battery voltage normalized with 3.7V/cell. status.vBattInternal it used in Rev 104 and less otherwise status.vBatt [unit:V, factor:0.416667, offset:20.8333]
<- 08 04 00 32 00 D5    W    CON    0x32    0xD5    status.vBatt (wasauchimmer - keine Ahnung)
<- 58 02 00 9C            R    BIB 0x9C            ???????????????
<- 20 02 00 11            R    MOT    0x11            REG_MOTOR_STATUS_SPEED
<- 10 02 00 9A            R    BAT    0x9A            REG_BATTERY_STATUS_DCIN_VOLTAGE_HI
<- 08 04 00 9A 00 03    W    CON    0x9A    0x03    
<- 10 02 00 AA            R    BAT    0xAA            REG_BATTERY_STATUS_POWER_VOLTAGE_HI
<- 08 04 00 AA 00 9F    W    CON    0xAA    0x9F
<- 20 02 00 70            R    MOT    0x70            REG_MOTOR_STATUS_POWER_VOLTAGE_HI
<- 20 02 00 72            R    MOT    0x72            REG_MOTOR_STATUS_12V_VOLTAGE_HI
<- 08 04 00 72 00 2C    W    CON    0x72    0x2C    
<- 10 02 00 33            R    BAT 0x33            REG_BATTERY_STATISTIC_BATTERY_AVGVOLTAGE_NORMALIZED
<- 10 02 00 61            R    BAT    0x61            REG_BATTERY_STATUS_CHARGE_LEVEL
<- 08 04 00 70 00 99    W    CON    0x70    0x99    
<- 08 04 00 61 00 0F    W    CON 0x61    0x0F        
<- 10 02 00 61            R    BAT    0x61            REG_BATTERY_STATUS_CHARGE_LEVEL            
<- 08 04 00 61 00 0F    W    CON 0x61    0x0F
<- 10 02 00 80            R    BAT    0x80            ??????????
<- 08 04 00 80 00 FD    W    CON 0x80    0xFD    Unbekannt, DEZ:253
<- 10 02 00 31            R    BAT 0x31            ??????????
<- 10 02 00 A4            R    BAT    0xA4            REG_BATTERY_RTC_TIME_LOLO
<- 10 02 00 A3            R    BAT    0xA4            REG_BATTERY_RTC_TIME_LOHI
<- 10 02 00 A2            R    BAT    0xA4            REG_BATTERY_RTC_TIME_HILO
<- 08 04 00 A1 00 13    W    CON    0xA1    0x13
<- 20 02 00 12            R    MOT    0x12            ??????????
<- 08 04 00 92 00 FF    W    CON    0x92    0xFF    REG_MOTOR_STATUS_CODES
<- 08 04 00 16 00 1B    W    CON 0x16    0x1B    REG_MOTOR_STATUS_TEMPERATURE
<- 10 02 00 30            R    BAT    0x30            REG_BATTERY_STATUS_ESTIMATED_SOC        
<- 08 04 00 31 00 00    W    CON    0x31    0x00    Unbekannt
<- 08 04 00 30 00 62    W    CON    0x30    0x62    98% Battery Chge state
<- 20 02 00 21            R    MOT    0x21            REG_MOTOR_TORQUE_GAUGE_VALUE 
<- 08 04 00 2100 00    
<- 20 04 00 09 FF F4    W    MOT 0x09            REG_MOTOR_ASSIST_LEVEL [unit:%, range:-100..100, factor:1.5625] !!! signed !!!
<- 20 04 00 09 FF F4
<- 20 04 00 0A 00 00
<- 08 04 00 11 00 00
<- 10 02 00 32
<- 08 04 00 32 00 D5
<- 58 02 00 9C
<- 20 02 00 11
<- 10 02 00 9A
<- 08 04 00 9A 00 03
<- 10 02 00 AA
<- 08 04 00 AA 00 9F
<- 20 02 00 70
<- 20 02 00 72
<- 08 04 00 72 00 2C
<- 10 02 00 33
<- 10 02 00 61
<- 08 04 00 70 00 99
<- 08 04 00 61 00 0F
<- 10 02 00 61
<- 08 04 00 61 00 0F
<- 20 02 00 12
<- 08 04 00 12 00 00
<- 20 02 00 92
<- 20 02 00 16
<- 10 02 00 30
<- 08 04 00 92 00 FF
<- 08 04 00 30 00 62
<- 20 02 00 21
<- 08 04 00 2100 00
<- 20 04 00 09 FF F4
<- 20 04 00 09 FF F4
<- 20 04 00 0A 00 00
<- 08 04 00 11 00 00
<- 20 02 00 14
<- 08 04 00 14 00 00
<- 08 04 00 32 00 D5
<- 58 02 00 9C
<- 20 02 00 11
<- 10 02 00 9A
<- 08 04 00 9A 00 03
<- 10 02 00 AA
<- 08 04 00 AA 00 9F
<- 20 02 00 70
<- 20 02 00 72
<- 08 04 00 72 00 2C
<- 08 04 00 70 00 99
<- 20 02 00 21
<- 20 04 00 09 FF F4
<- 20 04 00 0A 00 00
<- 08 04 00 11 00 00
<- 10 02 00 32
<- 08 04 00 32 00 D5
<- 58 02 00 9C
<- 08 04 00 2100 00
<- 10 02 00 9A
<- 08 04 00 9A 00 03
<- 10 02 00 AA
<- 08 04 00 AA 00 9F
<- 20 02 00 70
<- 20 02 00 72
<- 08 04 00 72 00 2C
<- 08 04 00 70 00 99
<- 20 02 00 21
<- 20 04 0009 00 00
<- 20 04 00 0A 00 00
<- 08 04 00 11 00 00
<- 08 04 00 14 00 00
<- 08 04 00 32 00 D5
<- 58 02 00 9C
<- 08 04 00 2100 00
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
CAN-Kommunikation im Betrieb mit dem Kunteng Display belauschen
Ich habe für den "Sniffer" jetzt den Branch "Sniffer" angelegt. :)
Die Funktion ist ähnlich dem Debug-Modus der BMT-Firmware, nur sendet er so lange nichts, wie nichts per UART empfangen wird.
Siehe hier

Es werden per Terminal über UART immer 4 Bytes gesendet.

Ist das erste Byte "0", werden die bisher im BMT implementierten Parameter ausgegeben, damit kann man schön z.B. mit Makerplot den Zeitverlauf der Parameter grafisch darstellen.

Code:
sprintf(UART_TX_Buffer, "%d, %d, %d, %d, \r\n", i16_Gauge_Voltage, MS.Speed, MS.Power, i16_Current_Target);
Ist das erste Byte "1", wird der Parameter im Motor gesetzt und der gelesene CAN-Verkehr 1:1 ausgegeben
Ist das erste Byte "2", wird der Parameter vom Motor gelesen und der gelesene CAN-Verkehr 1:1 ausgegeben

Gruß
hochsitzcola
 
T

Trek

Dabei seit
13.05.2019
Beiträge
35
Ort
41836 Hückelhoven
Details E-Antrieb
Bionx
Tolle Arbeit Leute, auch wenn ich oft nur“ Bahnhof" verstehe. Würde gerne helfen, hab aber keine Ahnung wie. Gruß Ralf
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
verstehe aber nicht von allen deren Bedeutung und bezweifle teilweise auch die Beschreibung in den Kommentaren der CAN-Registers.h
Ich habe gestern noch mal lange versucht, die Wirkung der Gauge-Parameter zu verstehen. Leider mit keiner großen neuen Erkenntnis. Mit meinem Zollstock und den wahrscheinlich nicht sinnvoll voreingestellten Parametern eines IGH3-Motors, der ja nie einen DMS ab Werk hatte, komme ich nicht weiter. Da müsste mal jemand seine Register auslesen und posten, die Screenshots aus dem BBI helfen da leider nix, da ich die nicht wirklich den konkreten Registern mit vermeintlichem Hi- und Lo-Byte zuordnen kann.

Ich habe den Master jetzt auf 0x21 REG_MOTOR_TORQUE_GAUGE_VALUE lesen umgestellt, das wird bei einem Motor mit integriertem DMS mit hoher Wahrscheinlichkeit funktionieren.
Mit meinem Zollstock bekomme ich bei extremer Biegung einen maximalen Wert von 3 für 0x21. Wenn ich den DMS abstöpsel, springt der Wert auf 64, was 6 Bit Auflösung bedeuten würde...
Sinnvolle Werte für den Faktor CALIB in der config.h und P1 im KT-LCD müssen wir uns gemeinsam erarbeiten.


Ich habe jetzt die CAN-Registers.h von @Automated übernommen, so sind wir mit einheitlichen Bezeichnungen unterwegs. (y)

Als nächstes werde ich jetzt die Reku-Aktivierung/Deaktivierung durch Antippen des Bremshebels in Unterstützungsstufe 0 einbauen, auch wenn das für mich im Moment noch nicht in Praxis erprobbar ist, da ich meinen Motor noch nicht eingespeicht habe.
Eine übergreifende Vorskalierung des Rekustärke werde ich erst mal über den Parameter C1 im Display einstellbar machen, hier sind 8 Stufen möglich.

Gruß
hochsitzcola
 
reinosmart

reinosmart

Dabei seit
29.04.2017
Beiträge
358
Ort
Remseck
Details E-Antrieb
BionX IGH3 mit KT36/BluOsec
Ich habe jetzt mal ein bisschen mit FEM gespielt. Natürlich muss man einige Vereinfachungen für die Modellierung machen. Die Achse habe ich an beiden Gewindestummeln fixiert, während die Ausfallenden ja durchaus flexibel sind. Für die Kraftanleitung habe ich am Lagersitz einen kleinen Würfel angebracht, weil die Kraft nicht an gewölbten Flächen angreifen kann. Gerechnet habe ich mit 1000N Kettenzug. In diesem Fall bekommt man in Bereich des DMS eine Dehnung von ca. 0.3 mm/m in Achsrichtung. Bei einer Viertelbrücke entspricht dies einer Empfindlichkeit von 0.15 mV/V. Ich finde diesen Wert sehr plausibel, industrielle Kraftaufnehmer haben häufig 1mV/V. Bei 5 V Speisung haben wir also ein Signal von 0.75 mV. Eine Verstärkung von 2000 ist also nötig für einen Signalhub von 1.5 Volt. Die Achse biegt sich dabei übrigens um knapp 4/100 mm durch.
strain analysis.jpg

Ich weiß, das hilft @Hochsitzcola nicht wirklich weiter, ist aber vielleicht dennoch ganz interessant.

gruß reinosmart
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Ich habe jetzt mal ein bisschen mit FEM gespielt
(y) Klasse! :), hat aber wie schon befürchtet erst mal nur akademischen Wert. Ich hoffe, daß sich jemand findet, der 0x21 Gauge_Value und die anderen Gauge-Register mal an seinem Motor mit richtig parametriertem DMS ausliest, bis jetzt haben wir nur den Log von @temp aus dem anderen Thread

Ich habe jetzt Bremse, Licht und Throttle in den Code eingebaut. Wie weiter oben schon mal angedeutet, habe ich die Bedienung jetzt so gelöst, daß beim Betätigen der Bremse eine fest voreingestellte Reku aktiviert wird (einstellbar über KT-LCD-Parameter C1). Permanente Reku wird durch kurzes Antippen des Bremshebels in Unterstützungsstufe Null aktiviert/deaktiviert. Ist die Perma-Reku aktiviert, wird über die Display-Stufen sowie die übergreifende Einstellung von C1 die Rekustärke eingestellt. So wie ich das BionX-Bedienkonzept verstehe, muß ja auch im Original immer über die Stufe 0 gedaddelt werden. Also ist die Bedienung durchaus ähnlich, es muß nur zusätzlich ein mal die Bremse getippt und die Taste gewechselt werden. Im Filmchen unten links im LCD5 Display sieht man das Brems-Symbol, wenn man ganz genau hinschaut :)- Ich habe noch keinen Bremsschalteranschluß gelötet und ziehe den Pin PB1 mit einem Jumper auf GND.

Das Daumengas überschreibt jetzt die aus dem DMS-Signal berechnete Unterstützung und die Reku-Stufe, wenn es das größere Signal gibt. Man kann also per Daumengas stufenlos Gas geben (derzeit noch illegal ohne treten) und stufenlos rekuperieren.

So wie ich die Kalibrierung von 0x09 Level nun verstehe, werden Werte zwischen -63 und +63 aktzeptiert, also 7 Bit Auflösung.
Code:
//[unit:%, range:-100..100, factor:1.5625] !!! signed !!!
100/1,5625=64

Gruß
hochsitzcola

 
Zuletzt bearbeitet:
S

sgulond

Dabei seit
31.05.2018
Beiträge
377
Ort
CH-8355 Aadorf
Details E-Antrieb
BionX D Wheeler e-Protron
@reinosmart Das sieht ja irgwendwie genau wie meine Achse aus :cool: (bis auf den Würfel).

@Hochsitzcola Ich muss mich wohl mal am WE damit auseinandersetzen die Register mit der Arduino IDE und dem XLB von Thorsten auszulesen.
Wenn sich dann sonst keine Lösung zum Auslesen der Register findet, dann hast Du mich bald soweit dass ich Dich mit einem eingespeichten Motor mit DMS heimsuche......
Bei der Originalbedienung (G2) ist das so wie Du beschrieben hast, man geht mit den + / - Tasten der Konsole oder am Handgas von Max.Unterstützung in 9 Stufen über 0 Unterstützung bis max. Rekuperation und zurück.
Ich steuere selber die Reku meistens vorausschauend über die Tasten während andere häufig nur den Bremshebel im Totbereich zur Bedienung der Reku verwenden.
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Ich habe jetzt noch den externen Drehmomentsensor im Code eingebaut, extern oder intern kann man am Display über Parameter P3 einstellen.
Ausprobiert in Hardware habe ich es noch nicht, jetzt muß ich erst noch die Anschlüsse für die externen Komponenten löten und das Rad einspeichen...

Vielleicht sollte ich so langsam auch mal mit einer Dokumentation im Wiki bei github beginnen, da kann dann jeder mit einem github account mithelfen... :)
Bisher habe ich das nur als Notizzettel benutzt.

Gruß
hochsitzcola
 
reinosmart

reinosmart

Dabei seit
29.04.2017
Beiträge
358
Ort
Remseck
Details E-Antrieb
BionX IGH3 mit KT36/BluOsec
Das Daumengas überschreibt jetzt die aus dem DMS-Signal berechnete Unterstützung
Danke fürs Daumengas, beim Liegerad sehr nützlich beim Anfahren. Ich kann in deinem Versuchsaufbau den Stromsensor noch nicht erkennen, hat das mit dem 5 A Typ (05B) seine Richtigkeit, das ist doch etwas wenig?

gruß reinosmart
 
A

Automated

Dabei seit
19.07.2020
Beiträge
101
Hab jetzt mal den CAN am esp32 am Laufen, noch SD Karte zum Loggen anbinden,..
Vielleicht kann ich ja zum Wochenende eine Runde fahren und loggen.
Was interessiert dich jetzt alles im Detail?
Drehmoment ist klar, was noch?
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
hat das mit dem 5 A Typ (05B) seine Richtigkeit,
Da habe ich nur einen Sensor mit dem gleichen PinOut aus der KiCAD-Library genommen und die Beschriftung nicht angepasst :whistle:. Ich habe inzwischen eine 20A Version auf der Werkbank liegen, aber noch nicht eingebaut. Es gibt ja auch die Power-Info 0x14 auslesbar vom BionX, es ist die Frage, ob das die elektrische Eingangsleistung ist, dann könnten wir uns den zusätzlichen Stromsensor sparen. Wenn es aber die mechanisch abgegebene Leistung Motorstrom*Raddrehzahl ist, brauchen wir den Sensor. Offensichtlich gibt es zu diesen Details keine gesicherten Erkenntnisse. Oder die Kollegen, die diese Infos haben, lesen hier nicht mit ;)

Was interessiert dich jetzt alles im Detail?
Sämtliche Register, die irgendwas mit Gauge zu tun haben :)
Danke für die Hilfe!

Gruß
hochsitzcola
 
A

Automated

Dabei seit
19.07.2020
Beiträge
101
Wennst kein Problem hast logge ich mal einfach alles was daher kommt. Du müsstest dann halt nach Kommandos filtern/suchen.
Das hab ich mal soweit zusammengeschustert.
Aktuell via Bluetooth ans Handy, da verbaue ich den Kabelsalat mal in den Akku.
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Wennst kein Problem hast logge ich mal einfach alles was daher kommt.
ich denke, du müsstest konkret die Register auslesen, das sind ja meist Parameter, die nicht ständig geschrieben/gelesen werden, sondern nur beim Parametrieren mit der BIB angefasst werden.
Der Request zum Auslesen eines konkreten Registers sieht bei mir so aus, wie die Syntax beim ESP32 ist, weiß ich nicht....

C:
void Send_CAN_Request(uint8_t command){

    TxHeader.StdId=ID_MOTOR;
    TxHeader.DLC=2;
    TxData[0] = 0;
    TxData[1] = command;

    if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox) != HAL_OK)
           {
          Error_Handler();
        }
}
Du sendest zwei Datenbytes, von denen das erst Null ist und das zweite die Registeradresse, die du auslesen willst.
Der Motor antwortet dann mit 4 Bytes, das erste ist Null, das zweite die abgefragte Registeradresse, das dritte wieder Null und der vierte der gelesene Registerinhalt.

Ich weiß nicht, ob du das so umgesetzt bekommst. Der BMT kann das wie oben beschrieben schon im Debug-Mode über Laptop und HTERM (oder jedem anderen Gerät mit Terminal-Programm, das nackte HEX-Werte senden kann...) Im Debug Mode muß man die BAUD Rate auf 115200 stellen, sonst kommt UART nicht mit dem Senden der empfangenen CAN-Botschaften hinterher...:cool:

Gruß
hochsitzcola
 
A

Automated

Dabei seit
19.07.2020
Beiträge
101
Gerade versucht alles was da so ankommt über Bluetooth ans Handy zu schieben.
Das klappt mal nicht - da bin ich zu langsam um das alles über BT zu schieben. Schmarrn - will mir das Batteriegehäuse nicht zerbohren....

Äh!
Ich verstehe jetzt nicht um was es dir konkret geht - wenn du die Config vom Motor benötigst (also die Register die im Fahrbetrieb nicht verändert werden) so kann ich dir die einfach mit Bikeinfo auslesen - da braucht es kein Loggen...
Wie man ein Register ausliest ist mir schon klar, nur passiert da ja ziemlich viel auf dem CAN-Bus im Normalbetrieb...
Um meine angestrebte Methode beizubehalten muß ich also einen Parser bauen (und scheitere hoffentlich dann nicht an einem hängenden CAN-Treiber oder wasweisich )

Bitte ergänzen:
#define REG_MOTOR_ASSIST_LEVEL 0x09 //[unit:%, range:-100..100, factor:1.5625] !!! signed !!!
#define REG_MOTOR_ASSIST_WALK_LEVEL 0x0A //Top level when assisting in walk mode [unit:%, factor:1.5625]
#define REG_MOTOR_STATUS_SPEED 0x11 //- [unit:rpm, factor:9.091]
#define REG_MOTOR_STATUS_POWER_METER 0x14 //- [unit:%, factor:1.5625]
#define REG_MOTOR_TORQUE_GAUGE_VALUE 0x21 //- [unit:%, range:0?..100, factor:1.5625]

Diese Parameter können mmn als Bezug/Anhaltspunkt für die Berechnung Unterstützungsstufe in Relation zum eingebrachten Drehmoment verwendet werden, wobei ich mir nicht vorstellen kann daß die Berechnung in der Console vonstatten gehen soll - das wird doch wohl eh im Motor vonstatten gehen?
-Bin verwirrt
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.001
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
0x09, 0x21, 0x11 und 0x14 sind ja schon drin. Der WALK_LEVEL ist ja was, was nur einmal parametriert wird, das könnte man ja "Offline" machen.

kann ich dir die einfach mit Bikeinfo auslesen
Um so besser, wichtig sind mir nur die konkreten Registerwerte, nicht irgendwas schon in unbekannter Art aufbereitetes wie die Screenshots vom BBI.

wobei ich mir nicht vorstellen kann daß die Berechnung in der Console vonstatten gehen soll
Offensichtlich schon, die "Intelligenz" des Systems liegt in der Konsole, zumindest bei der G2, siehe ganz zu Anfang des anderen Threads.
Genauso packen wir die "Intelligenz" in den BMT. Mit 0x09 sagen wir dem Motorcontroller wieviel Motorstrom er in die Windungen jagen soll (hoffentlich ;)) und lesen dann mit 0x11 und 0x14 zurück, welche Raddrehzahl und welche Leistung das grade erzeugt. Die ganzen anderen Parameter sind mir zur Zeit erst mal egal. Man kann sicherlich später, wenn man es verstanden hat, noch andere nützliche Infos vom Motor abrufen, aber eins nach dem anderen.

nur passiert da ja ziemlich viel auf dem CAN-Bus im Normalbetrieb.
Das ist für uns zum Glück ziemlich egal :)
Es fehlt mir für den Moment nur die Info, ob
- 0x09 wirklich die Vorgabe des Motorstroms ist
- 0x14 die abgegebene mechanische Leistung, oder die aufgenommene elektrische Leistung ist
- wie die Umrechnung von 0x14 und 0x11 von den Registerwerten in physikalische Größen funktioniert, das scheinen ja Prozentwerte von irgendwo definierten Maximalwerten zu sein...

Die Skalierung von 0x09 meine ich ja verstanden zu haben, siehe ein paar Beiträge weiter oben.

Ich freu mich auf deine Ergebnisse! :)

Gruß
hochsitzcola
 
Zuletzt bearbeitet:
A

Automated

Dabei seit
19.07.2020
Beiträge
101
Sodala...
Ich habe ein bisschen was zusammengefasst:
Readout Motor mit BikeInfo, Parameter als .txt, als Screenshots und das CAN-Log vom Readout (Parameter ungesichtet)
Dann vier Logs vom (hoffentlich) komplettem Traffic auf dem CAN-Bus in verschiedenen Betriebsarten (Fahren auf Ebene, bergauf, bergab..)

Console G2 v62, Akku 36V HWv5.2 SWv105, Motor PL250HT v101

Wenn sich jemand die Arbeit antut die Kommunikation zu sichten und zu analysieren (Timing, was wird wann wo wohin geschickt/abgefragt), dann bitte ein Writeup dazu machen und teilen!
Ich habe da jetzt schon ziemlich viel Arbeit investiert und stelle das für Alle bereit - entsprechend erwarte ich das auch von denen die davon profitieren

Aaah, eine Frage noch - vielleicht ist das jemand Anderem auch schon untergekommen:
Ich hab aktuell im Akku einen ESP32 mit MCP2551 verbaut: 5V, GND, CANH und CANL direkt an den Lötpunkten BMS angelötet.
Leitungslänge ca. 20cm, Einzeladern, verflochten.
Längs in der 5V Versorgung habe ich eine Schottky in Serie, zusätzlicher Abschlusswiderstand 120 Ohm am MCP2551 (habe ich noch drin als ich Gestern auf Fehlerjagd war)

Schalte ich in dieser Konfiguration das System aus (über direkten Befehl am CAN-Bus oder über die Console) schalet sich der Akku netterweise immer wieder von selbst ein, Sleep funktioniert aber.
Geisterbahn für die mir eine Erklärung fehlt.
 

Anhänge

Zuletzt bearbeitet:
Thema:

BMT - BionX-Motor mit No-Name-Akku und Kunteng-Display betreiben

BMT - BionX-Motor mit No-Name-Akku und Kunteng-Display betreiben - Ähnliche Themen

  • Bionx frontantrieb Verkabelung

    Bionx frontantrieb Verkabelung: Hallo ich habe einen Bionx Frontantrieb , eine g 2 Konsole für Frontantrieb und einen Sensor für die Hinterachse alles Diamant achat 2011 Kann...
  • BIONX BIB BionX Interface Box (neu ohne Software)

    BIONX BIB BionX Interface Box (neu ohne Software): Original BionX Interface Box BIB Art. Nr. 01-4672 zur Systemprogrammierung & Diagnose aller BionX Komponenten Neuware OHNE Treiber & OHNE...
  • Übersicht BionX Motoren Versionen

    Übersicht BionX Motoren Versionen: Es gibt ja hier eine recht umfangreiche Übersicht zu den verschiedenen BionX-Motoren: BionX - die Produkte Nur die Unterscheidung der einzelnen...
  • BionX DS3 Display defekt

    BionX DS3 Display defekt: Ich habe ein defektes DS3 Display als Ersatzteilspender erhalten. Die Anzeige funktionierte noch, aber die Hintergrundbeleuchtung nicht mehr. Man...
  • Ähnliche Themen
  • Bionx frontantrieb Verkabelung

    Bionx frontantrieb Verkabelung: Hallo ich habe einen Bionx Frontantrieb , eine g 2 Konsole für Frontantrieb und einen Sensor für die Hinterachse alles Diamant achat 2011 Kann...
  • BIONX BIB BionX Interface Box (neu ohne Software)

    BIONX BIB BionX Interface Box (neu ohne Software): Original BionX Interface Box BIB Art. Nr. 01-4672 zur Systemprogrammierung & Diagnose aller BionX Komponenten Neuware OHNE Treiber & OHNE...
  • Übersicht BionX Motoren Versionen

    Übersicht BionX Motoren Versionen: Es gibt ja hier eine recht umfangreiche Übersicht zu den verschiedenen BionX-Motoren: BionX - die Produkte Nur die Unterscheidung der einzelnen...
  • BionX DS3 Display defekt

    BionX DS3 Display defekt: Ich habe ein defektes DS3 Display als Ersatzteilspender erhalten. Die Anzeige funktionierte noch, aber die Hintergrundbeleuchtung nicht mehr. Man...
  • Oben