lundi 19 août 2019

Open source firmware pour le kit TSDZ2

C est la version ( stable release V0.19 ) qui fait la base de cet article .

Maj du 05/02/2020 : rapide wiki de la version 0.20 que j utilise ( en fin d article ) version specifique KTLCD3

La discussion initiale a l initiative du développement d une version open source du programme de gestion du controleur du moteur TongSheng ( TSDZ2 ) est l œuvre prépondérante de casainho un développeur qui poste sur le forum endless-sphere ( anglophone ) .

D autres développeurs se sont joint au développement et si aujourd hui casainho se polarise sur le portage vers les afficheurs de type P850C ou SW102, c est buba ( un autre dev ) principalement qui depuis quelque temps continue d améliorer la version et assure le portage sur l antique afficheur KT-LCD3 .

Cet article fait suite a mes deux précédents articles sur le portage de la version open source, étant donné que les bases de la programmation et les moyens employés ont été expliqués auparavant je ne m étendrai donc pas sur la partie programmation du controleur, elle utilise l adaptateur mentionné auparavant et la procédure du premier article ; c est a dire que la programmation se fait directement en utilisant l interface propre au ST-link, je veux dire le programme "ST Visual Programmer" .

En plus de la programmation du controleur la version originale du programme open source ( OSF ) nécessite la programmation de l afficheur, depuis le début c est un afficheur kunteng de type LCD3 qui a été choisi, pour la disponibilité et le faible cout du produit et pour ses possibilité d affichage .

Chaque version du programme nécessite donc de flasher le controleur et l afficheur avec la mm version et ensuite le paramétrage se fait via l afficheur, au contraire de la version marcoq qui est figé via l interface de contrôle en java et flashé ensuite .

ici une photo de durant la programmation ( flash ) elle nécessite d ouvrir l afficheur et de se brancher sur le port de programmation, certains beta testeur soudent a demeure un connecteur et font une fenêtre dans l afficheur pour ne pas avoir a le démonter et l ouvrir a chaque fois .


ne détaillant pas la procédure je vais donc me contenter de fournir une version simplifiée du wiki concernant cette version V0.19 .

0 : menu générale
0 : unité : (0)/metric, 1/imperial
1 : vitesse maximum en km/k ( 45 )
2 : circonférence roue (2050) 26P, (2215) 27.5
3 : odomètre
4 : pourcentage lumière écran jour (5)
5 : pourcentage lumière écran nuit/allumé (80) ( appui long sur up )
6 : mise en veille en mn (15)
7 : reset factory defaut ( mettre la valeur a 10, l afficheur va s éteindre, appuyer power 2 secondes jusqu a écran blanc, relâcher power, mettre en marche power )

1 : paramétrage batterie
0 : courant max ( en A )
1 : low cut-off : 29(36V), 39(48V) etc (34.8 12S)
2 :nombre de cells de la batterie
3 : résistance interne : calcul de la résistance interne R=U/I
4 : SOC Volt en temps réel
5 : état de charge batterie : 0/désactivé, 1/dégressif de 100 a 0, 2/ progressif
6 : tension de rest de la batterie ( -2V max environ )
7 : capacité batterie en Wh
8 : Wh consommé depuis le dernier reset .

2 : niveaux d assistance
0 : nombre de niveau (5)
1 : valeur du niveau 1 (0.5)
X : valeur du niveau concerné

3: assistance a la marche ( max 100 )
0 : activation : (1) activé, 0/désactivé
1 : niveau o : (0)
2 : niveau 1 : (25)
X : niveau X : (65)

4 : fonction cruise ( maintient )
0 : activation : (0)/désactivé

5 : paramétrage de l écran principale
0 : distance : (1)activé, 0/désactivé
1 : SOC batterie en Wh : (1)activé, 0/désactivé
2 : état batterie V et A : (1)activé, (0)/désactivé
3 : pédalage cadence et puissance : (1)activé, 0/désactivé
4 : énergie moyenne en Wh depuis la mise en marche :(1)activé, 0/désactivé
5 : temps écoulé TM ou TTM : (1)activé, 0/désactivé
6 : vitesse actuel/moyenne/max : (1)activé, 0/désactivé
7 : température moteur (1)activé, 0/désactivé
8 : vitesse choisie cruise 1/activé, (0)désactivé
9 : activation modification rapide de la puissance max ( en W )
10 : champ température : 0/rien, 1/temp moteur, 2/pourcentage batterie, 3/tension V batterie, 4/puissance en A soutiré, 5/pédale cadence, 6/vitesse moyenne

6 :fonction de startup BOOST
0 : activation fonction : (0)désactivation, 1/activation
1 : au démarrage : (1) chaque fois que la cadence ou le torque=0, 0/seulement si la vitesse=0
2 : limitation de la puissance : (1)activation =a la puissance max batterie, 0/non limité
3 : temps du boost : (2) en secondes
4 : transition bosst vers le mode normal : (3.5) en secondes
5 : lvl 1 boost multiplicateur : (4)
6 : lvl X boost multiplicateur : ( déterminer )

7 : paramétrage controleur
0 : mode moteur (0)48V, 1/36V, 2/48 exp, 3/36 exp
1 : puissance limite : (0)
2 : ramp Up en amp/s : (5) (4.5)
3 : démarrage moteur sans rotation pédale : (0)désactivé par défaut si pas d arrêt sur frein
4 : température limite/activation accélérateur : (0) pas de limite, 1/activation temp, 2/activation accélérateur
5 : temp mini ( 75 )
6 : temp maxi ( 85)

8 : mode légal
0 : activation (0)
1 : activation au démarrage (0), 1/activé
2 : vitesse limite (25)
3 : puissance limite : (0)désactivé, 1/activation
4 : puissance limite en W : (250)
5 : accélérateur activé en mode légal : (0)désactivé, 1/activation

9 : données technique avancées ( en lecture )
0 : ADC accélérateur
1 : accélérateur
2 : ADC capteur de couple
3 : capteur couple
4 : capteur cadence
5 : puissance de pédalage
6 : PWN duty cycle
7 : vitesse moteur ERPS
8 : FOC angle ( *1.4 pour la valeur en degré )





L écran ici montre les paramètres sélectionnés , le champ tension batterie peut afficher en cyclant avec le bouton power les différentes informations validées dans le paramétrage du menu 5 .

Cette version est aboutie même si quelque paramètres ne fonctionnent pas de manière optimum, startup boost par exemple n apporte pas de véritable amélioration, le choix 5/10/6 par exemple ne permet pas d afficher l intensité en temps réel .
Par contre la possibilité du choix 5/10/5 ( affichage cadence ) m est utile, pour d autre qui auront installé le capteur moteur avoir la température moteur monitoré sera préférable ;)
De plus le wattmètre incorporé semble fonctionner correctement et donne l indication des watts soutirés de la batterie, bien utile quand on connait précieusement sa capacité ou que l ont veut savoir si la capacité évolue a la baisse avec le vieillissement des cellules .



Si besoin je détaillerai, après avoir tester la V0.20 actuellement en alpha7 je mettrai aussi en ligne un wiki simplifié .

La version 0.20 me satisfait pleinement, le mode Emtb fonctionne parfaitement le parametrage est aisé :
un wiki simplifié .

0 menu basique
0 metrique ou imperial 0/1
1 vitesse max 50km/h
2 circomference pneu : 2050 ( 26p )
3 type de moteur 0(48V), 1(36v), 2( exp 48v), 3(exp 36v)
4 puissance max moteur : 550w
5 odometre
6 configuration lumiere
7 luminosité ecran jour
8 luminosité ecran nuit
9 auto power off 15 min
10 reset defaut

1 batterie setup
0 max batterie courant = 15
1 battery low cut off = 34.8
2 nombre de cells en serie 12
3 resitance interne batterie R = U / I R=0.xxx=xxx
4 SOC batterie
5 pourcentage charge batterie ( 0 defaut )
6 tension de reset du wattmetre incorporé 50v
7 capacité batterie 560
8 wattmetre energie consommé depuis dernier warm up

2 configuration : power assist riding mode
0 power assist activation : 0 desactivé, 1 activé
1 choix du nombre de niveau d assistance : 5
2 valeur de niveau de 1 , multiplicateur de la puissance humaine ( 0.2 )
X valeur du dernier niveau ( 2.1 )

3 torque assit mode
0 torque assit activation : 0 désactivé, 1 activé
1 nombre de niveau : 5
2 niveau 1 : a tester
X dernier niveau : a tester

4 cadence asssit mode
0 cadence assist activation : 0 désactivé, 1 activé
1 niveau 1
X dernier niveau

5 eMTB assistance
0 eMTB assist activation : 0 désactivé, 1 activé
1 eMTB sensibilité de 1 a 20 ( 8 choisit )

6 walk assist
0 activation du mode : 0 désactivé, 1 activé
1 valeur du niveau 1
x valeur niveau x

7 cruise
0 activation : 0 désactivé, 1 activé
1 / 2 / 3

8 set up principale
0 distance data : 0 desactivé, 1 activé (1)
1 SOC batterie : 0 desactivé, 1 activé (1)
2 etat batterie : 0/1 (1)
3 donnée pedales : 0/1 (1)
4 données watt consommé : 0/1 (1)
5 mesure du temps : 0/1 (1)
6 vitesse : 0/1 (1)
7 température moteur : 0/1 (1)
8 target cruise : 0/1 (1) = 0
9 ecran rapide puissance : 0/1 (1)
10 champ température alternative
10-0 rien
10-1 temp moteur
10-2 pourcentage charge batterie
10-3 tension ( volt ) instantanée batterie
10-4 intensité ( amp ) instantanée batterie
10-5 cadence pédalage
10-6 vitesse moyenne depuis warm up

9 street mode
0 activation : 0 desactivé, 1 activé
1 vitesse limite
2 puissance max activation : 0/1
3 power limit
4 activation accélérateur : 0/1 (0)
5 activation cruise : 0/1 (0)

10 menu avancé
0 acceleration : (0) 25% a tester
1 démarrage sans rotation pedales : (0) 0/1
2 conversion couple/poids (67)
3 poids sur pedales ...
4 capteur cadence : 0/1 0standard, 1 avancé ( calibration nécessaire )
5 lumiere utilisation 0/1/2/3/4/5/6/7/8
6 canal ADC optionnel (0) 0/1/2
7 temp mini
8 temp maxi

11 menu avancé technique
0 valeur ADC optionnelle
1 accélérateur/capteur temp
2 capteur couple ( torque ) valeur ADC
3 cadence pedalage
4 PWN duty cycle
5 vitesse moteur ERPS
6 FOC angulaire
7 pulsation capteur cadence



to be continued .