Open Source Firmware für Lishui Controller

Diskutiere Open Source Firmware für Lishui Controller im Controller/Regler, Fahrerinformation, Elektronik Forum im Bereich Diskussionen; Ok. Wird daher vermutlich ein Promovec / Dapu sein. Die Optik spricht zumindest mal dafür. ;) Aikema / Tongsheng eher nicht. Hat das Teil einen...
Stuggi Buggi

Stuggi Buggi

Dabei seit
16.07.2012
Beiträge
3.080
Punkte Reaktionen
1.324
Ort
Stuggi Buggi Town
Details E-Antrieb
Xofo CST 250W, KT36ZWS, Samsung 25R
Ok. Wird daher vermutlich ein Promovec / Dapu sein. Die Optik spricht zumindest mal dafür. ;) Aikema / Tongsheng eher nicht.
Hat das Teil einen Freilauf? Die gab es mit und ohne.
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Er hat sich mit der OS über Daumengas auf der Rolle auch schon relativ gut gedreht
Ich gehe davon aus, das du den sensorless VESC Branch benutzt?

Poste doch mal bitte den Inhalt deiner config.h

Gruß
hochsitzcola
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
OK, es sieht so aus, als hättest du den torquesensor mode aktiv, dann brauchst du ein PAS Signal, damit der Motor dreht. Das Throttle override gibt es in dem branch noch nicht, so wie es aussieht.

Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Danke für die Rückmeldung. Der Controller hat über die Ansteuerung mit throttle ja schon mit der OS funktioniert. Die Controller sind von Phoebe und für Drehmoment Sensor konfiguriert.
Das Problem ist aber ein anderes.
Nach dem Flashen hat er auf einmal keine Reaktion mehr gezeigt. Er macht einfach nichts mehr. 3,27V liegt an den VDD Pins des STM32 an.
Inzwischen habe ich auch den ST Dongle gewechselt und mit einen zweiten Rechner geflasht.
Kann es sein das sich der Controller aus irgendeinem dummen Grund aufhängt? Ich weiß leider nicht wo ich ansetzen soll.
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Ich weiß leider nicht wo ich ansetzen soll.
Auf jeden Fall erst Mal mit Display setting Debug flashen und schauen ob er über UART tx die Diagnosedaten schickt.

Wenn die kommen, können wir weiterschauen.

Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
@Hochsitzcola, dein Hinweis hat mich auf die richtige Spur gebracht. (y) (y)
Ich hatte vermutlich ganz zu Beginn vor Tagen den torquesensor mode in der config.h auskommentiert (halb unbewusst).
Gestern habe ich dann aus irgendeinem Grund eine andere config.h benutzt - mit torquesensor mode aktiv. Die vor Tagen gemachte Änderung hatte ich mittlerweile vergessen, bzw. war mir nie richtig bewusst gewesen.

Gerade eben auskommentiert geht wieder alles. Mein schönstes Weihnachtsgeschenk.😁
Ich bin einigermaßen kreativ, aber oft auch leider sehr chaotisch unterwegs - die Rückseite der Medallie:sneaky:.

Sind das denn noch die 6FET der alten Generation? Haben die den Originalprozessor oder auch schon Clones?
Denke ja, sind von Anfang des Jahres mit STM32 drauf.

Noch eine Frage
Habe PH_CURRENT_MAX. 400 eingestellt, ausgegeben werden aber maximal 200. current_target geht bis 400. Muss da noch ein Kalibrierfaktor rein?

Gruß und schöne Weihnachten
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
Muss da noch ein Kalibrierfaktor rein?
Nein, entweder, du gehst in die Batteriestrombegrenzung, oder du hast zu wenig Last. Die 400 sollten schon erreicht werden, wenn du das Rad mit der Handbremse bis kurz vor den Stillstand runterbremst.

Läuft denn der Motor sensorlos sauber? Das ist für mich schon eine Überraschung :) Wenn auch eine erfreuliche (y)

Ich hoffe du testest erst mal mit Labornetzteil:whistle:

Gruß
hochsitzcola
 
E

Elias2000

Dabei seit
14.06.2019
Beiträge
497
Punkte Reaktionen
88
Wenn du mit PI Parameter die P und I Parameter der SPEED PLL meinst, da hab ich auch grad das Problem, dass ich einen
Motor habe, der sich ums Verrecken nicht mit der Speed PLL betreiben lässt, weil er sich immer bei etwa 80% der Höchstdrehzahl "Aufhängt" und dann krachend abgewürgt wird, ich weiß nicht ob der Aufbau der PLL selber bei der OS von Hochsitzcola so gut ist, die scheint bei bestimmten Getriebemotoren extrem Probleme zu haben, und JA, ich habe die Werte an meinen Motor angepasst, 2 Monate lang, das Abwürgen kann mit PLL nicht abgestellt werden. Ohne PLL läuft der Motor mit der OS so dass er fahrbar ist, aber extrem laut und mit "Mikrorucklern" das aber dürfte auf Dauer dem Getriebe nicht gefallen...
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Läuft denn der Motor sensorlos sauber?
Wenn er mal im Laufen ist, läuft er ruhig und unauffällig. Das Anfahren ist bis jetzt der Schwachpunkt. Ich weiß nicht wie es sich dann beim Fahren auf dem Rad verhält, aber auf der Rolle läuft er aus dem Stand nur mit ganz langsamen Gas geben an. Je höher die Last um so schwerer.
Mit einer langsamen Stromrampe, wie sie @Hochsitzcola mit dem Drehmomentsensor fährt, funktioniert es ja.
Ist die "langsame Stromrampe" über die kleinen PI-Faktoren der Stromregelung realisiert? (p0.01/i0.008) Ich habe keine Rampenfunktion dafür in der main.c gesehen.

Wenn man aus dem Stand zu schnell Gas gibt läuft der Motor rückwärts oder es gibt einen hässlichen Schlag und der Controller hängt sich auf. Um wieder neu starten zu können, muss man die Spannungsversorgung kurz trennen.

Hier mal ein Zeitschrieb nur mit PAS angesteuert. Das müsste "volle Pulle" sein - current_target geht, sobald das PAS aktiv wird auf 400 (current_max).
Oben die Ströme. current_target auf 400 bedeutet PAS ist aktiv (unten grün).
Punkt "1": PAS setzt ein wenn der Motor noch gut Drehzahl hat. Der Motoreinstieg ist hier unauffällig.
Punkt "2": PAS setzt ein wenn Motor quasi schon steht. Rad dreht noch. Hier schlägt es beim Motoreinstieg hörbar. Das müsste ja der Übergang von open loop zu FOC sein.
1640550109269.png


Wird daher vermutlich ein Promovec / Dapu sein
Danke. Habe mal danach gesucht. Die Bilder schauen danach aus. Der Motor ist mit Freilauf und dem geringen Laufgeräusch nach könnten die Planetenräder schräg verzahnt sein.

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
Das Anfahren ist bis jetzt der Schwachpunkt
Anfahren unter Last geht mit der Implementierung nicht. Das ist beim "echten" Fahren mit einem Motor mit Freilauf aber kein Problem, da man ja erst mal mit Muskelkraft losfährt und der Motor dann open loop im Freilauf hochdreht. Die Zeit reicht bei meinem Fischer, um den Beobachter so weit zu füttern, dass er die Rotorposition ausreichend gut prognostiziert.
Um unter Last anzufahren, müsste man sowas wie HFI implementieren. Das ist aber nicht bei mir auf der ToDo-Liste.

Hast du denn die Parameter wie Widerstand, Induktivität oder Flussdichte angepasst, oder läuft dein Motor auch mit den Shengyi-Parametern aus meinem Fischer ETH 1608?

Gruß
hochsitzcola
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Hast du denn die Parameter wie Widerstand, Induktivität oder Flussdichte angepasst
Der Motor ist schon mit deinen Parametern vom Shengyi Mittelmotor gut gelaufen.
Habe die Wicklungswiderstände mal mit der Strom/Spannungsabfall-Methode gemessen ( 3 x gleich = 0,315Ohm). Mit diesem Wert 315LL läuft er aber nicht.
Die Induktivität habe ich von 2L auf 4L verdoppelt. Damit läuft er auch gut. Der Gedanke war: höherer Widerstand, mehr Wicklung. Außerdem ist der Motor relativ breit.

Anfahren unter Last geht mit der Implementierung nicht.
Ja ich werde auf dem Rad dann schon merken ob es nur mit PAS und Unterstützungstufen vom Display fahrbar ist.

Gruß
tomsen61
 
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Kann mir jemand verraten, woran ich erkenne, dass der Flashvorgang erfolgreich war?

1F13433F-FEA5-4867-A92C-EDA7407CF7BE.png


Der Flashvorgang läuft bei mir durch bis ich aufgefordert werde, irgendeine Taste zu drücken. Wenn ich das tue, schließt sich das Fenster. Mangels anderer Informationen würde ich jetzt schlussfolgern, dass erfolgreich geflasht wurde. Wenn ich keinen Controller angeschlossen habe, passiert genau das gleiche und ich sehe die gleichen Meldungen angezeigt. Daher nochmal die Frage: Woran erkennt man den erfolgreichen Flash des Controllers?
 
Hochsitzcola

Hochsitzcola

Dabei seit
04.09.2009
Beiträge
4.020
Punkte Reaktionen
3.921
Details E-Antrieb
Gazelle mit BionX IGH3 + OpenSource Firmware
Frage: Woran erkennt man den erfolgreichen Flash des Controllers?
Das Flashen war wohl nicht erfolgreich, das STLink-Commandline-Utility spuckt normalerweise noch jede Menge Meldungen aus.
C:\Temp\EBiCS_Firmware-master\Debug>ST-LINK_CLI.exe -c SWD -P LishuiFOC_01.hex -V
STM32 ST-LINK CLI v3.2.0.0
STM32 ST-LINK Command Line Interface

ST-LINK SN : 53FF6C065178535441492387
ST-LINK Firmware version : V2J37S7
Connected via SWD.
SWD Frequency = 4000K.
Target voltage = 3.5 V.
Connection mode : Normal.
Device ID:0x410
Device flash Size : 64 Kbytes
Device family :STM32F10xx Medium-density

Loading file...
Flash Programming:
File : LishuiFOC_01.hex
Address : 0x08000000
Memory programming...
██████████████████████████████████████████████████ 100%
Memory programmed in 2s and 313ms.
Verification...OK
Programming Complete.
Programmed memory Checksum: 0x002B992E


C:\Temp\EBiCS_Firmware-master\Debug>pause
Drücken Sie eine beliebige Taste . . .
Mich wundert etwas, daß du keine Fehlermeldung bekommst. Auf den ersten Blick tippe ich, daß dein Pfad zum ST-Link Utility nicht passt. Das ist etwas tricky, die Batch-Datei fügt zu dem, was du im Java-Tool einfügst, noch den Unterpfad \STM32 ST-LINK Utility\ST-LINK Utility hinzu, weil der Installer von ST das standardmäßig so anlegt. Das mußt du also ggf an dein Dateisystem anpassen...
EBiCS_Firmware/Start_Compiling.bat at 4d8a58fd047993e12528b0cb7f7f90d91d41aa54 · EBiCS/EBiCS_Firmware


Gruß
hochsitzcola
 
Zuletzt bearbeitet:
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Mich wundert etwas, daß du keine Fehlermeldung bekommst.
Ich habe ursprünglich die jeweils angeprangerte Datei in 5 verschiedene Ordner kopiert bis die Fehlermeldung verschwand.
Das ist etwas tricky, die Batch-Datei fügt zu dem, was du im Java-Tool einfügst, noch den Unterpfad \STM32 ST-LINK Utility\ST-LINK Utility hinzu, weil der Installer von ST das standardmäßig so anlegt. Das mußt du also ggf an dein Dateisystem anpassen...
Seit Monaten versuche ich in unregelmäßigen Abständen, die Syntax und Logik soweit zu verstehen, dass ich die Dateipfade anpassen kann, komme trotzdem nicht weiter und schalte dann nach ein paar stunden den pc entnervt aus.
Ich habe jetzt den kompletten Ordner noch mal runtergeladen und von vorne begonnen. Als erstes meckert die Kommandozeile wieder, dass die CLI Datei fehlt. Hab mal einen Editor installiert, damit man die Dateipfade im javatool, der bat-datei und dem win explorer vergleichen kann.
58798394-4006-45C9-B0E4-2B3B712CCB2D.png


Entweder bin ich zu blöd oder übersehe ständig was. Kannst du oder irgendwer mich mal an die Hand nehmen?

War gerade auf phoebe und hab dort ein neues, evtl. interessantes Spielzeug für @Hochsitzcola gesehen:

US $80.92 | Motor-Integrated Torque Sensor for 1/6/7 Speed Freewheel FOR ELECTRIC BIKE CONVERSION
73.3€ |Motor Integrierte Drehmoment Sensor für 1/6/7 Geschwindigkeit Freilauf FÜR ELEKTRO BIKE CONVERSION|Electric Bicycle Accessories| - AliExpress

Torquesensor für Freiläufe bis zu 7 Gang? So ganz verstehe ich noch nicht, wie und womit (Kettenschaltung?) das Teil eingebaut werden soll…
 
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
Entweder bin ich zu blöd oder übersehe ständig was
Scrolle doch mal bitte ganz nach oben im CMD-Fenster und schaue, was er da wirklich für einen Pfad angelegt hat!

bei mir sieht das so aus:
C:\Ac6\SystemWorkbench\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825\tools\make;C:\Ac6\SystemWorkbench\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825\tools\compiler\bin;C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility

kopiere mal das "C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility" und füge es in die Naviagionszeile vom Windows-Explorer ein. Landest du dann da wo du hinwillst?


Gruß
hochsitzcola

1640869651573.png
 
Zuletzt bearbeitet:
Cäsar

Cäsar

Dabei seit
26.01.2020
Beiträge
286
Punkte Reaktionen
94
Hi. Wenn ich den Pfad von STM32Utility aus dem Windows Explorer herauskopiere und in das Javatool über Str-V reinkopiere und „STM32 ST-Link Utility/ST-Link Utility“ entferne erhalte ich:
„C:\Program Files\STMicroelectronics“
ohne (x86).
Windows hat seit Ewigkeiten wohl 2 Programm-Ordner, seit dem es 64 Bit gibt.
Einen Screenshot kann ich mit Windows 7 über Snipping Tool nur machen, wenn das „Terminal“-Fenster fertig ist. Dann kann ich aber nicht mehr ganz nach oben an den Anfang scrollen…wieso auch immer…
Ich muss, während die Prozedur noch läuft, mit dem Cursor nach oben scrollen und dann festhalten, während ich mit dem Handy den Screen abfotografiere:
D0B522AD-2947-46D1-A9F7-43C52CEC73BD.jpeg

So auf Anhieb fällt auf, dass er den STM-Pfad, der im Javatool steht, nicht übernimmt. Er fügt trotzdem „x86“ hinzu, wobei ich nicht weiss, ob das das Problem ist, da das „x86“ im Windows Explorer auch nur unsichtbar sein könnte. Im Explorer sehe ich auch nur „Programme“ und nicht das rauskopierte „Program Files“…
Ich würde jetzt davon ausgehen, dass der von mir eingetragene Pfad dann auch nicht in der „StartCompiling.bat“ zu sehen ist. *Gerade am nachgucken*
2C246A61-35C6-4209-86BA-EE20CC25F5CE.jpeg

Und zuletzt lande ich natürlich im Nirvana, wenn ich den Pfad mit „x86“ in den Explorer eintrage. Da sich der eingetragene Pfad zwar in der Startcompiling.bat, aber nicht im Fenster der Eingabeauffoderung widerfindet, müsste ich demnach einen (3.) Programm-Ordner im Windowsverzeichnis mit dem Namen „Program Files (x86)“ anlegen und dort das STMicroelectronics-Verzeichnis mit allen Unterordnern und Dateien hinkopieren?!
 
Zuletzt bearbeitet:
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
Ein gutes neues Jahr - und gute Nerven wünsche ich allen hier.:)
Entweder bin ich zu blöd oder übersehe ständig was.
Ich kann dich beruhigen, so ging es mir vor einem Jahr auch. Das wird schon.

Ich mache es mittlerweile so:
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"

Gruß
tomsen61
 
T

tomsen61

Dabei seit
18.09.2014
Beiträge
145
Punkte Reaktionen
117
Ort
Raum Würzburg
da man ja erst mal mit Muskelkraft losfährt und der Motor dann open loop im Freilauf hochdreht
Ich war jetzt auf dem Rad. Es funktioniert auch grundsätzlich. Allerdings nur bei kleiner Unterstützungsstufe (max. 2) und meistens erst nach einingen Anläufen. D.h. wenn nach dem Lostreten das PAS die Unterstützung freischaltet, hört und spürt man leichte kurze Schläge vom Motor im Abstand von ca. 1- 2 sec bis der Beobachter übernimmt.
Bei stärkerer Unterstützungsstufe schlägt der Motor stärker und der Controller steigt aus. D.h. keine Unterstützung mehr und auch keine Reaktion mehr auf Throttle.
Manchmal fließen dann noch 1,5A. Nach Aus- und Einschalten des Controllers geht es dann wieder.

Anfahrroutine im sensorless Branch

Code:
if(!MS_FOC->Motor_state&&int16_i_q_target>20){
    q31_u_d=200;
    q31_teta_obs+=(2684354<<3);
    startup_counter++;
    if (startup_counter>5000){
       MS_FOC->Motor_state=1;
        startup_counter=0;
    }
}
Das interpretiere ich so:
Wenn Motorstate=0 und Sollstrom i_q >20
wird eine Spannung ud = 200 vorgeben und mit 8kHz auf 5000 gezählt.
q31_teta_obs wird je Durchlauf mit 8kHz um 1,8° weiter gedreht (2684354<<3)=1,8° (2^31 entspricht 180°)
5000 Durchläufe entsprechen dann 25 Umdrehungen in 0,625 sec.
2500rpm kommen mir für einen Nabenmotor etwas viel vor.
Wo habe ich da einen Fehler gemacht?

Gruß
tomsen61
 
Zuletzt bearbeitet:
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