Bricolages

Bonsoir,

Comme je vous en avais parlé rapidement ici, ma première version du système permettant de générer les tensions de 1 à 4 Volts nécessaires au contrôle du fauteuil utilisait la sortie PWM de l’arduino.

C’est ce montage là :

PWM Arduino

Que j’ai depuis déporté sur une tablette :

PWM Arduino

Voyons plus précisément comment cela fonctionne…

PWM Arduino

Le principe est de faire varier sans cesse une broche de sortie entre un état haut et un état bas (5V, 0V), comme on peut le voir sur les signaux de gauche.
Le moment ou la broche passe de l’état bas vers l’état haut est toujours le même, toutes les secondes par exemple.
Par contre, on fait varier la durée à l’état haut. Pas longtemps comme le signal ‘2’, d’une durée moyenne comme le signal ‘1’ ou longtemps comme le signal ‘3’.

Ce qui vas nous intéresser, c’est la tension moyenne de ce signal.

Par exemple, il est évident que si je reste en haut 100% du temps, la tension moyenne sera de 5V et au contraire, si je reste à l’état haut 0% du temps (jamais donc), la tension moyenne sera de 0V.
Après, une simple règle de 3 permet de connaitre la tension moyenne théorique : 20% du temps => 20 x 5 /100 = 1 soit 1V.
Et comment on obtient une tension moyenne ?

Avec un condensateur et une résistance dont les valeurs ont été soigneusement choisi, pas comme moi qui ai pris plus ou moins au pif dans le stock jusqu’à ce que cela fonctionne.

Ici donc, ça marche pas …

PWM Arduino

En gros, plus la résistance et le condensateur auront une valeur élevé, plus le signal sera lisse.
MAIS :
– Si la résistance est trop élevée, alors il n’y a plus suffisamment de courant qui passe, et le signal de sortie est absorbé par le boitier de contrôle du fauteuil et disparait, le fauteuil se met en erreur.
– Si le condensateur est trop élevé, alors le signal de sortie met 3 plombes à suivre une modification du signal d’entrée et le robot de tonte est chez le voisin avant de comprendre qu’il doit tourner.

Bref, c’est simple, pas chère, mais surtout adapté pour faire varier directement la vitesse d’un moteur, pas beaucoup plus.

Comment faire la même chose, en mieux ? C’est à dire, comment à partir de mon code, avoir une tension de sortie variable, parfaitement lisse et qui réagit immédiatement ?

On utilise un Convertisseur Numérique Analogique (CNA). Il en existe avec des commandes séries ou parallèle. La commande en parallèle a l’avantage d’être plus rapide puisque pour un convertisseur 10 bits, chaque bit est envoyé en même temps sur un fil dédié alors que pour une commande série, il faut envoyer chacun des 10 bits l’un après l’autre sur le même fil.

Et la commande série, à l’avantage de n’utiliser qu’un fil (ou 2 avec l’horloge).

J’ai choisi un CNA avec une commande en I²C (série donc), je n’ai pas besoin d’atteindre les vitesses d’un port parallèle et l’arduino dispose déjà d’un port I²C et de bibliothèques dédiées.

Une recherche rapide me guide vers le DAC6573IPW

CNA Arduino

C’est pas grand, mais à priori on peut le souder sur un adaptateur :

CNA Arduino

Ha oui

CNA Arduino

Mais en vrai, j’aurais beau m’y reprendre plusieurs fois après m’être bien pris la tête à essayer de comprendre pourquoi mon code ne fonctionnais pas… je n’ai jamais réussi à le souder correctement, à moins que j’ai trop abîmé une patte. Quoi qu’il en soit, il fallait poser le doigt dessus pour qu’il fonctionne, et dans ce cas il faisait bien le boulot. Et hop, un échec pour moi !

J’ai donc recherché plus attentivement un CNA, I²C, 4 sorties, boitier DIP !

Cette fois, j’ai trouvé le MAX520BCPE+, en 8bits, ce qui après réflexion ne change pas grand chose pour mon usage.

Câblage sur une plaque à essais, réagit bien, mais la tension indiquée sur le volmètre à aiguille varie seulement de 0 à 2,5V alors que la tension de référence est de 5V…

J’ai aussi cherché un moment… Jusqu’à me rendre compte que ce CNA est un réseau R/2R SANS amplificateur. Pas d’ampli, cela signifie que le courant qui sort influe directement sur la tension mesurée, et que mon voltmètre est trop gourmand. Intuition confirmée par une mesure au voltmètre numérique, qui me donne bien un fonctionnement entre 0 et 5V.

Cette fois, pas de problème, j’ai des LM324 qui trainent … (ce sont des boitiers renfermant 4 amplis op), un montage en suiveur résout ce petit soucie.

C’est quoi un montage en suiveur ?

un amplificateur opérationnel est constitué de 2 entrée (entrée + et entrée -) et d’une sortie. si on relie la sortie a l’entrée -, et que l’on injecte un signal sur l’entrée +, alors la sortie reproduit fidèlement ce signal. Mais en plus, les entrées d’un ampli op ont une résistance infinie, il n’y a donc pas de courant qui entre, et donc pas de courant qui vient modifier la tension fournie par le CNA. Encore plus cool, le courant de sortie est infinie lui aussi (dans les limites de ce genre de truc, largement au dessus de mes besoins), ce qui signifie que je n’ai pas a me soucier du courant dont à besoin le boîtier de contrôle du fauteuil.

Un schéma pour finir de comprendre ?

CNA Arduino

En vrai, c’est un peu lourd quand même …

CNA Arduino

… mais fiable !

Et le résultat en vidéo ?

Oui, mais avec un autre sujet, j’ai d’autre vidéos un peu plus parlante, mais ce sera pour le prochain article. En attendant, je vous propose celle-ci :

Bah, et le code ? Pareil, vous l’aurez avec le prochain article 🙂

Bonne soirée,

Jilks

Edit : Bon aller, je vous la met quand même… vous connaitrez le prochain sujet 😉

Bonjour,

La dernière fois, j’ai réalisé un câblage propre pour prendre la main sur le boitier de commande, et un circuit tout pourri pour en vérifier le fonctionnement. C’est normal. On vas y aller par étapes …

Faire des essais en suivant le fauteuil n’est franchement pas pratique, avant de finaliser la “fabrication” des signaux, je dois prendre le contrôle à distance.

Pour cela, j’ai choisi une flysky FS-i6. Elle n’est pas chère, et je pourrais l’utiliser lorsque je me ferais un hexacopter brushless.

fsi6

Je l’ai acheté un peu moins de 40€ chez banggood (lien) avec un récepteur FS-iA6B. La référence du récepteur est importante.
Ce même récepteur est vendu seul 8€ environ et la télécommande peut en mémoriser 20. Ce qui permet facilement de piloter le future hexacopter sans reprogrammer sans cesse la télécommande.

A noter que je n’y connais pas grand chose en radio, juste le fonctionnement basic des servos, je peux donc être imprécis sur certains points.
Pourquoi ce choix ? Grâce à cet article : lien ou il explique que ce récepteur fournis des signaux CPPM. Cela signifie donc qu’il peut être raccordé à un arduino via 1 seul fil pour transmettre toutes les commandes.

Finalement, et c’est la que la référence du récepteur est importante, il est encore mieux que prévu : il fournit aussi des signaux iBus, une communication sur le port série à 115200 bauds avec un protocole connu.

iBus, c’est bien, surtout qu’en cherchant un peu, on trouve le code de quelqu’un qui a déjà fait tout le boulot : C’est ici
Pour mémoire, j’ai gardé une copie du code source ici

Et pourquoi iBus, c’est mieux que CPPM ? Et, c’est quoi CPPM ?
En RC, pour gérer un servomoteur on envoi une impulsion d’une durée comprise entre 1 et 2ms, la durée de cette impulsion correspond à la position désirée du servo entre son min (1ms) et son max (2ms). Sur un récepteur 6 voies, il y a donc 6 connecteurs pour 6 servos différents.
Sur un multirotor, on a pas de servomoteur, mais un contrôleur de vol qui gère la stabilité (oui, pour ceux qui connaissent, je prend des raccourcies). Pour éviter d’avoir a relier les 4 voies des commandes au contrôleur de vol, il existe le CPPM : les impulsions de chaque voies passent les une après les autres sur le même file. Et hop, 1 seul câble entre le récepteur et le contrôleur de vol.
C’est cool, mais il y a peut être mieux à faire… le récepteur reçoit une info numérique (les récepteurs actuels en 2.4GHz, pas les anciennes générations) puis doit créer une impulsion, et le récepteur doit compter le temps qui passe, avec sa propre précision pour transformer cela en valeur numérique… autant tout passer en numérique, ainsi la valeur 1240 reçut par le récepteur, reste 1240 dans le contrôleur de vol, et pas 1238 ou 1243 (par exemple).
Et voilà, donc le iBus, c’est toutes ces valeurs transmises sur 2 octets en série, avec un en-tête spécifique et un code de validation à la fin pour être certain de la qualité des données.

Moi, je n’ai pas un contrôleur de vol, mais un arduino : c’est pareil.

Pour la connexion, j’ai choisi d’utiliser le port série N°1 de l’arduino, et ainsi garder le N°0 libre pour les communication avec le PC (via l’usb, mais c’est un port série quand même)..

Ce qui donne :

Cablage ibus arduino

On peut difficilement faire plus simple …

Pour le code, je reprend la partie qui m’intéresse dans celui publié par povlhp et je remplace la partie télécommande filaire.
Le nouveau programme est donc : celui-ci

Une fois de plus, c’est juste un code de test/travail, il permet de vérifier la logique du système mais est loin d’être parfait.

Je reçoit donc bien les infos des 6 voies : les 4 voies joystick et 2 interrupteurs ou potentiomètre au choix.
ici, j’utilise le levier 3 position (interrupteur C) pour choisir un mode (1, 2 ou 3). Pour cela, j’ai paramétré la télécommande pour que cet interrupteur soit assigné à la voie 5.

Et le résultat :

Dans les prochains articles nous parlerons d’une bien meilleur façon de commander le fauteuil et d’une amélioration notable du fonctionnement avec cette radiocommande.

Bonne journée,

Jilks

PS : j’ai essayé d’être plus précis que la dernière fois, si c’est cool ou si c’est chiant, dites le moi.

Bonsoir,

Gérer correctement la partie commande des moteurs est compliquée. Il est bon de prévoir des accélérations progressives, des limitations de courants si besoin, d’évacuer la chaleur générée par la partie “puissance”, etc…
Hors, le boitier de commande du fauteuil fait déjà cela très bien. Il est donc bien plus simple de commander ce boitier, que de tout recréer.

J’en profite pour vous parler de l’architecture que j’ai choisie :

Un circuit, à priori sur base d’arduino Mega, sera en charge de :

  • Contrôler les déplacements du fauteuil
  • Détecter les obstacles
  • Récupérer de manière fiable les ordres d’une télécommande permettant une prise en main a coup sûr du robot
  • Obéir aux ordres de déplacements reçu par le port USB
  • Fournir les informations d’obstacle via le port USB
  • Gérer le démarrage/arrêt du moteur pour le robot de tonte

Un PC (ou équivalent) :

  • Sera lié via USB a la carte de contrôle
  • Obtiendra les informations GPS
  • Obtiendra les informations sur les obstacles
  • Connaitra une cartographie des lieu
  • Gérera les algos de déplacement du robot.

Ainsi, je vais pouvoir facilement développer la première partie, ensuite je n’aurait plus qu’a faire un logiciel … heu …

Bon, le début de la partie elec. Si on ouvre la petite boite :

On trouve un circuit de très bonne qualité. On remarque sans difficulté la liaison entre le joystick et la carte de contrôle. C’est par ici que je vais passer.

Ho ! Je n’ai rien inventé, l’idée m’a été donnée par ce blog : http://bennurre4.blogspot.fr/2012/12/modif-de-la-commande.html

Le principe est le suivant : le joystick fourni 4 tensions sur 4 fils différents.

Pour la marche avant/arrière, l’un des fils varie de 1 à 4V, pendant que l’autre varie de 4V à 1V, la position milieu étant 2.5V sur les 2 fils.

Pour la direction gauche/droite, c’est la même chose.

Ce fonctionnement avec des tensions complémentaires permet au microcontrôleur de vérifier que l’information fourni par le joystick est fiable. Nous en reparlerons, mais il y a un petit problème, si on ne génère pas exactement ce qui est attendu, il se met en sécurité…

Pour commencer, le câblage :

Je ressort du boitier :

  • Les signaux du joystick
  • L’entrée vers la carte
  • Du 24V en direct des batteries.

Ainsi, je peut garder le fonctionnement normal du fauteuil (p’tit bout et moi, on aime bien jouer avec …)

Ou alors, débrancher le joystick et le remplacer par mon système.

Après quelques hésitations, l’emplacement est choisi, et hop, un petit trou !

Je met moi aussi ma ferrite, il serait dommage que j’apporte des perturbations electromagnétiques.

Quelques soudures, gaine thermo, etc …

Je fait le malin, mais il en a fallut du temps pour tout faire… et hop, refermé, et encore “étanche” 🙂

Je peut maintenant brancher “mon” circuit.

L’Arduino ne dispose pas de sortie analogique, on est donc obligé de jouer avec les sorties PWM et filtrer le signal pour le lisser.

Mouais, vas falloir augmenter la valeur du condo ! (Si j’augmente la résistance, ça passe plus) Il y à en effet trop de vagues, et le boitier se met en sécurité.

Bah voilà ! de mémoire 47µF et 1KOhm

Ensuite, par taton, je trouve le rapport cyclique min pour obtenir 1V, et le max pour obtenir 4V. Et ce, sur chaque voie, étant donné que je n’ai pas trouvé 4 condos identiques dans mon stock.

Comme vous avez pu le voir sur les photos, j’ai relié une télécommande à l’Arduino. Il s’agit d’une vieille façade dont je n’ai que les potentiomètres, utilisé en pont diviseur, sans rien ajouter de plus.

 

Pour le code, il est ici : TelecommandeFilaire.ino

Gardez bien a l’esprit que c’est un code de test … Ce n’est pas sur celui-ci qu’il faudrait me juger en tant que développeur.

Et le résultat :

Bon, de base, le système est OK. Je vais pouvoir y monter une vrai télécommande.

Attention, ce n’est qu’une base de travail. Par exemple, au bout de 20 minutes d’utilisation je commence a avoir une dérive vers la gauche. Ce n’est pas grave, mais c’est à garder à l’esprit.

De plus, en butée ou lors de certaines manœuvres le fauteuil n’aime pas les infos qu’il reçoit et se met en sécurité (ne bouge plus et les leds clignotes). Il faut alors éteindre et rallumer le boitier.

Bonne soirée et à la prochaine,

Jilks

Bonsoir,

Depuis longtemps j’avais envi de me faire un “gros” robot de tonte, limité par les moyens de le déplacer c’est un projet qui à trainé jusqu’à aujourd’hui.

Il y a peu, j’ai eu l’opportunité de récupérer un fauteuil roulant électrique.

Énorme chance, une fois ressuscitées les batteries, l’ensemble du fauteuil fonctionne parfaitement. Il me servira donc de base pour mes bêtises…

J’ai également eu la chance de récupérer un tracteur tondeuse avec une lame de 80cm (de mémoire), un moteur et un plateau de coupe en parfait état. Seul la boite de vitesse est morte (carter explosé, manque des bouts).

L’idée finale est donc simple : fabriquer un chassis, utiliser la propulsion electrique du fauteuil, le moteur thermique et la lame du tracteur tondeuse, ajouter des capteurs, un GPS, du wifi, un logiciel fait par moi même, et roule !

Oui, bon… ça, c’est la théorie. En pratique, on vas y aller par étapes, voici celles que j’imagine :

  • Prendre le contrôle du fauteuil.
    • Faire un circuit permettant de diriger le fauteuil selon les ordres qu’il reçoit
    • Ajouter une télécommande qui servira d’interface et permettra de reprendre la main sur la version finale.
  • Ajouter des capteurs tout autour (distance et contact)
  • Faire un logiciel capable de savoir a peu près précisément ou il est en combinant toutes les informations disponibles (GPS, D-GPS, Carte des obstacles + capteur US, …)
  • Modifier le logiciel pour qu’il sache suivre un parcours.
  • Tester / Debugger
  • Tester / Debugger
  • encore une fois, il faudrait pas avoir un problème avec la version finale.
  • fabriquer un châssis permettant d’y placer le moteur, le plateau de coupe, un alternateur pour une meilleur autonomie.
  • Améliorer l’électronique pour qu’il soit capable de démarrer, éteindre le moteur, vérifier le carburant restant …
  • Tester moteur tournant (je crains qu’il ne créer des interférence qu’il faudra gérer)
  • Beaucoup, beaucoup, tester, valider un moyen de reprendre le contrôle à coup sûr en cas de besoin.
  • Entrainer la lame et profiter !

Ne soyez pas trop impatient, c’est un projet sur du très long terme, mais j’y crois. On verra bien 🙂

Pour le moment, j’en suis à la première étape, je vous en parlerais bientôt.

Bonne soirée,

Jilks

PS : Oui oui, “a peu près précisément”, ça veux dire quelque chose 😉

Bonjour,

Il y à bientôt 2 ans je vous avait parlé de la fabrication de mon meuble informatique.


(C’était ici)

Un NAS pour sauvegarder ses données, c’est bien, mais il est situé dans la même maison que mes PC. Donc, en cas d’incendie, vol, inondation, mega-surtension ou n’importe quel problème physique, les données sont perdues.

Pour palier à cela, fin 2015 j’ai installé un NAS chez mes parents. Avec ses 2 disques dur, il permet la sauvegarde de 2 NAS principaux, le mien et celui du frangin. Ainsi, avec plus de 150 Km de distance, je suis certain de toujours conserver mes données, quoiqu’il arrive à mon matériel.

Comme vous pouvez vous en douter, j’ai fait une installation au Top :

L’idée est simple : reprendre le principe du meuble informatique, une boite avec une ventilation filtrée, dont le filtre est très très accessible pour que personne n’hésite a mettre un petit coup d’aspirateur au passage. Les filtres cachés ou inaccessible n’étant que bien trop rarement nettoyés.

En plus, je veux que l’aire frais arrive devant le NAS, et sorte par derrière. Ainsi, il bénéficiera d’une ventilation naturelle, en plus de son ventilateur qu’il gère comme bon lui semble.

C’est partis avec notre nouveau Joujou !

Oui, vous allez pas mal la voir celle-là 🙂

Bah voila, en peu de temps, un tas de planches aux bonnes dimensions et d’équerre.

Quelques essais pour faire les rainures à la scie :

Une grosse pour la tablette, une plus fine pour le plexi de façade

La même chose sur les vrais. La disposition des planches me permet de ne pas avoir à faire de rainure arrêté, ni qu’elles se voient au montage finale.

On commence à apercevoir les proportions …

Un autre frangin s’est offert de nouveaux jouets, il est venu faire mumuse à la maison 🙂

Pas mal du tout la lamelleuse Makita, en très peu de temps on obtient facilement un assemblage dont les affleurements sont parfait.

Un autre jouet tout neuf. A priori y avait pas la taille au dessus. Parfait pour la muscu !

Je plaisante, mais même si elle est lourde à sortir du coffret, en réalité elle est très douce à l’usage. Je lui avait demandé de l’apporter pour tester une option dont je ne dispose pas sur les miennes : le guide parallèle.

Ayant des rainures parallèles à faire sur 2 planches, c’est bien plus simple avec ce guide qui ne se dérègle pas d’une planche sur l’autre.

Comme on pouvait s’en douter avec des planches d’équerres et une bonne machine, les rainures sont à la bonne place et la tablette trouve naturellement sa place.

Mise en place du ventilo pour vérifier que je ne me suis pas loupé sur les mesures.

Ouf, c’est bon.

J’en profite pour tracer l’emplacement de l’entrée d’aire.

Désolé Didier, Christophe avait un véritable besoin de cette nouvelle défonceuse, ce qui n’est pas mon cas, je retourne donc avec ma black & Decker 😉

En réalité, je doit bien avouer que je l’aime bien ma petite défonceuse. En plus, je lui ai fait des compas, dont un qui permet de faire de tout petits cercles. C’est donc ce compas que je vais prendre pour me préparer un gabarits que j’utiliserais avec une bague de copiage.

Un peu de double face, un centrage sur le trou dessiné avant …

J’enlève une partie du bois avec une scie cloche toute pourrie qui trainait sur mes étagères.

Et c’est parti pour faire un jolie petit trou.

Il est pas au top mon nouveau photographe ? Même plus besoin de me cacher !

Bon, à priori je n’ai rien oublié… collage !

J’utilise mon gabarits pour préparer un demi cercle.

Que je retaille ensuite, de plus en plus petit …

Puis que je colle.

Voila, le ventilateur sera maintenu ainsi en place, et si je doit le changer, je n’ai qu’un tourillon à enlever.

Mise en place des charnières…

J’ai beaucoup aimé le guide parallèle, mais ici ce n’aurait pas été possible, retour donc à la butée tenue au scotche double face.

Impec, j’en profite pour vous présenter le trou permettant la sortie de l’aire et le passage des câbles.

On se rapproche de la fin… vernis !

Pour alimenter le ventilateur, un transfo 12V à 3 €…

… ainsi que de petites soudures et gaine thermo.

Le verni est sec, mise en place finale.

Ajout d’un peu de quincaillerie pour tenir le couvercle ouvert, et fermé.

Ainsi que du filtre anti poussière.

A noter que même s’il est démontable sur mon meuble informatique je ne l’ai jamais déposé. il se nettoie très bien à la main ou avec un petit coup d’aspirateur directement en place.

Ici, je l’ai donc simplement vissé en place.

Ha, bah voila, c’est fini 🙂

J’ai bien le passage d’aire que je souhaitait, pour venir devant les NAS.

Ha, oui, il a pris la poussière…

On retrouve même une partie des lettres sur le disque dur.

Un bon coup de soufflette, et c’est oublié.

Mise en place de l’onduleur et de mon NAS.

(Je précise mon Nas, parce que celui de mes parents devrait bientôt le rejoindre)

Voilà, plus qu’à passer un petit coup d’aspirateur de temps à autre, et le matériel devrait rester propre et frais un moment …

Vous trouvez pas qu’il a l’aire seul et triste ?

Bon dimanche,

Jilks