samedi 3 décembre 2016

Robotisation d'une voiture radiocommandée, 2e version

Voici une nouvelle tentative de transformer une voiture radiocommandée (dont on a égaré la télécommande) en un véhicule robotisé autonome.  Une expérience similaire (qui date de quelques mois) impliquait l'utilisation d'une carte Arduino et d'un circuit intégré L293D, et d'un modèle de véhicule comportant deux moteurs.

Une première mise en garde s'impose:  bien que ce type de transformation puisse s'avérer amusante, ces véhicules sont conçus pour rouler plutôt rapidement:  pour cette raison il est peu probable que vous obteniez un résultat comparable à une base de robot spécialement conçue à cette fin.

Le véhicule à modifier

C'est le bas de gamme absolu des véhicules radiocommandés, destiné à de jeunes enfants.  À l'origine, la télécommande ne comportait qu'une manette qui ne pouvait occuper que deux positions: marche avant, ou marche arrière.  Si le véhicule est en marche avant, l'essieu avant s'aligne de façon à permettre un mouvement en ligne droite.  Si le véhicule est en marche arrière, l'essieu avant s'oriente de façon à ce que le véhicule recule en tournant selon un arc de cercle.


La propulsion est assurée par un seul moteur qui fait tourner l'essieu arrière.  Ce moteur est muni d'une roue d'engrenage comportant 10 dents.  Cette roue entraîne la rotation d'une roue d'engrenage de 26 dents, qui est solidaire d'une roue de 8 dents, qui elle-même entraîne la rotation d'une roue de 32 dents qui est collée à l'essieu arrière.  Ce mécanisme permet aux roues du véhicule de tourner environ 10 fois moins rapidement que le moteur (ce qui demeure une vitesse beaucoup plus rapide que celle d'une plate-forme spécialement conçue pour être robotisée).



Le véhicule comporte également un interrupteur marche/arrêt, ainsi qu'un compartiment pouvant contenir 4 piles AA.  Nous espérons pouvoir utiliser ces parties telles quelles à l'intérieur de notre robot autonome.

Comportement souhaité

Les possibilités de ce véhicule sont limitées:  il peut avancer en ligne droite, reculer en tournant, ou demeurer immobile.  Le projet consiste donc à munir le véhicule d'un détecteur de collision: un simple interrupteur fixé au pare-choc avant, qui établira un contact électrique en cas de choc avec un obstacle.

(On peut ajouter une rallonge à la tige métallique pour améliorer la détection)

L'état normal du véhicule consiste donc à avancer en ligne droite.  Mais si il percute un obstacle, il reculera en tournant pendant quelques secondes, puis repartira en ligne droite dans une direction différente de la direction initiale.

Contrainte supplémentaire: pas d'Arduino!

Mon premier réflexe aurait consisté à programmer une carte Arduino pour contrôler le moteur de la façon souhaitée, mais le comportement de notre robot sera tellement minimaliste que j'aurais eu l'impression de tuer un moustique au moyen d'un bazooka.  J'ai donc choisi de concevoir un circuit ne comportant pas le moindre microcontrôleur, comme dans le bon vieux temps.

1er étage:  un 555 en configuration monostable

Lorsque le détecteur de collision est actionné, le véhicule doit se mettre à reculer pendant quelques secondes.   Le détecteur de collision (qui est, rappelons-le, un interrupteur), est donc branché à un 555 configuré en monostable (voir le schéma ci-dessous).


N.B.:  Les schémas prévoient une alimentation de 5 V, mais vous pouvez utiliser une alimentation un peu plus puissante).

En temps normal, pendant que l'interrupteur n'est pas actionné, l'entrée du 555 (pin 2) est à 5 volts et sa sortie (pin 3) est à 0 V.

Mais il s'agit d'appuyer brièvement sur l'interrupteur pour que l'entrée du 555 soit mise à 0 V, ce qui place la sortie à 5 V pendant environ 2,5 secondes.

Cette durée est déterminée par la valeur de la résistance et du condensateur branchés aux pins 6 et 7 du 555:

     durée = 1,1 * R * C = 1,1 * 220 000 * 0,00001 = 2,42 s

Pour que le véhicule recule plus longtemps, il s'agit donc d'augmenter la valeur de la résistance ou la capacité du condensateur.

2e étage:  un amplificateur opérationnel

Nous disposons donc d'une tension qui est nulle quand le moteur doit être en marche avant, et qui devient 5 V lorsque le moteur doit se mette en marche arrière.

Notre pont en H (3e étage), toutefois, comporte deux entrées.  En marche avant, sa première entrée devra être à 5 V pendant que la deuxième sera à 0 V, alors que ce sera le contraire en marche arrière.

Après avoir exploré des solutions comportant un transistor ou une porte NON, j'ai finalement opté pour un amplificateur opérationnel configuré en comparateur de tension.

J'ai choisi le modèle TLC2272, qui fonctionne bien avec une alimentation simple et qui est "rail to rail", c'est à dire que sa tension de sortie est égale à sa tension d'alimentation.  (Dans un premier temps, j'avais utilisé un LM358:  ça fonctionnait, mais la tension de sortie était considérablement plus faible que la tension d'alimentation).


Les deux amplificateurs opérationnels inclus sur le circuit intégré sont utilisés afin de comparer la tension provenant du 555 à une tension de référence de 2,5 V (obtenue au moyen d'un diviseur de tension).

Lorsque la tension provenant du 555 est basse, la tension de sortie de l'amplificateur de gauche est de 5 V, alors que celle de l'amplificateur de droite est de 0 V.  Lorsque la tension provenant du 555 est haute, la tension de sortie de l'amplificateur de gauche est de 0 V, et celle de l'amplificateur de droite est de 5 V.

3e étage:  un pont en H

J'ai fabriqué un pont en H à partir de 4 transistors (pour plus d'informations sur le fonctionnement du pont en H, voir cet article).

J'ai expérimenté différents modèles de transistor et, parmi ceux que j'ai essayés, c'est la combinaison 2N4403 et 2N4401 qui a donné les meilleurs résultats (c'est l'option qui nécessitait la plus faible tension pour faire tourner le moteur).

Et ça fonctionne?

Oui... et non.  Pour faire tourner un moteur, aucun problème.  Le moteur tourne allègrement en marche avant, sauf lorsqu'on appuie sur le bouton, auquel cas il se met en marche arrière pendant 2 secondes et demi avant de se remettre à tourner dans le sens initial.  C'est très exactement ce qu'on espérait.

Les choses se corsent lorsque le moteur en question est chargé de faire avancer le véhicule.  Là, on manque sérieusement de puissance et le couple du moteur est insuffisant à moins d'augmenter l'alimentation à une bonne dizaine de volts­.  Et dire que j'espérais utiliser le compartiment à pile déjà présent sur le véhicule, qui permet d'accueillir 4 piles AA...

Il faut dire que, d'un point de vue mécanique, mon véhicule est une catastrophe:   le système d'engrenages qui transmet le mouvement du moteur vers les roues a tendance à bloquer très facilement, ce qui ne m'encourage pas tellement à poursuivre ce projet...

Sinon, il faudrait tenter d'améliorer le rendement du pont en H.  Tel que mentionné dans cet article du site Robot Room, la qualité des transistors peut faire une énorme différence.

Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire