"Custom Rom" für Kunteng S06S/KT36 Controller

Diskutiere "Custom Rom" für Kunteng S06S/KT36 Controller im Controller/Regler, Fahrerinformation, Elektronik Forum im Bereich Diskussionen; Gibt es, ungedichtete Lager. Auch nach außen, dort ist oft nur ein Gummiläppchen... Solche Lager ersetze ich gegen gedichtete. OK völlig OT.....
RUBLIH

RUBLIH

Mitglied seit
01.08.2015
Beiträge
5.674


Gibt es, ungedichtete Lager. Auch nach außen, dort ist oft nur ein Gummiläppchen...

Solche Lager ersetze ich gegen gedichtete.

OK völlig OT.....
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Was ist momentan die günstigste Möglichkeit an einen STM8 Contoller zu kommen? Ich nehme mal an, die MEIANDIAN Dinger beim Aliversand sind was anders.

Ansonsten war jetzt das günstigste ein 6FET für 28$.
 
Zuletzt bearbeitet:
E

elektrikflo

Mitglied seit
27.08.2015
Beiträge
71
Ich wollte gerade einen neuen Controller flashen, da ich mir ein neues Rad mit einem Direktläufer aufbaue. Da ich nicht zu Hause bin, habe ich die Software auf meinem anderen PC installiert. Leider scheint da was nicht zu funktionieren. Es kommt immer ein Problem mit dem Zugriff auf bestimmte Dateien. Hab das Problem auf dem anderen PC nicht gehabt. Hier mal die Fehlermeldung als Text Datei, evtl. weiß einer von euch was das sein kann.

EDIT: Habe die Datei nochmal neu entpackt und dann den OSEC Parameter Configurator aufgerufen und sofort auf Write Configuration gedrückt ohne vorher Einstellungen zu verändern. Dann läuft es ohne Probleme, aber ein zweites mal kann ich es nicht machen, da kommt wieder der gleiche Fehler.
 

Anhänge

Zuletzt bearbeitet:
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
ohne vorher Einstellungen zu verändern
Wie verändert? Immer wieder witzig, wie Leute die wichtigsten Infos weglassen ;-)
Du kannst keine alten Config Dateien nehmen, hat sich alles mögliche geändert. Die Fehlermeldungen deuten darauf hin, dass Du genau das versucht hast.
 
E

elektrikflo

Mitglied seit
27.08.2015
Beiträge
71
Hmm, dann hatte ich das wohl bisher etwas falsch verstanden. Muss ich mal weiter probieren...
 
DinGer

DinGer

Mitglied seit
31.07.2018
Beiträge
4
Ort
Stuttgart
Details E-Antrieb
Cute Q100C-CST , Q75
Hallo,
meine positiven Erfahrungen:
Danke an hochsitzcola und Xnyle für die Arbeit die ihr da geleistet habt. Es funktioniert hervorragend.
Seit einiger Zeit bin ich passiv in dem Forum und habe mich etwas intensiver mit der Pedelec Materie schlau gemacht.
Jetzt bin ich soweit und habe mein Storck Multiroad elektrifiziert. Ich wollte kein E-Bike sondern ein Fahrrad mit etwas
Unterstützung für den Fall der Fälle.
Das "Custom Rom" für S06S/KT36 Controller hat mich von Anfang an interessiert.
Der modifizierte Controller treibt einen Cute Q100C-CST mit 36V. Als Display habe ich ein LCD-5.
Den Controller habe ich auf meine Bedürfnisse hin umgebaut, alle überflüssigen Kabel entfernt.
Wie ich schon erwähnte: ich bin vollauf zufrieden mit meinem ersten Pedelec-Umbau.
Ohne Motorunterstützung fährt es sich wie ein normales Fahrrad mit 27 Gängen. Gewicht ca. 18 kg.

Gruß
Gerhard

IMG_1.jpg IMG_2.jpg
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Was ein Müll, den ganzen Tag friemel ich rum und check nicht, warum meine Anpassung nicht geht und jetzt merk ich, dass (((ui8_smaller-ui8_bigger))<ui8_fixed_val_224) was anders, als (((uint8_t)(ui8_smaller-ui8_bigger))<ui8_fixed_val_224) ist.

Danke Merkel ;-)

Irgend ein C Experte hier?

An welcher Stelle kommt der Compiler auf die Idee da automatisch signed raus zu machen, das sind doch ALLES unsigned die ich ihm da vorwerfe?

Und nur mal angenommen, da kommt dann -2 <224 als Ausdruck raus, was passiert da intern überhaupt, das sind doch nur zwei 8 bit Register, wie können die denn ohne Überlauf unterschiedlich behandelt werden? *tilt*
 
Zuletzt bearbeitet:
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
So jetzt hab ich alles durch, Abfallprodukt sind ein paar Bugfixes im Motorlauf und eine neue Anti Jitter Option (verhindert Rücksprung bei der Interpolation, wenn die Interpolation zu schnell läuft - kommt erstaunlich oft vor - es wird dann nicht mehr zurückgesprungen, sondern bleibt an der Stelle, wo es war, bis die Interpolation einholt).

So richtig spürbar Änderung bringt das aber nicht.

Ergebnis ist, dass mein spezieller XF15 an meinem Rad so oder so irgendwelche - höchstwahrscheinlich mechanischen bedingte - Resonanzen erzeugt, die bei ca. 15 km/h unter Last vermutlich einem Vibrator im Sattel entsprechen. Werd mal weibliche Testpersonen suchen, evtl. hab ich ja aus versehen ein neues Crossover Produkt erschaffen.

Wie auch immer, jetzt überleg ich grad, ob ich einfach mal den Q128 ausprobiere.
 
Hochsitzcola

Hochsitzcola

Mitglied seit
04.09.2009
Beiträge
1.965
Details E-Antrieb
NC FH154 mit EB306 und EB-Precontroller
In deinem letzten Commit hast den Torque-Sensor -Modus aktiviert und den Radumfang von 28 auf 26 Zoll geändert, also offensichtlich an einem anderen Rad getestet. Was für ein Setup fährst du da? Feedback zum Torquesensor-Modus ist mir immer wichtig :)

Gruß
hochsitzcola
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Wunschdenken, ich hab einfach nur an einem anderen Rechner kompiliert, um keinen Müll einzuchecken, da war dann wohl eine andere Config aktiv. Die passende Hardware gibt es aber nicht :)
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
2 Fragen an @Hochsitzcola:

1. motor c Zeile 219, wenn ich das anschalte ruckelt der Motor nur mit niedriger Drehzahl rum. Ich nehme an, das kann im Startup einfach nicht funktionieren, weil die Interpolation beim Getriebemotor und Anlaufdrehzahl nicht funktioniert? Oder siehst Du da irgend einen Bug? Evtl. kannst Du ja mal den KT Controller entstauben und das auf dem Prüfstand probieren.
2. motor c Zeile 229 einfach mal eine Einschätzung dazu (Winkel beim Startup zwischen den Hallsensorpositonen annehmen, nicht auf ihnen)

Edit zu 2: grad ausprobiert, läuft dadurch weniger rauh.

Danke
 
Zuletzt bearbeitet:
Hochsitzcola

Hochsitzcola

Mitglied seit
04.09.2009
Beiträge
1.965
Details E-Antrieb
NC FH154 mit EB306 und EB-Precontroller
motor c Zeile 219, wenn ich das anschalte ruckelt der Motor nur mit niedriger Drehzahl rum.
Code:
    if ((ui8_motor_state == MOTOR_STATE_RUNNING_INTERPOLATION_POSSIBLE)&& ((ui16_aca_experimental_flags & DISABLE_INTERPOLATION) != DISABLE_INTERPOLATION)) {
       
        if ((ui16_aca_experimental_flags & DISABLE_60_DEG_INTERPOLATION) != DISABLE_60_DEG_INTERPOLATION){
            ui8_interpolation_angle = (ui16_PWM_cycles_counter_6 << 8) / ui16_PWM_cycles_counter_total;
            ui8_interpolation_start_position = ui8_motor_rotor_hall_position;
        }else{
            ui8_interpolation_angle = (ui16_PWM_cycles_counter << 8) / ui16_PWM_cycles_counter_total;
            ui8_interpolation_start_position = ui8_s_hall_angle3_180; // that's where ui16_PWM_cycles_counter is being reset
        }

ui16_PWM_cycles_counter_6++;
Was soll denn diese Abfrage überhaupt bewirken und welchen Zustand meinst du mit "anschalten"? Wenn du das DISABLE_60_DEG_INTERPOLATION Bit setzt, wird 360° interpoliert? Auf 360° -Interpoltation würde ich erst bei deutlich höheren Drehzahlen umschalten. So war es früher ja auch mal implementiert, auch wenn ich es nie genutzt habe...

Ich würde ui16_PWM_cycles_counter_6 auf jeden Fall immer in der fast loop mit hochzählen, nicht nur bei 60°-Interpolation, das frisst ja kein Brot.

Gruß
hochsitzcola
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Ok da fehlte wohl Kontext. Anschalten meinte ich das Flag DISABLE_60_DEG_INTERPOLATION mit, korrekt.
Haben wollte ich das, um ausprobieren, was der Motor in diesem Modus macht.
Erst bei höheren Drehzahlen umschalten traue ich mich aber grad nicht, hab keine Lust irgend was zu schrotten.

Denn und daher auch die Frage, warum das nicht bei niedrigen Drehzahlen funktioniert, also kurz nach Anlauf. Ab 3ERPS sollte doch die Interpolation halbwegs passen, irgendwo scheint bei 360 Interpolation ein Bug drin zu sein.

Das mit ui16_PWM_cycles_counter_6 könnte man machen, hat aber damit ja nichts zu tun, ist erst mal egal, ich wollte halt immer nur inkrementell umbauen.
 
Hochsitzcola

Hochsitzcola

Mitglied seit
04.09.2009
Beiträge
1.965
Details E-Antrieb
NC FH154 mit EB306 und EB-Precontroller
OK, wenn du bei 3 erps schon umschaltest, bekommst du auf jeden Fall einen Überlauf der 16 bit Variable.
Bei erps = 3 ist der Zähler ui16_PWM_cycles_counter = 16000/3, wenn du das mit left shift 8, also mit *256, weiterverarbeitest kommst du mit 16 bit nicht hin...
Der Überlauf würde erst ab 63 erps vermieden. Also in 32bit casten oder erst über 63 erps umschalten.
Der Überlauf passiert auch bei 60° Interpolation unterhalb 11 erps :eek:, da fällt es wahrscheinlich nicht so auf, weil die grobe Position ja durch die Halls bestimmt ist.

Gruß
hochsitzcola
 
Zuletzt bearbeitet:
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Tja, dachte ich auch erst, casten macht der compiler aber eh, nur wenn ich das explizit zu 16bit caste klappt es nicht mehr:

Code:
#include <stdio.h>
#include <stdint.h>

uint16_t ui16;
uint16_t ui16b;
uint8_t ui8;
uint8_t ui8b;
uint8_t ui8a;
uint8_t ui8X;

void main() {
  
       ui16=5000;
       ui16b=2500;
       ui8a = (ui16b << 8) / ui16;
       ui8b = (((uint32_t)ui16b) << 8) / (uint32_t)ui16;
       ui8X = ((uint16_t)(ui16b << 8)) / ui16;
       printf("cycles test\r\n");
       printf("%d %d %d \r\n", ui8a, ui8b, ui8X);
}
Oder macht er das nur auf X86, weil da der default Datentyp eh 32/64 bit ist?

Noch was anders:

What doesn't work:
  • Block commutation during start-up
Das stimmt doch überhaupt nicht? Wenn interpolation aus ist, also beim Startup, dann entsprechen die 0, 60, 120,... SVM Table Werte doch genau den Werten aus der Block Kommutation? Also "does it doch work"?
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Integer types smaller than int are promoted when an operation is performed on them.
Wieder was gelernt.
Block commutation during start-up
Funktioniert, wenn Motorwinkel ~0 ist, was bei den meisten Motoren wohl der Fall ist. Ansonsten werden eh "komische" Werte aus dem SVM Table genommen. Eigentlich müsste man im Anlauf den Wert aus der Tabelle bzw. 6 fixe Werte zu anderen Zeiten/Winkeln ändern die zum Motorwinkel passen.
 
Xnyle

Xnyle

Mitglied seit
04.08.2011
Beiträge
308
Ort
Essen
Details E-Antrieb
48V DD 30A
Bloss dass das auch nicht geht, bei der Division stürzt der Controller ab, keine Ahnung warum:
Code:
           uint32_temp = ui16_PWM_cycles_counter;
           uint32_temp *= 256;
           //uint32_temp /= (ui16_PWM_cycles_counter_total+1);
Hab das jetzt anders gelöst.

Ab ca. 60-80 ERPS ergibt die 60 Grad Interpolation keinen Sinn mehr, da sie mehr Rundungsfehler mit daraus resultierenden Rücksprüngen, oder halt Waitstates generiert, als hilft.

Nicht dass dass jetzt die Motorvibrationen erheblich verbessert hätte ;)
 
Hochsitzcola

Hochsitzcola

Mitglied seit
04.09.2009
Beiträge
1.965
Details E-Antrieb
NC FH154 mit EB306 und EB-Precontroller
Wenn interpolation aus ist, also beim Startup, dann entsprechen die 0, 60, 120,... SVM Table Werte doch genau den Werten aus der Block Kommutation?
"Klassische" Block-Kommutierung funktioniert anders. Eine Motor-Phase floatet (High-Side- und Low-Side- Mosfet gesperrt) eine Motor-Phase liegt fest auf GND (High-Side gesperrt, Low-Side durchgeschaltet) und die dritte Motorphase wird pulsweitenmoduliert auf Akku Plus geschaltet (Low-Side gesperrt, High-Side pulsweitenmoduliert durchgeschaltet). Bei uns sind immer alle drei Phasen gleichzeitig pulsweitenmoduliert, bei Stillstand mit einem Tastverhältnis von 0,5, so daß an allen Phasen halbe Akkuspannung gegenüber GND anliegt.

Ist aber eigentlich auch wurscht, da merkt eh niemand einen Unterschied :)

Gruß
hochsitzcola
 
Thema:

"Custom Rom" für Kunteng S06S/KT36 Controller

Oben