Une trottinette électrique


11/06/2026/06/2004/05/20

L'histoire de cette trottinette électrique.. par où commencer

Alors partons de ce qu'on a devant les yeux : une trottinette avec une lumière violette inutilement puissante. En fait c'est un ruban de leds RGB, qui est contrôlable depuis le tableau de bord. Sur la poignée de droite il y a un accélérateur au pouce (qu'on ne voit pas) qui contrôle le moteur à l'arrière. Ce moteur est relié à la roue par un système de chaine-pignon, qui permet à la trottinette d’atteindre 25 km/h sur du plat et 30 en légère pente. Ses deux principaux défauts sont l’absence de suspension avant, ce qui se ressent beaucoup à vitesse maximum, et le frein à friction à l'arrière qui n'est pas efficace et rend la trottinette un peu dangereuse à grande vitesse.


Sommaire
  1. Les débuts
  2. La trottinette actuelle
    1. La mécanique
    2. L'enfer des batteries
    3. Le circuit électronique
    4. Du code et du temps
    5. En vrac
  3. Épilogue
    1. Et alors ?
    2. Si c'était à refaire
  4. Une non-conclusion
  5. Gallerie photo

Les débuts

En fait l'idée de me faire un véhicule électrique n'est vraiment pas nouvelle, elle remonte à plusieurs années avant l'idée de cette trottinette. Vers avril 2017 j'ai fait un prototype de vélo électrique qui n'a pas vraiment marché, et c'est qu'en 2018 que j'ai commencé à vraiment me projeter sur la fabrication d'une trottinette électrique, ce qui me permettait aussi de pas rester sur un échec.

La première chose qu'on fait dans ce cas là est de se documenter, parce que pour faire quelque chose de bien, la meilleur chose à faire est généralement de partir du travail des autres (l'innovation est itérative, rien n'est réellement "inventé"). La vidéo qui m'a le plus aidé est probablement celle-ci, c'est pour moi un bon exemple de "comment vulgariser tout en étant technique et précis".

Pendant l'été 2018 j'ai commencé à fabriquer la partie mécanique grâce à des trottinettes qu'on m'a donné (merci Marc). Et après pas mal de tests je suis arrivé à un résultat assez convenable :

Le problème principale de cette trottinette est son cadre trop fragile : à l'origine c'est une trottinette pour enfant qui avait un moteur de 100W, et j'y ai fixé un moteur de 250W. J'étais content d'avoir réussi un prototype en assez peu de temps (quelques semaines), mais j'ai dû me rendre à l'évidence : une trottinette aussi fragile ne durerait pas longtemps, en plus d'être particulièrement dangereuse.

La trottinette actuelle

Note : cette section n'est pas dans l'ordre chronologique (et la plupart des problèmes, bien qu'intéressants, ne sont pas mentionnés) pour rendre le tout plus "digeste" et lisible.

La partie mécanique

Quelques temps plus tard j'ai fait des recherches de trottinettes d'occasion, et j'ai finalement acheté une Oxelo Town 3 car elle me paraissait solide et pratique pour fixer un moteur dessus.

J'ai relié le moteur à la roue avec un système de chaine et pignon, et pour fixer le pignon sur la roue j'ai utilisé un espaceur que j'ai modélisé puis réalisé avec mon imprimante 3D.

Comme on peut le voir sur l'image de droite j'ai mis une planche en bois pour pouvoir se mettre à pieds joints plutôt que les pieds l'un derrière l'autre, ce qui est très inconfortable à cause de la place que prend le moteur. Je n'y avais pas réfléchis quand je l'ai fait, j'ai mis la planche avec ses fibres parallèles au cadre, ce qui n'a pas manqué de la faire casser d'un coup quelques mois plus tard alors que j'étais dessus.. Évidemment après ça j'ai mis une nouvelle planche avec ses fibres bien perpendiculaires au cadre.

La transmission mécanique a toujours été un problème que je n'ai jamais vraiment résolu. Parce qu'il faut réussir à bien positionner le moteur de manière à ce que son petit pignon soit aligné avec le pignon de la roue, tout en maintenant une tension de chaine ni trop faible ni trop forte. Le problème est que même lorsque la chaine est bien tendue, le moteur se déplace à cause des vibrations de la trottinette qui n'a malheureusement pas de suspensions, ce qui fini par détendre la chaine. Et c'est là que "ça devient marrant", parce qu'à partir de ce moment là il y a de grandes chances que ça déraille, et lorsque ça arrive la chaine vient se coincer entre le pignon et le cadre de la trottinette ce qui bloque complètement la roue arrière alors que je suis en train de rouler.

Au niveau du boitier j'ai choisi de faire une forme rectangulaire plutôt en hauteur pour pouvoir y mettre les batteries (ce qui était la contrainte de dimension principale), avec un tableau de bord légèrement incliné pour mieux voir les éléments fixés dessus.
La première chose que j'ai faite est l'emplacement de l’ampèremètre qui me sert à voir le courant tiré sur les batteries et donc de savoir (approximativement) la puissance consommée. J'ai aussi mis un voltmètre qui permet d'avoir une idée du niveau de batterie restant, et un contacteur à clé pour démarrer la trottinette.
Sur l'image de droite on peut voir un bouton au dessus du contacteur qui sert à gérer les leds RGB à l'avant et à l'arrière, comme je le détaille plus loin.


L'enfer des batteries

La partie la plus coûteuse de la trottinette est le pack de batteries, donc pour économiser un peu sur cette partie, et aussi par curiosité technique, j'ai décidé d'en faire un moi même. Le moteur est conçu pour 250W sous 24V, mais en l'alimentant à partir d'une batterie en 36V ça permet de faire des pics dépassants largement sa puissance nominale. J'ai choisi d'utiliser des batteries au lithium parce que c'est un peu le standard pour les véhicules électriques vu leurs faible poids et volume par rapport aux autres technologies. Ce pack est composé de 30 accumulateurs lithium 18650 d'environ 3,5 Ah, ce qui fait une capacité totale de 10,5Ah sous 36V, soit 378Wh ce qui est un peu au-dessus des trottinettes grand public.

Pour assembler ces batteries il existe des espaceurs plastiques qui servent à la fois à tenir les batteries ensembles, et à les espacer pour laisser passer l'air et éviter l'emballement thermique.

J'aurais pu en commander sur internet, sauf que je n'avais pas envie d'attendre parce que j'étais impatient de les assembler pour pouvoir enfin tester ma trottinette à puissance maximale (je l'avais testée qu'en 12V jusqu'à maintenant). J'ai donc décidé d'utiliser mon imprimante 3D pour faire cette pièce, j'ai pas mal cherché sur internet la pièce qui me conviendrait le mieux, ensuite je l'ai envoyée sur mon imprimante et ai lancé l'impression en surveillant que le début se passe bien (ça rate rarement à la fin). Et après de longues heures d'impression, je teste la pièce et... les trous sont un demi millimètre trop petits pour y rentrer les batteries, la pièce est inutilisable.
Et c'est à ce moment là que j'ai fait la plus grosse erreur de cette trottinette, dont je prendrais conscience que quelques mois plus tard. J'ai abandonné l'idée de mettre des espaceurs. Et c'est intéressant parce que c'est l'exemple typique d'essayer d’essayer de gagner du temps (ici quelques jours), pour finalement se prendre la tête et perdre beaucoup de temps après.

J'ai donc assemblé les batteries, ce qui n'était pas compliqué, juste long et répétitif étant donné qu'il y avait 60 soudures, à bien faire pour qu'elles supportent le passage de forts courants.

Et là je croyais avoir terminé, mais quand j'ai essayé de mettre le pack dans le boitier je me suis aperçu qu'il me manquait 4 cm de hauteur pour le faire rentrer. Je m'étais complètement trompé dans les dimensions du boitier (de 20%) et j'ai pas eu le courage de le refaire, ce qui a été ma deuxième grosse erreur.

Pour gagner ces 4 cm j'ai changé la forme du pack de batteries, puis j'ai rajouté la carte BMS (Battery Management System) qui gère la charge/décharge des batteries, et j'ai entouré le tout de scotch histoire que ça tienne un peu (oui c'est peu propre comme fixation..).

La chose à laquelle j'avais pas pensé est l'importance des vibrations : en effet la trottinette n'a pas de suspension ni de chambres à air, c'est des roues pleines. Les batteries encaissent donc toutes les vibrations et chocs dus au sol, aux plaques, aux trottoirs, etc. Et elles ne tiennent pas vraiment par leur scotch, elles tiennent surtout par leurs soudures, dont les fils finissent forcément par s'arracher après quelques trajets.

Finalement après plusieurs mois et tant de fois où j'ai dû pousser ma trottinette au milieu du trajet parce qu'une soudure (ou son fil) s'était arraché, et trop de temps à enlever et remettre du scotch pour réparer les soudures en dessous, j'ai trouvé une solution très simple : mettre de la colle chaude entre les trous. Comme ça toutes les batteries sont solidaires, et il n'y a plus aucune force qui s'applique sur les fils et les soudures.

Lors de toute la création, des modifications et des réparations du pack de batteries, j'ai fait plusieurs courts circuits très courts qui ont endommagés légèrement mais durablement certaines batteries. En plus de ça lorsque des fils s'arrachaient ça ne menait pas forcément à un arrêt de la trottinette : le pack de batterie est composé de 10 sous-pack en série de 3 batteries en parallèle chacun, or si une batterie d'un sous-pack se déconnecte le circuit en série fonctionne toujours, donc ça tire plus de courant sur les 2 autres batteries du sous-pack. On peut dire que la batterie "emporte dans sa chute" les 2 autres.
Tout ça a pour conséquence de créer d'importants écarts dans l'usure des batteries, et donc leur vitesse de charge/décharge. Je me retrouve dans la situation où les écarts de chargement entre les sous-packs sont si importants que la carte BMS ne les gère plus. Un trajet sur deux j'étais obligé de vérifier le niveau de chaque sous-pack et de les mettre à recharger un par un, ce qui prends des jours avec le chargeur que j'ai.
J'ai aussi changé 6 batteries qui étaient trop abimées (soit 1/5 du total) et j'ai changé 2 fois de BMS. Malgré ça, le problème persiste encore aujourd'hui et j'ai finalement abandonné.


Le circuit électronique

Sur cette trottinette j'ai essayé de prévoir un maximum de choses à l'avance, mais le circuit électronique est la partie qui a eu le plus d'ajouts au fil du temps. Pour comparer, voici le circuit que j'avais prévu, et l'actuel :

Une chose que j'ai apprise en faisant cette partie est l'importance d'avoir des bons connecteurs, et d'en mettre le minimum possible pour que ce soit facilement démontable. Par bons connecteurs je veux dire adapté à l'usage : au début j'avais mis des simples dupont (ci-dessus à gauche), ils n'avaient pas de détrompeurs et surtout ils se déconnectaient avec les vibrations (en roulant) parfois.

Le circuit peut se diviser en 2 parties. D'abord la partie puissance qui est assez simple, il s'agit de gérer la tension envoyé au moteur grâce au MOSFET, de voir le courant consommé sur un ampèremètre à aiguille sur le tableau de bord, et de protéger les batteries par un fusible (qui me les a déjà sauvées d'un court-circuit une fois). Le choix du MOSFET m'a causé pas mal de problèmes, au final je recommande de bien le surdimensionner ce qui permet aussi de réduire la taille du dissipateur thermique à fixer dessus.
Voici le circuit de puissance et son assemblage par des connecteurs XT60, qui résistent à la fois aux vibrations et aux forts courants :


Ensuite il y a la partie commande/faible puissance, centrée autour d'une arduino nano qui contrôle la grille du MOSFET en fonction de l'accélérateur et d'un circuit de mesure du courant, et qui contrôle les leds en fonctions du bouton sur le tableau de bord.
Premièrement voici une vue globale de la carte électronique :

La grille du MOSFET est contrôlé par la borne PWM D5 de l'arduino. Au départ je la contrôlais directement avec D5 mais 5V n'était pas suffisant et ça faisait surchauffer le MOSFET (la résistance drain-source dépendant de la tension de grille). J'ai donc fait un circuit (en bas à droite du schéma) qui adapte le niveau de tension. J'aurais pu mettre du 16V sur la grille (ce qui aurait un peu diminué les pertes thermiques), mais les leds étant branché sur la même alimentation réglable j'ai choisi 12V.

En bas à gauche du schéma il y a le circuit qui gère les leds RGB avant et monochromes arrière. Elles sont contrôlées en PWM par l’intermédiaire de transistors 2N2222A que j'aime particulièrement car ils supportent 600 mA et ont un gain important, ce qui est parfait pour une utilisation en commutation.

Le circuit le plus complexe de la carte est un capteur de courant centré sur un LM358P. Je me sert des fils et de l’ampèremètre comme une résistance de shunt, entre +BATT et cathode_du_shunt sur le schéma de puissance. Je me suis basé sur un montage d'amplificateur différentiel (entouré ci-dessous) qui sert à convertir une différence de potentiel entre 2 fils en une tension unipolaire (référencé à la masse), ici de 0 à environ 5V.
À droite il y a deux pont diviseurs qui servent à abaisser les tensions venant du shunt. En dessous il y a un transistor sur la ligne de +BATT car étant toujours relié à la batterie, du courant se perdrait dans les résistances même lorsque la trottinette est éteinte. Le transistor sur la ligne de cathode_du_shunt est là pour créer le même offset de tension (dû à Vce) que sur l'autre ligne.
En sortie de l'amplificateur opérationnel il y a une résistance de 470Ω et une diode zener qui sert à protéger la borne A5 de l'arduino contre des tensions supérieures à 5V, lorsqu'il y a des pics d'intensité sur le shunt. Le condensateur et la résistance de 47kΩ servent à moyenner la tension qui est de forme triangulaire (dû au PWM envoyé sur le MOSFET et au fait d'utiliser un moteur DC).


Du code et du temps

Le programme comporte 3 fonctions. La première sert à convertir la tension en sortie de l'accélérateur au pouce en une valeur entre 0 et 255.

int accelerateur()
   {  
     int calcul = int((analogRead(pin_capteur_accel)-171)*(1.45/4));
     if( calcul > 255)
         { return 255; }
     else return calcul;
   }

Les deux autres servent à contrôler les leds, j'ai d'abord écrit rgb() qui contrôle les leds en fonctions des paramètres rouge/vert/bleu puis j'ai créer une seconde fonction rgb_degrade() qui atténue le vert et le bleu qui étaient bien trop présents quand je faisait un dégradé de couleur dans le temps. Cette fonction permet aussi de régler la luminosité par la variable globale intensite.

void rgb(int l_rouge, int l_vert, int l_bleu)
   {
     analogWrite(leds_rouges,l_rouge);
     analogWrite(leds_vertes,l_vert);
     analogWrite(leds_bleues,l_bleu);
   }
void rgb_degrade(int l_rouge, int l_vert, int l_bleu)
   {
     analogWrite(leds_rouges,l_rouge/intensite);
     analogWrite(leds_vertes,l_vert/intensite*0.4);
     analogWrite(leds_bleues,l_bleu/intensite*0.2);
   }


En faisant ce programme, j'ai appris l’intérêt des temporisations non bloquantes et comment s'en servir. Pour faire un dégradé avec les leds, il faut : changer de couleur, puis attendre, puis changer de couleur, etc. Or lorsque le microcontrôleur attend il ne fait rien d'autre, alors qu'il faut dans le même temps gérer la commande du moteur. C'est là qu'interviennent les temporisations non bloquantes : l'idée est de faire tourner une horloge (ici en microsecondes), et de se baser sur elle pour savoir depuis combien de temps on a fait telle action.
Au niveau de l'accélération, l'accélérateur ne contrôle pas directement le moteur, il y a là aussi des temporisations pour avoir une accélération progressive (ce qui est bien plus agréable à la conduite). L'accélération est aussi limité par lorsque le courant dépasse une limite pour ne pas abimer les batteries.

           courant = analogRead(pin_capteur_courant);
           accel = accelerateur();
           if (micros() > temps_accel)
           {
               if(vitesse < accel and accel > min_accel)
               {
                   if(courant < courant_max)
                   {
                     vitesse += 1;
                     if(vitesse > 80) temps_accel = micros() + 3000;
                   }
                   else
                   {
                     vitesse -= 1;
                     temps_accel = micros() + 100;
                   }
               }
               else if(accel > min_accel)
               {
                   if(courant < courant_max)
                   {
                     vitesse = accel;
                   }
                   else
                   {
                     vitesse -= 1;
                     temps_accel = micros() + 500;
                   }
               }
               else vitesse = 0;
               
               analogWrite(pinpwm,vitesse);
           }

L'horloge étant sur 32 bits et s’incrémentant à chaque milliseconde, elle finit par déborder (donc revenir à zéro) au bout de 70 minutes, et je réinitialise toutes les variables dans ce cas là.

             if(micros()<10000)  // J'initialise toutes les variables quand micros() overflow
             {
               vitesse = 0;
               accel = 0;
               courant = 0;
               temps_leds = 0;
               temps_accel = 0;
               rouge = 0;
               vert = 0;
               bleu = 0;
               periode = 0;
               mode = 0;
               delay(10);
             }

Au niveau du contrôle des leds, j'ai choisi un système minimaliste avec un seul bouton qui permet de basculer entre 4 modes :

  • Mode 0 : leds éteintes
  • Mode 1 : dégradé à l'avant, allumé à l'arrière
  • Mode 2 : le dégradé se fige sur sa couleur au moment de l'appui sur le bouton
  • Mode 3 : blanc à pleine puissance à l'avant (utile la nuit) et allumé à l'arrière

             if (digitalRead(bouton) == 0)
             {
               delayMicroseconds(100);
               if (digitalRead(bouton) == 0)
               {
                 mode++;
                 while (digitalRead(bouton) == 0) {}
                 if (mode == 1)
                 {
                   bleu = 255;
                   analogWrite(leds_arriere, 150);
                 }
                 // if (mode==2) géré implicitement
                 if (mode == 3)
                 {
                   rgb(255,255,255);
                 }
                 if (mode == 4)
                 {
                   rgb(0,0,0);
                   rouge = 0;
                   vert = 0;
                   bleu = 0;
                   periode = 0;
                   analogWrite(leds_arriere, 0);
                   mode = 0;
                 }
               }
             }

Le code complet est disponible en fin de page.


En vrac

Si je parlais de tout ce que j'ai essayé et qui n'a pas marché cette page serait beaucoup plus longue trop longue. Parmi ces choses il y a une béquille que j'ai faite parce que j'en avais marre de devoir toujours poser ma trottinette contre quelque chose, ce qui ne l’empêchait pas de tomber régulièrement d'ailleurs. J'ai fait cette béquille à partir d'une barre d'aluminium que j'ai pliée et d'un élastique textile comme ressort. Et ça fonctionnait lorsque la trottinette était à l'arrêt, mais après avoir roulé quelques fois avec, la béquille (repliée) touchait le sol dans le virage ce qui la détruisait petit à petit, et était assez dangereux aussi.


J'utilisais cette trottinette pour faire des petits trajets, notamment pour faire des courses et aller à la laverie, je me suis donc dit que ce serait pratique d'avoir une fixation pour sac dessus. Et ça tombait bien puisqu'il y avait déjà un boulon à la bonne hauteur, sur lequel j'ai simplement rajouté un morceau de bois pour faire tenir les poignées du sac. C'est extrêmement pratique et je suis presque étonné que les trottinettes ne proposent pas ce système très simple d'origine (en réalité c'est qu'elles veulent garder un design "épuré" et que tout le monde n'a pas besoin d'un tel système de fixation).


Pour différentes pièces, l'impression 3D m'a bien servi lorsque j'avais besoin de dimensions et de formes précises, difficilement découpables dans du bois par exemple. Une que j'aime bien est l'équerre qui sert à tenir le contacteur à clé qui rentrait à l’intérieur du boitier lorsque je mettais la clé dedans. C'est une pièce qui n'est pas très compliquée mais comme toujours le plus compliqué dans l'impression 3D c'est de bien prendre ses mesures, et en l’occurrence cette pièce est quelques millimètres trop grande, ce qui est dommage mais elle reste utilisable comme ça.


Épilogue

Et alors ?

..Et alors toutes les bonnes choses ont une fin, heureusement les mauvaises aussi, et ma trottinette se situe probablement quelque part entre les deux.
Lorsque j'ai voulu régler la position du moteur pour tendre la chaine, j'ai desserré ses boulons et je l'ai décalé de quelques mm en tapant dessus au marteau (technique je j'avais déjà utilisé auparavant et qui permet un réglage précis). Mais après avoir tout remonté le moteur se bloquait complètement. En le démontant entièrement j'ai compris que les coups de marteau avaient achevé la colle d'un aimant déjà fragilisée par le passé.
Le moteur étant la deuxième pièce la plus cher de la trottinette (après les batteries), j'ai décidé que ça ne valait pas le coup de la remplacer surtout vu le nombre de problèmes, fragilités et défauts qu'il y a toujours sur cette trottinette.


Si c'était à refaire

Déjà ce qui est sûr c'est je le referais très différemment. Mais finalement avec le peu d’expérience que j'avais c'est pas si étonnant d'avoir été aussi mauvais, je regrette juste de pas avoir évité toutes ces erreurs évitables en étant un peu plus patient, toutes ces fois où j'ai préféré faire vite, ou avec ce que j'avais sous la main. Ça c'est un truc que j'ai vraiment appris avec ce projet : quand on est face à un problème frustrant, il ne faut pas agir dans l'énervement, en travaillant vite fait on ne travaille pas bien. Le mieux est simplement de faire autre chose, de ne plus trop y penser pour laisser décanter les idées. Je voulais finir cette trottinette vite, et ça se comprend, mais finalement je l'ai jamais vraiment fini en essayant d'aller vite, et je suis même pas allé vite parce que j'ai perdu du temps à réparer mes erreurs dues au "vite fait mal fait".

Sur un plan plus technique, je pense qu'il y a principalement 4 points que je referais différemment :

  • Au moins pour le boitier, je ferais des plans en 3D pour être sûr de mes mesures et visualiser comment tous les composants s'arrangent à l’intérieur, ce qui me permet aussi de visualiser comment faire quelque chose d’intelligemment démontable (pouvoir enlever facilement les batteries par exemple).

  • Sur la partie électronique, je ferais une meilleure organisation des connecteurs, ce qui rejoint le point précédent sur faire du démontable, parce que quand on bricole on espère toujours avoir un produit fini, mais il y a toujours énormément de maintenance et aussi d'amélioration à faire, qui demande du démontable.

  • Je prendrais mieux en compte l'environnement du projet : parce qu'en effet sur mon bureau tout marche bien, mais en conditions réelles il peut y avoir des problèmes d'humidité, de parasites électromagnétiques, de température, etc . Dans mon cas c'était des vibrations, qui ont eu des répercussions sur la carte électronique, les batteries, le contacteur, la mécaniques, bref c'est à dire de partout. Je résumerais ça par penser au gap entre le labo et la réalité.

  • Et enfin je documenterais plus, parce que rien que pour faire cet article j'ai dû faire des entorses à la réalité parce que.. je me souviens simplement plus de ce que j'ai fait. C'est pas vraiment intéressant de perdre du temps à essayer de comprendre ce que j'avais fait, et pour la partie électronique c'est d'autant plus important qu'il est facile de faire des courts circuits/surtensions et de griller du matériel en se trompant d'un fil.

Une non-conclusion

Là c'est le moment où je dois faire une conclusion un peu nulle du style Malgré tout ça a avant tout été une expérience et tous les problèmes peu importe leurs complexité m'ont fait évolué et ça a été très enrichissant et je me suis beaucoup amusé à rouler avec, finalement c'est le chemin parcouru pas la fin qui compte. Et c'est tout à fait vrai, je suis par exemple très content d'avoir passé du temps au FabLab de Saint Étienne principalement pour ce projet. Mais en même temps je suis très déçu d'avoir échoué, à chaque fois que je me déplace à pied je me dis que ça aurait quand même été super pratique d'avoir cette trottinette.
Je finirais en parlant du prix de ce projet, parce que le coût reste le premier frein à l'ambition. Je n'ai pas fait de compte précis mais je pense en être autour de 350€, ce qui est plus cher qu'une trottinette industrielle qui aurait les mêmes caractéristiques. Mais finalement, je pense vraiment que l’expérience et la connaissance acquises grâce à ce projet c'est une richesse inestimable, ça n'a pas de prix.
Ou peut-être 350€.
¯\_(ツ)_/¯



Galerie photo
⏫retour en haut⏫ 🏠retour à l'accueil🏠