Open Source Firmware für Lishui Controller

Diskutiere Open Source Firmware für Lishui Controller im Controller/Regler, Fahrerinformation, Elektronik Forum im Bereich Diskussionen; Deine Überlegungen passen schon. Allerdings sind das ja elektrische Umdrehungen, keine Radumdrehungen, da steckt ja noch das Gear Ratio mit drin...
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Wo habe ich da einen Fehler gemacht?
Deine Überlegungen passen schon. Allerdings sind das ja elektrische Umdrehungen, keine Radumdrehungen, da steckt ja noch das Gear Ratio mit drin. ggf. ist mein Shengyi Nabenmotor im Fischer höher übersetzt als deiner. Du musst die Routine halt auf deinen Motor anpassen. Wenn er in den 5000 Schleifenläufen schon soweit beschleunigt, daß der Freilauf packt, kommt natürlich alles durcheinander. Also zum Beispiel einfach kleinere Winkelinkremente ausprobieren.

Bin gespannt auf deine Erfahrungen, es wäre toll, wenn wir den Sensorless-Branch robuster ans Laufen bekämen. :)

Gruß
hochsitzcola
 
Zuletzt bearbeitet:
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
In der Start_Compiling.bat den explilziten Pfad zur ST-LINK_CLI.exe rausgelöscht und den vollen Pfad in die Java-Gui eingetragen
Die Zeile 5 sieht dann so aus:
Code:
PATH = %PATH%;%eclipsepath%\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825\tools\make;%eclipsepath%\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825\tools\compiler\bin;%stmpath%
Deine Pfadangabe in der Gui müsste dann sein: „C:\Program Files\STMicroelectronics\STM32 ST-Link Utility\ST-Link Utility"
Habe ich so gemacht:
EB7FC03E-8D92-4820-BBEB-B5E050F80133.jpeg


So läuft das Skript dann an:
E2BA6688-2473-4867-86C4-FCD3B3FC66D0.jpeg


und so endet es:

4F87FC93-47D5-4EA4-8D7A-2071D3BE6647.png


Er meckert schon mal nicht, dass die cLI-Datei nicht gefunden wird.
Mehr kommt aber nicht. Könnte es an einem nicht erfolgreich geflashten controller liegen? Oder sähe dann die Fehlermeldung anders aus? Ich habe mal den ST-Visual Programmer gestartet und konnte dort zumindest alle Tabs einlesen, an der Verbindung liegts daher nicht. Schöne Windowswelt;)
*edit Im dem letzten Verzeichnis, dass genannt wird „C:/…Debug“ befindet sich gar keine CLI Datei.
Der Writeoptionbyte sieht so aus:
4D9FE33D-91E8-4E35-8BAC-E54B42280D51.png
 
Zuletzt bearbeitet:
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Der Mist ließ mir keine Ruhe.
Ich hatte mich irgendwann gefragt, was das eigentlich für stlink.exe Programme sind und bekam bei Doppelklick einen feinen dll Fehler ausgespuckt:
01009758-A1A3-453E-B286-E71C93EC8645.png

Meldung erscheint abscheinend nicht, wenn exe über batch gestartet wird.

Scheint ein bekanntes Problem zu sein:

https://community.st.com/s/question...lity-upgrade-cannot-start-mfc140dll-not-found

„The stlink "installer" is broken. You can get the missing dll by installing the "Microsoft Visual C++ 2015 Redistributable Update 3 RC"

Für x86 Prozessoren bekommt man die fehlenden dlls über:
Latest supported Visual C++ Redistributable downloads

Wegen so nem Scheiß drehe ich mich seit nem 3/4 Jahr im Kreis…

Da ich nicht erwarte, dass die doku um solche, nicht ganz irrelevanten Infos ergänzt wird, poste ich die Lösung formlos hierhin. Wird vermutlich nur die wenigsten tangieren, weil die meisten bereits mit 64bit unterwegs sind, aber ich schaffe mir als Mac-User kein neues WinSystem an, nur um damit Stm Chips zu flashen. Weiter geht das Abenteuer…
Danke an den support bis her.
Ahhh, jetzt gibt es sogar bunte Schrift in der Eingabeaufforderung. Dann kann ich ja jetzt zum 4. oder 5. mal die 80. Seiten durchlesen, um die nächsten Kleinigkeiten herauszufinden, z.B welche Werte den Zahlen bei den Akkuspannungen entsprechen. Langsam ernährt sich das Eichhörnchen.
Da es gerade so jut läuft:
Ich möchte das EN06 Display nutzen und ich habe von einem EN06 branch gelesen, der wohl funktioniert. Ich würde „branch“ als alternativen Ergänzungszweig verstehen. Was mich wundert: Wenn ich mir angucke, wann die branches von hochsitzcola geupdated wurden , steht da vor 2 Jahren oder 14 Monaten obwohl hochsitzcola zwischendurch immer wieder im Forum gepostet hat, dass er etwas aktualisiert hat. Lese ich das falsch? Sehe ich das richtig, dass ich diesen EN06 branch nicht auf die „einfache“ Weise ;) über das Javatool installieren kann, dass jetzt endlich funktioniert? Ironie winkt mir zu. haha
 
Zuletzt bearbeitet:
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Scheint ein bekanntes Problem zu sein:
Danke für den Hinweis, ich habe ihn im Wiki ergänzt!
7. Download and install the ST-Link Utility Caution, there is an issue with some contributions of the utility.

Ich möchte das EN06 Display nutzen
Das EN06 sollte inzwischen auch im Master als KM5S funktionieren (wenn ich mich recht erinnere :)). Die Branches lege ich immer zum Entwickeln an, wenn es dann funktioniert, schiebe ich den Stand wieder in den Master. Die meisten Branches sind also Relikte einer abgeschlossenen Weiterentwicklung. Nur der Sensorless VESC Branch ist eigenständig, da mir der noch nicht solide genug für den Master ist.

Gruß
hochsitzcola
 
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Danke für den Hinweis, ich habe ihn im Wiki ergänzt!



Das EN06 sollte inzwischen auch im Master als KM5S funktionieren (wenn ich mich recht erinnere :)). Die Branches lege ich immer zum Entwickeln an, wenn es dann funktioniert, schiebe ich den Stand wieder in den Master. Die meisten Branches sind also Relikte einer abgeschlossenen Weiterentwicklung. Nur der Sensorless VESC Branch ist eigenständig, da mir der noch nicht solide genug für den Master ist.

Gruß
hochsitzcola
Was für ein service:) Danke.
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Bin gespannt auf deine Erfahrungen
Das Anfahren und der Übergang von open loop zu geregeltem Strom funktioniert jetzt gut. Das Winkelinkrement um Faktor 8 reduziert (2684354<<1).
Dadurch hat sich auch die Schwingung auf i_q beruhigt. Allerdings bleibt eine deutliche Schwingung für i_q größer 200, bzw. dutycyle größer 1200 übrig. Diese führt am Ende zur Abschaltung des Controllers. Um dies zu verbessern würde ich als nächstes mit den Faktoren R und Flux experimentieren. Danach noch die PI-Regelparameter.
1641197368995.png

Eine weitere Sache hat mich dann erschrocken. Nach 1-2 Minuten Betrieb auf der Rolle bei leichter Last (i_Batt ca. 3A) war der Controller extrem heiß. Woran könnte das liegen?

Gruß
tomsen61
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Woran könnte das liegen?
Im Sensorless Branch ist die Totzeit noch auf Null, je nach dem, welchen Halbbrückentreiber du drauf hast, musst die hochstellen, wie im Master :)
EBiCS_Firmware/main.c at 44791d56be94863a55cac56525487a8996753f34 · EBiCS/EBiCS_Firmware

Ich habe vielleicht endlich den Grund für die "Fehlzündungen gefunden :cool:
Die CMSIS Funktion arm_inv_park_q31() hat anscheinend einen Bug, es gibt einen Überlauf wenn der Sinus exakt -1 bzw. der Cosinus exakt 1 wird. Das lässt sich zum Glück sehr leicht auffangen :)

C:
    if(sinevalue==-2147483648)sinevalue=-2147483647;
    if(cosinevalue==2147483648)cosinevalue=2147483647;

possible bugfix for "misfires" · EBiCS/[email protected]

Wäre schön, wenn das mal jemand ausprobieren und bestätigen könnte ;)

Gruß
hochsitzcola

oberer Graph: sinus und cosinus
unterer Graph: Ualpha und Ubeta
vorher:

1641211851100.png


nachher:
1641211903235.png
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Im Sensorless Branch ist die Totzeit noch auf Null
Ja, mit 32ms bleibt der Controller nun kalt und gleichzeitig sind auch die Schwingungen weg. (y)

Nun läuft der Motor bis max. Last vom Rollentrainer RT sehr gut.

Im Diagramm unten wird mit von Hand angestoßenem Vorrderrad, RT auf Laststufe 3, angefahren.
Bis max. Drehzahl beschleunigt (bei sec 16, min. MS.Speed = 62).
Dann Throttle auf Vollgas und die Laststufe RT bis auf 10 erhöht.
Batteriestrom steigt bis er i_q erreicht. In den nächsten 15 sec fällt die Motordrehzahl bei konstanter Last ab (MS.speed steigt) .
Bei sec 39 wird Last RT wieder zurückgenommen.

An Punkt 1 wird Throttle auf 0 zurückgenommen. Der Motor läuft schnell aus, das Rad dreht weiter (Schwungmasse RT).
Wenn nun wieder Gas gegeben wird, kommt es zu heftigen Schwingungen.
Könnte nun versuchen PI-Regelparamter zu reduzieren. Ist aber vermutlich nicht zielführend, da es vermutlich Nachteile für die sonstige Stromregelung hätte.
Alternativ könnte man speziell für diesen Fall eine Anlaufroutine schreiben.
Es kommt ja im normalen Betrieb oft vor, dass man nach einer Tretpause wieder das Pedalieren beginnt.


1641285430609.png

Auffällig sind noch die regelmäßigen Ausreißer von MS.Speed in den Messdaten. Jeweils ein Punkt, schwankend zw. 6000 u. 30000.
Fehlzündungen hört man auch alle 1-3 sec.
Leider auch noch nachdem ich den possible bugfix for "misfires" in die FCO.c reingeschrieben hatte.

Gruß
tomsen61
 
Zuletzt bearbeitet:
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Leider auch noch nachdem ich den possible bugfix for "misfires" in die FCO.c reingeschrieben hatte.
Merkwürdig, bist du dir sicher, daß du die Zeilen an der richtigen Stelle eingefügt hast? Wir haben es an zwei Hoverboard bzw. Scooter-Motoren ausprobiert, da ist das Klicken weg. Allerdings ist das auch mit dem M365 Port der Firmware getestet.

kommt drauf an was der Kunde möchte
Hm, bei mir sind bisher nur 48-füssler vorbeigekommen :)

Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
an der richtigen Stelle eingefügt hast?
Hab es hinter der Park Transformation eingefügt

Welche Kanäle müsste man mit DEBUG_FAST_LOOP aufzeichnen, um evtl. die Fehlzündungen zu sehen?
Auf was muss man bei DEBUG_FAST_LOOP achten? Vor ein paar Tagen hat die Übertragung von zwei Kanälen schon mal funktioniert. Beim Versuch heute nicht mehr.

Noch eine andere Frage. Direkt aus eclipse flashen funktioniert bei mir im sensorless branch nicht. Kommt ein Fehlermeldung. Findet anscheinend die STM-link utility nicht. Sowas liegt ja oft an Pfadangaben.

bei meinem Fischer ist das absolut kein Problem?!
Das beste zum Schluss.
Mit den original Regelparametern im Sensorless-Branch funktioniert der Motor auf der Rolle nun einwandfrei. Ich war noch mit größerem P und I von vor ein paar Tagen unterwegs, aber da hatte die fehlende Totzeit noch einiges verfälscht.

Gruß
tomsen61
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Hab es hinter der Park Transformation eingefügt
Hm, sollte passen, Hauptsache vor der arm_inv_park_q31().
Welche Kanäle müsste man mit DEBUG_FAST_LOOP aufzeichnen
switchtime[0] bis switchtime[3], das müssen die klassischen "Popo-Kurven" sein. Oder halt wie ich im Screenshot oben Ualpha und Ubeta.
Vor ein paar Tagen hat die Übertragung von zwei Kanälen schon mal funktioniert. Beim Versuch heute nicht mehr.
Die Übertragung wird durch einen PAS-Puls getriggert. Ist aber Glücksache, da einen Klick zu erwischen, die Übertragung der Daten ist ja massiv zeitversetzt...
Kommt ein Fehlermeldung.
Was meckert er denn?

Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Die Übertragung wird durch einen PAS-Puls getriggert.
Da kann ich es mit Ansteuerung über Throttle natürlich zu nichts bringen. :)
Habe nun mit PAS angesteuert u_alpha und u_beta aufgezeichnet. Bei der Zeitskala bin ich von Aufzeichnungsfrequenz 8kHz ausgegangen.
Jeder Speicherabschnitt der am Stück aufgezeichnet wird sind 302 Messpunkte. Passt ja zur Vorgabe: if (k>299) mach schluss.

Im Vergleich zu den restlichen Abschnitten fällt eine Sprungstelle im zweiten Abschnitt auf. Könnte das ein Hinweis auf eine "Fehlzündung" sein?
Könnt aber evtl. auch durch den Auslesevorgang entstehen. Die Switchtime-Signale zeigen das gleiche.
1641327976677.png

Was meckert er denn?

Capture.PNG

Mit ST-Link Utility kann ich die hex. ohne Probleme flashen.

Gruß
tomsen61
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Könnt aber evtl. auch durch den Auslesevorgang entstehen.
Ich denke auch eher, daß das ein Artefakt der Datenübertragung ist. Das sieht bei mir auch öfter so aus. Aber natürlich trotzdem Danke für das Ausprobieren. Ich hatte meine Messung während der Autodetect Prozedur gemacht, da wird der Rotor ja schön langsam in 1° Schritten gedreht.

Bei der Zeitskala bin ich von Aufzeichnungsfrequenz 8kHz ausgegangen.
Es wird mit PWM Frequenz, also 16 kHz aufgezeichnet.

Mit ST-Link Utility kann ich die hex. ohne Probleme flashen.
Hast du die Einstellungen auf "Software System Reset" gestellt, wie im Wiki beschrieben?

fetch.php



Gruß
hochsitzcola
 
Zuletzt bearbeitet:
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Hast du die Einstellungen auf "Software System Reset" gestellt, wie im Wiki beschrieben?
Danke. Ja, das war's. Hat ich doch schon mal. 😳

War mit dem aktuellen Stand mal auf der Straße. Auch nur mit PAS funktioniert es sehr gut und läuft angenehm ruhig.
Die Grundfunktion ist jetzt da. Jetzt geht es auf die nächste Ebene.
Den Komfort.
Auch auf dem Rad hört/spürt man die "Fehlzündungen".
In der Hoffnung so eine Fehlzündung in der Messung mal zu erwischen, werde ich noch weitere Messungen laufen lassen.

Gruß
tomsen61
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Auch auf dem Rad hört/spürt man die "Fehlzündungen".
Pack die zwei Zeilen doch mal direkt hinter die Berechnung von sin und cos, wie ich es im Master gemacht habe. Ggf. hat die Park Funktion den gleichen Bug wie die inverse Park ...

Gruß
hochsitzcola
 
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Das Flashen verlief erfolgreich. Audrücklichen Dank an @Hochsitzcola dafür!
Obwohl ich mich etwas zu den ADC Werten (4096?) bezüglich der Umrechnung Volt -> ADC bei den STM32 eingelesen habe und auch irgendwo etwas zur Umrechnungsmethode des Motorcurrent Wertes gelesen habe, werde ich da nicht ganz schlau draus.
Die Werte für throttle habe ich ungefähr so abgeleitet: 4096 / 5v * 0,9v (Spannung am Gasgriff in Ruhestellung) = 737
Der Standardwert von 750 für Throttle offset passt also wunderbar. Der Standardwert von Throttle max: 2600 wäre demnach:
4096/5=819 -> 2600/819= 3,17v

Ich bin mir etwas unsicher, was die Basis bei Verwendung des Torque Sensor ist. Angenommen, er wird mit 12v betrieben, bleibt dann trotzdem die Basis 5v und der Wert 4096? Vermutlich?!
Der Signalausgang des Torque Sensors pendelt zwischen1,5v und 3v.
Zuerst hatte ich mir den throttle offset für den Sensor über Dreisatz ermittelt, da ich vermutete, dass sich hinter dem Basiswert von 750 ein Wert von ca 0,9v verbergen würde.
1,5v -> 750/0,9v * 1,5v = 1250 ADC
Das war aber viel zu viel, da der Motor aus dem Stand heraus anfing, sofort zu drehen. Durch try&error kam ich auf einen Wert von 850. Ich kann damit leben, wenn ich die Logik dahinter nicht verstehe, wenns auch durch ausprobieren passt. Den Maximalwert des Torque Sensors von 3v kann ich aber nur ungleich schwerer durch ausprobieren ermitteln. Was habt ihr da stehen?
Die Min und Maxwerte der Akkuspannung in der Basis Config konnte ich auch nicht ganz ableiten, zumal mit nicht klar ist, ob ein36v oder 48v Akku herangezogen worden ist. Mangels Reku und dank BMS waren diese Werte aber für mich zunächst nicht kriegsentscheidend, als ich sah, dass der Motor sich drehte und ich nicht in der Unter- oder Überspannungsabschaltung war.

Etwas haariger wirds bei der Motorstromberechnung, weil zu hohe Werte die Gefahr des Abrauchens beherbergen. Die Werte habe ich gar nicht geschnallt. Hat jemand für mich Werte, die zu einem 48v Akku passen? Ich habe die Sony Konions VTC6 mit 3000maH,die pro Zelle bis zu 30A liefern und das BMS packt ebenfalls die 30A.

Zuletzt ist mir etwas seltsames zu den STM32 Chips in den verschieden Controllern aufgefallen. Während das Flashen des STM32-Chips, den ich einem „Bluepill“ entnommen habe, „problemlos“;) geklappt hat, ist der STM32F103C8T6 Chip aus einem Bird Scooter nicht flashbar, weil der Chip gar nicht erkannt wird.
Obwohl die LED des Bird Controllers bei Anschluss an den STLink anfängt zu blinken und ich an beiden Controllern die gleiche Stiftleiste gelötet habe und damit die gleichen 4 Kabel benutzen kann, ist in StLink Utility kein 3,3V DC Wert zu sehen und kein Device wird gefunden. Da der Bird Controller kein Endverbraucherprodukt ist, scheint da ein zusätzlicher Schutz vorzuliegen. Ich habe alle möglichen Hinweise befolgt (stsw-link009 update, alle STM USB Treiber manuell Installiert mit Neustart, update der stlink firmware). In der Stlink utility habe ich auch „connect under Reset“ probiert, bin mir aber nicht sicher, ob ich dafür den STM32 über den Stlink in den Resetmode bringen muss, falls es sowas gibt. Kann man die STM32-chips über den (noch ausgestöpselten) STLinks durch Verbinden des RST-Pins mit GND und anschließendem Verbinden an den PC so reseten, dass er wieder beschreibbar wird? Diejenigen, die ähnliche Probleme gemeldet haben, hatten irgendwelche Nucleo oder Experimentierbords und dort gab es wohl einen Resettaster oder -pin.
 
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Das Flashen ist mir jetzt doch noch gelungen. Bin gespannt, wie die Pins gemappt sind, die üblichen Lishui Bezeichnungen sind nur teilweise vorhanden.
 
Thema:

Open Source Firmware für Lishui Controller

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

Lishui Sensorless Open Source Firmware: Ich mach hier mal einen neuen Thread auf, über die Sensorless Version der Lishui Open Source Firmware. Ich sehe in dieser im allgemeinen noch...
Offene Firmware für viele "Discounter-Räder" (Fischer, Prophete, NCM, ....) mit Lishui FOC Controller: Die Firmware hatte ich schon in verschiedenen Threads angesprochen. Ich habe ihr jetzt noch eine nutzerfreundliche grafische Benutzeroberfläche...
Oben