{"id":51,"date":"2021-02-11T12:21:14","date_gmt":"2021-02-11T11:21:14","guid":{"rendered":"http:\/\/www.atout-cycle.fr\/?p=51"},"modified":"2021-11-04T18:16:43","modified_gmt":"2021-11-04T17:16:43","slug":"exigez-lopen-source","status":"publish","type":"post","link":"http:\/\/www.atout-cycle.fr\/?p=51","title":{"rendered":"Exigez l&rsquo;open source !"},"content":{"rendered":"\n<p>Date de publication sur blog d&rsquo;origine : 11 Janvier 2019<\/p>\n\n\n\n<h2><em>Pilotage par Arduino de moteur brushless<\/em><\/h2>\n\n\n\n<p class=\"has-text-align-left\">[ R\u00e9\u00e9dition : Visiblement j\u2019ai dans cet article red\u00e9couvert la \u00ab&nbsp;r\u00e9gulation de tension par hachage&nbsp;\u00bb qui \u00e9tait sans doute d\u00e9j\u00e0 \u00e9vidente \u00e0 certains, qui dans leur grande mansu\u00e9tude me pardonneront ; l\u2019article aborde cependant un sujet bien plus large que cela. Le titre est par ailleurs racoleur et un poil d\u00e9mago, bien s\u00fbr. Plus pr\u00e9cis\u00e9ment, ici on parlera du fait de contr\u00f4ler une carte \u00e9ventuellement propri\u00e9taire qui elle m\u00eame pilotera le moteur, mais par un signal envoy\u00e9 par Arduino ou tout autre signal en \u00ab&nbsp;PWM&nbsp;\u00bb et donc \u00e0 l\u2019aide d\u2019une interface open-source !]<\/p>\n\n\n\n<p>Si vous voulez la remise en contexte et la d\u00e9couvertes de plein d\u2019exp\u00e9riences et de projets int\u00e9ressants, lisez tout. S\u2019il ne s\u2019agit que de savoir comment proc\u00e9der passez aux derniers paragraphes<\/p>\n\n\n\n<h3>Le petit monde des moteurs brushless et des assistances Open Source<\/h3>\n\n\n\n<p>Ceux qui se penchent sur la question du pilotage des v\u00e9los \u00e0 assistance \u00e9lectrique les plus r\u00e9pandus, \u00e9quip\u00e9s de moteurs sans charbon (brushless) per\u00e7oivent vite que l\u2019\u00e9lectronique sous le capot est complexe. Le moteur brushless fonctionne par une synchronisation de plusieurs bobines (un multiple de 3 sur les VAE, peut \u00eatre m\u00eame tout simplement trois) qui ainsi se magn\u00e9tisent et engendre la r\u00e9action de pulsion\/attraction qui entra\u00eene la rotation du moteur. Il faut conna\u00eetre la position du rotor par rapport au stator \u00e0 chaque instant pour que les transistors du contr\u00f4leur alimentent tant\u00f4t une bobine, tant\u00f4t une autre. Vous n\u2019avez pas envie que votre moteur mal synchronis\u00e9 r\u00e9siste soudainement \u00e0 votre coup de p\u00e9dale alors que vous \u00eates sans les mains, ou en danseuse, ou en descente dans un virage en \u00e9pingle \u00e0 cheveux. Ok, dans ce dernier cas normalement on s\u2019arr\u00eate de p\u00e9daler et et le moteur n\u2019est plus aliment\u00e9 non plus, pas au del\u00e0 de ce que sa propre inertie exige. Mais on retiendra par ces illustration que l\u2019\u00e9lectronique de piotage est cruciale, ne s\u2019improvise pas.<\/p>\n\n\n\n<p>C\u2019est sans doute pour cela que le pilotage du moteur brushless est rest\u00e9 longtemps dans le domaine propri\u00e9taire. Quelques grosses boites ayant d\u00e9velopp\u00e9 leurs cartes de contr\u00f4le ont pris d\u2019assaut le march\u00e9 et vendent \u00e0 un prix suffisamment raisonnable pour que peu trouvent \u00e0 y redire.<br>Un ESC (electric speed control) pour moteur \u00e0 charbon, c\u2019est plus rudimentaire. On l\u2019ach\u00e8te pour pas cher et on peut m\u00eame le faire soi-m\u00eame simplement avec un transistor aliment\u00e9 par le PWM d\u2019un Arduino qui lui indiquera le niveau de puissance requise. C\u2019est tr\u00e8s simple et tant mieux, on peut ainsi facilement piloter le moteur. Pourquoi pas prochainement ici, et m\u00eame certainement, piloter un moteur \u00e0 charbon pour assistance \u00e9lectrique. C\u2019est simple, c\u2019est moins cher qu\u2019un moyeu de roue motoris\u00e9 brushless, il faut juste le monter sur une cha\u00eene ind\u00e9pendamment du moyeu, et programmer le code alimentant pilotant le MOSFET qui alimente le moteur.<\/p>\n\n\n\n<p>Pour un moteur brushless c\u2019est plus compliqu\u00e9.<br>J\u2019ai pass\u00e9 du temps, \u00e0 me renseigner, chercher comment on pouvait le faire (avec l\u2019allusion au d\u00e9part que le petit autodidacte que je suis pouvais y arriver), qui le faisait. Et par miracle ou par obstination, il s\u2019est av\u00e9r\u00e9 que les r\u00e9ponses document\u00e9es et exp\u00e9riment\u00e9es se faisaient notamment pas loin de chez moi.<\/p>\n\n\n\n<p>J\u2019ai d\u2019abord entendu parler du projet Hope\u2019n Bike, qui liait la super Maison du V\u00e9lo de Caen, le Fablab de la m\u00eame ville, et la mission locale, dans une ambition d\u2019aide \u00e0 la mobilit\u00e9 des jeunes et pr\u00e9caire, et de formation de certains \u00e0 la conversion de v\u00e9lo en VAE, le tout en Open Source.<br>Je n\u2019ai pas \u00e9t\u00e9 encore v\u00e9rifier, mais il semble que le succ\u00e8s est mitig\u00e9. Plus personne dans la presse n\u2019en parle, comme si c\u2019\u00e9tait laiss\u00e9 en stand by. Le projet a plut\u00f4t abouti, il s\u2019est fait au moins quelques prototypes fonctionnels. il faudrait aller voir de plus pr\u00e8s. Mais le projet document\u00e9 sur GitHub n\u2019avance plus. Les diff\u00e9rents \u00e9l\u00e9ments sont document\u00e9s selon des formats de logiciels d\u2019\u00e9lectronique diff\u00e9rents, chacun difficile \u00e0 s\u2019approprier. C\u2019est le revers de la m\u00e9daille&nbsp; de l\u2019opensource spontan\u00e9, on est plein de bonne volont\u00e9 mais ne se coordonne pas, et \u00e7a en devient difficile \u00e0 s\u2019approprier.<\/p>\n\n\n\n<p>Une autre solution tr\u00e8s int\u00e9ressante et approuv\u00e9e est le mod\u00e8le de <a href=\"http:\/\/vedder.se\">Vedder.se<\/a> . Vedder c\u2019est un g\u00e9nie su\u00e9dois qui a fait sa propre carte de pilotage de moteurs BLDC, et par dessus le march\u00e9 le programme sur ordinateur permettant param\u00e9trer le fonctionnement attendu puis flasher le code correspondant sur la carte. Le tout en Open Source bien s\u00fbr.&nbsp; Il vend sa carte&nbsp; 100 euros environ, raisonnable sans doute pour une carte capable de balancer du 100 amp\u00e8res sans griller .Une communaut\u00e9 a \u00e9merg\u00e9 autour de son projet, utilis\u00e9 pour diff\u00e9rents types d\u2019engins notamment trottinettes et skateboards \u00e9lectriques. C\u2019est gr\u00e2ce \u00e0 <a href=\"https:\/\/myhumankit.org\/le-humanlab\/\">My Human Kit<\/a> que que moi et quelques rennais avons pu d\u00e9couvrir cela r\u00e9cemment, un fablab d\u00e9di\u00e9 aux questions de d\u00e9passement du handicap, dans le cadre d\u2019un<a href=\"https:\/\/myhumankit.org\/actualite\/complement-dinformation-suite-au-hackathon-organise-avec-la-petite-rennes-le\/\"> Hackathon<\/a> coorganis\u00e9 avec la <a href=\"http:\/\/www.lapetiterennes.org\/\">Petite Rennes<\/a> d\u00e9di\u00e9 \u00e0 un une roue motoris\u00e9e amovible de l\u2019avant d\u2019un fauteuil roulant<\/p>\n\n\n\n<p>Bon mais nous on balance d\u00e9j\u00e0 entre 40 et 150 Watt de puissance musculaire dans les p\u00e9dales, a-t-on besoin d\u2019une carte capable de balancer 100 A * 36 V =3600 W ?<br>C\u2019est surdimensionn\u00e9, \u00e9videmment, mais la compr\u00e9hension de cette carte est aussi par ailleurs hors de port\u00e9e de ma patience ou de mon cerveau, et de ceux de beaucoup d\u2019usagers lambdas du v\u00e9lo. J\u2019ai beau avoir cherch\u00e9 \u00e0 comprendre comment communiquer avec la carte, je me rappelle plus si on la piloter en tension, je vous laisse aller voir, mais les autres m\u00e9thodes (\u00ab&nbsp;UART&nbsp;\u00bb \u00ab&nbsp;PPT&nbsp;\u00bb\u2026) m\u2019\u00e9taient inaccessibles.&nbsp; On est dans l\u2019Open Source, et c\u2019est tr\u00e8s bien, mais pas adapt\u00e9 au v\u00e9lo et aux bricoleuses et bricoleurs moyens. Pour des raisons de budget, de complexit\u00e9, et de puissance requise. Il faudrait donc dans l\u2019id\u00e9al trouver une autre solution.<\/p>\n\n\n\n<h3>Et alors concr\u00e8tement, on fait comment ?<\/h3>\n\n\n\n<p>Heureusement il y a moyen d\u2019acheter des cartes moins puissantes et moins ch\u00e8res. C\u2019est chose faite depuis quelques temps d\u00e9j\u00e0. Il faut maintenant en prendre le contr\u00f4le.<\/p>\n\n\n\n<p>Ladite carte se commande en tension. Avec une tension plus ou moins importante, entre 0 et 5V, on lui demande quelque chose ente laisser le moteur \u00e0 l\u2019arr\u00eat et envoyer toute la pur\u00e9e. Ce type de commande est pratique pour un pilotage manuel. Un potentiom\u00e8tre faisant office de pont diviseur de tension, brancher les deux broches des c\u00f4t\u00e9s sur du 5v et la masse permet \u00e0 la broche du milieu d\u2019envoyer la tension d\u00e9sir\u00e9e.<\/p>\n\n\n\n<p>Tr\u00e8s pratique, sans doute tr\u00e8s sollicit\u00e9 en Chine, ou le v\u00e9lo est directement \u00e9lectrique sans assistance. Une poign\u00e9e de gaz en guise de potard, et biiim, c\u2019est parti les petits loups.<br>Le probl\u00e8me de ce pilotage&nbsp; c\u2019est qu\u2019il n\u2019est pas directement adapt\u00e9 \u00e0 un pilotage \u00e9lectronique de la carte. Je ne sais pour ma part qu\u2019utiliser Arduino, ou des microcontr\u00f4leurs Atmel, donc il fallait trouver une solution pour qu\u2019un signal de sortie d\u2019Arduino, selon certaines conditions (celles de la r\u00e9glementation europ\u00e9enne notamment&nbsp; : arr\u00eat du moteur en cas de freinage, au del\u00e0 de 25km\/h ou de non p\u00e9dalage) permette de solliciter la carte et le moteur. Pour avoir un signal analogique, on a du PWM \u00e0 5V : un clignotement entre 0V et 5V avec une proportion modulable de 0 ou de 5 V .<\/p>\n\n\n\n<p>Allez zou, il nous faut transformer le PWM en vrai signal analogique. Il nous faut donc pour cela trouver de quoi lisser le signal, transformer des impulsions plus ou moins longue en proportion de la p\u00e9riode, en tension plus ou moins haute sur une \u00e9chelle de 0 \u00e0 5 V.<\/p>\n\n\n\n<p>\u00c7a semble simple comme \u00e7a, moi je ne savais pas faire. Et les recherches en lignes ne furent pas si simple qu\u2019on en a l\u2019habitude. Peu de gens documentent et publient ce genre de montage pourtant accessible \u00e0 l\u2019\u00e9lectronicien presque d\u00e9butant. C\u2019est<a href=\"https:\/\/forums.futura-sciences.com\/electronique\/320096-pwm-vers-analogique.html\"> cette page l\u00e0<\/a> et leurs auteurs que je dois remercier.<br>Il fallait encore adapter le montage \u00e0 du 0-5V au lieu de 0-10V. (Je crois qu\u2019une partie du montage est inutile ou peu utile, le filtre passe-bas de sortie) Apr\u00e8s plusieurs t\u00e2tonnements sur un site de simulation, on trouve <a href=\"http:\/\/www.falstad.com\/circuit\/circuitjs.html?cct=$+1+0.000005+96.77753655846766+67+5+50%0Ar+256+368+480+368+0+10000%0AR+608+368+608+192+4+5+1000+5+0+0+0.8%0Ac+256+368+64+368+0+0.000001+3.667516937109406%0Ag+64+368+16+368+0%0Aa+208+256+208+176+9+15+-15+1000000+3.667475928060392+3.667516937109406+100000%0Ar+96+176+208+176+0+130%0Aw+256+368+224+256+0%0Aw+96+256+192+256+0%0Aw+96+176+96+256+0%0Ar+96+256+64+368+0+1100%0Ar+208+176+208+112+0+1000%0Ag+208+112+432+112+0%0Ad+480+368+480+320+2+default%0Ag+480+272+480+240+0%0Ad+608+368+480+368+2+default%0Ar+480+272+480+320+0+500%0Ao+0+64+0+4099+5+0.00078125+0+2+0+3%0Ao+11+64+0+4099+0.0000762939453125+0.00625+1+2+11+3%0Ao+10+64+0+4099+5+0.00625+2+2+10+3%0A38+1+0+1+1000+Max%5CsVoltage%0A38+1+5+1+100+Duty%5CsCycle%0A\">quelque chose de relativement lin\u00e9aire et proche de 0-5 ici<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/tricyclos.files.wordpress.com\/2019\/01\/capture-du-2019-01-11-00-57-12.png?w=770\" alt=\"capture du 2019-01-11 00-57-12\" class=\"wp-image-72\"\/><\/figure>\n\n\n\n<p>Voil\u00e0, je suis content d\u2019avoir r\u00e9ussi \u00e0 mettre \u00e7a au point. Bient\u00f4t il n\u2019y aura plus qu\u2019\u00e0 coder le reste des instructions sur Arduino et l\u2019agr\u00e9menter d\u2019un petit \u00ab\u00a0digitalWrite\u00a0\u00bb pour donner un ordre directement convertit en analogique pour le pilotage du moteur.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Date de publication sur blog d&rsquo;origine : 11 Janvier 2019 Pilotage par Arduino de moteur brushless [ R\u00e9\u00e9dition : Visiblement j\u2019ai dans cet article red\u00e9couvert la \u00ab&nbsp;r\u00e9gulation de tension par hachage&nbsp;\u00bb qui \u00e9tait sans doute d\u00e9j\u00e0 \u00e9vidente \u00e0 certains, qui dans leur grande mansu\u00e9tude me pardonneront ; l\u2019article aborde cependant un sujet bien plus large &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.atout-cycle.fr\/?p=51\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Exigez l&rsquo;open source !&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[14,11],"tags":[6,5,7,8,10,9],"_links":{"self":[{"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=\/wp\/v2\/posts\/51"}],"collection":[{"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=51"}],"version-history":[{"count":5,"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":95,"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=\/wp\/v2\/posts\/51\/revisions\/95"}],"wp:attachment":[{"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.atout-cycle.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}