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
Je n’y comprend rien mais je suis admiratif.
Bravo.
Bonjour,
En fait le principe est de substituer les tensions venant du joystick par celles venant de son microcontrôleur (l’Arduino dont il parle).
Le problème est que le microcontrôleur ne délivre pas de tensions continues variables en fonction d’une commande.
Par contre, il peut être programmé pour délivrer des impulsions de largeur variable (PWM = Pulse Width Mod) – ou modulation de largeur d’impulsion-.
Pour transformer ensuite ces impulsions en tensions utilisables par le circuit existant, il bricole un petit circuit dit “intégrateur” avec une résistance et un condensateur qui va servir on va dire d’interface.
Bonjour,
Merci Romuald pour ces précisions.
En effet, j’ai été un peu léger sur les explications et schémas cette fois-ci et je me rend compte que la rédaction s’adressait plutôt a un public avertis, ce qui n’est pas le but.
S’il y a des points ou des sujets sur lesquels vous voulez que je sois plus précis lors des prochains articles, n’hésitez pas.
Jilks