Un robot pour débutant



Un profilé en aluminium, deux roues et naturellement une touche d’électronique et le jeu est fait !
Un groupe d’élèves électroniciens a su mettre en pratique les connaissances acquises sur les bancs de l’école pour réaliser un robot simple dont "l’intelligence" tient dans un petit microcontrôleur adéquatement programmé.



Caractéristiques techniques :
- Alimentation : 4 piles bâtons ;
- Courant maximum consommé 40 mA ;
- Mouvement par deux moteurs CC ;
- Détecteurs d’objets avec fin de course ;
- Détecteurs de bord de table à infrarouges ;
- Contrôle à microcontrôleur (16F84A).

La microrobotique représente pour les élèves des Écoles supérieures d’électronique une activité pluridisciplinaire à même de faire converger des études réalisées dans des domaines différents et d’accroître leur motivation, tout en les aidant à comprendre les potentialités et les limites propres au monde technologique qui nous entoure.

Notre réalisation
Cet article présente un projet qui arrive tout droit du labo d’une de ces Écoles. Pour sa réalisation, de nombreuses connaissances acquises dans les domaines de l’informatique et de l’électronique et, bien sûr, les derniers progrès des microcontrôleurs ont été mis à contribution. Le robot que nous allons à notre tour construire a été développé en tant que production finale par des élèves de cinquième année. Le point de départ du projet fut de concevoir un petit robot capable de se déplacer de manière autonome sur une table (et sans tomber par terre !).
La présence de deux capteurs à infrarouges tournés vers la surface de la table permet au robot de détecter le bord et, au moyen de manoeuvres programmées, de s’arrêter, de tourner sur lui-même et de reprendre son avancement sans tomber.
Les interrupteurs de fin de course situés sur sa partie antérieure détectent des obstacles éventuels et permettent au robot de s’arrêter et de les contourner. Le premier travail de robotique a consisté à faire simple et à n’utiliser que des composants faciles à trouver et bon marché : la partie mécanique a aussi été réduite à l’essentiel.

Description de la mécanique
Pour faire avancer le robot on a choisi deux motoréducteurs Micro-Motors modèle L149.12.43 dont la particularité est leur très faible composante inductive et leur consommation de courant très réduite. Elle nous a permis de relier directement les moteurs à la ligne du PIC et d’économiser ainsi un étage de puissance. Les diodes présentes à l’intérieur du microcontrôleur permettent d’atténuer les petites surtensions dues à la composante inductive des moteurs durant les commutations. Toujours dans ce but, nous avons prévu au niveau du logiciel l’adjonction d’une petite pause afin d’éviter une inversion de marche instantanée des moteurs.
Les dimensions réduites de ces derniers permettent de réaliser un robot petit, compact et facilement utilisable sur une table. La mécanique se réduit à une simple plaque métallique profilée (en aluminium) en U.
A l’intérieur du U sont fixés les moteurs et sur le plateau supérieur on a fixé le circuit imprimé principal.
Pour les connexions électriques on s’est servi de simples connecteurs pour circuit imprimé. De chaque côté de la partie avant se trouvent des capteurs infrarouges câblés sur deux toutes petites platines et destinés à détecter les bords de la table ; les interrupteurs de fin de course sont eux aussi montés à l’avant mais sur le plateau supérieur.
Afin de permettre une détection très précoce de l’obstacle, le levier du fin de course a été allongé par un morceau de fil métallique. Comme on veut utiliser le robot sur une table lisse, sans aspérités, on a décidé de ne pas monter une roue supplémentaire (habituellement un élément pivotant) et de laisser le robot s’appuyer sur un des côtés de sa structure métallique. Ses dimensions sont d’environ 15 x 15 cm.
L’alimentation est constituée par un bloc de quatre piles bâtons (ou batteries rechargeables au Ni-Cad) : elles sont fixées par quatre Velcro à l’intérieur du U, de manière à maintenir le barycentre le plus bas possible et d’obtenir une stabilité optimale au cours de la marche. Les roues sont en plastique et ont été usinées spécialement pour cet usage ; elles ont été striées sur le bord externe afin d’augmenter l’élasticité et, partant, d’accroître l’adhérence.



Le schéma électrique

Figure 1 : Schéma électrique de la platine de contrôle.

Les quatre batteries rechargeables fournissent une tension d’environ 4,8 V déjà stabilisée alimentant le circuit : aucun régulateur n’est ainsi nécessaire. Au moment des tests, le robot a été alimenté avec des piles : on arrive alors à la tension maximale admissible par le microcontrôleur mais la puce fonctionne parfaitement. Le PIC16F84A (U1) est le coeur du circuit et il sursoit à toutes les opérations : les deux moteurs lui sont donc directement connectés, ainsi que les deux capteurs à infrarouges CNY70.
Comme le montre le schéma électrique de la figure 1, ces capteurs se composent d’une diode émettrice à infrarouges et d’un phototransistor, les deux éléments étant inclus dans le même boîtier et tournés du même côté (voir figure 6).
Le faisceau émis par le phototransistor est reflété par la surface se trouvant en face (dans ce cas la surface de la table) et revient frapper le récepteur, ce qui fait conduire le phototransistor : cela confirme la présence de la surface réfléchissante utile (le support sur lequel le robot évolue) sous le capteur, c’est-à-dire sous les roues du robot.
Quand en revanche ce dernier arrive au bord de la table, le faisceau lumineux “tape” dans le vide, il n’est pas réfléchi et le récepteur n’est pas illuminé : le phototransistor est bloqué, le microcontrôleur s’en aperçoit et agit en conséquence. Deux trimmers sont associés aux capteurs : R1 et R2 permettent d’en régler la sensibilité.
Les trimmers sont réglés pour permettre aux capteurs et donc au micro de déterminer si la surface de la table est présente ou non : ainsi, quand le robot arrive au bord de la table, il s’arrête et retourne en arrière.
Cela fonctionne mieux avec une table de couleur claire, si possible bien lisse, permettant une réflexion plus intense.
Avec une table de couleur sombre et une surface faiblement réfléchissante, des problèmes pourraient se produire à propos de cette détection (de présence du "sol"). La reconnaissance d’obstacles éventuels sur la ligne de marche du robot est confiée à deux interrupteurs de fin de course mécaniques dont le contact est en série avec le signal provenant des capteurs infrarouges et ils font accomplir au robot les mêmes fonctions.
L’orientation correcte de la liaison des moteurs se fait simplement par essais : quand le robot est sur la table et qu’il ne rencontre pas d’obstacles, la marche en avant doit être rectiligne.
Sur le circuit imprimé principal on trouve peu de composants (voir figures 2a et 3) : un quartz et une LED signalant la mise sous tension du robot à l’aide de l’interrupteur à glissière SW3 ; plus quelques résistances et les deux trimmers dont nous avons traité. C’est tout et cela nous conduit à la réalisation pratique des platines.

Figure 2a : Schéma d’implantation des composants de la platine de contrôle.

Figure 2b : Dessin, à l’échelle 1, du circuit imprimé de la platine de contrôle.

Liste des composants ET659
R1 ..... trimmer 47 kΩ
R2 ..... trimmer 47 kΩ
R3 ..... 220Ω 1%
R4 ..... 10 kΩ 1%
R5 ..... 10 kΩ 1%
R6 ..... 1 kΩ
R7 ..... 1 kΩ
C1 ..... 22 pF céramique
C2 ..... 22 pF céramique
C3 ..... 100 nF 63 V polyester
LD1 .... LED 3 mm verte
T1 ..... CNY70
T2 ..... CNY70
Q1 ..... quartz 4 MHz
SW1 .... interrupteur de fin de course
SW2 .... interrupteur de fin de course
SW3 .... commutateur à glissière vertical
U1...... PIC16F84A-EF659 déjà programmé en usine
M1 ..... motoréducteurs Micro-Motors L149.12.43
M2 ..... motoréducteurs Micro-Motors L149.12.43

Divers :
1 support 2 x 9
1 un porte-piles 4 x 1,5 V
2 barrettes mâles 4 broc hes
5 barrettes mâles 2 broches Sauf spécification contraire, toutes les résistances sont des 1/4 W à 5 %.

Figure 3 : Photo d’un des prototypes de la platine de contrôle.

Toutes les fonctions sont gérées par un microcontrôleur PIC16F84 qui analyse les informations provenant des deux capteurs optiques CNY70 et pilote directement les moteurs CC.
Les deux capteurs sont montés sur deux petites platines (voir détails figure 5) et sont en mesure de détecter quand et de quel côté du bord de la table sur laquelle le robot se déplace.




La réalisation pratique
Il n’y a aucune difficulté particulière et un débutant, s’il est un peu soigneux, s’en sortira très bien.
Tout d’abord préparez le circuit imprimé simple face dont la figure 2b vous donne le dessin à l’échelle 1:1 ou procurez-vous le. Montez tout d’abord le support du PIC, les deux barrettes et les cinq connecteurs périphériques, puis vérifiez bien ces premières soudures (ni court-circuit entre pistes ou pastilles ni soudure froide collée).
Ensuite, en suivant scrupuleusement les indications de la figure 2a (et la liste des composants) et de la figure 3, montez tous les composants en commençant par ceux ayant le plus bas profil (comme les résistances, la LED, les condensateurs céramiques et polyesters et en terminant par les plus encombrants comme le quartz (à monter couché), le commutateur à glissière et les deux trimmers. Faites bien attention à l’orientation des composants actifs (LED et PIC, repèredétrompeur en U vers l’extérieur de la platine pour ce dernier, mais ne l’insérez qu’à la fin).
A côté réalisez les deux petites platines des photocoupleurs dont la figure 4b vous donne le dessin à l’échelle 1: 1 ou procurez-vous le. Montez-y les photocoupleurs, comme le montrent les figures 4a et 5.
Fixez la grande platine sur le dessus du profilé d’aluminium, comme le montrent les photos de l’article. Montez les deux petites platines à l’avant, à l’intérieur du U. Toujours à l’avant, mais sur le dessus du profilé, fixez les deux interrupteurs de fin de course (dont vous aurez prolongé les leviers avec du fil rigide et de la gaine thermorétractable). Fixez les deux moteurs sur le bâti (voir sur le site de la revue).
Fixez le bloc de batteries rechargeables à l’intérieur du U avant du Velcro et reliez-le à la platine.
Reliez, au moyen de nappes à connecteurs, les deux petites platines à la grande et à cette dernière les deux interrupteurs et les moteurs. Le robot alimenté est prêt à fonctionner.
Comme réglage, vous n’avez qu’à régler l’orientation des moteurs pour une marche rectiligne et la sensibilité des capteurs au moyen des trimmers en fonction de la réflectivité du support (le plateau de la table).


Figure 4a : Schéma d’implantation des composants d’une des deux platines supportant les capteurs.

Figure 4b : Dessin, à l’échelle 1, du circuit imprimé d’une des deux platines supportant les capteurs.

Figure 5 : Photos du prototype d’une des deux platines supportant les capteurs et du capteur.

Figure 6 : La réflexion du rayon infrarouge produit et détecté par le CNY70 permet d’établir quand, sous le robot, la surface de la table sur laquelle il évolue cesse d’être présente.


Le programme résident du PIC
Ce "listing", écrit en Assembleur, configure en entrées les lignes RB0 et RB1 et comme sorties RA0-RA3. Il est prévu que le robot évite de la même façon les obstacles et le bord de la table : les signaux à gérer sont ceux que le Tableau 1 reporte.

         TABLEAU 1


Les quatre sorties, comme le montre le Tableau 2, commandent les moteurs.

         TABLEAU 2


Le robot contourne les obstacles et le bord de table car chaque fois que les capteurs s’activent il réagit immédiatement en exécutant la manoeuvre appropriée.
D’abord il revient légèrement en arrière, puis il tourne sur lui même dans le sens opposé à la présence de l’obstacle et il poursuit sa marche. Pour mieux comprendre le fonctionnement, regardez l’organigramme de la figure 7 et le "listing" en Assembleur de la figure 8.
On voit qu’un premier bloc nommé “setup” configure le PIC et prédispose l’interrupt du "timer" qui nous servira à obtenir les temps de pause des moteurs. Le bloc principal ("Ripeti") contrôle constamment l’état des capteurs : dès qu’il détecte le signal d’alarme, il saute aux sous programmes “FCDX” ou bien "FCSX" lesquels font exécuter au robot la manoeuvre d’évitement.
Le retard est reporté dans le sous programme "delay" lequel reçoit, par la valeur contenue dans le registre Working, la valeur de retard.

Figure 7 : Organigramme.
LIST   P=16F84A
INCLUDE

conta EQU 0CH
org 0

goto setup
org 4

Interrupts
decf conta ;décompte compteur chaque 0.065 sec
movlw 0H
movwf TMR0 ;met «timer» à zéro
bcf INTCON,T0IF ;détecte l’interruption
retfie ;retourne au point du programme
;avant les interrupts

setup
clrf conta ;met compteur à zéro
bsf STATUS,RP0 ;sélectionne pupitre1
movlw 0FFH
movwf TRISB ;port B en sortie
movlw 00H
movwf TRISA ;port A en entrée

movlw B’11010111’ ;prescaler (256) sur TMR0
movwf OPTION_REG

bcf STATUS,RP0 ;sélectionne pupitre0
bsf INTCON,T0IE ;habilite interrupts du timer
bsf INTCON,GIE ;habilite les interrupts
clrf PORTA ;met à zéro toutes les sorties

RIPETI
movlw 0AH ;avance
movwf PORTA
btfsc PORTB,0 ;collision FCDX
goto FCDX
btfsc PORTB,1 ;collision FCSX
goto FCSX
goto RIPETI

;*********************************************************
;le robot a rencontré un objet sur sa DX

FCDX
;*********************************************************
;moteur arrêté
clrf PORTA ;arrête moteur
movlw 0BH ;paramètre retard
call delay

;*********************************************************
;active commande arrière
movlw 05H ;arrière toute
movwf PORTA
movlw 19H ;paramètre retard
call delay

;**********************************************************
;moteur arrêté
clrf PORTA
movlw 0BH ;paramètre retard
call delay

;*********************************************************
;tourne à SX
movlw 06H
movwf PORTA ;tourne SX
movlw 19H ;paramètre retard
call delay

;**********************************************************
;arrêt des moteurs
clrf PORTA
movlw 0BH ;paramètre retard
call delay
goto RIPETI

;*********************************************************
;le robot a rencontré un objet sur sa SX

FCSX
;*********************************************************
;moteur arrêté
clrf PORTA ;arrête moteur
movlw 0BH ;paramètre retard
call delay

;*********************************************************
;active commande arrière
movlw 05H ;arrière toute
movwf PORTA
movlw 19H ;paramètre retard
call delay

;**********************************************************
;moteur arrêté
clrf PORTA
movlw 0BH ;paramètre retard
call delay

;*********************************************************
;tourne à DX
movlw 09H
movwf PORTA ;tourne DX
movlw 19H ;paramètre retard
call delay

;**********************************************************
;arrêt des moteurs
clrf PORTA
movlw 0BH ;paramètre retard
call delay
goto RIPETI

;**********************************************************
;sous programme de retard (le retard est passé avec W)
;chaque comptage=0,065sec (pour retard de 1sec W=15)

delay
movwf conta ;met la valeur de W sur compteur
atd
movf conta,0 ;met la valeur du compteur sur W
btfss STATUS,2 ;contrôle si compteur=0
goto atd
return
end

Figure 8 : "Listing" en Assembleur.

Conclusion
Les objectifs qu’ils s’étaient fixés ont été atteints par les élèves et cela les a beaucoup récompensés de leur investissement en temps et en travail. Au cours de la réalisation, de nouvelles pistes sont apparues pour des développements futurs.
L’intérêt suscité par ce projet a été utile, non seulement à des fins didactiques, mais aussi en tant qu’expérience de travail en groupe (c’est-à-dire de respect mutuel et de nécessaire collaboration).

1 commentaire: