Open Source Firmware für Lishui Controller

Diskutiere Open Source Firmware für Lishui Controller im Controller/Regler, Fahrerinformation, Elektronik Forum im Bereich Diskussionen; Gut zu Lesen, daß das Temperaturproblem damit wohl gelöst ist! (y) Hm, ich weiß gar nicht, ob ich das jemals ausprobiert habe ?! Hast du...
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Gut zu Lesen, daß das Temperaturproblem damit wohl gelöst ist! (y)

Leider keine Anzeige am KT-Display.
Hm, ich weiß gar nicht, ob ich das jemals ausprobiert habe ?!
Hast du PULSES_PER_REVOLUTION richtig eingestellt?!
Es war noch der Bug drin, daß ich den Speedzähler irgendwann mal von 16 kHz auf 8 kHz reduziert hatte, hab das grad auf github korrigiert.

Code:
ui16_wheel_period_ms = (MS_U->Speed*PULSES_PER_REVOLUTION)>>3; //Speed Zähler wird mit 8kHz hochgezählt
Trotzdem sollte eine Geschwindigkeit angezeigt werden...
128000 sendet der Controller aber höchstens im Debug mode....

Der Signalpegel am Speedsensor ist im Leerlauf auf High und wenn der Magnet passiert geht er kurz auf 0. Ist das sonst nicht anders rum?
Nein das passt schon, das ist ja open drain für Hallsensoren, der Speedsensor zieht das Signal auf GND.

Du könntest mal durchmessen, ob das Signal auch auf Pin PB5 am Prozessor ankommt.



Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
64
Ort
Raum Würzburg
Danke für deinen Tipp @Hochsitzcola.(y)
Hatte doch tatsächlich eine Unterbrechung in der Signalleitung durch schlechtes Crimpen. :oops:

Das Signal vom Speedsensor am PIN5B gemessen zeigt bei 38V eine Leerlaufdrehzahl von 4,42Hz (=265rpm). Mit Radumfang 2,2m ergibt sich daraus eine Geschwindigkeit von 35,0km/h.
29 Hidden controller #4 OS PIN5B SS akku Screenshot_201011_145021.jpg
Mit dem auf 8kH geänderten Speedzähler wird am Display die Geschwindigkeit von 34,8km/h angezeigt. Passt.

Würde gerne auch einen Temperatursensor LM35 auf die Motorwicklung kleben und das Signal über die ungenutzte weiße Leitung im Motorkabel zum Kontroller bringen. Da würde der Pin PB1 für mich gut passen. Kann man diesen Pin dafür verwenden?

Gruß tomsen61
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Da würde der Pin PB1 für mich gut passen
Ja, das sollte gehen, PB1 ist der ADC-Kanal 9

1602501436896.png

Allerdings weiß ich nicht, ob da noch irgendwelche RC-Baugruppen drauf liegen, die das Spannungssignal verfälschen würden. Das mußt du durchmessen bzw. ausprobieren. Und du mußt den Kanal 9 natürlich in die Firmware einbauen...

Gruß
hochsitzcola
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Wenn Du mal kurz draufschauen würdest wäre ich dir sehr dankbar.
Das sieht schon gut aus, es fehlt natürlich noch eine Menge.
Ich würde die Temperaturvariable mit in den Struct MS reinhängen, dann kannst du ihn leicht in die display_kunteng.c übergeben.
main.h:
Code:
typedef struct
{

    q31_t           Voltage;
    uint32_t           Speed;
    q31_t              i_d;
    q31_t              i_q;
    q31_t              u_d;
    q31_t              u_q;
    q31_t              u_abs;
    q31_t              Battery_Current;
    uint8_t         hall_angle_detect_flag;
    uint8_t         char_dyn_adc_state;
    uint8_t         assist_level;
    int8_t         Temperature;
}MotorState_t;
Dann in der display_kunteng.c:

Code:
 // B9: motor temperature
  ui8_tx_buffer [9] = MS_U->Temperature-15; //according to documentation at endless sphere
Und in der main.c mußt du natürlich den Channel 9 auch abfragen und den ADC-Wert in eine Temperatur umrechnen. Da ist die Frage, ob du einfach einen der 5 bisher ausgelesenen Kanäle ersetzt (die meisten werden eh nicht verwendet) oder ob du das Array erweiterst. Einfacher ist das ersetzen ;-) Du kannst einfach Channel 4 gegen Channel 9 tauschen, Channel 4 ist der Phasenstrom von Phase 1, der wird im Regular ADC aber nur zum debuggen gebraucht.

Code:
/**Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_9;
sConfig.Rank = ADC_REGULAR_RANK_3;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
Dann kannst du die Berechnung einfügen z.B. in Zeile 641

Code:
MS.Temperature = gain*adcData[2]-offset;
Dabei sind gain und offset die Kalibrierungskonstanten, die ich zu dem Sensor nicht kenne.

Viel Spaß beim ausprobieren, wenn es funktioniert, stelle bitte einen Pull Request, dann haben andere vielleicht auch mal was davon! (y)

Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
64
Ort
Raum Würzburg
wenn es funktioniert, stelle bitte einen Pull Request
Habe ich gemacht.

Temperaturanzeige für Motortemperatur am LCD3 funktioniert.
Das Temperatursignal (10mV/°C) musste ich allerdings mit einem verstellbaren Spannungsteiler erzeugen, da ich aus China von zwei verschiedenen Händlern nur LM35 fakes bekommen habe :cry:. Spannungteiler hat sehr gut zum Testen funktionert. Die nächsten Tage kommen dann LM35DZ vom deutschen Händler. Die sind zwar nur bis 100°C spezifiziert. Ich gehe aber davon aus, dass sie auch bis 120°C funktionieren.
Hier wäre das nächste Ziel zum Motorschutz ab einer bestimmten Temp. den Strom zu reduzieren ( if ( MS.Temperature>x) int16_current_target=y).

Wattanzeige (U_Batt * I_Batt)
Die für die Anzeige der Eingangsleistung musste ich den Strom mit -1 multipliziert, da i_q im REVERSE-Modus negativ ist. Die Kalibrierung von Binatone passt.
ui8_tx_buffer [8] = (uint8_t)(MS_U->Battery_Current[B]*-1[/B]*MS_U->Voltage*CAL_BAT_V/82010000);
Das ist aber nur provisorisch.
Ich habe schon etwas diletantisch rumgecoded. Meine Versuche liefen aber alle beim Kompilen nicht durch :sneaky:.
Der Battery_Current müsste unabhängig vom Vorzeichen von i_q immer positiv sein.

Gruß thomsen61
 
Millimeter94

Millimeter94

Dabei seit
13.07.2020
Beiträge
9
Guten Abend
Wie schwierig ist es denn ein neues Display in die Software einzupflegen? Ich habe hier ein Kingmeter Digital 2 ohne Daumengas dafür mit Error 30. Ich würde es auch gerne selber versuchen aber ich bräuchte vielleicht einen Hinweis wo ich anfangen soll.
Gruß
Millimeter94
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Habe ich gemacht.
Super, ich werde es mir mal anschauen und dann mergen, wenn es klappt. Wie ist der Pin PB1 denn zugänglich? Ist der mit einer Lishui-Bezeichnung auf einem der Header zugänglich?

edit: Ich habe deinen Pull-Request bei git kommentiert! Da sind doch noch ein paar Bugs drin.

Ich habe hier ein Kingmeter Digital 2
Ist das denn eine UART-Version? Wenn ja, wird es wahrscheinlich das KM5S Protokoll verwenden. Das ist etwas tricky, da das einen verschlüsselten Handshake beim Einschalten macht. Dieser Handshake kann von OEM zu OEM unterschiedlich sein, eben um einfaches Tauschen der Displays zu unterbinden. Ich habe den Handshake bei meinem Fischer EM1606 mit der Original-Fischer-Firmware belauscht und so die Lookup-Tabelle im Branch Sensorless_VESC erstellt. Die Tabelle aus dem Code vom FC hatte für das Fischer-Display nicht funktioniert.
Du müsstest also erst mal mit einem USB-UART-Wandler lauschen, was das Display so sendet. Wenn beide Lookup-Tabellen nicht passen, braucht du einen Controller, der mit dem Display funktioniert, dann kannst du die Antwort vom Controller mitlesen und so deine eigene passende Tabelle erzeugen.

Gruß
hochsitzcola
 
Zuletzt bearbeitet:
Millimeter94

Millimeter94

Dabei seit
13.07.2020
Beiträge
9
Guten Morgen
Laut Hersteller UART, LIN, und CAN. Genauso wie beim KM5S. Ich werd das heute Abend mal versuchen auszulesen.
Zum Thema UART hätte ich noch eine weitere Frage: Den SPEC_ANGLE auszulesen war noch relativ einfach aber da kommen ja noch wesentlich mehr Daten mit. Könntest du noch irgendwo aufschlüsseln was die Zahlen bedeuten?
Gruß
Millimeter94
 
Zuletzt bearbeitet:
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Könntest du noch irgendwo aufschlüsseln was die Zahlen bedeuten?
Das ist unterschiedlich, je nach dem, welcher Parameter mich beim Debuggen gerade interessiert.;)
Was ausgegeben wird, ist in Zeile 651 der main.c definiert. Also im Moment

Ist-Motorstrom iq, Soll-Motorstrom, Soll-Motorstrom aus Trittfrequenz bei Stromstufen, iq*Spannung, Tics zwischen zwei PAS-Interrupts, Tastverhältnis, ADC-Wert vom Gasgriffeingang

Gruß
hochsitzcola
 
Millimeter94

Millimeter94

Dabei seit
13.07.2020
Beiträge
9
Guten Abend
Ich bin leider doch erst jetzt dazu gekommen die Kommunikation mal abzuhören. Leider kommt da noch nicht zu viel sinnvolles raus. Weißt du zufällig das da mit Baudrate, Daten- und Stoppbits und dem ganzen zeug aussieht?
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Weißt du zufällig das da mit Baudrate
Die Kommunikation ist bei 9600 BAUD

Code:
 huart1.Init.BaudRate = 9600;
 huart1.Init.WordLength = UART_WORDLENGTH_8B;
 huart1.Init.StopBits = UART_STOPBITS_1;
 huart1.Init.Parity = UART_PARITY_NONE;
Es wird aber nichts in Klartext gesendet. Wenn es denn das KM5S Protokoll ist sendet das Display 12?! (weiß ich nicht mehr so genau :)) Bytes und der Controller antwortet mit 13 Bytes.

Die Botschaften sehen in hex so ähnlich aus:
3A 1A 53 05 00 00 0D 91 00 10 01 0D 0A
Wenn die ... 0x53 ... vom Display gesendet werden, ist das der Handshake-, bzw. Programmier-Modus. Wenn 0x52 gesendet wird, ist das der normale Betrieb.
Beim Handshake sendet das Display als 9. Byte eine Zahl, auf die es in der Antwort vom Controller als 7. Byte die "richtige" Zahl aus der Lookup-Tabelle sehen will. Kommt die richtige Antwort nicht, sendet das Display weiter "0x53" Nachrichten, und zeigt irgendwann Error 30.
Kommt die richtige Antwort, geht es im normalen Mode mit 0x52 weiter.

Das Ganze ist in der display_kingmeter.c zu finden. Wenn die gesendeten Daten vom Display ganz anders aussehen, wird wohl ein anderes Protokoll verwendet, dann müsstest du hier mal einen log der Kommunikation posten, vielleicht kenne ich es ja.

Gruß
hochsitzcola
 
Millimeter94

Millimeter94

Dabei seit
13.07.2020
Beiträge
9
Dein Post kam etwa 10 Minuten zu spät. Inzwischen hab ich die Einstellungen scheinbar selber gefunden. Aber alles was da kommt ist "Lishui FOC v0.9 " in Klartext. Sonst kommt garnichts.
Edit: Jetzt ist eh erst mal Feierabend. Ich hab grade den UART Wandler geschrottet...
 
Zuletzt bearbeitet:
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Aber alles was da kommt ist "Lishui FOC v0.9 " in Klartext. Sonst kommt garnichts.
Da hast du am Tx vom Controller gelauscht. Lausche mal Tx vom Display. Der Controller antwortet nur, wenn er eine gültige Nachricht vom Display empfangen hat.

Gruß
hochsitzcola
 
Millimeter94

Millimeter94

Dabei seit
13.07.2020
Beiträge
9
Naja grade siehts so aus als ob ich das frühestens Freitag testen kann wenn der neue Wandler da ist. Ich hoff einfach mal dass wirklich nur der kaputt ist.
 
Millimeter94

Millimeter94

Dabei seit
13.07.2020
Beiträge
9
Ich habs scheinbar doch nicht kaputtgemacht. Es ist wirklich nur der USB-Wandler verreckt. Vom Display kommen die folgenden 15 Byte in regelmäßigen Abständen.
3A 1A 53 07 02 40 01 00 D4 01 72 FE 01 0D 0A
Der Controller antwortet nach wie vor mit "Lishui FOC v0.9 "
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Vom Display kommen die folgenden 15 Byte in regelmäßigen
OK, das ist auf jeden Fall das KM5S Protokoll. Warum der Controller nicht antwortet, muß ich mir mal anschauen. Ich habe im Branch Sensorless VESC den Code für das Fischer-Display angepasst, so daß er mit DMA funktioniert. Im Master hab ich das nicht nachgezogen. Die Frage bleibt halt, welchen Handshake dein Display erwartet.

EBiCS/EBiCS_Firmware

Code:
#define DISPLAY_TYPE DISPLAY_TYPE_KINGMETER_FISCHER_1822
Gruß
hochsitzcola
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
3.054
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
So ich habe jetzt die Kingmeter-Routine aus dem Sensorless-Branch in den Master gebaut, allerdings noch die alte Handshake-Tabelle vom FC gelassen, da ich nicht denke, daß du ein Fischer-Display hast.

Du kannst mal probieren, ob der Controller jetzt antwortet, wenn du im Java-Tool KM5S als Display auswählst. Ich habe es nicht ausprobiert, da ich grad keinen Lishui-Aufbau auf der Werkbank habe ;)
Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
64
Ort
Raum Würzburg
Noch zu der Frage
Wie ist der Pin PB1 denn zugänglich? Ist der mit einer Lishui-Bezeichnung auf einem der Header zugänglich?
PB1 geht auf ein Lötauge mit der Kennzeichnung AD1. Daran ist eine Signalleitung "Forward High" angeschlossen. Diese gehört zu einem 3-poligen Abgangskabel dessen Bedeutung ich höchstens vermuten kann und ich nicht benötige.

Gruß tomsen61
platine ausgeschlachtet_AD1.jpgswitch loom.GIFplatine ausgeschlachtet.jpg
 
S

SirTobi101

Dabei seit
16.10.2020
Beiträge
27
Mal eine Frage: Ist man hier nicht an einem Punkt angelangt, an dem es sich lohnt einen Schaltplan zu erstellen? Da kann man dann ggf. Anpassungen vornehmen und neue Platinen anfertigen lassen. Das kostet hat heutzutage nicht mehr viel.

Hier kann man dann auch mal schnell eine Platine für den Yamaha machen oder für andere Systeme wo das Protokoll offen ist.
 
Thema:

Open Source Firmware für Lishui Controller

Open Source Firmware für Lishui Controller - Ähnliche Themen

  • Tsdz2 open source firmware mit xh18

    Tsdz2 open source firmware mit xh18: Hallo zusammen, ich benötige mal eure Hilfe. Ich würde gerne meinen Tsdz2 Motor 250 Watt mit Rücktritt und xh18 display mit der Opensource...
  • KT LCD 3 Open SOurce Firmware alle Segmente leuchten steckt fest

    KT LCD 3 Open SOurce Firmware alle Segmente leuchten steckt fest: Oh mann, ihr müsst mich wohl langsam für den totalen Idioten halten. Erst das ganze wilde Gefrage mit dem Lishui und dessen Open Source Firmware...
  • KT-LCD 3 und TSDZ2 ohne Open Source Firmware ?

    KT-LCD 3 und TSDZ2 ohne Open Source Firmware ?: Hallo, ich bin kein Experte, wollte nur um eine Auskunft bitten. Kann man ein LCD3 am TSDZ2 erstmal ohne Open-Source Firmware betreiben und wenn...
  • Kunteng Kt 36 und LCD3 welche open source Firmware?

    Kunteng Kt 36 und LCD3 welche open source Firmware?: Hallo, Ich will eine Open source Firmware auf meinen KT36 installieren, dazu muss natürlich auch ein passendes Gegenstück auf das LCD3, welche...
  • Ähnliche Themen
  • Tsdz2 open source firmware mit xh18

    Tsdz2 open source firmware mit xh18: Hallo zusammen, ich benötige mal eure Hilfe. Ich würde gerne meinen Tsdz2 Motor 250 Watt mit Rücktritt und xh18 display mit der Opensource...
  • KT LCD 3 Open SOurce Firmware alle Segmente leuchten steckt fest

    KT LCD 3 Open SOurce Firmware alle Segmente leuchten steckt fest: Oh mann, ihr müsst mich wohl langsam für den totalen Idioten halten. Erst das ganze wilde Gefrage mit dem Lishui und dessen Open Source Firmware...
  • KT-LCD 3 und TSDZ2 ohne Open Source Firmware ?

    KT-LCD 3 und TSDZ2 ohne Open Source Firmware ?: Hallo, ich bin kein Experte, wollte nur um eine Auskunft bitten. Kann man ein LCD3 am TSDZ2 erstmal ohne Open-Source Firmware betreiben und wenn...
  • Kunteng Kt 36 und LCD3 welche open source Firmware?

    Kunteng Kt 36 und LCD3 welche open source Firmware?: Hallo, Ich will eine Open source Firmware auf meinen KT36 installieren, dazu muss natürlich auch ein passendes Gegenstück auf das LCD3, welche...
  • Oben