Nous vous proposons de construire, ce mois-ci, un robot à base de « l’Arduino-EP », équipé d’une boussole électronique, d’un capteur de distance infrarouge et de trois servomoteurs, dont deux modifiés pour la motorisation.
Ce robot est capable de se diriger de manière auto-nome, en repérant les obstacles à l’avance afin de les éviter. Il peut également se situer et savoir quelle direction prendre. Comme toujours, nous avons développé, à votre intention, le programme bien commenté nécessaire à son évolution. En l’étudiant, vous pourrez voir comment gérer les capteurs et commander les servomoteurs. La fabrication de notre robot ne requiert ni outillage spécifique, ni compétences particulières. Toutes les pièces sont constituées de circuits imprimés en fibre époxy, matériau que tout électronicien sait usiner. Avec un peu de soin et de patience, vous parviendrez aisément à un résultat impeccable, pour un coût très raisonnable. Le circuit de base supporte l’alimentation sécurisée à base d’une batterie à quatre éléments pour le microcontrôleur et les servomoteurs, mais égaie-ment le chargeur à courant constant. Les lecteurs intéressés par la trans-formation d’un servomoteur en moto-réducteur peuvent se reporter au numéro 315 d’avril 2007.
Il est également possible de se pro-curer de tels moteurs auprès de Lextronic, notamment.
Nous vous rappelons que le développement de la base électronique « Arduino » et celui de ses logiciels est libre et participatif sous licence « Creative Commons Attribution-ShareAlike 3.0 » voir les précisions à l’adresse : http://creativecommons .org/licenses/by-sa/3.0/.
Ce microcontrôleur est un module étudié par nos soins afin de le rendre plus économique, mais surtout, de réduire son encombrement et de permettre son insertion sur un support à l’instar de tout circuit intégré.
C’est une petite platine très simple comportant un microcontrôleur Atmega 328 préprogrammé avec un « bootloader » (figure 1).
Il est difficile d’imaginer une boussole différente de l’objet que nous connais-sons tous: une boîte ronde vitrée renfermant une aiguille aimantée s’orientant vers le nord. Pourtant, il existe un petit module électronique capable de détecter le nord grâce à deux capteurs magnétiques de marque Philips: « KMZ51 -. soudés sur le module avec un angle de 90°. La communication avec celui-ci s’effectue soit par un signal PWM, soit selon le protocole I²C. Nous employons ce dernier pour communiquer avec notre microcontrôleur Arduino-EP. La figure 2 montre une photo du module ainsi que son brochage. L’alimentation sous 5 V doit être très « propre » et bien découplée. La largeur des impulsions du signal de sortie de la broche 4 (PWM) informe de l’angle par rapport au nord. La largeur varie entre 1 et 36,99 ms par pas, de 1 00 us par degré. Ce mode de lecture étant délicat à traiter, nous avons préféré employer le mode FC. Les broches 2 et 3 (SDA et SCL) servent au dialogue FC. L’adresse de base du module est « CO » ; pour le reste, le principe est identique à tout composant FC. Nous obtenons une valeur comprise entre 0 et 3599 en fonction de l’angle d’orientation. La broche 6 sert au calibrage (déjà effectué en « usine en Angleterre) ; il n’est pas obligatoire, surtout pour notre application où la précision de l’angle par rapport au nord importe peu. Le raccordement ne pose aucun problème, le module étant équipé d’un connecteur mâle « SIL» de neuf broches au pas normalisé de 2,54 mm.
Pour de plus amples informations, veuillez vous référer à la notice du constructeur, téléchargeable sur le site Internet du revendeur Lextronic.
Ce module permet de mesurer, par détection infrarouge, la distance absolue ou relative, par rapport à un obstacle. Le rayon infrarouge d’émission passe par un collimateur (lentille) et se réfléchit sur un objet présent dans le champ de détection. A son retour, il arrive sur une ligne de récepteurs à l’intérieur du capteur. La figure 3 montre une photo du capteur et son brochage. Il s’alimente sous 5 V, son alimentation doit être découplée et bien stabilisée. Le signal de sortie analogique varie entre 0,25 et 2,55 V. Ce mode de’ lecture est très pratique en robotique car il permet le traitement direct par une entrée du convertisseur analogique d’un microcontrôleur. Il est possible d’apprécier des distances comprises entre 4 et 30 cm avec une bonne précision. Du côté pratique, le connecteur mâle à trois broches équipant le module est un modèle miniature et il est préférable d’acquérir simultanément le câble et son connecteur femelle avec le capteur.
La notice du constructeur est également téléchargeable sur le site Internet du revendeur Lextronic.
La relative simplicité du robot tient au fait que les capteurs très sophistiqués intègrent, soit leur propre micro-contrôleur, soit une électronique très complète. Nous n’avons aucun réglage à effectuer, leurs paramétrages ont eu lieu en usine.
Le schéma de la figure.4 montre l’alimentation, très soignée, dans la partie basse et la section robotique en haut. Notre robot fonctionne avec une batterie composée de quatre éléments Ni-MH de 1,2 V au format « AA » ou « LR6 ».
Nous avons donc intégré le chargeur à courant constant à notre base) il suffit de raccorder un bloc secteur fournissant une tension alternative ou continue de 15 V.
La source de tension (bloc secteur), comprise entre 15 V et 20 V sous 500 mA alimente le chargeur intégré au robot. Le pont PR1 se charge du redressement à double alternance et le condensateur C1 filtre la tension obtenue. Le régulateur positif ajustable CI1 est monté en source de courant constant.
L’intensité de charge est directement liée à la valeur des trois résistances R1 à R3 montées en parallèle pour réduire leur effet joule (échauffement).
La formule théorique ci-dessous donne la valeur « R » pour chacune des résistances, en fonction de la capacité des éléments de batterie employés, où « Ich » représente le courant de charge souhaité.
R(ohms)=(1,25I1ch(ampères))x3
Choisissez, de préférence, des éléments de batterie d’une capacité égale ou supérieure à 2000 mAh.
La consommation du robot est assez importante compte tenu des trois servomoteurs à alimenter parfois simultanément.
Par sécurité, et pour éviter de fâcheux accidents, respectez scrupuleusement les préconisations du constructeur des batteries (durée et intensité) sous peine de destruction. Le tableau 1 donne les valeurs de R1 à R3 et les temps de charge calculés en fonction des éléments de batterie les plus courants.
Les diodes 01 à 03 créent une chute de tension destinée à illuminer la led3 lorsque la batterie est en charge.
La résistance R4 limite le courant circulant dans la led3.
La diode 04 protège CI1 lors du branchement de la batterie. Les deux commutateurs S1 et S2 ont plusieurs fonctions.
– S1 sur B et $2 sur C : batterie isolée et robot à l’arrêt.
– S1 sur A et S2 indifférent: batterie en charge et robot à l’arrêt.
– S1 sur B et S2 sur D : robot sous tension. Chargeur isolé.
Le fusible fait partie du circuit imprimé et protège la batterie. En cas de
court-circuit malencontreux et après élimination du défaut, il suffit d’une goutte de soudure (pas trop généreuse) sur un autre emplacement pour activer le fusible suivant.
Il est pratiquement impossible d’alimenter la motorisation et la section « commande » d’un robot sous la même source de tension. Les moteurs génèrent des parasites que les microcontrôleurs n’apprécient pas du tout ! De plus, ces derniers requièrent une tension bien stable. Il faut impérativement créer deux tensions distinctes à partir d’une seule et unique batterie.
Nous avons conçu une alimentation indépendante sécurisée pour la section logique et commande, derrière la diode anti-retour D5.
La tension de la batterie peut varier de 4 V lorsqu’elle est déchargée (trop faible pour le module Arduino-EP) à 5,6 V en pleine charge (trop élevée pour le même module).
Nous avons précisé que notre µC nécessite une tension bien stable. Une solution existe, il suffit d’employer, pour CI2, le circuit LT1300- CN8 . Il s’agit d’un régulateur à découpage « stepup 1 step-down « , autre¬ment dit: élévateur 1 abaisseur. Celui¬ci produit la tension précise requise. Il fournit 5 V pour une tension d’entrée variant de 2,5 à 8 V sous un courant maximum de 200 à 300 mA. Il fonctionne sur le principe de la pompe de charge. Les huit condensateurs C4 à C11 jouent le double rôle de filtrage et de réservoir de tension.
Ils travaillent en association avec les deux inductances moulées L 1 et L2 de 27 µH et surtout avec la diode « Schottky » à commutation rapide D6. Il en résulte, en sortie, une tension parfaite de +5 V.
La led2, limitée en courant par la résistance R6, atteste la présence de cette tension nommée: «+5V» sur le schéma.
Pour alimenter la section de puissance, nous dérivons la tension à partir de l’inverseur S1.
Attention à la polarité de la batterie. Aucune protection par diode contre les inversions n’est possible à cet endroit du circuit. Les condensateurs C2 et C3 de forte capacité servent de réserve pour les servomoteurs.
La led1, limitée en courant par la résistance R5, visualise la tension de
puissance :«+SERVO».
Le module « Arduino-EP » gère l’ensemble des périphériques de manière très simple au niveau du câblage électronique, le programme se chargeant de tous les problèmes d’organisation.
– « PD2 » configurée en sortie com-mande directement le buzzer piézo.
– « PD3 », « PD5 », « PD6 » fournissent les signaux PWM destinés aux trois servomoteurs.
– « PD9 », « PD10» » configurées en sorties alimentent les led4 et led5, limitées en courant par les résis-tances R7 et R8.
-« PD14 »,« PD15».« PD16» utilisées en entrées numériques lisent l’état des trois touches « BPB », « BPC » et « BPH »,
Au repos, les entrées sont positionnées au potentiel positif (+5 V) via les résistances R9 à R11.
En appuyant sur une touche, l’entrée correspondante est forcée au niveau logique « bas » (0 V).
– « PD17 » est configurée en entrée analogique, èlle est employée pour lire la valeur de la tension issue de la sortie du capteur télémétrique C15.
– « PD18 », « PD19 » sont dédiées au protocole de communication I²C. « PD18 » est la ligne de données (SDA) et « PD19 » celle d’horloge (SCL). Certains peuvent penser qu’il manque, conventionnellement, les résistances de » tirage » au potentiel positif de ces deux lignes. Il n’en est rien, elles sont intégrées à l’Atmega 328 du module Arduino-EP le module de la boussole (CI4) est intégralement géré par ces deux fils.
le capteur télémétrique et la boussole prennent place sur une petite platine mue par le servomoteur central. Il convient de la relier à la base à l’aide de fils en nappe très souple n’excédant pas 20 cm de longueur. la diode « Schottky» D7 protège d’une éventuelle inversion des connecteurs. Ce modèle a été choisi en fonction de sa faible chute de tension. les condensateurs C12 à C15 filtrent et découplent la tension d’alimentation de cette section du circuit et pour chaque module.
Comme précisé au début de cet article, l’intégralité du robot est constituée de pièces de circuit imprimé découpées, ébavurées et limées. Aucun usinage de parties métalliques ou plastiques n’est à prévoir. Cette réalisation est donc à la portée de tout électronicien sachant confectionner ses circuits imprimés. Comme le montre la figure 5, le robot est constitué d’une base principale sous laquelle sont soudés les supports des servomoteurs gauche et droit. la plaque en forme de « X » sert de renfort et doit être soudée quand le robot est entièrement câblé (photo A). le servomoteur central est surélevé à l’aide de quatre entretoises filetées M3. le palonnier de celui-ci supporte la petite platine mobile de la boussole et de la tête où prend place le télémètre infrarouge. les roues sont vissées, bien centrées, sur les palonniers des servo-moteurs gauche et droit.
Voici la liste des circuits imprimés à réaliser. Certains supportent les composants, d’autres constituent les pièces mécaniques à assembler par soudages.
– Figure 6. Typon de la base robotique principale.
– Figure 7. Typon de la platine mobile supérieure.
– Figure 8. Typon de la tête supportant le capteur télémétrique.
– Figure 9. Typon du renfort inférieur en « X »,
– Figure 10. Typon des supports des servomoteurs gauche et droit.
Reproduisez-les selon la méthode photographique afin de respecter les plans de masse et obtenir un résultat impeccable. Après la gravure, effectuez les découpes périphériques et évidements le plus soigneusement possible. Pour les usinages délicats, la meilleure solution consiste à pratiquer des trous sécants.
Terminez à la lime douce et au papier de verre ou à la toile émeri.
Avant de percer les pastilles des composants, procurez-vous les différentes pièces afin de connaître précisément les diamètres des trous. Commencez avec un foret de 0,8 mm et alésez ensuite, selon nécessité. Une couche de vernis spécial pour circuit imprimé confère une protection durable et facilite le travail de soudage.
Suivez scrupuleusement le plan d’implantation des composants donné à la figure 11.
Travaillez en respectant leurs tailles. Commencez par souder les straps (ponts de liaisons), puis les résistances, les diodes, les supports de circuits intégrés (celui de l’Arduino-EP est constitué de barrettes sécables de type tulipe), les condensateurs au mylar, les connecteurs constitués de broches de barrettes sécables SIL femelles et mâles, le buzzer, les inductances, les leds, les inverseurs S1 et S2, le pont de redressement, les condensateurs chimiques, les touches et enfin, le régulateur CI1 vissé sur son dissipateur thermique.
La liaison entre la base et le circuit mobile de la boussole est réalisée avec un câble en nappe à cinq conducteurs d’une longueur approximative de 18 à 19 cm (photo B).
Afin d’éviter les désagréments survenus à l’auteur (rupture des fils), il est recommandé d’utiliser un connecteur femelle (barrette sécable) sur chaque platine et de terminer le câble en nappe par deux connecteurs mâles. Le boîtier de piles est vissé avec deux vis M3 ou collé à l’aide de mousse adhésive double faces après avoir vissé la roue folle arrière (photo C) .
Fixez les roues bien centrées sur les palonniers des servomoteurs avec de la visserie M2.
Maintenez ensuite les servomoteurs gauche, droit et central dans leurs logements à l’aide de visserie M3. Celui du centre doit être surélevé. Mettez en place la platine supportant la boussole sur le palonnier du servomoteur central à l’aide de vis M2. La tête où prend place Ie capteur télémétrique est simplement embrochée sur les connecteurs (photo D).
Il convient maintenant de vérifier minutieusement toutes les pistes et les composants (valeurs et orientations). N’insérez aucun circuit intégré hormis C12.
Placez les batteries dans leur logement et contrôlez les tensions en différents points du robot et notamment sur les supports des CI.
En basculant S1 et S2 testez la charge et la mise sous tension. Si tous les tests sont concluants, hors tension, embrochez le module « Arduino-EP « , la boussole et le connecteur à trois broches du capteur télémétrique.
Il suffit maintenant de programmer l’Arduino-EP pour animer votre robot.
• Résistances 5 % (ou 1 %) – 0,5 W
R1, R2, R3 : 20 Ω (rouge, noir, noir)
R4 : 22 Ω (rouge, rouge, noir)
R5 à R8 : 470 Ω (laune, violet, marron)
R9 à R11 : 10 kΩ (marron, noir, orange)
• Condensateurs
C1 : 1000 IJF / 35 V (électrochimique à sorties radiales) C2, C3-: 2200 µF /16 V (électrochimiques à sorties radiales)
C4 à C9 : 100 IJF / 25 V (électrochimiques à sorties radiales) C10 à C14 : 100 nF (mylar) C15:22µF/16V
(électrochimique à sorties radiales)
• Inductances
L 1, L2 : 27 µH (moulées)
• Semiconducteurs CI1 : LM317T
CI2 : LT1300-CN8 (Saint Quentin Radio) CI3 : Module Arduino-EP (Voir texte et W357 d’EPI
CI4 : Module boussole CMPS03 ou CMP03 (Lextronic)
CI5 : Télémètre infrarouge GP2D120X avec son câble (Lextronic)
D1 à D5 : 1 N4007
D6, D7: 1N5817
Led1 à Led5 : 05 mm (2 vertes et 3 rouges)
PR1 : Pont de redressement rond W01 ou équivalent
• Divers
1 support de circuit intégré à 8 broches 2 servomoteurs modifiés pour rotation
continue (Lextronic)
1 servomoteur standard BMS-410STD (Lextronic)
1 paire de roues de diamètre 65 à 70 mm (Lextronic Réf. POL 1090)
1 roue folle ou » Bali Caster » de marque Tamiya réf.70144 (Lextronic)
1 buzzer piézo de diamètre 17 mm pour circuit imprimé
2 inverseurs miniatures pour circuit imprimé
3 touches type « D6 »
1 boîtier fermé pour quatre piles R6 (Lextronic)
4 batteries Ni-MH de 1,2 V format « LR6 » ou « AA » (voir texte)
Barrette sécable femelle type « tulipe »
Barrette sécable droite femelle SIL Barrette sécable droite mâle SIL
20 cm de fils souples fins en nappe (voir texte)
Visserie métal et entretoises filetées diamètre 3 mm
Visserie métal diamètre 2 mm
1 connecteur d’alimentation de 2,1 mm
1 dissipateur thermique ML26 pour T0220
Voici la dernière étape. Vous êtes probablement familiarisés au logiciel d’édition « Arduino» et à la manipulation de ce microcontrôleur.
Dans le cas contraire, nous vous invitons à vous reporter aux numéros 355,356 et 357 d’EP (décembre 201 0 à février 2011). Nous n’allons pas revenir sur ce sujet ce mois-ci. Téléchargez et installez la version que vous souhaitez sur votre ordinateur (Windows, Linux ou Mac). L’archive, une fois décompressée, comprend le logiciel, les drivers (pilotes pour le module « Arduino »), exemples et librairies. Il manque malgré tout une librairie additionnelle qu’il convient de télécharger librement à cette adresse. http://www.grapeJabs.de/hardware/ arduino_cmps03
L’installation est simple: décompressez l’archive et copiez le répertoire « CMPS03 » ainsi obtenu dans le sous-répertoire « Libraries » du répertoire de travail du logiciel « Arduino », c’est tout!
Après installation des pilotes, lancez le logiciel, sélectionnez le port de communication: menu « Outils / Port Série ».
Le code source est bien pour comprendre chaque étape. Même s’ils deviennent rares, les lecteurs n’ayant. pas l’opportunité de se connecter à Internet peuvent obtenir nos fichiers en adressant à la rédaction un CDROM sous enveloppe auto-adressée suffisamment affranchie.
Il suffit maintenant de relier le programmateur RS232 ou USB (voir N°357 d’EP) au module « Arduino-EP », d’ouvrir le programme «Robot_autonome.pde » sous le logiciel « Arduino » et de lancer la compilation suivie du chargement (avant-dernière icône).
– Si vous employez des servomoteurs modifiés par vous-mêmes pour une rotation continue, il faut régler la position du neutre (arrêt des moteurs) en mode repos (mise sous tension ou action sur la touche centrale). Cette opération peut aussi être peaufinée dans le programme en modifiant la valeur de la variable «NEUTRE »,
– La touche centrale arrête le robot autonome, place tous les servomoteurs au neutre (ou à l’arrêt), fait émettre des petits sons réguliers au robot autonome et de brefs mouvements de la tête pour vous rappeler qu’il existe et déclenche le clignotement des deux leds à l’avant.
– La touche arrière lance le robot autonome en mode simplifié. Le module de la boussole n’est pas utilisé, seul le télémètre renseigne le microcontrôleur et gère les déplacements.
– La touche avant permet un contrôle précis des déplacements, le robot cherche l’obstacle, mémorise son emplacement (distance et orientation), puis l’évite par la manœuvre appropriée.
– Quel que soit le mode, centrale permet l’arrêt.
Soyez indulgent avec ce pauvre animal cybernétique expérimental!
« ne dispose que d’un seul capteur de distance et ne peut pas détecter un obstacle trop haut ou trop bas, Dans un souci de simplicité, la boussole est également gérée de manière simplifiée afin de bien comprendre les rouages du programme. A vous maintenant de le perfectionner et d’exploiter au maximum ses possibilités, il reste beaucoup de place en mémoire de l’Arduino-EP C’est également un bon compagnon pour un réel animal à quatre pattes, mais peut-être un peu fragile s’il est malmené !
Mergy Yves
HenryGop 29-03-2222
The financial Robot is your future wealth and independence.
PASCHKE3 08-01-2121
Thank you!!1