Elektor, juillet/août 2007

Transcription

Elektor, juillet/août 2007
Nr. 349/350 juillet/août 2007
(B) 12,10 e • (CH) 21,50 FS • CAN 15,00 $CAN • DOM surface 14,00 e • DOM avion 17,50 e • TOM surface 1600 xpf • TOM avion 2400 xpf
platform voor elektronica
NUMÉRO D’ÉTÉ DOUBLE
www.elektor.fr
Nr. 347
MAI 2007
mensuel
(B) 6,55 e • (CH) 11,30 FS • CAN 8,35 $CAN
DOM surface 7,00 e • DOM avion 8,75 e
TOM surface 800 xpf • TOM avion 1390 xpf
www.elektor.fr
Capteurs
Actionneurs
Microcontrôleurs
Alimentations & chargeurs
Mécanique
Communications
Trucs & astuces
Divers
L 19624 - 350 - F: 10,60  - RD
l’électronique imaginative
Hors Gabarit 2007
En outre
Ours Quel cerveau pour mon robot ?
Alphanumski, le Sudoku 36 x 36
Avant-première de septembre 2007
MÉCANIQUE
6
72
142
148
Antieu-robot
Babybot
31
37
Bolo
Hunter, le chasseur
MOPS le robot
Moteur à réducteur à moment de force important pour 5 €
Naq’un-pied
« Tremblote »
TriWi
36
32
38
ALIMENTATIONS & CHARGEURS
Anti-décharge profonde pour accus
Chargeur d’accus CdNi polyvalent
Chargeur d’accus Li *
Chargeur rapide d’accumulateur NiMH *
Constante de tension
Convertisseur USB *
Des accus en double *
Des accus LiPo en parallèle
Mini-inverseur
Réducteur de tension MLI
Régulateur à découpage à entrée large 3 A réglable
Régulateur LDO avec démarrage en douceur ou suivi
zBot : alimentation piles/solaire
555 en alimentation à découpage
22
11
8
12
15
20
18
10
20
17
14
9
16
17
TRUCS & ASTUCES
Des roues maison qui tournent rond
Mesure de tension négative avec le R8C
Robot pendulaire
28
27
24
39
35
40
30
CAPTEURS
Boussole pour Mindstorms® NXT Lego
Capteur auditif stéréo *
Capteur de CO
Capteur de pouls sans fil
Capteur PIR
Capteur pour robot suiveur de ligne
Commutateur à commande sonore
Convertisseur A/N pour robots
Convertisseur N/A simple pour robots
Détecteur d’obstacles lointains à ultrasons
Détecteur d’obstacles proches à infrarouges
Du magnétophone à cassette au moteur de
propulsion de robot
Interrupteur/indicateur de surchauffe
LED comme capteur de lumière
Oreille de chauve-souris
Positionnement à réseau de photodiodes
69
50
49
58
59
48
70
68
54
62
45
55
70
71
67
63
SOMMAIRE
Robots moustachus
Système de vision CMUCam1
Télémètre infrarouge à PIC ou à Basic Stamp
Un inclinomètre pour votre robot
Un robot chercheur de lumière
Un robot détecteur d’obstacles
Un robot qui ne perd pas le Nord
66
64
60
46
44
42
56
MICROCONTRÔLEURS
Carte USB de démo à bas2 coût
Commande de servo-moteur par PC
Interface sérielle pour Propeller *
« Navigateur »
Pilotage par GPS de robot mobile
Platine de prototypage à Propeller
pour le BoeBot *
Programmateur pour LPC900 *
Programmateur STK200/300 optimisé
pour µC AVR
« TEAclipper » : programmateur « timbre-poste »
91
85
86
87
83
80
79
79
30ième année
Juillet/Août 2007
N° 349/350
Relais PIC clignotant
105
Robot-footballeur
101
zBot : étage de puissance 10 A pour moteur CC102
COMMUNICATIONS
Antenne 2,4 GHz pour véhicules robotisés
Communication IR par UART
Détecteur d’impulsion supprimée
Récepteur pour télécommandes RC5
Télécommande IR à R8C
Télécommande radio pour PDA et Smartphones
Voix de robot
zBot : liaison sans fil
116
122
122
118
123
120
119
119
DIVERS
Boîtes de construction EE de Philips
Buggy Formule Flowcode
131
124
Commande de volume automatisée
De battre, mes mains l’ont arrêté
Dompteur de couleur
Et pourtant il marche
La structure des fichiers HEX
Lucioles chaotiques à LED
Nouvelle brique moteur Lego MINDSTORMS® NXT
Racer à hydrogène
Robot marcheur hexapode
Robots footballeurs
Un robot avec une mémoire d’éléphant
128
133
133
138
140
130
ACTIONNEURS
Catapulte pour robot ... ou autre
Commande bidirectionnelle de moteur 12 V
Commande de moteur pas à pas
Commande de moteurs pas à pas
Commande de servos
Comment commander des moteurs CC de
puissance
Conversion de servo-moteur -> moteur
Contrôleur de moteur CC MLI de 3 A *
Contrôleur de moteur pas à pas à PIC12C508
MotoBox *
Pilote complet de moteur pas à pas
112
107
114
108
98
103
111
109
105
94
100
* Montage avec dessin de platine
132
141
134
137
128
Chargeur d’accus Li
Paul Goossens
Les accumulateurs au lithium, comme
les LiPo (Lithium-Polymère) et Li-Ion
(Lithium-Ion), sont d’excellents candidats
pour la fourniture d’énergie aux robots.
Leur masse, comparée à celle d’autres
R3
100k
K1
1%
VL
DCIN
BST
IC1
MAX745
DHI
20
18
C3
GND
7
8
BAT54
2
C1
10u
100n 2
19
LX
17
DLO
15
CS
14
BATT
GND
T1A
T1 = FDS6911
D2, D3 = MBRS540T3G
L1
22u
D3
D2
4
T1B
4
5
10
1
16
0V
CELL1
CELL0
THM/SHDN
REF
SETI
VADJ
STATUS
C2
10u
3
POWER IN
11
12
6
7
9
8
13
CCV
CCI
GND
IBAT
PGND
CEL1
CEL0
D1
6 1
5
JP2
3
JP1
180m
100k
1%
R5
R6
10k
R4
R2
10k
10k
R1
C4
C5
C6
100n
100n
47n
accumulateurs, est beaucoup plus faible,
ce qui soulage mécaniquement le châssis. En ce qui concerne la disponibilité,
les choses se présentent bien. On trouve
sans trop chercher plusieurs sortes de ces
accumulateurs.
Charge
La charge d’accumulateurs au lithium
est un travail de grande précision. Une
méthode incorrecte peut faire tout flamber.
Il est donc fortement conseillé de choisir
le bon chargeur. On peut en fabriquer un
assez facilement autour d’un MAX745.
250mW
1%
K2
Accu
070273 - 11
GND
Pendant la charge, l’intensité du courant
en doit pas dépasser 1C. Cela signifie que
le courant de charge d’un accumulateur
de 1 200 mAh, par exemple, ne doit pas
dépasser 1,2 A ! La force électromotrice de
ce type d’accumulateur ne doit, en outre,
pas dépasser 4,25 V par élément. Un chargeur d’accumulateur au lithium est en principe une source de courant avec une tension de sortie (précise!) maximale.
Régulation
Tableau 1.
JP1
JP2
Éléments
Fermé
Fermé
1
Ouvert
Fermé
2
Fermé
Ouvert
3
Ouvert
Ouvert
4
La tension de l’accumulateur se mesure par
l’intermédiaire de la broche 14 (BATT). Le
circuit intégré déduit le courant de charge
de la différence de tension entre BATT et
CS. Il essaie de maintenir cette différence
de tension à 185 mV. Dans notre exemple, nous avons choisi une résistance de
180 mΩ. Le courant de charge est donc de
185 mV/180 mΩ = 1,02 A. Si vous désirez
un autre courant de charge, il vous suffit
de choisir R5 en conséquence. Le calcul
est facile :
Dans notre cas, le chargeur utilise une
régulation abaisseuse. En choisissant cette
Liste des composants
Résistances :
R1,R2,R6 = 10 kΩ (CMS 0805)
R3,R4 = 100 kΩ 1% (CMS 0805)
R5 = 180 mΩ/¼ W (CMS 1210), p.ex. Digikey
P.18SCT-ND
Condensateurs :
C1,C2 = 10 µF/25 V (CMS 1210)
C3 à C5 = 100 nF (CMS 0805)
C6 = 47 nF (CMS 0805)
solution,
le chargeur
gaspillera moins
d’énergie et nous pourrons lui éviter un radiateur.
Un seul circuit intégré, IC1, se
charge de la régulation complète.
Quelques composants externes seulement
l’accompagnent pour la régulation abaisseuse, à savoir le FET T1 et les composants
qui l’entourent.
R5 = 185 mV / Icharge.
Semi-conducteurs :
D1 = BAT54 (SOT-23)
D2,D3 = MBRS540T3G (CMS), par ex.
Digikey MBRS540T3GOSCT-ND
IC1 = MAX745
T1 = FDS6911 (SOIC12), par ex. Digikey
FDS6911CT-ND
Divers :
L1 = 22 µH (JW-MILLER PM2110-220K-RC),
p.ex. Digikey M8760-ND
JP1,JP2 = cavalier avec embase SIL
2 contacts
platine EPS070273-1 (Cf. www.elektor.fr)
elektor - 7-8/2007
Le nombre d’éléments se configure à
l’aide de cavaliers. Le tableau 1 présente
les 4 possibilités. La position de ces cavaliers informe le circuit du nombre d’éléments qui sont connectés en série. Cette
information est essentielle puisque d’elle
dépend la tension maximale à appliquer à
l’accumulateur.
La tension maximale par élément d’accumulateur se règle sur l’entrée VADJ entre
3,95 V et 4,45 V. Les résistances R3 et R4
garantissent dans ce cas une tension de
seuil de 4,25 V. Comme l’entrée VADJ ne
fonctionne que sur une plage limitée, des
résistances de 1% suffisent à régler la tension très précisément!
Fabrication
La platine double-face facilite considérablement la fabrication du montage. Tous
les composants s’implantent sur la face
supérieure du circuit imprimé. Le soudage de la bobine demandera peut-être
une panne de fer plus chaude. Les fils de
connexion sont assez massifs et exigent un
peu de puissance pour monter à la bonne
température.
Après implantation des composants et
contrôle, vous pouvez alimenter le montage sous une tension de 24 V maximum.
Vérifiez que les cavaliers correspondent
au nombre d’éléments avant d’installer vos
accumulateurs LiPo ou Li-Ion à recharger.
Pour un courant de charge de 1C, la
recharge d’un élément vide prendra environ une heure et quart.
(070273-I)
Régulateur LDO avec démarrage en
douceur ou suivi
Dirk Gehrke
tionnel. Les connexions adéquates
sont représentées séparément. Les
U IN
U OUT
5
IC1 OUT 3
TPS74201 et TPS74401 peuvent
IN
7
EN
R1
Les composants décrits ci-après
fournir un courant jusqu’à, respecU BIAS
sont conçues pour répondre aux
tivement, 1,5 A et 3 A, et disposent
6
BIAS
besoins de processeurs, des DSP
d’une broche SS permettant à l’utiTPS74201
TPS74401
1
2
(traitement de signal numérique) ou
lisateur de définir le taux de rampe
SS
FB
GND
de FPGA (réseaux programmables)
linéaire de la tension de sortie.
R2
4
C1
C3
C4
C2
modernes qui requièrent des tenPour le régulateur TPS74301, la
sions d’alimentation faibles mais à
valeur de la résistance R4 (dans un
1µ
4µ7
1µ
*
intensité relativement élevée, avec
diviseur de tension) permet à l’utien outre la capacité de produire une
lisateur de sélectionner un séquenvoir texte
*
augmentation (ramp-up) de la tencement soit simultané soit proporU IN
U OUT
5
sion fournie et son séquencement
tionnel. La valeur de R4 est calculée
IC1 OUT 3
IN
7
EN
R1
selon une méthode prédéfinie. Ces
d’après les équations de la fiche de
U BIAS
deux derniers besoins ne sont pas
caractéristiques, avec l’hypothèse
6
BIAS
facilement traités par l’utilisation de
qu’un signal en rampe extérieur de
R3
TPS74301
TRACK
1
2
composants discrets. La famille des
3,3 V est appliqué sur la broche
4k99
TRACK
FB
IN
régulateurs TPS4x01 répond à ce
TRACK IN. Lorsqu’on sélectionne
GND
R4
R2
4
C1
C3
C2
cahier des charges.
la valeur de 10 kΩ pour R4, comme
À l’instant d’écriture de ces lignes, la
dans cet exemple, la sortie du régu1µ
4µ7
1µ
*
famille se compose de trois circuits,
lateur TPS74301 suivra le signal en
070231 - 11
appelés respectivement TPS74201
rampe extérieur de quelques millivolts jusqu’à ce que le TPS74301
(1,5 A avec redémarrage à chaud),
atteigne sa tension stabilisée. Ceci
TPS74301 (1,5 A avec traçage) et
Figure 1. Schémas des régulateurs TPS74201, TPS74301
s’appelle le séquencement simultané
TPS74401 (3 A avec redémarrage
et TPS74401 (cf. le texte pour les valeurs de R4 et C4).
à chaud). Elle devrait s’agrandir
(figure 2). La tension de sortie du
prochainement.
régulateur TPS74301 aura le même
La figure 1 présente un schéma de
de laquelle sera dérivée la tension de sortaux de croissance (dv/dt) que le signal en
connexion simplifié pour les trois compotie Vou. Les trois régulateurs sont capables
rampe extérieur mais un délai de redémarsants. Ces régulateurs fonctionnent avec
de fournir des tensions de sortie descenrage à chaud différent.
une de tension polarisation faible, VBIAS, et
Lorsqu’on fait passer la valeur de la résisdant jusqu’à 0,8 V et le circuit présenté
une tension d’alimentation en entrée, VIN,
en boîtier QFN comprend aussi un circuit
tance R4 à 1,78 kΩ, la tension de sortie du
de surveillance intégré avec une sortie à
drain ouvert qui passe à haute impédance
quand la tension de sortie s’approche de
la plage de régulation (fonction « alimentation bonne » ou PG = Power Good).
Le régulateur TPS74301 peut fournir un
courant de sortie jusqu’à 1,5 A et dispose
d’une broche TRACK permettant à l’utilisateur d’entrer un signal de rampe 1a suiFigure 2. Suivi du régulateur LDO TPS74301
Figure 3. Traçage du TPS74301 avec
vre par la tension de sortie, afin de réaliser
avec démarrage simultané (R4 = 10kΩ).
démarrage proportionnel
Base de temps : 2 mV/div.
un séquencement simultané ou propor(R4 = 1,78 kΩ). Base de temps : 2 mV/div.
4k99
2k49
4k99
2k49
(Texas Instruments Allemagne)
7-8/2007 - elektor
Figure 4. Redémarrage en douceur des
TPS74201 et TPS74401 avec délai de 1 ms (C4 =
1 nF). Base de temps : 2 mV/div.
TPS74301 atteint sa tension stabilisée en
même temps que le signal de suivi extérieur atteint sa tension maximum (3,3 V
par exemple). Cela s’appelle le séquencement proportionnel (figure 3). Bien que le
signal en rampe extérieur et le régulateur
TPS74301 aient des taux de croissance différents, ils auront le même délai de redémarrage en douceur (soft-start).
Pour les régulateurs TPS74201 et TPS74401,
la valeur de la capacité du condensateur peut être utilisée pour programmer
le redémarrage en douceur en rampe.
Dans l’exemple ci-contre, les valeurs de
1 nF et 10 nF pour C4 ont été utilisées
pour réaliser des rampes avec un temps
de croissance de respectivement 1 ms et
10 ms (figure 4 et 5 respectivement). Sans
condensateur attaché à cette broche, le
délai de redémarrage en douceur sera de
500 µs par défaut. Ce délai est le même
pour le TPS74301 lorsqu’on applique une
tension supérieure à 800 mV à la broche
TRACK.
(070231-I)
Bibliographie
TPS74401 3.0A Ultra-Low Dropout Linear
Regulator,
Texas Instruments Literature # SBVS066C.
TPS74301 1.5A Ultra-Low Dropout Linear
Regulator with Programmable Sequencing,
Littérature Texas Instruments # SBVS065C.
Figure 5. Démarrage en douceur TPS74201 et
TPS74401 avec délai de 10 ms (C4 = 10 nF).
Base de temps : 2 mV/div.
TPS74201 1.5A LDO with Programmable
Soft-Start, Littérature Texas Instruments #
SBVS064C
TPS74x01EVM-118 User’s Guide, Texas Instruments Literature # SLVU143.
Sequencing Power Supplies in Multiple Voltage Rail Environments by David Daniels, Dirk
Gehrke et Mike Segal, Littérature Texas Instruments # SLUP228 ou http://focus.ti.com/lit/
ml/slup228/slup228.pdf
Des accus LiPo en parallèle
pour limiter le courant de compensation. La
différence de potentiel est souvent si faible
qu’un simple réglage du courant ne fonctionnera pas. Mais une simple résistance nous
permettra aisément de limiter ce courant.
Paul
Goossens
Les accumulateurs
LiPo (Lithium Polymère)
présentent assez bien d’avantages par rapport à ceux au CdNi
ou NiMh. À côté d’un poids inférieur à capacité équivalente, les accumulateurs LiPo sont fabriqués sous une plus
grande variété de formats. Les constructeurs
profitent souvent de cette dernière caractéristique pour les téléphones mobiles, les
lecteurs mp3 et ainsi de suite.
Mais les accus LiPo ont aussi quelques
inconvénients. L’un d’entre eux est qu’ils
ne peuvent fournir qu’un courant moindre
que leurs homologues CdNi ou NiMh. La
plupart du temps, leur limite correspond
à 10 C (10 x la capacité nominale). Les
nouvelles versions atteignent déjà 15 C et
même 30 C en continu, mais leur prix est
aussi franchement plus élevé !
Cela veut dire que, d’une cellule normale
d’accumulateur LiPo de 1 000 mAh, on
peut tirer quelque 10 000 mA, soit 10 A.
Momentanément, on peut doubler le courant, mais ce sera au détriment de l’espé-
10
À la main
rance de vie
des cellules LiPo !
Dans bien des cas, nous
aimerions « sucer » un peu
plus de courant de l’accumulateur. Eh bien, c’est possible en montant plusieurs éléments en parallèle.
Limitation de courant
Brancher des cellules en parallèle est un
petit travail de soudure facile. Pas de quoi
se salir, en tout cas. Mais avant de raccorder les éléments en parallèle, il nous faut
veiller à ce qu’ils présentent exactement la
même tension à leurs bornes. À la moindre
différence entre les tensions de sources, un
fort courant de compensation va se mettre
à circuler. Ce courant doit décharger l’accumulateur à la tension la plus haute et
charger l’autre jusqu’à les porter à l’équipotentialité. Il faut aussi que ce courant
d’équilibrage reste inférieur au courant de
charge maximum (généralement 1C).
Avant de relier les cellules entre elles, il y a
donc des mesures de précaution à pendre
Réaliser l’opération convenablement
demande de connaître le courant maximum de charge permis sur les deux accus.
Ensuite, on mesure leurs tensions respectives, dont on déduit la tension de différence. On peut déjà souder ensemble les
pôles négatifs, puis on soude momentanément une résistance entre les pôles positifs.
Une résistance de quelle valeur ? Au moins
égale à la tension différentielle divisée par
le courant de charge autorisé.
Maintenant, l’accumulateur le plus rempli
va lentement transfuser une partie de sa
charge à l’autre. Au fil du temps, la différence de tension s’amenuise et le courant
de charge aussi.
Si le processus dure trop longtemps à votre
goût, rien n’empêche d’adapter de temps à
autre la valeur de la résistance pour relever
le débit. Quand la différence de tension
est devenue si petite qu’une résistance de
10 mΩ suffirait, vous pouvez hardiment
relier ensemble les deux pôles positifs.
Vous disposer dorénavant d’un accumulateur LiPo plus puissant.
(070274-I)
elektor - 7-8/2007
Chargeur d’accus CdNi polyvalent
C. Tavernier
7-8/2007 - elektor
T1
TIP32A
+VA
LED1
R2
680 Ω
*
voir texte
C1
10n
R3
150 Ω
*
R1
D1
1N4002
V+
5
K1
3
K2
4
K3
10
9
THI
8
FCHG
PGM0
15
V+
DRV
PGM1
PGM2
PGM3
BAT+
14
+BATT
2
IC1
K4
1
BATT-
16
REF
BATT
VLIM
REF
MAX713
68k
R4
BAT–
7
C5
C2
10µ
25V
1µ
25V
R5
22k
Sauf s’il est suffisamment frugal au point
de se contenter de simples piles sans
vous ruiner, ou bien s’il s’agit d’un robot
écolo qui s’alimente grâce à des panneaux solaires, votre robot fait certainement appel à des batteries pour assurer
son alimentation en énergie.
Bien que de nombreux chargeurs soient
aujourd’hui disponibles sur le marché, ils ne
sont pas toujours adaptés aux besoins, en termes de types et de nombre de batteries qu’ils
sont capables de traiter. En outre, certains
d’entre eux sont assez peu respectueux des
batteries qui leur sont confiées ce qui peut
sérieusement abréger leur durée de vie.
Cet article vous propose donc de réaliser
votre chargeur sur mesure, grâce à un circuit déjà ancien mais toujours d’actualité :
le MAX713 de Maxim. Et, comme tous les
robots sont différents, nous n’allons pas
vous proposer un schéma complètement
terminé mais au contraire vous expliquer
comment adapter certains de ses éléments aux caractéristiques des batteries
que vous aurez à recharger.
Le schéma de base d’utilisation du MAX713
vous est présenté sur la figure ci-jointe
mais, comme vous pouvez le constater,
un certain nombre d’éléments n’ont pas de
valeurs indiquées. De plus, divers straps de
configuration sont présents. Il faut savoir
en effet que, par le biais de ces différents
éléments, le MAX713 permet de charger
de 1 à 16 cellules (une cellule est en fait
un élément de base 1,2 volt), de définir le
courant de charge, de définir le courant
de maintien en fin de charge et enfin de
sélectionner le mode de détection de fin
de charge. Pour ce qui est de ce dernier,
et afin d’être compatible de toutes les batteries que vous serez susceptibles d’utiliser sur votre robot, nous avons éliminé
le mode par détection de température
qui nécessite une sonde thermique (CTN
ou équivalent) au sein de la batterie. Les
résistances R4 et R5 ainsi que la liaison à
demeure des entrées THI et TLO programment donc le MAX713 en mode détection
de variation de tension en fin de charge.
Nous allons donc voir maintenant comment
déterminer les autres éléments qui restent
à votre disposition afin que vous puissiez
réaliser un chargeur parfaitement adapté à
vos besoins. Notez dès à présent que, pour
ce qui est des straps de configuration, vous
pourrez établir les liaisons à demeure sur le
circuit imprimé que vous dessinerez pour
votre chargeur, ou bien les relier à des commutateurs à plusieurs positions pour réaliser
un chargeur polyvalent.
TEMP
CC
TLO
GND
6
13
12
-BATT
11
C3
C4
10n
10µ
25V
R6
*
070301 - 11
Il faut tout d’abord décider du courant de
charge de vos batteries dont on appellera
C la capacité exprimée en ampère.heure et
Ifast ce courant. Il se calcule grâce à la relation : Ifast = C/T où T est le temps de charge
désiré exprimé en heures. Attention ! Le
MAX713 ne gère pas les temps supérieurs
à 4 heures. En outre, veillez à ne pas choisir un courant Ifast supérieur à 4.C car c’est
actuellement le courant maximum admis
lors d’une charge rapide par des batteries
CdNi et NiMH. Si vous pouvez choisir un
courant plus faible, cela ne sera que mieux
et prolongera leur durée de vie. Programmez ce temps en câblant les pattes PGM2
et PGM3 du MAX713 conformément au
tableau 1.
Choisissez ensuite le nombre de cellules à
charger simultanément. Pour des batteries
monoblocs, ce nombre s’obtient en divisant la tension nominale de la batterie par
1,2 volt. Ainsi, une batterie de 9,6 volts
comporte 8 cellules. Si ce nombre est égal
ou supérieur à 11, le schéma proposé n’est
pas utilisable tel quel et il est alors préférable de charger vos batteries en deux fois.
Programmez ce nombre en câblant les pattes PGM0 et PGM1 du MAX713 conformément au tableau 2.
Choisissez alors l’alimentation continue
non stabilisée de notre chargeur (VA sur la
figure) de façon à ce qu’elle soit supérieure
d’au moins 1,5 volt à la tension maximum
de la batterie à charger. Si votre batterie comporte 4 cellules ou moins, cette
règle n’est plus valable car l’alimentation
du MAX713 ne doit pas être inférieure à
6 volts.
Déterminez alors la puissance maximum
dissipée par T1 en appliquant la relation
suivante : PD = (VA – VBAT–) . Ifast où VBAT–
est la tension minimum de la batterie à
recharger. Choisissez T1 en conséquence
et munissez-le, si nécessaire, d’un radiateur
approprié.
Déterminez alors la valeur de la résistance R1 pour que le courant absorbé par
le MAX713 soit compris entre 5 et 20 mA
en utilisant la relation : R1 = (VA – 5) / I où
I est compris entre 5 et 20 mA.
Enfin, déterminez la valeur de la résistance
R6 en utilisant la relation : R6 = 0,25/Ifast
et sa puissance en utilisant la relation PR6
= 0,50 . I fast (la théorie indique en fait
0,25 . Ifast mais il est souhaitable de prendre un facteur de sécurité de 2, d’où cette
relation).
Votre chargeur est alors opérationnel et
son utilisation est fort simple mais, en
raison des automates contenus dans le
MAX713, il est impératif de réaliser les
connexions au niveau de PGM0 à PGM3
11
avant de mettre le montage sous tension
sinon elles ne peuvent pas être prises en
compte correctement. Cela ne pose pas
de problème pour un montage câblé à
demeure mais, si votre chargeur comporte
des commutateurs de configuration à ce
niveau, il faut nécessairement faire une
séquence d’arrêt suivie d’une remise sous
tension pour valider toute modification de
configuration réalisée par manoeuvre de
ces commutateurs.
La LED s’allume lorsque le chargeur est en
mode charge rapide (courant Ifast déterminé ci-dessus). Elle s’éteint lorsque la
charge rapide est terminée et que le chargeur passe en mode charge d’entretien. Le
courant généré dans ce mode est suffisamment faible pour que la batterie puisse être
laissée à demeure connectée au chargeur
si nécessaire.
Afin que notre exposé soit sans ambiguïté, voici à titre d’exemple le calcul d’un
tel chargeur pour un pack de 4 batteries
NiMH de 1,2 volt et de 1 800 mA.h de
capacité que nous souhaitons charger en
2 heures.
• Calcul de Ifast : Ifast = C/T soit 1,8/2 soit
encore 0,9 A ou 900 mA.
• Connexion de PGM2 et PGM3 : PGM2
reliée à BAT– et PGM3 reliée à REF puisque nous souhaitons un temps de charge
de 2 heures soit 120 minutes (nous aurons
en fait 132 minutes au maximum).
• Connexion de PGM0 et PGM1 : PGM0 à
V+ et PGM1 à BAT– puisque notre batterie
comporte 4 cellules.
• Détermination de VA : VA = 6,3 volts
au minimum. On choisira 9 volts afin de
s’affranchir des variations éventuelles du
secteur.
• Puissance dissipée par T1 : P D =
(9 – 4*) . 0,9 soit 4,5 watts. On choisira
par exemple un TIP32A qui nous donnera
une marge de sécurité excellente (PDmax =
40 watts).
* nous avons estimée que la tension des batteries complètement déchargées était de 4 volts.
• Calcul de R1 : R1 = (9 – 5)/0,01** soit
400 ohms. On prendra la valeur normalisée la plus proche soit 390 ohms.
** nous avons choisi un courant de 10 mA.
• Calcul de R6 : R6 = 0,25/0,9 soit
0,27 ohm.
• Calcul de la puissance de R6 : PR6 =
0,5 . 0,9 = 0,45 watt. Un modèle ½ watt
convient donc bien.
Comme vous pouvez le constater, il nous
a fallu moins de cinq minutes pour réaliser un chargeur parfaitement adapté à nos
batteries. À vous de jouer ...
(070301-I)
Liens Internet
Fiche de caractéristiques du MAX713
www.maxim-ic.com/quick_view2.
cfm/qv_pk/1666
Tableau 2. Programmation du nombre de cellules
grâce à PGM0 et PGM1.
Nombre de
cellules
Tableau 1. Programmation du temps de charge
grâce à PGM2 et PGM3.
Temps de charge
maximum (mn)
PGM3
PGM2
22
V+
REF
33
V+
BAT–
45
Non connecté
REF
66
Non connecté
BAT–
90
REF
REF
132
REF
BAT–
180
BAT–
REF
264
BAT–
BAT–
PGM1
PGM0
1
V+
V+
2
Non connecté
V+
3
REF
V+
4
BAT–
V+
5
V+
Non connecté
6
Non connecté
Non connecté
7
REF
Non connecté
8
BAT–
Non connecté
9
V+
REF
10
Non connecté
REF
11
REF
REF
12
BAT–
REF
13
V+
BAT–
14
Non connecté
BAT–
15
REF
BAT–
16
BAT–
BAT–
Chargeur rapide d’accus NiMH
Antoine Authier
Karl Walraven
La capacité des accumulateurs NiMH (Nickel Métal Hydrure) de format AA les plus
récents peut atteindre 2900 mAh. Avec un
chargeur conventionnel de première génération (qui fournissait un courant de charge
de 125 mA) le temps de charge serait donc
extrêmement long.
Le chargeur que nous vous proposons devrait
accélérer ce processus de plus en plus courant qu’est la recharge de ce type d’accus
(respect de l’environnement oblige !).
12
Conçu autour du MAX712 de Maxim (Integrated Products pour être complet, repris,
pour la petite histoire, par Dallas Semiconductor) et fonctionnant en mode commuté, il peut fournir un courant de charge
rapide maximum de Icharge = 250 mV/R1,
soit pas moins de un ampère si R1 vaut
0,25 ohm. Dans ces conditions, les accumulateurs seront donc chargés en un peu
plus de deux heures.
Le circuit de Maxim intègre non seulement
toute l’intelligence, mais aussi un convertisseur analogique numérique (CAN), un
détecteur de fin de charge, un minuteur et
un module de surveillance de la température. Les 4 broches de configuration qu’il
comporte en permettent un paramétrage
au goût de l’utilisateur. Ces dernières servent à paramétrer le nombre d’éléments
à charger, la durée maximale de charge
ainsi que la méthode de détection de
fin de charge (point d’inflexion ou pente
décroissante). On se référera à la fiche de
caractéristiques (datasheet) (et à l’article
précédent) pour en savoir plus.
Le MAX712 est destiné aux accumulateurs
elektor - 7-8/2007
NiMH, fin de charge au point d’inflexion
de la courbe de tension ∂V/∂t = 0.
La tension maximale d’alimentation est
15 V. La tension d’alimentation doit être
supérieure de 2 V au minimum à la tension
maximale de charge afin de compenser les
fluctuations de tension lors de la charge.
Ainsi, pour une tension maximale de
charge de 1,6 V par élément, une tension
d’alimentation de 15 V permet de charger
8 accumulateurs en série. Une tension de
12 V (fournie par, e.g., une batterie de voiture) permettra de (re)charger 6 éléments.
L’alimentation du montage doit pouvoir
délivrer 1 A. Il est important de veiller à
ce cahier des charges. S’il n’est pas satisfait le circuit intégré ne fonctionnera pas
correctement, et risque de ne pas détecter
correctement la fin de charge rapide (avec
les risques de dommage que cela induit
pour les accus connectés).
Paramétrage du circuit:
V+
PGM2
REF
PGM2
BAT-
Condensateurs :
C1 = 220 pF
C2 = 100 nF
C3,C4,C6,C7 = 10 µF/63 V radial
C5 = 1 µF/25 V radial
V+
PGM3
REF
PGM3
BAT-
BF245C
C5
THI
PGM0
PGM1
PGM2
PGM3
3
PGM0
4
PGM1
9
PGM2
10
PGM3
REF
16
1
C2
K4
100n
REF
VLIM
1u
25V
15
5
K2
R2
68k
4k7
BC547B
D1
V+
IC1
MAX712
7
TEMP
R3
TLO
R4
BATCC
T4
PBYR745 D2
BC557B
2
12
D3
PBYR745
8
FCHG
14
DRV
BAT+
L1
T3
220uH
GND
K3
T2
1k
V+
PGM1
REF
PGM1
BAT-
BC547B
10u
63V
10u
63V
V+
PGM0
REF
PGM0
BAT-
R5
T1
C6
K5
C3
C4
+BATT.
10u
63V
10u
63V
-BATT.
11
C1
220p
R1
0R22
R1 = 0Ω22/5 W
R2 = 68 kΩ
R3 = 22 kΩ
R4 = 1 kΩ
R5 = 4kΩ7
C7
K1
13
Résistances :
T5
IRF9520
3
1
2
6
Liste des composants
K6
+8V...+15V
1A3
22k
• Les broches PRGM0/PRGM1 permettent
de régler le nombre d’éléments à charger.
Remarque concernant l’utilisation d’un
porte-pile(s) lors de la (re)charge : chacun
des contacts peut représenter une résistance série de 1 Ω ce qui se traduit par une
différence de potentiel de 1 V sous 1 A.
Dans cette configuration la tension d’ali-
BAT070213 - 11
GND
Selfs :
L1 = 220 µH
Semi-conducteurs :
D1 = LED
D2,D3 = PBYR745
T1 = BF245 B ou C
T2,T3 = BC547B
T4 = BC557B
T5 = IRF9520
IC1 = MAX712CPE
Divers :
K1 à K4 = embase autosécable à
1 rangée de 5 contacts
K5 = bornier à 2 contacts au pas de
5 mm
K6 = jack d’alimentation mâle
encartable
7-8/2007 - elektor
BATPGMx
REF
PGMx
V+
13
mentation ne sera peut-être pas suffisante,
il est donc préférable de vérifier ce détail
avant toute réalisation.
• Pour des raisons de sécurité il est préférable de bien configurer la durée
maximale de charge avec les broches
PRGM2/PRGM3.
• Sur ce montage, le dispositif de contrôle
de la température des accumulateurs est
désactivé.
À la fin de la charge rapide, le circuit alimentera les accumulateurs avec un courant d’entretien (goutte à goutte).
Intéressons-nous à l’aspect électronique du
circuit. T1 est utilisé en source de courant
et fournit les 8 mA nécessaires à l’alimentation du MAX712. D3 évite que l’accumulateur ne se décharge dans le circuit au cas
où le montage ne serait pas alimenté.
Nous avons réalisé une petite platine
pour ce montage. L’implantation des
composants n’appelle pas de remarque
particulière. Il suffira de ne pas publier de
mettre en place les 2 ponts de câblage.
La self L1 est une self torique de bon format classique. Les embases K1 à K4 permettent de fixer les différents paramètres
de charge.
La LED D1 s’allume lorsque le circuit est
en charge rapide. T5 pourra être monté
sur un dissipateur thermique si nécessaire.
Les caractéristiques de la self L1 ne sont
pas critiques, une self de déparasitage de
100 µH/5 A classique fera l’affaire. De
même les diodes D2, D3 et le transistor
MOSFET T5 ne sont pas critiques dans
cette application. Vous pouvez utiliser
n’importe quelle diode Schottky qui supporte 3 ampères, et mettre à contribution
n’importe quel MOSFET avec une résistance de drain plus faible.
Comme le principe de calcul est le même
que dans le cas du chargeur pour NiCd à
MAX713 de l’article précédent, nous vous
renvoyons à l’exemple de calcul proposé à
cet endroit. Les tableaux à utiliser pour le
paramétrage de ce circuit sont les mêmes
que ceux donnés dans le dit article.
(070213-I)
Régulateur à découpage
à entrée large 3 A réglable
Luc Lemmens
Le circuit PTN78060 fait partie d’une série
de régulateurs mixtes à découpage intégrés (ISR, Integrated Switching Regulators)
à haut rendement de notre bon vieux
Texas Instrument (TI). Le composant double face, proposé sans boîtier, présente
d’excellentes caractéristiques thermiques
et est conforme RoHS. Les composants de
la famille PTN78060 fonctionnent avec
une plage remarquablement large de tensions d’entrée.
Composant
Ventrée
Vsortie
PTN78060Wa(x)
7
à 36 V
2.5
à 12,6 V
PTN78060HA(x)
15
à 36 V
11.85
à 22,0 V
PTN78060AA(x)
9
à 29 V
–15
à –3V
14
GND
2
VI
GND
7
VO
6
PTN78060
UI
VO VO
INH ADJ SNS
3
INH
4
UO
5
C1
UO Sense
R SET
C2
0W05
1%
100µ
RL
070115 - 11
Composant
PTN780x0W
Notez que la version –A fournit une tension de sortie négative.
Les circuits ont un rendement très élevé
lors de l’abaissement de tension (stepdown) pour des charges allant jusqu’à
3 A.
Les circuits PTN conviennent à une grande
variété d’applications universelles opérant
à partir d’alimentations CC de 12 V, 24 V
ou de 28 V parfaitement régulés, et sont
donc l’idéal pour faire fonctionner des unités électroniques à basse tension à partir
d’une batterie à très haute tension de 24 V
1
PTN780x0H
Vsor (requise)
(V)
RSET (standard value)
(kΩ)
Vsor (réelle)
(V)
Plage Vent
(V)
2,5
ouvert
2,5
7 to 25
3,3
78,7
3,306
7 to 33
5,0
21,0
4,996
7 to 36
12,0
0,732
12,002
14,5 to 36
12,0
383
12,000
15 to 36
15,0
15,0
14,994
18 to 36
18,0
4,42
18,023
21 to 36
22,0
95,3
21,998
26 to 36
récupérée sur une chaise roulante électrique et intégrée dans un robot.
On peut donner à la tension de sortie
VO n’importe quelle valeur sur une large
plage de réglage en utilisant une résistance externe unique R SET, répondant à
l’équation :
RSET = 54,9 kΩ×(1,25V/VO –VMIN) – Rp
Si la broche 4 est laissée en l’air, la tension
de sortie prendra par défaut la valeur de
elektor - 7-8/2007
tension minimum. En se limitant au deux
régulateurs à tension de sortie positive,
pour la version –W, VMIN et Rp seront respectivement de 2,5 V et 6,49 kΩ ; pour la
version ­H, 11,824 V et 6,65 kΩ.
Pour que la sortie reste stabilisée, la tension d’entrée doit dépasser, d’une tension
différentielle minimum, la valeur de la tension souhaitée en sortie. Une autre considération concerne la plage de modulation
de largeur d’impulsion (PWM, Pulse-Width
Modulation) du circuit de commande
interne du régulateur. Pour un fonctionnement stable, le rapport cyclique de service
ne devrait pas être inférieur à un certain
pourcentage minimum. Ceci définit le
ratio maximum conseillé entre les grandeurs des tensions d’entrée et de sortie du
régulateur.
Pour obtenir des performances satisfaisantes, la plage de tensions d’entrée opérationnelles du circuit PTN78060x doit satisfaire les exigences suivantes :
1. Pour les composants PTN78060W fournissant des tensions de sortie inférieures à
10 V, la tension minimum d’entrée est la
plus grande de (VO+2 V) ou de 7 V.
2. Pour les PTN78060W fournissant des
tensions de sortie égales ou supérieures à
10 V, la tension d’entrée minimum est de
(VO+2,5 V).
3. La tension d’entrée maximum pour le
PTN78060W est la valeur la plus faible de
10VO et de 36 V.
augmente sa température. Si l’augmentation est trop forte, la protection thermique
commence par couper la tension de sortie
de temps en temps.
4. Pour des tensions de sor tie du
PTN78060H inférieures à 19 V, la tension
d’entrée minimum est la plus grande de
(VO+3 V) et de 15 V.
Le dispositif d’inhibition peut être utilisé
partout où il s’avère nécessaire de couper
la tension de sortie. Le module d’alimentation coupe la tension de sortie lorsque
la commande d’inhibition (broche 3) est
reliée à la masse, par exemple par un commutateur à transistor à effet de champ.
5. Pour des tensions de sor tie du
PTN78060H supérieures ou égales à
19 V, la tension d’entrée minimum est de
(VO+4 V).
Enfin, une attention suivie doit être portée à la qualité des condensateurs pris
aux bornes de VI et VO car ce sont eux
qui déterminent la stabilité du régulateur
et ses performances globales et ce jusqu’à
un degré certain. Pour résumer l’information exhaustive donnée sur la sélection des
condensateurs dans les fiches de caractéristiques, la valeur minimale à donner à C1
est de 2,2 µF (!) sous forme de condensateurs céramique pour l’unité –W et de
14,1 µF (!!) pour l’unité –H. Les condensateurs au tantale sont déconseillés.
À titre d’exemple, le tableau donne la
plage de tensions d’entrée opérationnelles
pour quelques tensions de bus de sortie
classiques.
Les modules sont protégés contre les anomalies de charge avec une fonction de
limite de courant continu. Si une anomalie de charge est constatée, le courant de
sortie augmente jusqu’au seuil limite. Une
tentative de tirer un courant excédant ce
seuil forcera le module à diminuer progressivement sa tension de sortie. La fourniture
du courant à la charge se poursuit jusqu’à
ce que l’anomalie disparaisse. Après la disparition du problème, la tension de sortie
est rapidement rétablie. Lorsqu’il limite le
courant de sortie, le régulateur supporte
une dissipation de chaleur supérieure, qui
De même, à la sortie du régulateur, le
condensateur C2 ne devrait pas avoir une
valeur inférieure à 100 µF, capacité obtenue à l’aide de condensateurs électrolytiques à ESR (résistance série) faible.
(070115-I)
Constance de tension
Alexander Wiedekind-Klein
7-8/2007 - elektor
TR1
CTX50-4
1
C1
C4
47µ
16V
100n
STI
4
1
FB = 1V25
P
S
2
3
D1
C6
MBRA130LT3
Uout = 12V
750mA
2
3
10µ
50V
R5
5
6
7
FB
SYNC/SHDN
T1
EXT
8
4
1
4
1
LDO
CS+
MAX668
REF
FREQ
PGND
C2
C3
1µ
220n
3
7
R2
FDS6680
IC1
2
5k6
10
8
3k0
5
3
6
2
R1
R4
C5
560p
R3
1k
9
0Ω05
Le principe du montage est celui d’un régulateur à découpage compact qui, lorsque
les tensions d’entrée fluctuent entre 13 et
25 V, délivre une tension de sortie stable et
continue de 12 V sur une charge consommant 750 mA. La réalisation tripolaire lui
permet de remplacer facilement un régulateur de tension classique. Le régulateur
à découpage mixte demande un FET de
puissance CMS pour T2 et, pour un bon
Uin = 13V ...25V
100k
L’alimentation d’un robot doté de moteurs
relativement puissants, malgré des accumulateurs à faible résistance intérieure, peut
se retrouver parasitée par des impulsions
ou flancher lorsque la charge est élevée.
Et alors? Un stabilisateur de tension peut
fort bien y remédier. Pas toujours, les circuits intégrés à trois broches ne sont malheureusement pas armés pour faire face à
toutes les situations. Dans certains cas, la
solution ne peut venir que d’un stabilisateur spécial.
C8
C9
47µ
16V
47µ
16V
070280 - 11
15
rendement (environ 90%), une diode de
commutation Schottky (D1). Le composant le plus spécial est un transformateur miniature, typique des régulateurs à
découpage. Nous avons choisi un CTX504 de Coiltronics.
La limitation d’intensité est définie par R4.
La tension de sortie est déterminée par le
diviseur (R2 + R5)/R3. Elle est réglée de
telle façon que la chute de tension sur R3
soit de 1,25 V (= tension de retour sur la
broche 5 d’IC1). On obtiendra d’autres
tensions de sortie avec d’autres diviseurs
de tension. On peut bien sûr réduire l’intervalle de variation des tensions d’entrée
si l’on souhaite des tensions de sorties
inférieures.
Les fichiers Gerber de la platine échantillon sont disponibles gratuitement sur le
site www.elektor.fr. Les composants CMS
ont les formes suivantes :
R1 à R3, R5, C3 à C5 = 0603, C2 = 0805,
IC1 = SSOP12, T1 = SO8.
Les condensateurs CMS sont céramiques,
des condensateurs électrolytiques à faible
résistance série (ESR) sont indispensables
pour C1, C8 et C9 ; R4 est une résistance
CMS de 50 mΩ/1 W.
(070280-I)
zBot: alimentation piles/solaire
Jens Altenburg
POWER
D7
Solar Panel
1N4001
JP6
POWER
ON
T9
IC5
RFP30P06
7805
+5V
R30
10k
L’un des problèmes les plus importants des
plates-formes robotiques mobiles est celui
de l’alimentation. À part quelques systèmes spéciaux, les piles et accumulateurs
T10
R31
C13
C14
10µ
25V
10µ
25V
47k
BC337
GND
R26
0Ω1
F1
R24
0Ω1
10A T
82k
BATT
R27
2k
R22
2k
R29
7
VCC
D8
V BATT
1N5408
16
1
R28
18k
sont les sources d’énergie électrique les
plus courantes dans les robots.
Le système d’alimentation du zBot [1] est
composé de deux parties, l’accumulateur
principal et les piles auxiliaires. La source
d’énergie principale est une batterie d’accumulateurs CadNi ou NiMH. Sa taille a
été adaptée à celle du porte-accumulateurs
du châssis Tamiya (six éléments de 1,2 V
1 400 mAh au format C). Cette source
d’énergie est mise à contribution pour l’alimentation des moteurs CC et des servos.
Le système auxiliaire, deux piles alcalines au format AAA, n’alimente que le
microcontrôleur.
La troisième source d’énergie (en option)
2
RG1
N.C.
SIGN
MAX472
SHDN
OUT
GND
C12
RG2
IC6
4
6
SIGN
5
8
V CHARGE
R23
51k
3
100n
070171 - 11
est le panneau solaire. Il n’est pas vraiment
nécessaire, mais il contribue à allonger
l’autonomie du robot.
Le circuit principal d’alimentation du zBot
offre une caractéristique spéciale : le circuit de régulation de charge monté autour
d’un MAX472. Pour un fonctionnement
efficace, nous devons connaître la capacité exacte de l’accumulateur. En imagi-
nant la courbe de décharge, nous savons
que la tension est pratiquement stable tout
au long du temps de décharge et qu’elle
tombe brutalement quand l’accumulateur
est au bout de sa capacité. Ce temps est
très court, si bien que le robot pourrait être
perdu.
Une simple surveillance de tension ne nous
donne pas l’information dont nous avons
elektor - 7-8/2007
besoin. Le seul moyen d’obtenir des valeurs
exactes est de surveiller la décharge. Le
MAX472 délivre deux valeurs : l’intensité du courant à travers R24//R26 sous la
forme d’une tension proportionnelle sur la
broche 8, et le sens de ce courant (SIGN).
Les deux valeurs permettent de calculer la
charge (panneau solaire) ou la décharge de
la batterie d’accumulateurs.
L’alimentation auxiliaire est représentée dans le module CPU. Les deux piles
alcalines alimentent seulement la CPU, le
modem radio et le système de navigation
(compas).
La raison de cette séparation des alimentations est simple. À l’aide du système
auxiliaire, le zBOT communique sans fil
avec l’opérateur. Ainsi la source d’alimen-
tation indépendante renforce la sécurité du
système.
(070171-1)
[1] Le document complet intitulé
Zbot – the Robot Experimental Platform
(en anglais) est disponible au téléchargement gratuit sur le site elektor.
Le fichier s’appelle EPS070172-11.zip.
555 en alimentation à découpage
Martijn Geel
+12V
R2
L1
47k
33µH
D1
18k
7
6
2
C7
THR
OUT
BC557
BUZ11
C1
C2
5
T3
C3
1k
TR
CV
R7
R5
3
NE555
C6
470µ
T2
T1
IC1
1
220n
R = 0,6 / I
R
DIS
220n
470µ
R4
D2
≥14V
C5
C4
47n
470µ
R3
BC547
220p
470 Ω
R1
+U OUT
R6
4
1k
8
4k7
Cette alimentation à découpage est
construite autour d’une puce de temporisateur 555 et fournit au maximum 40 V à
partir d’une source de 12 V. À l’aide d’une
zener, on règle très aisément la tension de
sortie qui doit être plus grande que 12 V
(il y a toujours au moins 12 V à la sortie
de ce circuit).
Le mode de travail du NE555 diffère ici de
la manière traditionnelle. En configuration
normale, la sortie de l’oscillateur intégré
reste plus longtemps an niveau haut que
bas. Dans cet arrangement-ci, il est possible de maintenir la sortie haute plus brièvement que basse.
Le NE555 commute le FET T1 en tout ou
rien. Quand T1 conduit, L1 emmagasine
de l’énergie. Quand T1 cesse de conduire,
cette énergie est transmise par la diode
Schottky D1 à C1 et C2, si bien que la
tension sur ces condensateurs commence
à monter.
La tension est limitée par la diode zener
D2. Si la tension dépasse celle de zener,
T3 commence à conduire. De ce fait, la
tension sur la broche 5 du NE555 descend avec pour conséquence que la broche 3 est au niveau haut moins longtemps
et passe plus de temps au niveau bas. T1
conduira alors moins longtemps et il y aura
moins d’énergie stockée dans L1, ce qui
stabilisera la tension de sortie.
Le limiteur de courant se compose de R6,
R5 et T2. Quand la chute de tension sur R6
070023 - 11
dépasse 0,6 V, T2 commence à conduire
et entraîne à son tour T3, d’où une baisse
de la tension qui limite le courant. C5 et
R7 assurent un démarrage en douceur. R1
peut se situer entre 22 KΩ pour 15 V et
10 kΩ pour 40 V en sortie.
Par précaution, ne dépassez pas la tension
maximale de 40 V pour la diode zener. T1
et T2 supportent au maximum 50 V. Le
FET n’est pas critique, vous en avez peutêtre encore dans vos stocks personnels qui
feront l’affaire. Si la bobine chauffe, il se
peut que le noyau soit trop petit ou le fil
trop fin. La diode Schottky est le seul composant réellement critique. N’utilisez pas
de diode ordinaire, elle chaufferait exagérément. On peut encore en trouver dans
les anciennes alimentations pour PC (au
besoin, mesurez-la, elle doit afficher 0,2 V
à l’état conducteur).
L’alimentation présentée ici peut délivrer
environ 200 W. La tension d’alimentation
à l’entrée peut varier entre 7 et 15 V. Souvenez-vous que le NE555 ne peut tolérer
que 15 V au maximum.
Cette alimentation n’est pas à l’épreuve des
courts-circuits ! Il est recommandé d’insérer un fusible lent dans la ligne du 12 V.
(070023-I)
Réducteur de tension MLI
Stefan Brandstetter
Ce circuit a été développé pour permettre
d’utiliser la remorque d’un véhicule auto-
7-8/2007 - elektor
mobile pour réseau de bord 12 V comme
remorque de poids lourd (24 V). Le circuit
a été adapté à plusieurs reprises pour des
clignotants gauche/droite, des feux d’ar-
rêt, l’éclairage de la plaque d’immatriculation et le phare de recul. Il fonctionne
sans problèmes depuis des années. Grâce
à la modulation d’impulsions en largeur
17
24V DC
C4
R5
1k5
220µ
63V
D2
R1
1k
P1
R4
2x
1N4148
50k
14
20k
IC1
D3
R2
1k
D1
C1
1
2
16V
IC1 = 4093
7
8
IC1.A
&
3
10µ
25V
5
6
9
IC1.B
&
STP20NE06FP
IC1.C
&
10
T2
D5
4
12
13
IC1.D
&
D4
75V
11
16V
C3
10n
50V
3µ3
25V
T1
R7
BC547B
R3
0Ω047
C2
47 Ω
R6
4k7
(MLI, PWM pour Pulse Width Modulation
en anglais), ce circuit compact ne dissipe
qu’une très faible puissance. Il ne nécessite
pas non plus de courant de repos.
IC1.A, C2, R1, R2 et P1 forment un générateur peu complexe d’impulsions modulées
en largeur. Normalement (T1 bloqué), l’élément RC R4/C3 active IC1.B, de sorte que
le signal rectangulaire peut commander le
commutateur FET T2. La résistance shunt
R3 permet de détecter le courant de sortie.
Si le courant de sortie admis est dépassé,
T1 commute et court-circuite C3. IC1.B ne
peut plus envoyer le signal rectangulaire
au transistor de commutation. Le courant
de sortie devient nul. T1 est bloqué et C3
peut de nouveau être rechargé par R4. Le
signal PWM parvient de nouveau à T2 dès
que le seuil de commutation (Ub/2) de IC1.
B est dépassé. On dispose ainsi, même en
cas de court-circuit permanent, d’un certain comportement impulsionnel. La tension de bord de 24 V est un peu élevée
pour le circuit intégré CMOS 4093 servant
de trigger de Schmitt. Elle est réduite à la
valeur sûre de 16 V par R5, D1 et C1. D4
et D5 protègent T2 des pointes de tension
causées presque inévitablement dans le
circuit par l’inductance des lignes. T2 est
un FET standard canal N dont la tension de
claquage dépasse 100 V.
Le dimensionnement du circuit indiqué ici
s’applique à des lampes 12 V ne consommant pas plus de 60 W. R3 (47 mΩ) limite
4W
070127 - 11
typ. 12V
le courant à environ 12 A. Les lampes, dont
la résistance ohmique à froid est faible, ne
causeront alors aucun problème lors de
l’allumage. P1 permet d’ajuster le rapport
impulsion-pause à environ 1:3 (durée de
commutation 25%). Le circuit peut être
redimensionné pour d’autres plages de
courant. Il peut aussi être converti en un
dispositif simple et à faibles pertes permettant de modifier la vitesse de rotation ou
l’éclairage.
(070127-I)
Des accus en double
pour augmenter
la sécurité de
fonctionnement
Paul Goossens
Alimenter les circuits sur accumulateurs
est une méthode éprouvée pour fournir
de l’énergie à des appareils indépendants
du secteur. Le gros inconvénient, c’est que
ces batteries semblent se retrouver à plat
au moment le plus incongru. Et vous voilà
surpris par cet appareil qui brusquement
vous refuse tout service.
Il y a des cas où ce n’est rien qu’un peu
ennuyeux, il en est d’autres où les conséquences risquent de se révéler catastrophiques. Songeons à un modèle réduit d’avion
en vol dont le récepteur n’entend plus rien
parce que la batterie n’a plus de « jus » !
Une aventure tout sauf agréable, vous pouvez nous faire confiance !
18
Solution
La solution est en réalité très simple : mettez-en deux ! Au moment où l’un des accus
est vide, l’autre prend le relais et fournit le
courant nécessaire.
Cela doit évidemment se produire automa-
elektor - 7-8/2007
Vbat
D1
T2B
LM809M3-4.38
R3
IC2
3
R2
100k
D3
BAT54
FDV301N
ENABLE_A
1M
Vbat
3
IC1D
11
&
13
12
IC1B
4
&
IC1A
5
6
3
&
1
2
Aok
Vcc
2
RST
GND
R8
10k
1
T4
FDV301N
100n
K2
T3
*
C1
6
5
2
D5
100k
1k
IN BAT A
8
7
T1A
1
R1
R10
4
BAT54
GND
C3
100n
GND
K1
GND
D2
100n
POWER OUT
4
10
T5
T6
FDV301N
R6
100k
ENABLE_B
IC1C
10
&
R9
10k
IC3A
3
&
IC3B
1
2
4
GND
tiquement, il faut donc un circuit approprié
qui s’en occupe.
Ce projet a été pensé en fonction de circuits
&
GND
5
6
GND
&
3
13
12
GND
Vcc
2
RST
Bok
GND
GND
Vbat
8
9
11
LM809M3-4.38
BAT54
C4
100n
GND
IC3D
8
9
D4
FDV301N
R7
&
IC4
1
1
IC3C
1M
K3
T2A
R5
*
C2
8
7
Vbat
S1
ON
T1, T2 = IRF7329
IC1, IC3 = 4093
C5
10k
IN BAT B
D6
100k
1k
R11
6
5
T1B
3
2
BAT54
R4
GND
table (composée de IC1.A et IC3.D) qui
détermine lequel des deux accus doit être
en service.
100n
IC1E
IC3E
14
C7
7
7
100n
14
GND
070343 - 11
truc, c’est que quand un FET est conducteur, le canal est passant dans les deux
sens. Du coup, la chute de tension sur la
Au moment où les deux groupes d’accumulateurs sont déchargés, ils vont alimenter le circuit ensemble. C’est que…
mieux vaut un peu d’alimentation que pas
du tout !
Les composants D3, R8 et C3 provoquent
un retard à la commutation, ce qui fait que
l’enclenchement de l’autre accumulateur
ne se produit qu’après un certain délai. Il
n’est pas souhaitable lors du changement
de source que les deux accus alimentent
le circuit simultanément. La différence de
potentiel entre les deux branches conduirait à un courant de compensation beaucoup trop élevé.
Commutateur
(comme le récepteur d’un modèle réduit) qui
fonctionnent sur 4 éléments au CdNi. Le circuit est très petit et, avec des CMS, sa platine
peut être tellement petite qu’elle pourra se
glisser dans des appareils existants.
Simple
Pas de complication de fonctionnement.
IC2 mesure la tension aux bornes de l’accumulateur A. Dès que celle-ci tombe sous
4,38 V, l’entrée RESET passe du niveau
haut au niveau bas. IC4 fait pareil, mais
pour l’accumulateur B.
Les deux signaux vont à une bascule bis-
7-8/2007 - elektor
Pour la commutation, nous préférons un
FET à un transistor bipolaire. Cela permet
déjà d’épargner le courant de base du bipolaire. Un inconvénient du MOS-FET est qu’il
a toujours une diode intrinsèque. La diode
constitue un embarras dans ce circuit. Un
des accus va en fait charger l’autre à travers cette diode. On pourrait circonvenir la
difficulté en branchant en série une diode
qui l’en empêcherait. Malheureusement, les
diodes provoquent toujours une chute de
tension. Même une Schottky abaisserait la
tension de 0,3 V environ.
Pour se sortir d’embarras, utilisons un
second MOSFET polarisé en inverse. Le
Liste des composants
Attention : tous les condensateurs et
résistances sont des CMS du type 0805 !
Résistances :
R1,R2,R5,R6 = 100 kΩ
R3,R7 = 1 MΩ
R4,R8,R9 = 10 kΩ
R10,R11 = 1 kΩ
Condensateurs :
C1 à C6 = 100 nF
Semi-conducteurs :
D1 à D4 = BAT54 (SOT-23)
D5,D6 = LED rood (SMD 1206)
IC1,IC3 = 4093 (SOIC-14)
IC2,IC4 = LM809M3-4.38 (SOT-23)
T1,T2 = IRF7329 (SOIC-8)
T3 à T6 = FDV301N (SOT-23)
Divers :
câbles de connexion
platine EPS070343-1 (cf. www.elektor.fr)
19
diode interne est éliminée !
Les LED D6 et D5 indiquent quel accumulateur est en service.
chez sur les deux entrées d’alimentation
(K2 et K3) une batterie de 4 cellules CdNi.
La sortie K1 sera alors connectée au circuit
que vous avez à alimenter.
est en usage. Si jamais les deux batteries
étaient vides, vous le remarqueriez à ce
que les deux LED seraient allumées en
même temps.
(070343-I)
Utilisation
L’interrupteur S1 enclenche l’alimentation. Les LED vous diront quelle batterie
Le circuit est d’un emploi très simple. Bran-
Mini-inverseur
Alexander Wiedekind-Klein
R1
C4
0Ω
Et quand vous avez besoin d’une tension
négative, comment faites-vous? Ce n’est
pas si facile lorsque la charge, l’encombrement et la consommation sont à limiter
au maximum. Le problème peut également
se poser à de petits systèmes autonomes comme les robots. Lorsqu’il a
besoin de petites tensions négatives
de l’ordre de –5 V alors qu’il ne dispose que de +5 V, il est fréquent
que l’électronicien fasse appel,
avec raison, à Maxim.
Le MAX232 est sans doute le plus
célèbre des circuits intégrés de
ce fabricant. Il s’agit d’un adaptateur de niveau « sans fer » pour
interfaces sérielles avec pompes
de charge intégrées. Il n’est pas
100µ
16V
le seul de son genre. Le MAX660
fonctionne sur le même principe
mais offre une tension de sortie
plus stable et un meilleur rendement. Il peut fournir l’« image
spéculaire » de n’importe quelle
tension d’entrée comprise entre
1,5 V et 5,5 V. Pour une tension
100n
8
1
2
C2
LV
FC
IC1
OSC
C+
6
7
MAX660
4
C–
OUT
5
1
3
2
C1
C3
100n
4µ7
25V
3
C5
L1
10µH
100µ
16V
de 5 V, vous pouvez compter sur
–4,7 V (valeur moyenne) pour une
charge de 100 mA. Le rendement
sera de l’ordre de 96% pour 10 mA et
encore de 88% pour 100 mA. A vide, le
circuit intégré ne consomme que 120 µA.
Il y a peu à dire sur le montage. La résistance nulle sur la broche 1 définit la fréquence de travail. Elle sera de 80 kHz avec
R1 et de 10 kHz seulement sans elle. L’association de L1 et C5 n’a d’autre
+5V
effet que de réduire l’ondulation
de la tension de sortie et le choix
de l’inductance n’est pas aussi critique qu’il le serait pour une self
de stockage.
Vous trouverez les fichiers Gerber de la platine sur le site www.
elektor.fr. Les composants R1,
STI
C1 et C4 sont des CMS 603,
C3 est un condensateur CMS
au tantale. Pour IC1, vous avez
le choix entre les deux boîtiers
SO8 MAX660CSA et MAX660M,
L1 est une inductance CMS de
–5V
10 µH, 300 mA.
070279 - 11
(070279-I)
Convertisseur USB
Jörg Schnyder
Il ne suffit pas d’acheter un petit appareil, par exemple une interface pour programmer et déboguer un microcontrôleur,
encore faut-il assurer son alimentation
par un bloc secteur massif. La situation se
dégrade encore davantage quand on est
en déplacement sans aucune prise secteur
en vue. Le bus USB peut venir directement
à la rescousse quand la tension d’alimentation est de 5 V. Pour des tensions plus
20
élevées, il faut recourir à un convertisseur
USB. Ce petit convertisseur survolteur à
découpage peut fournir des tensions atteignant 15 V avec un courant maximum de
sortie de 150 mA.
Le LM3578, dont le circuit interne est
représenté dans la figure 1, est un convertisseur de tension universel à découpage. Dans notre cas, il est utilisé comme
convertisseur survolteur (Step-Up Conver-
ter). Le schéma de la figure 2 indique les
éléments nécessaires. Pour effectuer la
conversion, le transistor interne est commuté à l’état passant jusqu’à ce qu’il soit
bloqué par le comparateur ou par le circuit de limitation de courant. Le courant
collecteur passe par l’enroulement L1 qui
emmagasine alors l’énergie magnétique. Le
courant continue à passer par L1 lorsque
le transistor interne est bloqué, mais cette
fois par la diode D1, vers le consomma-
elektor - 7-8/2007
Valeurs de R5 et R6 pour d’autres
tensions de sortie :
6V:
R5 = 47kΩ,
R6 = 9,1kΩ
12V:
R5 = 110kΩ,
R6 = 10kΩ
15V:
R5 = 130kΩ,
R6 = 9,1kΩ
Le tracé de la petite carte du circuit est
reproduit dans la figure 3. Hormis le
connecteur et le bornier, tous les composants sont de type CMS.
(070119-I)
Liens Internet
teur. La tension de l’enroulement est inversée et vient s’ajouter à la tension d’entrée.
La tension de sortie est alors composée
de la somme de la tension d’entrée et de
la tension induite dans l’enroulement. La
tension de sortie dépend du courant de
charge ainsi que du temps de commutation du transistor interne de l’état bloqué à
l’état passant et réciproquement. La régulation est effectuée en appliquant la tension
de sortie au comparateur de la puce par le
diviseur de tension R5/R6. C5 sert à fixer
la fréquence de commutation qui doit être
de l’ordre de 55 kHz. Le réseau R4, C2,
C3 sert à la compensation de boucle. Les
3 résistances 1 Ω R1, R2, R3 en parallèle
servent de détecteur de courant destiné
à limiter le courant de commutation (des
résistances de moins de 1 Ω sont difficiles
à obtenir sous forme de CMS). L’ondulation de la tension de sortie est déterminée
par la valeur et la résistance interne des
condensateurs C11, C8, C7 et C6. L’utilisation de plusieurs condensateurs permet
d’abaisser la résistance interne totale tout
en limitant l’encombrement en hauteur de
la carte. L2, C1, C9 et C10 servent de filtre
d’entrée. Attention ! La résistance de l’enroulement L2 ne doit pas dépasser 0,5 Ω.
Le bus USB est raccordé par une embase
USB de type B encartable. Un bornier avec
un espacement de 5,08 mm monté sur la
Site de l’auteur
www.systech-gmbh.ch
Liste des composants
(pour U s = 9 V)
1
Résistances :
carte peut fournir la tension de sortie. Les
câbles peuvent, bien entendu, être aussi
soudés directement. Il suffit de percer 2
trous supplémentaires dans la carte en
guise de dispositif antitraction.
(tout en CMS 1206)
R1 à R3 = 1 Ω
R4 = 220 kΩ
R5 = 82 kΩ
R6 = 10 kΩ
Condensateurs :
Comme nous n’avons pas encore réussi
à inventer le mouvement perpétuel, il est
évident que le courant d’entrée du circuit
est supérieur à son courant de sortie.
(tout en CMS 1206)
C1,C4 = 100 nF
C2 = 2nF2
C3 = 22 pF
C5 = 1nF5
On peut se baser sur une règle
empirique :
Condensateurs tantale :
(tout en CMS 7343)
C6 à C8 = 68 µF/20 V
C9,C10 = 47 µF/16 V
C11 = 68 µF/20 V
Courant d’entrée =
courant de sortie * tension de sortie /
tension d’entrée / 0,8
En clair :
100 mA de courant de sortie avec 9 V de
tension de sortie nécessitent du bus USB
un courant d’entrée d’environ 225 mA !
Selfs :
L1 = 820 µH (CMS CD105)
L2 = 47 µH (CMS 2220)
Semi-conducteurs :
D1 = diode Schottky SK34 CMS
IC1 = LM3578AM (CMS SO8)
Divers :
L1
47µH
820µH
8
+5V
D–
D+
GND
R4
1
220k
K2
2
3
C2
4
1
C3
2
22p
3
2n2
USB
-IN
UIN
C
IC1
I LIM
+IN
LM3578AM
E
OSC
D1
6
R5
SK34SMD
7
82k
L2
K1
K1 = bornier à 2 contacts au pas de
5 mm (optionnel)
K2 = embase USB de type B
dessin de la platine téléchargeable
gratuitement depuis www.elektor.fr
5
4
2
7-8/2007 - elektor
100n
47µ
16V
47µ
16V
1n5
R1
R2
R3
C11
C8
C7
C6
C4
68µ
20V
68µ
20V
68µ
20V
68µ
20V
100n
R6
10k
C5
1Ω
C10
1Ω
C9
1Ω
C1
070119 - 11
3
21
Anti-décharge profonde pour accus
Tilman Küpper
22
IRLML6402
8
2
BT1
5
820k
R2
3
6
R3
100k
R4
100k
R1
130k
En intégrant une protection contre la
décharge profonde dans l’alimentation, on peut éviter que les accumulateurs d’un appareil laissé en circuit
se déchargent totalement. Elle interrompt automatiquement l’alimentation quand la tension des accumulateurs descend au-dessous d’un
seuil inférieur (ici par exemple 9,5 V).
L’interruption ne cesse que lorsque
la tension de l’accumulateur dépasse
un seuil supérieur (en l’occurrence
10,5 V), par exemple après le branchement d’un chargeur. La consommation du circuit de protection
contre la décharge profonde devrait
être elle-même aussi faible que possible.
Le composant ICL7665 d’Intersil se trouve
au cœur du circuit de protection. Il comporte 2 comparateurs avec référence de
tension et se distingue par sa consommation extrêmement faible, même pas 3 µA.
Dans notre cas, seul le premier comparateur est nécessaire. Ses seuils sont positionnés aux valeurs indiquées plus haut
2 V à 12,5 V. La fiche technique du
comparateur ICL7665 fournit tous les
détails sur le choix de valeurs appropriées des résistances.
Le circuit de protection est réalisé
en technique CMS, ce qui permet
de le monter même dans un boîtier
de petite taille. On pourra se passer d’outils spéciaux s’il est possible d’équiper la carte de résistances
qui ne soient pas microscopiques.
Un fer à souder normal à panne
fine suffira. Pour plus de sécurité,
la carte équipée et testée peut être
placée dans un morceau de gaine
rétractable avant d’être montée.
T1
HYST1
RL1
HYST2
OUT1
IC1
ICL7665
OUT2
SET1
1
7
SET2
4
070087 - 11
au moyen des résistances R1 à R3. T1, un
MOSFET canal P, met en circuit ou hors
circuit la charge RLoad selon l’état de ce
comparateur.
Les valeurs de seuil ou l’hystérésis peuvent
être adaptées en fonction des caractéristiques
désirées en modifiant la valeur des résistances R1 à R3. L’augmentation de la valeur de
R3 jusqu’à 300 kΩ élève le seuil supérieur de
(070087-I)
Un grand merci pour tous les précieux conseils des membres du forum
de.sci.electronics.
Liens :
fiche technique IRL7665 :
www.intersil.com/data/fn/fn3182.pdf
fiche technique IRLML6402 :
www.irf.com/product-info/datasheets/data/
irlml6402.pdf
elektor - 7-8/2007
Robot pendulaire
Angle
Filtre
Gyroscope
Accéléromètre
Régulateur
Vitesse
Vitesse
angulaire
Potentiomètres
Microcontrôleur
David den Boer
Le robot pendulaire le plus connu, du grand
public également, est le Segway, une invention de Dean Kamen [5]. Cette petite voiture à deux roues, sur le même essieu, est un
moyen de transport personnel qui agrémente
de sa présence les rues de nombreuses grandes villes. Le principe de l’équilibre sur deux
roues a inspiré beaucoup de constructeurs
de robots et beaucoup sont arrivés à un bon
résultat. En témoignent d’autres exemples,
comme le NBOT, construit par D. Anderson [3] ou « Joe le Pendule », oeuvre d’une
équipe de l’école polytechnique de Lausanne
[2]. Les robots de cette sorte contiennent
quantité de capteurs et une commande à
un ou plusieurs microcontrôleurs (figure 1).
Beaucoup s’y sont attelés, la réussite est
difficile, puisse cet article aider à lever
quelques obstacles.
Physique
Le but du jeu est naturellement de faire
avancer et reculer le robot de la même
façon sans qu’il se couche. Son centre de
gravité doit rester en permanence au-dessus du robot. Le problème est analogue à
celui qui consiste à maintenir en équilibre un manche de balai sur le bout d’un
doigt. Il est connu des cybernéticiens sous
le nom de pendule inversé. Nous avons
appris à l’école en cours de physique que
la période d’un pendule simple était proportionnelle à la racine carrée du quotient
de la longueur de son fil par l’accélération de la pesanteur: la période est donc
plus longue si le fil du pendule est plus
long (voir l’équation 1). Nous pouvons en
déduire que plus le centre de gravité d’un
robot pendulaire est placé haut, plus sa
période est grande et qu’il est donc plus
facile de l’équilibrer. Nous supposons
donc que pour qu’un robot pendulaire
fonctionne bien, il est préférable que son
24
Motor G
Pont-H
Motor D
Encodeur
Axe
Signal MLI
(Modulation de Largeur
d’Impulsion / PWM)
070294 - 11
centre de gravité soit assez haut placé.
Pour le réaliser, nous pouvons fabriquer
un robot de grande taille mais également
monter son centre de gravité en plaçant
assez haut des composants lourds, des
accumulateurs, par exemple, ou artificiellement à l’aide de masses supplémentaire,
en le lestant plus près de la tête que des
pieds, pardon, des roues.
Un capteur d’accélération permet
de mesurer l’accélération à
laquelle le capteur est soumis. Cette accélération est
déterminée en fonction de
son sens. Nous prendrons comme exemple ADXL202 de Analog Devices qui est
assez couramment utilisé. Ce capteur peut
mesurer l’accélération dans deux directions
perpendiculaires entre elles. Comme ce
capteur est aussi sensible à l’accélération
statique de la pesanteur (g), il est possible
de déterminer, avec le capteur, l’angle que
fait le robot avec l’horizontale. Les accélérations que le capteur détecte sont représentées sur la figure 2 par les vecteurs am1
en am2. Quand le capteur n’est soumis à
aucune autre accélération, il n’est sensible
qu’à l’angle qu’il fait avec la direction de
l’accélération de la pesanteur (et l’accélération de la pesanteur elle-même, qui est
constante). A partir du moment où le capteur est également soumis à une
accélération dynamique (a), il la
Régulation
La régulation du robot demande la
connaissance de nombreuses grandeurs.
La première est, naturellement, l’angle que
fait le robot avec la verticale lorsqu’il est
debout: si le robot est penché, il risque de
tomber plus tôt. La vitesse avec laquelle
cet angle varie (vitesse angulaire) est la
deuxième grandeur importante. Lorsque le
robot passe avec une certaine vitesse par
son point d’équilibre, l’angle qu’il fait avec
la verticale est nul. Le robot n’est toutefois
pas dans un état stable, il passe en effet
par son point d’équilibre avec une certaine
vitesse angulaire. La régulation doit pouvoir anticiper sur ce point; cette vitesse
angulaire est donc une grandeur indispensable à la régulation du robot. Nous
en arrivons enfin à la vitesse de déplacement du robot, puisque l’objectif est de
pouvoir maîtriser la position du robot. En
ramenant ces trois grandeurs aux moteurs,
il est possible de régler la stabilité du robot
(voir l’équation 2). Vous pouvez retrouver
les bases physiques de cette stratégie de
régulation dans [1]. Vous y retrouverez
également les équations de mouvement
qu’elles impliquent.
Capteurs
Pour accéder aux grandeurs que nous
avons mentionnées plus haut, on utilise le
plus souvent un capteur d’accélération et
un gyroscope.
détecte
aussi. C’est le
cas, par exemple, lorsque le robot avance
ou recule. L’accélération résultante am2
dépend alors de l’accélération dynamique, de l’accélération de la pesanteur et
de l’angle. Vous voyez d’ici le problème
que cela pose: au moment où le robot se
déplace, on ne peut pas dériver directement du signal du capteur l’angle que fait
le robot avec la verticale.
Un gyroscope permet de déterminer la
vitesse angulaire à laquelle ce capteur se
déplace. Le signal de sortie est directement
proportionnel à la vitesse avec laquelle le
capteur tourne autour de son axe. L’inté-
elektor - 7-8/2007
gration de façon simple de ce signal permet de déterminer l’angle que fait le robot
avec la verticale. Le problème est ici celui
de la précision. Les erreurs s’additionnent.
Avec une très petite erreur de mesure
du capteur, disons de 0,1 °/s par mesure,
nous obtenons,
après 100 mesures et intégration, une erreur
de 10 °. Nous pourrions
construire un robot pendulaire qui ne
comporte qu’un gyroscope comme capteur, mais nous le verrions après quelque
temps se mettre à osciller et perdre sa stabilité. L’intégration amplifie la faible dérive
de ce genre de capteur.
L’association d’un gyroscope et d’un capteur d’accélération permet d’échapper
aux défauts des deux capteurs. On leur
associe généralement un filtre dit « de
Kalman ». Celui-ci fait la « somme » de
la valeur mesurée par le gyroscope, de
la valeur mesurée par le capteur d’accélération et de l’angle calculé lors du cycle
de mesure précédent. Lors de la sommation, ces trois valeurs sont pondérées
les unes par rapport aux autres.
Les facteurs de pondération
appliqués sont déterminés dynamiquement à
l’équilibrage. Comme,
la plupart du temps,
les facteurs de pondération concourent rapidement
vers une valeur,
il est aussi possible de partir d’un
rapport constant
(équation 3). On
détermine les facteurs de pondération pertinents au
cours des mesures
d’étalonnage.
Les moteurs d’un robot sont,
d’ordinaire, pourvus de codeurs.
Ceux-ci délivrent des impulsions en fonction de la rotation des moteurs. En comptant le nombre d’impulsions par unité de
temps, et donc les intervalles de temps qui
séparent les impulsions, il est possible de
déterminer la vitesse de rotation des roues
et, à partir de là, la vitesse du robot. La
méthode qui fournit la meilleure précision
est celle qui produit le plus grand nombre
d’impulsions par tour de roue.
Transmission et commande
La transmission est encore un point qui
demande attention. Quand le robot se
balance à l’équilibre, les moteurs commutent régulièrement d’avant en arrière et
réciproquement. L’association de moteurs
7-8/2007 - elektor
et d’engrenages ne se passe pas sans frottements et sans jeu. Quand la tension de
commande des moteurs augmente, la
transmission ne délivre pas son énergie
directement, il y a un certain décalage.
Beaucoup d’applications s’en accommodent mais, dans le cas d’un robot pendulaire, les passages par zéro sont fréquents
et c’est autour du zéro que la régulation
joue. En demandant au programme du
a
am1
am2
g
g
070294 - 12
T = 2π
l
g
T
Débattement pendulaire [s]
g
Accélération de la pesanteur [m/s2]
l
Distance entre le point de rotation et le centre de gravité [m]
PWM = k1 ⋅ θ + k2 ⋅ θ + k3 ⋅ v
θ
Angle de positionnement du robot [°]
θ
Vitesse de variation de l’angle [°/s]
PWM
Pilotage des moteurs 0-100%
v
Vitesse du robot [m/s]
k1...k3
Facteurs de contre-réaction, constante
θ B [ n] = k4 ⋅ θ B [ n −1] + k5 ⋅ θG [ n] + k6 ⋅ θ v [ n]
θG [ n]
Vitesse angulaire déterminée par le gyroscope [°/s]
θ B [ n]
Angle du robot, calculé lors de la mesure n [°]
θ v [ n]
Angle du robot, déterminé par le capteur d’accélération
lors de la mesure n [°]
θ B [ n −1]
Angle du robot, calculé lors de la mesure n–1 [°]
k4 ...k6
constantes
25
cesseurs plus petits qui délivrent leurs
informations à un processeur central. On
peut ainsi diviser les temps de mesure et
de réglage, ce qui facilite un peu le travail
de programmation.
Addition des parties
microcontrôleur de compenser le décalage dans la commande des moteurs, le
robot gagnera beaucoup en stabilité. Les
performances du robot, son aptitude à rester vertical, dépend également des performances des moteurs et des accumulateurs.
Plus les moteurs pourront fournir d’énergie, mieux le robot pourra faire la preuve
de ses talents d’équilibriste.
Architecture
De nombreuses opérations doivent s’effectuer quasi simultanément dans la boucle
de régulation du programme qui tourne
sur le microcontrôleur. Cette boucle collecte les signaux des capteurs, effectue ses
calculs et commande le robot. Il est, en
outre, souvent souhaitable de communiquer en même temps avec un ordinateur,
pour l’acquisition des données, par exemple. Il peut être, de plus, judicieux de ne
pas prendre un seul processeur, même
relativement puissant mais plusieurs pro-
26
Un robot pendulaire comporte de nombreux composants dont l’ensemble doit
maintenir la machine à la verticale: capteurs, filtres éventuels, régulation, commande et transmission. Assembler et
essayer ces composants en une seule fois
est très ambitieux mais les chances de
réussite sont plus élevées si les composants
sont essayés et étalonnés séparément. Une
bonne méthode, pour ce faire, consiste à
ajouter provisoirement un petit bras supplémentaire au robot. Ce petit bras se fixe
par une articulation comportant un potentiomètre. L’autre extrémité du petit bras est
pourvue d’une roue qui s’appuie sur le sol.
Quand le robot commence à perdre l’équilibre, la position du potentiomètre varie et
donc sa résistance. La résistance du potentiomètre est proportionnelle à l’angle que
fait le robot avec la verticale et peut donc
être utilisée à des fins d’étalonnage. Il est,
en outre, important de choisir un potentiomètre dont l’axe tourne facilement.
La régulation constitue une première étape.
Comme nous disposons, avec le petit bras,
d’une mesure de l’angle, nous pouvons
essayer la régulation et régler le robot.
Comme nous l’avons dit, une rétroaction
de l’angle que fait le robot avec la verticale, la vitesse angulaire et la vitesse de
progression du robot sont nécessaires pour
sa régulation. Il est possible de déterminer
théoriquement les facteurs de rétroaction
concernés. Les calculs demandent toutefois une description physique complète du
robot et la connaissance du comportement
des moteurs. Il est plus simple de déterminer ces facteurs expérimentalement. On
peut le faire, par exemple, en connectant
plusieurs potentiomètres analogiques ou
numériques au microcontrôleur. Le programme qui tourne sur le microcontrôleur
lit la position des potentiomètres et convertit les valeurs correspondantes en facteurs
de rétroaction. On peut ensuite régler en
s’armant de beaucoup de patience. Une
première étape consistera, par exemple, à
amplifier le facteur de rétroaction de l’angle. Si ce facteur est trop petit, le robot
réagira trop lentement; s’il est trop grand,
le robot se balancera rapidement autour de
son point d’équilibre. Dans le dernier cas,
on peut réduire ce facteur de rétroaction
et augmenter celui de la vitesse. Le robot
gagnera ainsi rapidement en stabilité. On
peut terminer en amplifiant la rétroaction
de la vitesse. Cette amplification permettra au robot de mieux tenir sur place. Une
trop grande rétroaction de cette grandeur
déstabiliserait toutefois le robot.
Vient ensuite l’étalonnage des capteurs.
Les valeurs de mesure des capteurs (gyroscope, capteur d’accélération) peuvent être
lues par l’ordinateur par l’intermédiaire du
microprocesseur. Les capteurs qui fournissent leur information par un signal modulé
en largeur d’impulsion sont très valables
ici. En comparant le résultat de la mesure
d’un tel capteur avec celui du potentiomètre sur lequel est monté le petit bras,
on peut en déduire facilement l’angle et
la vitesse angulaire. Pendant l’étalonnage
il n’est pas indispensable que le robot soit
motorisé. On peut donc couper le moteur
et faire aller et venir manuellement le robot
de façon à faire varier angle et vitesse
angulaire et procéder à l’étalonnage. Lors
de l’étalonnage du capteur d’accélération
il est recommandé de faire aller et venir
le robot lentement de façon à maintenir
l’accélération dynamique aussi petite que
possible pour ne plus avoir affaire qu’à
l’accélération de la pesanteur.
Le calcul de l’angle et de la vitesse angulaire constitue une dernière étape: on combine ici la mesure des capteurs de façon
à pouvoir obtenir par approximation l’angle que le robot fait avec la verticale et
la vitesse à laquelle cet angle varie. Nous
décrivons dans cet article quelles opérations de calcul le permettent. On peut
déterminer les facteurs de pondération
en déplaçant le robot pendant un certain
temps (une minute, par exemple) tout en
collectant les résultats de mesure des capteurs (capteur d’accélération, gyroscope et
potentiomètre du petit bras). On détermine
ensuite sur le PC les facteurs de pondération avec un tableur.
(070294-I)
Liens Internet
[1] http://robotics.ee.uwa.edu.au/theses
/2003-Balance-Ooi.pdf (néerlandais)
Ce document concerne un document
de fins d’études, période au cours de
laquelle fut réalisé un robot pendulaire.
L’étude entre dans le détail des modèles physiques et mathématiques du
problème.
[2] http://leiwww.epfl.ch/joe/
Ecole Polytechnique de Lausanne. Comporte un certain nombre de petits films
intéressants.
[3] www.geology.smu.edu/~dpa-www/
robo/nbot/
Il s’agit là du site Web de D. Anderson, le
concepteur du NBOT.
[4] www.dena.demon.nl
Site Web néerlandais décrivant la réalisation d’un robot pendulaire.
[5] www.segway.nl
Importateur du Segway.
[6] www.sparkfun.com
Fournisseur de circuits imprimés dotés
d’un capteur d’accélération et d’un
gyroscope.
elektor - 7-8/2007
Mesure de tension négative
avec le R8C
IC1
+2V5
LM317
+12V
+2V5
R1
10
VCC
AN2
P17
AN1
P16
AN0
11
12
13
14
15
16
–2V5
D2
10
27
11
26
12
25
13
24
14
23
15
22
16
D3
D4
–12V
D5
D6
V WHEEL
D7
21
P13
R5
20
P12
+12V
19
P11
P10
R7
R13
R9
R11
R19
R15
18
P32
13
17
P33
+2V5
2
8
SUB D37
VDD
EN
S1
MUX
S2
IC3
D
S3
S4
IC2
–12V
–12V
47k
9
AN3
D1
56k
8
28
VSS
D0
LM337
–2V5
100 Ω
R2
15
16
1
4
5
6
7
12
ADG408 S5 11
A2
S6
A1
S7
A0
S8
VSS
3
10
9
R6
R8
R14
R10
R12
R20
10k
7
9
10k
6
29
E
10k
+2V5
5
8
39k
–2V5
AN4
7
30
10k
4
31
39k
AN5
LIFT EN
V LIFT
R/W
47k
R8C Module
6
10k
3
32
10k
100 Ω
2
RS
5
J2
1
–8V
VO
39k
J1
R18
+12V
+8V
VDD
3
39k
100 Ω
VSS
2
+12V
K1
LCD
1
4
BC547A
–2V5
J3
+2V5
R3
LC DISPLAY
1N4001
T1
R16
10k
D1
100 Ω
RE1
GND
14
100 Ω
R4
–12V
070010 - 11
Sven van Vaerenbergh
UZ Brussel, service de radiothérapie
Pour une « table d’hercule » (une petite
plateforme élévatrice électrique) du centre
hospitalier de Bruxelles (UZ), nous devions
concevoir un circuit capable de contrôler
plusieurs tensions de commande et d’arrêter la table en cas de nécessité.
Les déplacements verticaux de la plateforme
étaient commandés par une tension continue
variant entre + et -8 V, son amplitude déterminant la vitesse et sa polarité, le sens des déplacements. Le contrôle de quelques autres tensions fixes était également demandé.
Nous avons réalisé ce projet à l’aide d’un
module R8C d’Elektor choisi pour la facilité
avec laquelle il était possible d’y connecter
un module LCD et pour la qualité de son
convertisseur analogique/numérique (CAN)
sur 10 bits embarqué.
La connexion de l’affichage LCD (2 x
16 caractères) est identique à celle de la
carte d’expérimentation d’Elektor (mars
2006, page 44). Le contrôleur est, de plus,
7-8/2007 - elektor
associé à un multiplexeur de type ADG408.
Ce dernier composant est demandé par la
multiplicité des tensions à mesurer.
La particularité de ce projet est que nous
devons lui confier la mesure de tensions
aussi bien positives que négatives. En principe, le convertisseur analogique/numérique du R8C ne peut mesurer que des tensions comprises entre 0 et 5 V. Pour résoudre ce problème, nous avons utilisé une
alimentation symétrique pour le module
R8C, donc plus et moins 2,5 V. Ces tensions sont fabriquées par un LM317 et un
LM337. La broche 5 du module R8C est
normalement à la masse (Vss). Dans ce
cas, nous aurons –2,5 V. Nous pouvons, de
cette façon, mesurer des tensions comprises entre +2,5 V et –2,5 V. Les seuls points
qui sont reliés à la masse sur le schéma
appartiennent aux diviseurs de tension
des deux stabilisateurs (R1 à R4) et aux
diviseurs de tension (R5 à R16, R19, R20)
des signaux à mesurer (disponibles sur le
connecteur K1, où sont appliqués tous les
signaux pertinents de la table d’Hercule).
Le schéma comporte en outre un relais qui
peut être commandé par le R8C et commandera directement l’arrêt de la table. Il s’agit
d’une option. Nous pouvons maintenant
bien surveiller les tensions négatives. La
résolution du convertisseur A-N sur 10 bits
du R8C est de 5 V/1 024 = 0,004 88 V par
bit. Du fait de l’alimentation symétrique, le
convertisseur affiche 512 pour une tension
d’entrée nulle. Nous pouvons afficher un
signe moins sur le LCD quand la valeur est
inférieure à 512.
Le programme, en C, est le suivant :
if ( u < 512 )
// inférieur à 0, mettre signe
négatif
{
lcddata (45);
}
Il nous faut en outre, dans le logiciel,
adapter les niveaux de tension, sachant
qu’ils ont été abaissés par les 6 diviseurs
de tension. Il nous faut en outre piloter le
27
multiplexeur. En code C cela nous donne
ceci :
pd3_3 = 1;
sortie
p3_3 = 0; //port 3.3 en
//port 3.3 => pour
sélection de canal par MUX
analogique
pd3_2 = 1;
p3_2 = 0; //port 3.2 => pour
sélection de canal par MUX
analogique
3 canaux attaquent directement le convertisseur analogique/numérique (CAN).1 des
canaux est multiplexé pour les tensions +8,
–8 et –12 V.
(070010-I)
Des roues maison qui tournent rond
Markus Bindhammer
Il n’est pas nécessaire de réinventer la
roue (même de robot), mais il faut parfois
la fabriquer quand on ne peut ou ne veut
pas se procurer le modèle exactement
conforme. Le côté artisanat et bricolage
ne requiert que peu d’efforts et une seule
main (pas trop gauche) :
Tracer au compas des cercles de 50 mm
de diamètre sur du contre-plaqué de 5 mm
d’épaisseur. Découper ou scier ces disques. Percer un trou de 3 mm de diamètre
au centre de chaque disque.
Perceuse d’établi
Bloc de bois enveloppé
de papier-émeri
Vis M3 de bonne
longueur ou tige filetée
Rondelle
figure. Le disque, maintenu par une rondelle de fixation et un écrou, est fixé dans
une perceuse. Un petit bloc de bois enveloppé de papier-émeri permet de polir
les disques pour les rendre parfaitement
ronds.
Pour terminer, enfiler une courroie dentée
(provenant d’un ancien magnétoscope,
etc.) sur le bord de chaque disque ou coller une bande de caoutchouc plate sur les
surfaces de roulement. Une fois la vis enlevée, il suffit d’enfiler les roues sur les axes
et de les y fixer avec un soupçon de colle
instantanée.
(070145-I)
Une vis M3 longue d’au moins 30 mm
passe par le trou comme indiqué dans la
28
070145 - 11
elektor - 7-8/2007
TriWi
Brochage du 89C2051
Abraham Vreugdenhil
Si vos préférences vont à un autre, veillez
à ce qu’il dispose d’au moins 9 broches
d’entrée/sortie: 3 pour les LDR, 3 pour les
palpeurs, 3 pour les moteurs (et 3 pour des
LED, s’il en a 12).
La mesure d’intensité lumineuse par une
LDR se réalise en mettant celle-ci en
série avec un condensateur de 1 nF et en
mesurant la constante de temps RC. La
constante de temps du réseau RC varie en
fonction de la résistance de la LDR (variable avec l’intensité lumineuse. Lisez le programme, vous comprendrez tout).
Un robot triangulaire à trois roues, qui ne
peut tourner que dans un sens et qui, pourtant, se dirige vers la lumière: voilà TriWi.
Les organes sensoriels du robot sont trois
photorésistances (LDR), chacune à tour de
rôle détectant la direction d’où vient le
plus de lumière, et trois poils de moustache, qui détectent les obstacles.
Son processeur est un 89C2051 d’Atmel.
Il avait tout pour plaire, prix compris, et
offre 2 Koctets de mémoire de programme.
Broche
Fonction
1
RST
Connexion
2
RxD
3
TxD
4
Xtal2
5
Xtal1
6
P3.2
(RC5 extension)
7
P3.3
Moteur 2
8
P3.4
Moteur 3
9
P3.5
Moteur 1
10
GND
11
P3.7
LED 1
12
P1.0
Palpeur 1
13
P1.1
Palpeur 2
14
P1.2
Palpeur 3
15
P1.3
LDR 1
16
P1.4
LDR 2
17
P1.5
LDR 3
18
P1.6
LED 2
19
P1.7
LED 3
20
VCC
Le compilateur utilisé, BASCOM-LT ou
BASCOM-8051, nous offre une commande
pour l’exécution directe de cette mesure :
GETRC(numéro de broche).
Chaque palpeur est fait d’un petit tube
de cuivre dans lequel est introduit un fils
d’acier à ressort. Un petit morceau de fil
isolant les sépare. Lorsque le fil est mobilisé, il fait contact et le processeur détecte
la fermeture du circuit.
Les moteurs sont de vieux servomoteurs
auxquels nous avons retiré leur électronique. Ils sont commandés directement par
S4
R3
LDR1
LDR2
LDR3
10µ
16V
1
BT1
13
14
RST
P1.6
IC1
P1.0
P3.7
P1.1
P1.2
P3.0
P3.1
P3.2
15
16
17
AT89C2051
P1.3
P3.5
P1.4
P3.3
P1.5
S3
C2
C3
10µ
35V
10µ
35V
10µ
35V
R4
30
R5
R6
R7
X2
5
4
X1
10
M
19
C5
12MHz
C6
M2
M
Moustache 3
M3
M
Moustache 1
Moteur 3
18
11
LDR 3
2
LDR 2
3
6
LDR 1
9
9
1
7
2
8
3
4
5
6
7
22p
S1 ... S3 = Moustache
P3.4
X1
10k
C1
D3
M1
P1.7
4V8
4x 1V2
S2
D2
20
12
S1
D1
C4
1k
R2
1k
1k
R1
DS
I1
O1
I2
O2
I3
IC2
I4
I5
I6
O3
O4
ULN2003
I7
O5
O6
O7
16
Moteur 1
Moteur 2
15
14
13
Moustache 2
12
11
10
070289 - 12
GND
8
22p
070289 - 11
elektor - 7-8/2007
un transistor et ne peuvent ainsi que tourner ou s’arrêter. Ils tournent toujours dans
le même sens.
Si nous mettons les trois moteurs en marche, le robot tourne en rond sur son axe.
Si, en revanche, un des moteurs est arrêté,
TriWi tourne autour de sa roue. En remettant ce moteur en marche et en coupant
un autre, nous pouvons ainsi « louvoyer »
pour aller quelque part en ligne droite.
Pour le plaisir des yeux, nous avant rajouté
trois LED de 8 mm. Au démarrage du
TriWi, elles s’allument un instant selon
un certain modèle et les moteurs démarrent tous (pour vérification). Les LED sont
câblées de telle façon que celle qui correspond au moteur arrêté s’allume.
Se déplacer à l’aide de trois moteurs en
un mouvement circulaire pour aller quelque part n’est pas la meilleure façon de
progresser. Au lieu de banales roues de
caoutchouc, il nous aurait fallu prendre
des roues omnidirectionnelles. Notre
cahier des charges pour ce projet de robot
ne le prévoyait pas. Il privilégiait l’aspect
ludique et devait faire quelque de chose
d’assez drôle, qui n’exclut pas l’étude.
Le programme du TriWi est, bien sûr, dis-
ponible sur le site d’Elektor, sous la référence EPS070289-11.
(070289-I)
Antieu-robot
Le nom de ce robot est un jeu de mots qui
ne casse pas trois pattes à un canard, mais
acceptable de la part d’un électronicien.
En déplaçant le trait d’union, on lit antieuro ; cela renvoie aux roues, faites de pièces hollandaises démonétisées du fait de
l’euro. Que dire de plus ? Que le montage
est plus astucieux que le titre.
Les caractéristiques de ce robot se résument en effet à « petit et astucieux ».
Quelle est la plus petite taille possible pour
un robot autonome ?
7-8/2007 - elektor
+3V6
47k
R2
R1
8
D1
IC2
5
1
2
3
6
C1
4
IS471F
100n
7
PB0/MOSI
IC1
PB1/MISO
CLK/PB3
PB2/SCK
PB4
1
2
3
AT90S2343
4
1 = VCC
2 = Vo
3 = GND
4 = GLout
RESET
C2
4µ7
16V
R3
10k
D2
2k2
Pour commencer il faut
de petits moteurs. Ainsi
vint à l’auteur l’idée
d’utiliser des moteurs
de vibreur de téléphone
portable. Ces moteurs
sont minuscules et tournent très vite. Dans son
état d’origine, le moteur
porte souvent un excentrique qui produit les
vibrations. On l’enlèvera
sans peine avec un pince
coupante.
Le pilotage de chaque
moteur est confié à un
simple transistor BC557
ou BC537. Les bases sont
bloquées par une résis-
tance de 10 kΩ. Il nous faudra aussi un
petit microcontrôleur, naturellement. La
famille AVR propose un type à 8 broches,
le 90S2343. En plus des broches d’alimentation et de la broche de remise à zéro,
il reste cinq broches d’entrée/sortie. Cela
paraît peu, mais un robot simple n’a pas
besoin de grand’chose.
Le plus gros problème est celui de la
source d’énergie. Nous avons choisi un
accu NiMH de 3,6 V 160 mA, de petites
dimensions. Cet accu est utilisé comme un
châssis qui porte le reste de robot.
Ensuite, nous avons besoin d’un capteur
pour détecter les obstacles. Ce sera un capteur
infrarouge IS471F. Il réagit à un signal infrarouge
R4
M1
M2
émis par une LED infraM
M
rouge, commandée par le
capteur lui-même.
Enfin il faut des roues.
Ce seront des pièces de
T1
cinq centimes de florin,
la monnaie hollandaise
2x
d’avant l’euro. D’où le
BC557
T2
titre. Nous en collons
deux et nous perçons
l’assemblage d’un trou
de 1 mm pour l’axe. Une
tranche de chambre à air
de vélo sert de bandage
070296 - 11
élastique, collé sur la
10k
Abraham Vreugdenhil
31
jante. L’embout d’un ballon de baudruche
peut aussi assurer l’adhérence au sol.
Si on fait rouler le robot trop vite et qu’on
l’arrête, sa hauteur et son poids risquent
de le faire capoter. C’est pourquoi nous le
ferons rouler plutôt lentement. Cela donne
aussi un robot moins nerveux.
Le régime du moteur est beaucoup trop
élevé. Une modulation de largeur d’impulsion (PWM) de 25% le ramène à une
valeur raisonnable. De plus, nous ne laisserons pas le robot rouler en permanence,
mais le ferons s’arrêter périodiquement.
D’abord pour ne pas arriver directement
aux limites du terrain d’évolution ; ensuite
pour lui conférer un caractère malin et
réfléchi. Il donne l’impression d’observer son environnement avant de pousser
plus loin. Si un obstacle se présente, il va
à droite ou à gauche suivant l’état d’un
compteur interne. S’il y a encore quelque
chose, il continue du même côté, jusqu’à
ce qu’il ne détecte plus d’obstacle.
Le programme se charge simplement
du contournement des objets. Le robot
tourne en rond et s’il voit quelque chose
il le contourne. Sur les 2 Koctets de
mémoire de programme disponibles,
600 octets seulement sont utilisés. Il reste
donc beaucoup de place pour programmer un comportement plus intelligent,
ou ajouter un deuxième capteur et adap-
ter le comportement. L’Antieu-robot est
programmé en BASIC. Le code est compilé avec BASCOM-AVR. C’est un très
bon compilateur produit par MCSELEC.
Pour plus d’informations et la version de
démonstration gratuite, on se reportera à
www.mcselc.com.
Comme extension, on peut imaginer un
contact de recharge suspendu au-dessus
du terrain d’évolution. Quand le robot le
rencontre, il prend un temps de repos pour
recharger son accumulateur.
Le programme peut être téléchargé du site
Elektor sous le numéro EPS070296-11.
(070296-I)
Hunter, le chasseur
Abraham Vreugdenhil
Dans la gamme des robots de fabrication
personnelle, les robots quadrupèdes occupent une place spéciale. Courir sur quatre pattes est, et reste, un défi. On retire
toujours beaucoup de satisfaction de la
construction d’un pareil robot.
En plus du choix du mode de déplacement,
nous devons en faire d’autres, comme celui
des capteurs dont nous allons équiper le
robot pour lui accorder la possibilité de
reconnaître son environnement. Ici, la préférence a été accordée à des fils tactiles,
genre moustache de chat ou cornes d’escargot, pour la détection à courte portée.
Comme le robot doit aussi se déplacer sur
de plus longues distances, il doit pouvoir
détecter les objets de la même manière que
les humains ou les animaux ; ce sera ici à
l’aide de capteurs PIR (Passive Infra Red).
Lors de la conception d’un robot, le choix
du processeur revêt aussi une importance
primordiale. Il faut prévoir suffisamment
de lignes d’E/S et une bonne capacité de
mémoire. Et puis évaluer le rapport entre
le coût et les fonctions souhaitées pour
éduquer son comportement.
La réactivité est en effet d’une portée
essentielle. Comment le robot va-t-il réagir
aux informations qu’il perçoit de ses différents capteurs ?
Pattes à servos
Se faire une belle jambe n’est pas une
mince affaire ! Il existe de nombreuses
possibilités à considérer, avec des barres
et des leviers, qui ont chacune leurs avantages et leurs inconvénients. Dans le cas
présent, nous avons opté pour une solu-
32
Fonction des broches de l’AT90S2313
N°
Fonction
Raccordement
2
PD0
Patte avant gauche hanche
3
PD1
Patte avant gauche genou
6
PD2
Patte arrière gauche hanche
7
PD3
Patte arrière gauche genou
8
PD4
Moustache gauche
9
PD5
Moustache droite
11
PD6
Oeil gauche
12
PB0
Patte avant droite hanche
13
PB1
Patte avant droite genou
14
PB2
Patte arrière droite hanche
15
PB3
Patte arrière droite genou
16
PB4
Oeil droit
17
PB5 - MOSI
Capteur PIR gauche / ISP (selon cavalier)
18
PB6 – MISO
Capteur PIR central / ISP (selon cavalier)
19
PB7 – SCK
Capteur PIR droit / ISP (selon cavalier)
elektor - 7-8/2007
+7V2
S4
IC2
BT1
+5V
7805
7V2
D2
VCC
R3
20
L
S3
1
RST
PD6
IC1
17
M
PB4
PB5
18
19
R
PB6
PD0
PB7
PD1
AT90S2313
PD2
PD3
PB0
MOSI MISO SCK
PB1
8
9
PD4
PB2
PD5
PB3
XTAL1
L
S1
D6
D5
D7
R4
R5
470 Ω
RST
470 Ω
R2
470 Ω
470 Ω
R1
D4
D3
S2
5
R
470 Ω
D1
Capteurs PIR
11
Servo2
2
3
4
Servo3
6
7
Servo4
12
13
Servo5
14
15
XTAL2
X1
Servo1
16
10
Servo6
Servo7
Servo8
GND
8MHz
070283 - 11
GND
2
4
6
8 10
1
3
5
7
9
RST
SCK
MISO
VCC
Connecteur ISP
MOSI
tion fort simple : deux servos fixés côte à
côte par brides de câbles. L’un d’entre eux
est fixé à une plaque de plexiglas qui sert
de fond et sur l’axe du second servo, on
monte un barreau d’aluminium de 6 mm
de diamètre. Le premier servo sert d’articulation de la hanche. Les quatre pattes sont
construites de la même manière.
Si nous observons le mouvement de la
marche chez un humain, nous constatons
que le genou ne peut pas plier plus loin
que lorsque la jambe est tendue. Vers l’arrière, il peut fléchir amplement, presque
jusqu’à 180 degrés. L’articulation de la
hanche, en revanche, peut se mouvoir tant
vers l’avant que vers l’arrière. Nous avons
monté les servos de manière à obtenir la
même liberté de mobilité.
L’excursion d’une patte se divise en 28 étapes. Pendant 22 de ces phases, la patte va
(lentement) vers l’arrière, puis au cours des
6 dernières, vite vers l’avant.
Les états du servo pour le genou et de celui
pour la hanche sont répertoriés dans une
table. Les servos sont activés à intervalle régulier et les valeurs enregistrées pour ces séries
de nombres produisent un déplacement harmonieux de la patte. Les servos sur le flanc
opposé du corps du robot doivent être inversés, sinon, les pattes iraient vers l’arrière.
Il y a quatre pattes et le nombre d’étapes
est de 28 pour chacune d’elles. Pour obtenir une démarche stable, on a prévu un
décalage de 7 valeurs entre les séries de
nombres (par exemple avant gauche 1,
arrière droite 8, avant droite 15 et arrière
gauche 22).
Pour faire tourner le robot, nous faisons
reculer les deux pattes de gauche et avancer celles de droite.
Lors de la marche, on exécute toujours les
28 étapes du mouvement avant de retourner vérifier les informations des capteurs.
Les pas s’exécutent donc complètement.
Cela simplifie le logiciel et veille à ce que
les pattes soient chaque fois dans la même
position au moment de prendre une nouvelle décision sur la direction de la progression. La marge de détection des moustaches est telle que le robot ne risque pas
de se trouver immobilisé si un pas complet
a été franchi entre-temps.
puce. Il convient de brancher hors tension
les rupteurs des moustaches.
Les yeux
Les yeux de ce robot ne perçoivent rien, ils
ont une fonction essentiellement décorative. Ce sont chaque fois deux LED rouges
de 8 mm branchées en série. Elles s’alimentent sur le 5 V à travers une résistance
de 150 Ω pour limiter le courant. Elles sont
reliées à une ligne de sortie du microcontrôleur. Après chaque pas, elles s’éteignent
un instant et lors des manoeuvres restent
dans le même état.
Le capteur PIR
Il existe dans le commerce différents modèles de capteurs PIR, comme le Eltec-442 de
Les moustaches
On a utilisé deux microrupteurs simples
pour les moustaches ; sur chacun d’eux,
un fil de fer (rayon de vélo) est fixé. Une
cosse pour câble a été fixée sur le fil et
glissée sur la palette du microrupteur. On
a intercalé deux écrous sous l’un des rupteurs pour que les moustaches ne soient
pas à la même hauteur et ne se gênent pas
mutuellement. Les contacts des rupteurs
sont branchés entre bornes d’entrée du
microcontrôleur et masse. Aucune résistance de polarisation n’est nécessaire,
vu qu’elles sont prévues d’origine dans la
7-8/2007 - elektor
33
Acroname. Son gros inconvénient, c’est le
prix. Il y a aussi le HI-859 de Conrad. Lui,
son désavantage est la difficulté de raccordement : le signal doit être amplifié avant
d’être utilisable.
Nous avons préféré choisir un capteur très
connu et relativement peu coûteux, il s’agit
d’un détecteur de mouvement que l’on
trouve dans le marché de la construction
pour une dizaine d’euros.
Nous avons retiré de l’appareil la platine
porteuse du capteur et installé le capteur
lui-même sur une autre platine. Il y en aura
trois l’un près de l’autre, de manière à diviser l’image en plusieurs domaines, de quoi
fournir davantage d’informations sur lesquelles se baser pour décider de la marche
à suivre. Nous utilisons aussi la platine qui
portait le capteur. Elle recèle toute l’électronique nécessaire pour former un signal
numérique directement utilisable. Le tout
pour moins de 10 € par capteur !
Ces composants ont en théorie un angle
d’ouverture de 140 degrés. En pratique, le
panorama est encore plus large en raison
de réflexions et d’autres phénomènes. Une
démarcation obtenue par occultation partielle à l’aide d’un petit bout de tube pour
installation électrique de 2 à 3 cm de long
n’est certainement pas un luxe inutile.
En assurant un chevauchement des domaines de détection des trois capteurs, on
peut distinguer cinq zones. Pour rendre
visible ce que les capteurs PIR détectent, il
y a une LED à la sortie de chaque capteur,
raccordée au 5 V de l’alimentation par une
résistance. De cette façon, la LED s’allume
tant que le PIR ne détecte rien et s’éteint
quand le PIR associé aperçoit une masse
chaude en mouvement.
port ISP accessible.
Le logiciel du robot est rédigé en BASIC
et compilé à l’aide de BASCOM-AVR [2].
C’est un excellent compilateur pour les
processeurs AVR d’Atmel. La version en
logiciel libre de BASCOM-AVR peut aisément traiter 2 Ko.
Le programme pour Hunter est disponible gratuitement sur le site web d’Elektor
(www.elektor.fr réf. EPS 070283-11).
Alimentation
Le robot est alimenté en 7,2 V sur un
accumulateur issu du modélisme. Nous
y avons installé un interrupteur général.
La tension d’alimentation pour l’électronique est stabilisée à 5 V par un habituel
7805 sous boîtier TO220. Les servos sont
alimentés directement par l’accumulateur
via l’interrupteur.
Comportement
Le nom du robot laisse présager de son
comportement : c’est un chasseur. Sa mission consiste à reconnaître et suivre des
cibles chaudes en mouvement, comme
des humains ou des animaux. Dès qu’il en
voit une, il la poursuit. S’il n’en voit pas,
il fait tout au plus cinq pas dans l’espoir
d’en découvrir une. Après ces cinq pas, il
s’arrête et attend une nouvelle proie. Voici
comment on pourrait résumer ses règles
comportementales.
1. Si tu ne détectes rien, tu ne fais rien
(zicht = 1)
2. Si zicht > 1, fais un pas
(zicht = zicht – 1)
3. Contrôle les obstacles après chaque
pas. Si tu en as détecté un, recule et
tourne pour t’en éloigner (zicht = 6)
4. Si zicht < 5, vérifie les capteurs PIR. Si
tu détectes quelque chose, tourne dans
cette direction. Le sens de rotation peut
être : à gauche, avant gauche, en avant
(ne pas tourner, zicht est à 6) avant droite
et droite (zicht = 6).
Conclusion
L’objectif était de faire un robot quadrupède au comportement amusant. On y
parvient avec un budget raisonnable. La
mémoire de son processeur est bien remplie avec le programme actuel, mais il est
possible de trouver des astuces pour rendre l’algorithme comportemental plus efficient. Il reste donc quantité de possibilités
d’expérimentations sur ce robot. Grâce au
connecteur ISP à bord, la programmation
est simple. Ce robot constitue un prélude,
une mise en jambes, mais pas un but en
soi. En chasse, donc !
(070283-I)
Liens Internet
[1] http://avrhelp.mcselec.com/Sample_
Electronics_cable_programmer.html
[2] www.mcselec.com
Microcontrôleur et compilateur
Le microcontrôleur retenu est un
AT90S2313 d’ATMEL (voyez-en le schéma
à la figure 1). Il dispose de 2 Ko de
mémoire de programme, il y a de la place
pour y ranger de la réactivité intelligente.
L’AT90S2313 a 15 broches d’E/S dont 3
sont utilisée par l’ISP. Lors des tests et en
vue d’extensions du logiciel, une prise ISP
est bien utile. Cette liaison est renvoyée sur
le robot par l’intermédiaire d’un connecteur CANDA à 10 broches. Pour la programmation, on peut utiliser par exemple
le programmateur Sample Electronics [1].
Il ne faut que 3 résistances pour en assurer
le raccordement.
De nombreuses lignes d’E/S sont nécessaires pour la commande du matériel : 8 pour
les servos, 2 pour les moustaches, 2 pour
les LED et 3 pour les capteurs PIR. Voilà
déjà un total de 15. Aussi, les 3 PIR sontils reliés par des inverseurs (cavaliers) aux
lignes de l’ISP sur le robot. En service normal, les PIR sont branchés au processeur.
S’il faut charger un nouveau programme,
on déplace les cavaliers pour rendre le
34
elektor - 7-8/2007
Naq’un-pied
Abraham Vreugdenhil
Simple, à part, mais un objectif, tel était le
point de départ de ce « robot ». Ou est-ce
abusif que de parler de robot? Il est fait
d’une roue, d’un moteur, de capteurs, d’un
microcontrôleur, de LED, de piles et de
« pattes ». Quand le moteur tourne, alternativement, lentement, d’un tour à gauche,
puis, de même, à droite, et que les « pattes » restent plantées sur le sol plus longtemps une fois que l’autre, il se déplace un
peu vers l’avant. Comme la lumière l’attire,
il s’agit bien d’un robot photophile.
Voyons ses principaux composants.
Roue
Sa roue est une petite roue de caoutchouc
ordinaire. Son adhérence est satisfaisante,
parfois même excessive. Cette adhérence
est déjà grande dans le plan de rotation
mais elle l’est beaucoup plus dans un plan
perpendiculaire à ce plan où elle manifeste
une sérieuse résistance. Il est préférable que
le robot se déplace dans le sens de rotation
de la roue si l’on veut qu’il avance. Il serait
donc mieux de monter une roue omnidirectionnelle. De telles roues sont dotées de
petites billes ou rouleaux perpendiculaires
au sens de rotation. Elles fonctionneraient
ici mieux qu’une roue de caoutchouc.
Capteur
Le photocapteur est une vieille connaissance, le CNY-70. Il se compose d’une
LED et d’une photodiode IR. On l’utilise
le plus souvent pour permettre à un robot
IC2
3
R3
R4
20
K1
GND
GND
SCK
GND
MISO
GND
9
12
4
13
CNY70
14
8
15
7
16
6
MOSI
17
5
MISO
18
4
SCK
3
2
1
19
IC3
3
Kanda Dongle
RST
PB0
IC1
PB1
PD0
PB2
PD1
PB3
PD2
PB4
PD3
PB5
PD4
PB6
PD5
PB7
AT90S2313
XTAL1
1
5
PD6
1
2
3
7
8
9
11
XTAL2
4
2
4
CNY70
R2
M1
6
10
X1
R6
21k
V+
2
560 Ω
MOSI
10
+4V8
R5
21k
D2
560 Ω
560 Ω
1
D1
560 Ω
R1
+4V8
de voir le sol ou une ligne tracée sur celuici. Nous pouvons aussi n’en utiliser que la
photodiode. En mettant deux de ces capteurs en série, une résistance de chaque
côté limitant un peu le courant lorsque la
lumière est très intense, nous fabriquons
un dispositif qui nous fournira, à leur point
d’interconnexion, une tension variable en
fonction de la différence d’éclairement de
chacun d’eux. Reste à mesurer cette tension. Nous l’appliquerons donc à l’une des
entrées de comparateur d’un microcontrôleur. Nous connectons, sur l’autre entrée,
deux résistances, l’une à la borne d’alimentation positive, l’autre à celle d’alimentation négative. Nous pourrons lire le signal
8MHz
070284 - 11
de sortie du comparateur par l’intermédiaire d’une variable (bit) interne. À partir
de là, nous saurons quel côté du robot est
le plus éclairé et nous le commanderons
en conséquence.
Microcontrôleur
et commande de moteur
La plupart des microcontrôleurs peuvent
délivrer des courants qui suffiront à nos
besoins. Nous nous en servirons pour attaquer directement un moteur. S’il nous fallait un courant un peu plus intense, nous
câblerions plusieurs sorties en parallèle.
Un robot, le nôtre en tout cas, ne peut
plus guère se passer d’un microcontrôleur.
Notre choix s’est porté ici sur l’AT90S2313.
Il est facile à programmer en BASIC à l’aide
de BASCOM-AVR, dispose d’un comparateur, de lignes d’entrée/sortie en nombre suffisant, etc. Mieux encore, il nous
offre une entrée de programmation ISP.
Elle nous permettra, lors des essais et plus
tard, de charger facilement un autre programme sur le robot.
M
Poursuivons...
Une paire de LED de 3 mm agrémenteront
le spectacle. Nous les connectons entre le
processeur, par l’intermédiaire d’une résistance de 1 kΩ, et le pôle plus de l’alimentation. N’oublions pas l’alimentation, 4
mini-accus ou piles et leur support et un
interrupteur.
Le programme de Naq’un-pied est disponible sur le site d’Elektor sous la référence
EPS070284-11.
(070284-I)
7-8/2007 - elektor
35
Bolo
Bolo est un robot en quête de lumière,
bien calfeutré dans une sphère en plastique. L’avantage de la boule, c’est que si
elle se cogne, elle peut toujours revenir en
arrière par le même chemin. Si nous enfermons un robot dans un ballon, il pourra
se promener librement et se dégager s’il a
heurté un obstacle.
Propulsion
Pour que le robot arrive à faire avancer la
boule, nous avons glissé sur l’axe de chaque moteur un morceau de tuyau de valve
de bicyclette, question de lui donner du
grip. Les axes reposent directement sur la
surface intérieure de la sphère. En outre,
le robot dispose d’une roue auxiliaire faite
d’une perle de plastique. Au sommet du
robot, il a encore un arceau ample destiné
à le faire toujours retomber sur ses pattes,
même après avoir été catapulté.
Les moteurs
Le régime des moteurs est élevé. Si nous
voulons faire tourner le robot en permanence, il traversera très vite l’espace disponible. C’est pourquoi les moteurs s’allument une seconde puis s’arrêtent une
seconde. Ensuite, on mesure la lumière
pour décider dans quelle direction tourner pendant une seconde.
Les moteurs sont alimentés par deux piles
AAA en série, le reste
de l’électronique, par
un bloc de 9 V, suivi
d’un régulateur de
tension 7805. Un
interrupteur double
permet de commuter ensemble les
deux tensions. Si les
deux systèmes étaient
alimentés par une
seule source, l’enclenchement des moteurs
pourrait provoquer un
bref creux de tension qui
provoquerait une mise à zéro
du processeur. Pour éviter ce
souci, il est raisonnable de garder
les deux systèmes séparés.
Comportement et extension
Un développement possible est l’adjonction d’un récepteur RC5 qui permettrait
de piloter le robot par une télécommande
« ordinaire » et l’envoyer dans une direction donnée, ou de sélectionner différents
1
IC3
Électronique
36
+2V4
+5V
7805
BT2
BT1
2V4
9V
2x 1V2
R1
D4
1k
D3
M1
R3
470 Ω
D1
BP41W
R4
1
14
15
13
12
16
P1
17
18
D2
BP41W
R2
47k
R
20
19
M
M2
M
L
RST
IC1
P1.2
P3.7
P1.3
P1.1
P3.5
P1.0
P3.4
P1.4
P3.3
P1.5
AT89C2051
P3.2
P1.6
P3.1
P1.7
P3.0
X1
X2
5
4
X1
10
11
9
9
1
8
2
7
3
6
4
3
5
2
6
7
DS
I1
O1
I2
O2
I3
IC2
O3
I4
O4
I5
O5
I6
O6
I7
ULN2003
O7
16
15
14
13
12
11
10
GND
8
1k
Le processeur choisi est un 89C2051. Il
contient entre autres un comparateur dont
nous allons avoir besoin. Comme cellules
photosensibles, nous utilisons des photodiodes BPW41, deux en série. Le point
commun se branche à l’une des entrées
du comparateur. En série avec chaque
BPW41, il y a une résistance de 1 kΩ pour
limiter le courant dans les diodes quand
elles sont exposées à une lumière intense.
Sur la deuxième entrée du comparateur, un
potentiomètre de 47 kΩ permet de régler
la direction de sensibilité. Deux yeux sous
la forme de LED sont reliés par une résistance de 470 Ω au processeur. Celui-ci
commande les deux moteurs par l’intermédiaire de transistors Darlington. Comme
nous n’en avions pas sous la main, le prototype a été construit avec un circuit intégré contenant un réseau de 7 transistors
Darlington, un ULN2003, mais nous n’en
utilisons que deux. S’il fallait davantage de
puissance, on pourrait simplement brancher en parallèle leurs entrées et sorties.
algorithmes (par exemple rechercher la
lumière, la fuir ou agir au hasard). On
peut imaginer des tas de comportements
pour un robot. Dans le compilateur utilisé
pour ce processeur, BASCOM-8051, il y a
S1
470 Ω
Abraham Vreugdenhil
12MHz
070295 - 11
elektor - 7-8/2007
2
+12V
+5V
K1
R2
une instruction spéciale pour la réception
de signaux RC5. Facile donc de l’intégrer.
Pour le moment, Bolo ne réagit qu’en chercheur de lumière.
2k7
13
25
Programmation
12
T1
24
R1
11
10k
23
10
BC547
22
9
21
20
1
2
R4
3
10k
6
7
8
9
11
5
4
T2
RST
P3.0
P3.1
8
19
P1.7
IC1
18
P1.6
17
P1.5
P3.2
P1.4
P3.3
P1.3
P3.4
P1.2
P3.5
P1.1
P3.7
P1.0
16
15
14
13
12
AT89C2051
7
19
6
18
5
17
4
16
3
XL1
15
XL2
2
14
10
R3
20
1
10k
BC547
DB25M
R5
C1
1k
Un simple programmateur suffit à transférer le code dans le 89C2051. BlowIt est un
programmateur qui se compose en tout et
pour tout des régulateurs de tension, deux
transistors, quelques résistances et condensateurs [1]. Il y a aussi, bien sûr, un support de puce à 20 broches et un connecteur sub-D à 25 contacts. On peut tout
assembler sur une petite platine perforée.
L’auteur y a ajouté lui-même un transistor
et une LED pour voir quand les données
sont transmises au microcontrôleur. On
trouve sur Internet le schéma de BlowIt
accompagné de nombreuses informations.
Un programmateur facile à commander à
l’aide de BASCOM-8051 ou BASCOM-LT.
Le programme pour Bolo est disponible au
téléchargement sur le site web d’Elektor
(EPS070295-11).
(070295-I)
Liens Internet :
1n
070295 - 12
[1] www.geocities.com/dinceraydin/8051/
index.html
Babybot
Il existe nombre de techniques différentes pour mettre
un robot en mouvement. Dans
la majorité des cas, la solution
la plus simple s’appelle combinaison de moteurs électriques, servos et moteurs pas à
pas. Et surtout dès lors que l’on
a besoin d’une certaine puissance pour le déplacement. En
ce qui concerne des objets de
très petite taille, on peut penser
à d’autres actionneurs, comme
c’est le cas sur ce mini-robot.
Ici, le terme « robot » est peutêtre prétentieux. Cette créature est pilotée de l’extérieur
et ne comporte pas la moindre
intelligence artificielle, mais sa
manière de se déplacer est très
particulière, pouvant, avec quelques modifications, être utilisée
sur d’autres projets.
Babybot marche à l’aide de 4 petits relais
pour circuit imprimé ayant été modifiés
spécialement à cet effet. Les capuchons
de protection en plastique ont été enlevés
7-8/2007 - elektor
mutation est en effet très petit.
Les pattes ne peuvent pas non
plus supporter de gros poids
ou en déplacer. cela tient d’une
part à la très faible force d’attraction de l’électro-aimant
et de l’autre à la construction
interne très fragile de ces relais
miniatures.
Il n’est pas exclu que la transmission entre l’aimant et le
contact de commutation puisse
tomber en panne. Le réparer en
le remettant en place constitue, en fonction du relais utilisé, un défi notable. On peut
difficilement parler d’approche
solide, mais pourquoi ne pas
l’essayer si on veut expérimenter. Le résultat est en outre très
attrayant.
et les pattes ont été soudées directement
aux contacts de commutation.
On aura vite compris que la taille de pas
réelle d’une patte est extrêmement faible.
Le « déplacement » d’un contact de com-
(070278-I)
Petite vidéo d’un robot se déplaçant :
www.xj3.nl/_dreijer/backsite/willem/
babybot.avi
37
MOPS le robot
Markus Bindhammer
quence, le transistor conduit. Un courant
peut alors traverser R1 vers la base de T2,
de façon à faire également commuter ce
transistor. Simultanément, C1 se charge par
l’intermédiaire de la base T1 et les deux
transistors disposent d’un courant de base
plus élevé. Ils conduisent encore davantage (sont presque saturés). Le courant qui
traverse T2, R6 et D3 est maintenant suffi-
MOPS est un petit robot tout simple qui va
bravement son petit bonhomme de chemin, vire et contourne les obstacles avec
adresse. Dès que ses organes de la vue,
une cellule photo-électrique à réflexion,
détectent un obstacle, MOPS met la marche arrière, pivote autour d’une de ses deux
roues pour se
remettre en
route au bout
de quelques
secondes, en
marche avant
cette fois, et
poursuivre son
exploration
du plancher
dans une autre
direction.
Vous le voyez
tout de suite,
sur le montage
de la figure 1,
MOPS est un
« analogique »
pur et dur. Les
composants R1
à R4, T1, T2 et
C1 forment un
multivibrateur.
Après la mise
sous tension,
un courant
t r av e r s e R4
vers la base de
T1. En consé1
S1
+4V5
samment élevé pour que la LED superlumineuse puisse clignoter de tous ses feux.
Une fois C1 chargé, le courant de base de
T1 ne suffit plus: le transistor se bloque et
bloque aussi T2. La LED s’éteint et le jeu
peut reprendre.
La cellule photo-électrique à réflexion,
dont la LED superlumineuse constitue
l’émetteur, pourrait également fonctionner avec un
éclairage permanent. Le
clignotement
offre toutefois
deux avantages de poids:
une écono mie d’énergie
considérable et
une meilleure
visibilité, une
LED qui clignote a plus
de présence
q u ’un e LED
a ll u m é e e n
permanence.
Le récepteur
qui répond à
la LED de la
cellule est T3,
un phototransistor. Lorsqu’il
est éclairé, et
donc conduit,
un courant de
base circule
vers T4. Avec
2
100k
R3
T1
D3
T3
D4
D1
RE1
BC557
R9
180Ω
1k8
C1
R5
4k7
R6
180Ω
R1
1N4148
M1
R2
M
1k8
1µ
16V
D2
T4
P1
BC547
1N4148
BC547
10k
R8
T5
2k2
R7
1k
560k
R4
T3
T2
C2
D3
Enrobement plastique
de protection contre
la lumière ambiante
M
M2
BC547
070143 - 12
470µ
16V
070143 - 11
38
elektor - 7-8/2007
3
UM1
UM2
070143 - 13
R5, P1 et R7 on définit la sensibilité de
telle façon que T4 ne commute pas pour
un oui ou pour un non – un bref éclairement, par exemple. Plus la résistance du
potentiomètre (éventuellement ajustable)
est élevée, plus la cellule est sensible. Le
fait que T4 ne conduise qu’au rythme du
multivibrateur ne pose aucun problème
puisque C2 met à disposition un réservoir
d’énergie qui se charge complètement à
la première commutation de T4. La ten-
sion d’émetteur (et, avec elle, le courant
de base de T5) ne diminue que lentement
même si T4 se bloque pendant les pauses des impulsions, voire en l’absence
complète de signal. Nous obtenons ainsi
une temporisation de quelques secondes
quand MOPS change de direction.
T4 fait commuter un petit relais qui commande le sens de rotation des deux
moteurs. Dans une des deux positions
(relais non excité) la diode D2 conduit.
Les deux moteurs tournent dans le même
sens, MOPS avance. Dès qu’il détecte un
obstacle, RE1 est excité et fait commuter,
ce dont témoigne le feu de recul D4. Les
moteurs sont polarisés comme le montre
le schéma: D2 se bloque si bien que M2
s’arrête tandis que le sens de rotation de
M1 s’inverse. De ce fait, MOPS change de
direction et (espérons-le) s’éloigne de l’obstacle. Le relais relâche et MOPS reprend
son voyage dans une nouvelle direction.
La figure 2 représente l’oeil de MOPS: la
LED et le phototransistor, protégé des éclairages parasites par un petit tube opaque,
sont orientés (expérimentalement) de façon
à détecter un obstacle distant de 10 cm.
Comme MOPS ne réagit qu’à la lumière
réfléchie par les obstacles, il détecte naturellement mieux les objets clairs et moins
bien les objets sombres. Pour mieux éviter
les collisions avec les obstacles trop noirs,
on peut, par exemple, compléter le montage avec des palpeurs. La figure 3 présente le principe de la mécanique, simple,
de commande. Chaque moteur forme une
unité avec transmission et roue.
(070143-I)
Lien :
www.elexs.de/robo1.htm
Moteur à réducteur à moment de
force important pour 5 €
Bernhard Spitzer
Au cours de sa quête à
la recherche de solutions
de moteur bon marché,
l’auteur découvrit, dans
un supermarché spécialisé dans le matériel de
bricolage, des tournevis électriques alimentés par accu (figure 1).
On en trouve pour de
l’ordre de 5 € (481576
de Conrad NL); ils sont
dotés d’un moteur puissant de la classe 380
ainsi que d’un réducteur
multiple. La catégorisation en classes telles que
380, 540, etc., est très
courante dans le monde
du modélisme et renvoit
7-8/2007 - elektor
à la série de moteurs
de Mabuchi. La classe
380 se réfère au RS380
de Mabuchi avec d’un
diamètre de 29 mm et
d’une longueur de quelque 40 mm. La tension
nominale est de 6 V à un
courant maximal de 4 A
environ, la puissance se
situant dans les parages
de 10 à 15 W en fonction du type concerné.
(244511 de Conrad RFA
par exemple).
1
Si l’on veut utiliser un
tel moteur en tant que
système d’entraînement
de roue d’un robot, il
est nécessaire que l’axe
moteur soit doté d’un
39
35
20,3
15
8
11
30
2
10
10
M3 x 10
070347 - 11
roulement à billes, il faut en outre libérer
le moteur de tout ballast excédentaire. On
commence par dégager le compartiment
accu puis le réducteur en repoussant les
2 gougeons (visibles sur les figures 1 et 5
à la jonction des parties orange et noire
du boîtier) à l’aide d’une tige de 2 mm de
diamètre. Une fois le réducteur sorti, il
est facile de séparer les
2 demi-coquilles. Il ne
reste plus qu’à replier
les contacts du moteur
pour extraire l’inverseur
de polarité.
On scie ensuite les
2 demi- coquilles de
manière à ce que le bâti
moteur tienne encore.
On perce, dans la partie
la plus basse de la demicoquille inférieure, un
orifice destiné à recevoir
une vis de fixation.
Il nous faut encore un
bloc de support encaissant la force de la roue.
5
3
On utilise à cet effet une plaquette de plastique (cf. le croquis coté de la figure 2). En
vue d’obtenir un fonctionnement plus souple du moteur nous utilisons un roulement
à bille 15 x 10 x 4 mm dont on se sert dans
le monde du modélisme auto (de Tamiya
par exemple). On pourra utiliser, pour réaliser la gorge de 15 mm de diamètre dans
4
laquelle il viendra se fixer, une mèche de
perçage Forstner. Le perçage du bloc roulement se fait à la moitié de la taille du diamètre du châssis du moteur (20,3 mm dans
le cas présent, de manière à ce que l’axe
s’y accommode bien. On voit, en figure 4,
le bloc de fixation du roulement terminé.
Les 2 vis M3x16 servent à la fixation de
l’ensemble sur le châssis
du véhicule.
On voit, en figure 5,
un moteur de propulsion doté de son bloc
roulement à billes. Les
roues de propulsion
seront soit dotées d’un
perçage de 10 mm pour
l’axe et collés directement à l’axe soit fixés
à la colle sur l’une des
mèches fournies avec
le tournevis électrique,
cet te dernière étant
ensuite montée sur le
moteur et fixée.
(070347-I)
« Tremblote »
Abraham Vreugdenhil
L’auteur a imaginé cette « construction » à l’intention de sa fille et
l’a baptisé, le robot, pas sa fille,
« Tremblote » en raison de son joli
déplacement tremblotant.
Il comporte un petit moteur doté
d’une languette excentrée faisant
office de balourd, d’un bornier, de
deux pattes courtes à l’arrière et
de deux pattes plus longues sur le
devant. Les deux pattes arrières sont
caoutchoutées. L’axe du moteur est
orienté dans la direction déterminée
40
par les 2 pattes avant. En d’autres
termes, la direction de vibration du
balourd excentré est orienté lui dans
la direction donnée par les pattes
courtes. Lors de la mise en fonction
du moteur, le balourd fait entrer le
robot en vibration ce qui amène ce
dernier à se déplacer. Il ne faut vraiment pas grand chose pour créer un
tel objet, il suffit de jeter un coup
d’oeil dans le tiroir où l’on stocke
soigneusement toutes ces pièces de
récupération dont on ne se servira
jamais. Les enfants de tout âge raffolent de ce genre de « mobile ».
(070288-I)
elektor - 7-8/2007
Un robot détecteur d’obstacles
42
Batteries
4V8
K1
1
Piles
6V
S1
24
Piles (6V)
Batteries (4V8)
DROITE
GAUCHE
22
5
6
7
+V
E
GND
9
10
Servo
11
12
+V
E
GND
Servo
6
21
2
S2
VIN
SOUT
SIN
RES
ATN
IC1
P0
P15
P1
P14
P2
P13
P3
P12
P4
P11
P5
CB220
P9
P7
P8
4
R1
P10
P6
1
7
2
3
3
8
4
20
9
19
5
18
17
16
SUB D9
15
14
13
23
R2
1k
Lorsque l’on fait ses premières armes en
robotique, on est généralement pressé de
réaliser un robot mobile qui dispose d’une
certaine autonomie. C’est dans ce but que
nous avons rédigé cet article qui va vous
permettre, en un temps record, de réaliser un robot mobile capable de détecter
et d’éviter les obstacles. Bien sûr, compte
tenu de la relative simplicité des solutions
employées, il pourra assez facilement être
pris en défaut mais, sous réserve que vous
preniez quelques précautions quant aux
obstacles qui risqueront de se trouver sur
son chemin, il fera déjà « son petit effet ».
De plus, vous pourrez utiliser cette base
de départ comme tremplin pour vos propres développements.
Afin de résoudre les problèmes mécaniques, qui posent souvent problèmes à
nombre de roboticiens amateurs, nous
avons fait appel à une base « Rogue Blue »
(www.roguerobotics.com) vendue en kit et
très facile à assembler sans outil spécial.
En outre, ce kit est distribué en France par
Lextronic (www.lextronic.fr) qui peut le
livrer dans tous les pays frontaliers.
Comme vous pouvez le voir sur la photo,
elle se compose de deux platines circulaires prédécoupées pouvant recevoir, en
guise de moteurs de traction, deux servos
de radiocommande. Ces derniers, fournis
avec la base, sont déjà modifiés comme
expliqué par ailleurs dans ce numéro, afin
de leur permettre de tourner de façon
continue. Deux roues à pneus de grand
diamètre sont également livrées et se fixent
directement sur les axes des servos, tandis
que l’avant et l’arrière de la plaque inférieure du robot reçoivent des patins en
téflon faisant office de roue folle, appelée
encore roue jockey.
Du Velcro adhésif permet de sécuriser
un bloc support de piles ou de batteries
rechargeables entre les deux platines circulaires, ce qui laisse libre l’intégralité de
la platine supérieure pour recevoir l’électronique. Compte tenu de la tension d’alimentation des servos et de l’électronique,
nous avons utilisé un bloc support pour
quatre piles de 1,5 volt au format R6 ce
qui permet d’y placer également des batteries NiMH de mêmes dimensions en cas
d’usage intensif.
Afin de permettre une mise en œuvre
rapide de notre robot, nous avons fait
appel à un détecteur d’obstacles à « moustaches ». Pour cela, deux microrupteurs à
levier long, ou deux microrupteurs à levier
ordinaire sur lesquels on soude un petit
morceau de corde à piano de quelques cm
de long, font l’affaire et sont placés sur la
platine supérieure, de façon à former entre
eux un angle de 45 à 60° environ dont
la bissectrice est l’axe avant – arrière du
robot. On dispose ainsi d’un détecteur
d’obstacles à l’avant gauche et d’un
autre à l’avant droite.
L’intelligence du robot est confiée à
un module Cubloc CB 220 de Comfile Technology (voir pages centrales
de ce même
numéro) ce qui
nous permet tout à
la fois d’écrire un
programme très simple et de réaliser
un schéma électronique qui l’est tout
autant, comme vous pouvez le constater à l’examen de la figure.
Les ports P0 et P1 du Cubloc sont
programmés en entrées et reçoivent
les informations émanant des détecteurs
d’obstacles. Elles sont donc au niveau bas
en temps normal et au niveau logique haut
1k
C. Tavernier
070298 - 11
lorsque l’une ou l’autre des moustaches
est activée, c’est à dire en présence d’un
obstacle.
Les ports P5 et P6 sont quant à eux programmés en sorties et commandent les
servos de propulsion. Le choix de ces ports
est impératif car l’instruction de génération de signaux PWM du Cubloc que nous
allons utiliser ne peut fonctionner qu’avec
eux. L’alimentation des servos a lieu
directement à partir du bloc de 4 piles de
1,5 volt tandis que, pour le Cubloc, nous
utilisons son entrée VIN afin de bénéficier
de la régulation interne à 5 volts dont il
dispose. Par contre, si vous faites appel à
des batteries NiMH à la place des piles, il
faut utiliser l’entrée VDD pour alimenter le
Cubloc car la tension disponible dans ce
cas n’est plus que de 4,8 volts.
Le connecteur DB9 est destiné à raccorder
le Cubloc à un PC afin de le programmer
avec le logiciel que nous allons vous proposer dans un instant. Compte tenu de la
simplicité du schéma, le montage pourra
être réalisé sur une plaquette perforée ou
encore sur une platine de test CB220-Proto
elektor - 7-8/2007
qui dispose déjà d’origine de ce connecteur pré-câblé.
Le logiciel nécessaire à la commande de
cet ensemble est très simple, même pour
quelqu’un qui n’a que de faibles notions
de programmation. Le langage Basic
du Cubloc est en effet tout
à la fois simple est très
puissant. Son listing
source est à votre
disposition sur
le site Internet
d’Elektor ainsi
que sur celui
d e l’auteur
(www.tavernier-c.com)
mais il est tellement
cour t que vous
pouvez aussi le
saisir directement
dans l’éditeur de
Cubloc Studio
qui est l’outil de
développement (gratuit) du Cubloc. Cet outil
est téléchargeable sur
www.comfiletech.com ou
sur www.lextronic.fr.
Ce listing se laisse très facilement analyser. Après avoir défini le type de Cubloc
utilisé et le sens de fonctionnement des
ports P0, P1, P5 et P6, on définit également une variable appelée obstacle. Le
programme principal peut alors commencer sous forme d’une boucle Do Loop
permanente.
On commence par tester le passage au
niveau haut de l’un ou l’autre des ports P0
et P1 et, si c’est le cas, le robot est arrêté
au moyen des deux instructions PWM qui
suivent. Compte tenu du fait que l’on utilise des servos de radiocommande modifiés, rappelons qu’ils sont arrêtés lorsqu’ils
reçoivent des impulsions de 1,5 ms ; qu’ils
tournent à pleine vitesse dans un sens pour
des impulsions de 2 ms et à pleine vitesse
dans l’autre pour des impulsions de 1 ms.
Notez également que, comme les servos
sont montés à l’inverse l’un de l’autre dans
la base Rogue Blue, il faut les faire tourner
en sens inverse l’un de l’autre pour faire
avancer ou reculer le robot. En raison de
leurs tolérances mécaniques et électriques,
l’arrêt n’est pas toujours obtenu exactement
pour des impulsions de 1,5 ms. Il vous sera
donc peut être nécessaire de retoucher le
premier paramètre des instructions PWM
(3410 dans cet exemple).
Une fois le robot arrêté, on teste si c’est
la moustache gauche ou la droite qui a
été actionnée et on positionne en conséquence la variable obstacle. Un dernier
test vérifie si les deux moustaches ont été
actionnées simultanément et, dans l’affirmative, ce qui signifie que le robot a rencontré un obstacle frontal, une marche
arrière est provoquée (impulsions de 2 ms
7-8/2007 - elektor
Listing source complet du programme de gestion du robot détecteur d’obstacles
‘ Robot détecteur d’obstacle sur base Rogue Blue
Const Device = CB220
Dim Obstacle As Byte
Input 0
‘ Entrée moustache droite
Input 1
‘ Entrée moustache gauche
Low 5
‘ P5 en sortie pour PWM
Low 6
‘ P6 en sortie pour PWM
Delay 1000
Do
If In(0)=1 Or In(1)=1 Then
‘ Une moustache activée ?
Pwm 1,3410,32768
‘ Arrêt des servos
Pwm 0,3410,32768
Pause 800
If In(0) = 1 Then
‘ Moustache droite ?
Obstacle = 1
Else
Obstacle = 2
‘ Moustache gauche !
End If
If In(0) = 1 And In(1)= 1 Then
‘ Moustaches d. et g. ?
Obstacle =3
End if
Pwm 1,3590,32768
‘ Marche arrière
Pwm 0,3195,32768
Pause 1500
Else
Obstacle = 0
‘ Aucune moustache activée
End If
‘ Interprétation de la variable Obstacle
Select Case Obstacle
Case 0
Pwm 0,3590,32768
Pwm 1,3195,32768
Case 1
Pwm 0,3600,32768
Pwm 1,3600,32768
Pause 1000
Case 2
Pwm 1,3180,32768
Pwm 0,3180,32768
Pause 1000
Case 3
Pwm 0,3750,32768
Pwm 1,3750,32768
Pause 1500
End Select
Loop
‘ Aucun obstacle
‘ Marche avant
‘ Obstacle à droite
‘ Léger virage à gauche
‘ Obstacle à gauche
‘ Léger virage à droite
‘ Obstacle frontal
‘ Demi-tour complet
43
sur un servo et de 1 ms sur l’autre).
La variable obstacle est ensuite analysée
au moyen d’un select case que le puissant
Basic du Cubloc a emprunté au langage C.
Si la variable obstacle vaut 0, aucun obstacle n’a été rencontré et notre robot part
en marche avant. Si la variable obstacle
vaut 1 ou 2, un obstacle a été rencontré
à droite ou à gauche et un demi-tour en
sens inverse est donc exécuté. Par contre,
si la variable obstacle vaut 3, un obstacle
frontal a été rencontré et le robot fait un
demi-tour complet.
Attention ! Selon ce que vous aurez appelé
avant ou arrière et gauche ou droite sur
votre robot personnel, il se peut que vous
ayez à permuter les instructions PWM suc-
cessives du listing que nous venons de présenter pour qu’elles provoquent bien les
mouvements attendus.
Il se peut également que vous ayez à
retoucher le premier paramètre des diverses instructions PWM. Nous vous avons
expliqué pourquoi ci-dessus pour l’arrêt
mais le même phénomène se manifeste
pour la rotation des servos à pleine vitesse
dans un sens ou dans l’autre. Si votre robot
se déplace « de travers » lorsqu’il roule en
marche avant ou en marche arrière, c’est
tout simplement que les servos ne tournent
pas à la même vitesse pour des impulsions
de la même largeur. Il suffit alors de retoucher délicatement le premier paramètre
de l’une ou l’autre des instructions PWM
pour parvenir au bon résultat. Ne vous en
privez pas, la mémoire de programme du
Cubloc est reprogrammable quasiment à
l’infini (10 000 cycles minimum garantis
par le fabricant du microcontrôleur qui
l’équipe !).
Après un certain temps d’utilisation, vous
vous rendrez sans doute compte des limitations de ce robot. Libre à vous alors de le
faire évoluer en lui ajoutant, par exemple,
des détecteurs d’obstacles du même type
mais à l’arrière, un détecteur d’obstacles
lointains à ultrasons, une fonction de suivi
de ligne, etc. Ce numéro d’Elektor devrait
déjà vous fournir quelques bonnes idées
de départ pour cela.
(070298-I)
Un robot chercheur de lumière
B. Broussas
Quel que puisse être l’intérêt des nombreuses formes de robot qu’il est aujourd’hui
possible de réaliser, le robot mobile reste
l’étape incontournable par laquelle tout
amateur de robotique doit passer, et ce
pour au moins deux raisons. Le robot
mobile présente un concentré des difficultés, et donc des solutions, que l’on
peut être amené à rencontrer en robotique. Il faut en effet régler tout à la fois des
problèmes de mécanique et de cinétique
afin de gérer ses déplacements, des problèmes de capteurs, dont la diversité peut
être extrême selon ce que l’on souhaite
faire détecter, ou au contraire éviter, des
problème d’intelligence comportementale
pour la prise en compte des informations
délivrées par ces capteurs, etc. Mais la
deuxième raison pour laquelle l’amateur de
robotique doit passer par la case « robot
mobile » est souvent beaucoup moins prosaïque puisqu’elle vise tout simplement à
impressionner son entourage (parents,
amis, petit(e) ami(e)). Quoi de plus impressionnant en effet que cette « chose », tout
droit sortie d’un film de science fiction des
années 50, qui se déplace toute seule en
suivant une ligne tracée par terre, en évitant les pieds des chaises ou bien encore
en répondant à un signal de son maître ?
Vous l’aurez compris, débutants en robotique de tous poils, c’est donc un robot
mobile que nous allons vous proposer de
réaliser. Et pour que vous soyez rapidement
capable de voir ce que vos mains auront
produit, nous avons choisi des solutions
simples mais néanmoins suffisamment efficaces pour produire un certain effet.
44
+6V
C4
C3
470µ
16V
100n
Servo
+V
13
14
R1
R2
6
3
4
1
5
PWR
+5V
P6
IC1
P7
E
GND
P0
P1
P2
RES
PCO
BS1-IC
PCI
P3
P4
P5
7
8
Servo
9
10
+V
11
E
12
GND
GND
C1
C2
100n
100n
2
070306 - 11
Notre robot est tout simplement un robot
chercheur de lumière ; une sorte de
papillon de nuit (à roulettes) si vous préférez puisque, tel son homologue du monde
du vivant, il va invariablement se diriger
vers la source la plus lumineuse qu’il
pourra déceler dans la pièce où vous le
ferez évoluer.
Afin de simplifier sa réalisation et de vous
permettre d’être opérationnel en quelques heures, voire moins, après avoir lu
cet article, nous vous proposons de faire
appel à une base mécanique disponible en kit. Comme nous avons opté pour
une propulsion par des moteurs de servos modifiés, nous vous suggérons deux
bases différentes : la base Rogue Blue de
Rogue Robotics (www.roguerobotics.com)
ou bien encore la base Carpet Rover 2 de
LynxMotion (www.lynxmotion.com). Bien
sûr, si vous avez des talents de mécanicien, rien ne vous interdit de réaliser une
telle base vous-même. Il suffit qu’elle soit
propulsée par deux servos de radiocommande modifiés, et donc qu’elle dispose
à l’avant et/ou à l’arrière, d’une roue folle
ou roue jockey.
La modification destinée à transformer des
servos en moteurs de propulsion est expliquée par ailleurs dans ce numéro mais, si
vous avez peur de ne pas la réussir, sachez
que vous pouvez également, depuis assez
peu de temps il est vrai, acheter de tels
servos déjà pré-modifiés par leur fabri-
elektor - 7-8/2007
cant. Voyez par exemple Lextronic pour
cela (www.lextronic.fr).
Pour ce qui est du « cerveau » de notre
robot, et afin de vous montrer qu’il n’est
pas toujours nécessaire de faire appel
au dernier microcontrôleur 32 bits sorti,
nous avons décidé de faire appel au plus
petit des Basic Stamp, à savoir le Basic
Stamp I.
Son schéma complet adopte donc l’allure
visible sur la figure. Les deux ports P0
et P1 du Basic Stamp I sont utilisés pour
commander les servos de propulsion droit
et gauche. La luminosité quant à elle est
mesurée grâce à deux photorésistances ou
LDR (appelées encore cellules CdS dans
certaines documentations) connectées
sur les ports P6 et P7 du Basic Stamp I.
Le curieux mode de connexion utilisé ici
permet de faire appel à une instruction
particulière du Basic Stamp I, l’instruction POT, qui mesure le temps de charge
d’un condensateur connecté sur un de ses
ports, c’est à dire encore la résistance de
la LDR et donc la luminosité à laquelle elle
est soumise.
Afin que le robot puisse se diriger vers la
zone la plus lumineuse de la pièce dans
laquelle il évolue, il faut donc placer ces
deux LDR orientées vers l’avant du robot
en les séparant l’une de l’autre par un petit
morceau de carton ou de circuit imprimé
opaque afin qu’elles ne puissent pas toutes
deux recevoir le même éclairement.
L’ensemble peut être alimenté par quatre
piles de 1,5 volt. Cette tension est directement appliquée aux servos et à l’entrée
PWR de tension non régulée du Basic
Stamp I. Attention ! Ne reliez en aucun
cas les alimentations des servos à la sortie + 5 V du Basic Stamp I ; son régulateur
5 volts intégré n’apprécierait pas !
La partie logicielle de notre robot est au
moins aussi simple que sa partie matérielle
comme vous pouvez en juger à l’examen
du listing ci-dessous :
PINS = 0
DIRS = %00001111
SYMBOL RightStop = 150
SYMBOL LeftSTop = 150
SYMBOL Move = 30
SYMBOL LightDif = b2
SYMBOL RightLDR = b6
SYMBOL LeftLDR = b7
Main :
POT 7, 128, LeftLDR
POT 6, 128, RightLDR
LightDif = RightLDR – LeftLDR
b0 = RightStop +
Move - LightDif
b1 = LeftStop - Move
+ LightDif
PULSOUT 0, b0
PULSOUT 1, b1
GOTO Main
Ce listing se laisse très facilement analyser.
En effet, après une première phase de définition des étiquettes utilisées et de réservation des RAM du Basic Stamp I, on procède
à la mesure de lumière grâce à l’instruction POT. Cette instruction renvoie, dans
la variable LeftLDR (ou RightLDR) un
nombre qui est l’image de la résistance des
LDR connectées sur P6 et P7 divisée par
la constante qui précède appelée facteur
d’échelle. Il vous faudra peut-être d’ailleurs
ajuster ce paramètre en fonction des caractéristiques des LDR que vous utiliserez.
Les valeurs ainsi obtenues sont soustraites l’une de l’autre afin de disposer d’une
information de différence d’éclairement
des deux cellules. Le calcul de la durée
des impulsions à appliquer aux servos peut
alors être réalisé en notant que : RightStop et LeftStop sont les valeurs permettant d’obtenir l’arrêt des servos, et
que Move est un paramètre destiné à fixer
la vitesse de base des servos, auquel est
ajouté ou soustrait le résultat de la différence d’éclairement.
Ainsi par exemple, si LightDif
vaut 50, b0 vaudra 150 + 30 – 50 soit 130
tandis que b1 vaudra 150 – 30 + 50 soit
170. Sachant que la résolution de l’impulsion PULSOUT est de 10 µs, le programme
génèrera donc des impulsions de 1,3 ms à
destination d’un servo et de 1,7 ms à destination de l’autre, provoquant la rotation
du robot dans la direction de la LDR qui
reçoit le plus de lumière.
Ce programme est donc parfaitement fonctionnel mais, compte tenu des dispersions
des caractéristiques tant des servos vis à
vis de leurs impulsions de commande que
des résistances des LDR, il vous sera sans
doute nécessaire de retoucher certains
paramètres numériques pour obtenir un
résultat satisfaisant.
Pour cela notez que :
• RightStop et LeftStop sont égaux au 1/10
de la largeur des impulsions provoquant
l’arrêt des servos droite et gauche.
• Move permet de définir la vitesse de
rotation des servos lorsque le robot se
déplace en ligne droite. Il est égal au
1/10 ème de l’écart entre la largeur des
impulsions provoquant l’arrêt et la largeur
des impulsions désirées pour un mouvement en ligne droite.
• Les coefficients 128 utilisés dans les instructions POT peuvent également être ajustés entre 1 et 255 afin d’obtenir un comportement satisfaisant du robot compte tenu
des LDR utilisées et l’éclairage ambiant du
local dans lequel le robot évolue.
Notez également que si votre robot semble fuir la lumière au lieu de se diriger vers
elle, vous avez très probablement inversé
le câblage des servos droite et gauche ou
des LDR droite et gauche (tout cela étant
bien sûr relatif selon ce que l’on appelle
l’avant et l’arrière du robot).
À vous de jouer ...
(070306-I)
Détecteur d’obstacles proches
à infrarouges
B. Broussas
Si les ultrasons sont bien adaptés à la
détection d’obstacles lointains, ils sont
totalement inutilisables pour des obstacles
proches, c’est à dire lorsque la distance de
détection arrive au niveau du centimètre,
voire moins. Dans ces conditions deux
solutions sont utilisables : le pare-choc
7-8/2007 - elektor
ou assimilé qui actionne un ou plusieurs
microrupteurs, mais cela reste une solution mécanique, ou le détecteur à infrarouges que nous vous proposons de réaliser maintenant et qui allie l’élégance de
l’électronique à l’absence de toute pièce
en mouvement.
Le principe d’un tel détecteur est très simple. Un organe émetteur, qui sera ici une
simple LED, émet devant elle un faisceau
lumineux infrarouge, plus ou moins directif. Placé à côté de cet émetteur, un organe
récepteur qui peut être une photodiode
ou un phototransistor, est convenablement
orienté afin de ne rien recevoir en temps
normal. Dès qu’un obstacle est présent à
une distance adéquate, il renvoie une par-
45
+U
+UB
R4
10k
10k
R3
22k
R2
270Ω
R1
2
IC1
P1
3
C1
C2
10n
47µ
16V
8
IC2.A
D
1
4
Obstacle
10k
lin
P2
IC2 = LM339
5
R7
22k
R6
10k
R5
6
IC2.B
G
7
R8
10k
10k
lin
IC3
270Ω
tie de la lumière émise par la
LED sur la photodiode ou le
phototransistor et la présence
d’un signal en sortie de ce dernier indique alors la proximité
de cet obstacle.
La distance jusqu’à laquelle
le procédé fonctionne correctement dépend bien évidemment de nombreux facteurs :
puissance lumineuse émise par
la LED, sensibilité du capteur
mais aussi et surtout qualités
réfléchissantes de l’obstacle.
Un chat noir sera ainsi beaucoup moins facilement détecté
qu’un mur blanc !
Notez, pour répondre à une
question fréquemment posée
en cours de robotique, que ce
principe fonctionne aussi bien
en lumière visible qu’avec des
infrarouges mais que l’usage de
ces derniers permet tout simplement d’éviter, dans une certains
mesure, l’éblouissement du capteur par la lumière ambiante.
Bien sûr, si vous utilisez un robot muni
d’un tel capteur en plein soleil ou sous un
projecteur halogène, cet effet anti-éblouissement risque d’être assez peu efficace vu
la richesse en rayonnement infrarouge de
telles sources !
Notez également que ce système n’est pas
un télémètre et qu’il est donc incapable
de donner la moindre information de distance par rapport à l’obstacle. En effet,
le seul paramètre lié à cette distance est
l’amplitude du signal réfléchi, mais celleci dépend aussi, et dans une très large
mesure, des propriétés réfléchissantes de
l’obstacle (pensez au chat noir et au mur
blanc évoqués ci-dessus).
Ceci étant vu, sachez que notre détecteur
est capable de fonctionner dans une plage
qui s’étend de quelques mm à une vingtaine de mm environ selon le type de capteur utilisé. En outre, il n’est pas limité à de
la simple détection d’obstacles au sens où
on l’entend habituellement. Par exemple,
dans le cas d’un robot destiné à rester sur
une table, il suffit de placer judicieusement
de tels détecteurs en partie périphérique
sous le châssis du robot. Dès que ce der-
+U
070300 - 11
nier s’approche trop près du bord de la
table, le capteur cesse de recevoir le signal
réfléchi par celle-ci, ce qui lui indique qu’il
doit faire demi-tour.
La réalisation de notre détecteur d’obstacles à infrarouge est fort simple comme le
montre la figure qui, compte tenu du circuit intégré utilisé, permet d’en fabriquer
deux d’un coup, ce qui n’est pas inutile.
En effet, comme la zone de détection d’un
tel système est relativement limitée, nous
avons prévu d’utiliser deux capteurs, que
nous avons appelés D et G pour droite
et gauche, mais cela n’a rien d’impératif
quant à leur position sur le robot. La figure
présente donc le schéma d’une seule voie
; l’autre étant évidemment identique avec
seulement C1 et C2 comme condensateurs
de découplage communs.
La LED contenue dans le détecteur IC1
est alimentée de manière permanente au
travers de la résistance R1, tandis que le
collecteur du phototransistor contenu dans
ce même détecteur est ramené au positif
de l’alimentation par R2. On dispose donc,
en ce point, d’une tension proche de l’alimentation lorsque le transistor est bloqué,
c’est à dire encore lorsqu’il ne
reçoit pas de lumière et donc
qu’il n’y a pas d’obstacle. Ce
niveau baisse d’autant plus que
le transistor devient conducteur,
c’est à dire encore lorsqu’un
obstacle suffisamment réfléchissant et/ou proche renvoie
la lumière émise par la diode
sur le phototransistor.
Cette information est mise en
forme par le comparateur intégré IC2A dont on peut ajuster le
seuil de basculement au moyen
de P1. On peut ainsi adapter
le montage à divers capteurs
et régler, dans une certaine
mesure, la plage de détection.
La sortie du montage est compatible TTL s’il est alimenté
sous 5 volts et, compte tenu du
mode de connexion des entrées
de IC2A, elle est au niveau
logique haut en présence d’un
obstacle.
La réalisation ne présente
aucune difficulté mais l’efficacité du montage dépend du bon choix des capteurs.
Nous vous proposons trois références que
nous avons essayées, dans une gamme
de prix qui s’étend de 1,5 à 12 euros
environ, mais rien ne vous interdit, bien
au contraire, de tester d’autres modèles,
voire même de réaliser votre propre capteur avec une LED et un phototransistor
infrarouges de votre choix.
Le capteur le moins cher est le CNY70
(environ 1,5 euro). Il ne détecte qu’à de très
courtes distances, de l’ordre de 5 mm, et se
trouve très facilement ébloui par la lumière
ambiante. Pour quatre fois plus cher environ, nous avons trouvé le HOA 709-001
d’Honeywell, disponible entre autres chez
Radiospares. Il ne détecte lui aussi que jusqu’à 5 mm environ mais avec une efficacité bien meilleure que celle du CNY70,
et il s’avère plus difficile à éblouir. Enfin, si
vous doublez encore la mise (soit huit fois
le prix du CNY70) vous pouvez faire appel
au HOA 1180-003, toujours d’Honeywell,
très difficile à éblouir et qui détecte jusqu’à
15 mm de distance.
(070300-I)
Un inclinomètre pour votre robot
C. Tavernier
Si votre robot mobile a pour seule vocation d’arpenter le carrelage ou le parquet
46
de votre domicile, il est assez peu probable qu’il ait besoin du capteur que nous
vous proposons de décrire dans cet article.
Par contre, s’il doit affronter les dures réalités du sol du monde extérieur, avec ses
trous et ses bosses, un inclinomètre peut
elektor - 7-8/2007
220k
47 Ω
220k
47 Ω
s’avérer fort utile afin qu’il ne puisse pas
chavirer à la première déclivité un tant soit
peu importante.
Avant que l’électronique sache accomplir
les prouesses auxquelles elle nous a habitués aujourd’hui, un inclinomètre était un
système purement mécanique avec toutes
les difficultés de mise en œuvre, l’encombrement et les imprécisions que cela impliquait. Autant dire que son utilisation sur un
robot amateur était, sinon impossible, du
moins très difficile.
Depuis quelques années déjà, ce
lement à la surface de la terre, il
n’est plus le cas grâce à la mise
est influencé par l’accélération de
1
+6V...+12V
sur le marché par Analog Devices
la gravitation terrestre et peut donc
indiquer une inclinaison gauche
d’accéléromètres « solid state »,
R2
c’est à dire réalisés sous formes de
– droite ou roulis (le « roll » de nos
circuits intégrés, ne comportant
amis de langue Anglaise) ou bien
aucune pièce mobile visible.
encore avant – arrière ou tangage (le
C1
C4
En fait, il nous est toujours impos« tilt » toujours en langue Anglaise).
100n
10n
sible de mesurer une accéléraOn constitue donc bien de la sorte
8
2
8
X
tion sans mettre en œuvre une
un inclinomètre deux axes.
1
VDD
IC2.A
pièce mobile mais celle-ci est
Cette inclinaisons peut être exploi2
7
3
BIAS
XOUT
R1
aujourd’hui constituée par une
tée sous forme absolue si l’on désire
IC1
4
5
minuscule structure en polysiliconnaître exactement l’angle fait
NC
NC
IC2 = OP284
ADXL311
cium suspendue par quatre ressorts
par l’inclinomètre, et donc le cir1
6
5
ST
YOUT
Y
du même matériau au dessus de
cuit imprimé qui le supporte, et la
7
COM
IC2.B
la puce du circuit intégré constisurface du sol, ou bien sous forme
6
3
4
tuant l’accéléromètre. Lorsque cet
relative si l’on veut juste un indicaC2
C3
équipage mobile est soumis à une
tion limite de ce que peut supporter
accélération, il se déforme et cette
le robot avant de basculer.
47n
47n
déformation est mise en évidence
Dans le cas de l’ADXL311 ou de
070305 - 11
par la variation de capacité qui se
l’ADXL320 l’inclinaison absolue est
produit entre une plaque située
donnée par les relations :
sur l’équipage mobile et deux plaques fixes, placées sur la puce elle-même.
Tangage = asin (AX /AX0) et
Les plaques fixes se voient appliquer deux
chez les détaillants. S’il advenait qu’il dissignaux rectangulaires en opposition de
paraisse totalement, il pourrait être remRoulis = asin(AY/AY0)
phase qui, lorsque la plaque mobile est
placé par l’ADXL320, beaucoup plus récent
soumise à une accélération et donc se
et électriquement compatible, et dont seul
où A X et AY sont les tensions analogiques
déplace, deviennent déséquilibrés et perle brochage est différent.
délivrées par l’accéléromètre lorsqu’il est
mettent de disposer d’une tension proL’ADXL311 renferme en fait deux accéincliné et AX0 et AY0 les tensions délivrées
portionnelle à l’accélération grâce à une
léromètres très sensibles, placés à angle
lorsqu’il est parfaitement horizontal.
démodulation de phase.
droit avec un positionnement meilleur que
Le schéma d’utilisation de l’accéléromètre
Tout cela passe bien sûr totalement ina0,1°. De ce fait, et si on le place parallèse résume à très peu de choses comme le
perçu de l’utilisateur
montre la figure 1. Les
qui dispose, en sorseuls éléments impor2
tie du circuit intégré
tant sur cette figure
+6V...+12V
accéléromètre, d’une
sont en fait les condenR2
information qui est le
sateurs C2 et C3 qui fil20
reflet de l’accélératrent la tension de sor1
tion enregistrée, sous
tie de l’accéléromètre.
MCLR
11
18
RC0
RC7
forme analogique ou
En effet, ce dernier préC1
C4
12
IC3 RC6 17
RC1
numérique selon le
sente une bande pas13
16
100n
10n
RC2
RC5
type de circuit choisi.
sante de plusieurs kHz
8
2
14
15
RC3/SCL RC4/SDA
8
1
Pour notre applicaet peut donc réagir à
VDD
IC2.A
PIC16F876
2
7
3
9
21
tion robotique, nous
des vibrations très rapiBIAS
XOUT
OSC1
RB0
R1
10
22
OSC2
RB1
IC1
C5
avons décidé de retedes, ce qui n’est pas ce
4
5
2
23
NC
NC
RA0/AN0
RB2
IC2 = OP284
nir un accéléromèque l’on souhaite dans
3
24
10µ
ADXL311
RA1/AN1
RB3
16V
tre relativement peu
une application en tant
1
6
5
4
25
ST
YOUT
RA2/AN2
RB4
7
5
26
coûteux sous forme
qu’inclinomètre. Avec
RA3/AN3
RB5
COM
IC2.B
6
6
27
RA4/T0CKI
RB6
de l’ADXL311 d’Anales valeurs choisies ici,
3
4
7
28
RA5/AN4
RB7
log Devices. Notez
la bande passante est
C2
C3
cependant dès à prélimitée à 100 Hz ce qui
8
19
47n
47n
sent que ce circuit
est largement suffisant.
n’est plus produit
Les deux amplificateurs
070305 - 12
mais qu’il est encore
opérationnels montés
largement disponible
en suiveurs permettent
7-8/2007 - elektor
47
la tension délivrée
220k
47 Ω
d’éviter toute influence externe sur ces
tre avec un microcontrôleur PIC dispo ‘ lorsque l’inclinomècondensateurs de filtrage et permettent de
sant d’un convertisseur analogique/digital
tre est horizontal
raccorder l’accéléromètre sur n’importe
intégré, tandis que la figure 3 présente le
quelle entrée de microcontrôleur ou de
même type de schéma mais avec cette
pour récupérer l’information de tangage
convertisseur analogique/digital sans préfois-ci un Cubloc CB220.
avec un Cubloc CB220
caution particulière.
Nous ne vous proposons aucun proAlors que vous écrirez par exemple :
Le seul petit problème que vous risquez de
gramme pour exploiter l’information délitilt = Adc_Read(0)
rencontrer en tentant de réaliser ce monvrée par l’inclinomètre car, dans un cas
tilt = tilt - 512 tage est que l’accéléromètre est proposé en
comme dans l’autre, il suffit de deux ins‘ à ajuster en fonction de
boîtier CMS dont la soudure sur un circuit
tructions pour disposer de l’information de
la tension délivrée
imprimé d’amateur n’est pas toujours facile.
tangage ou de roulis.
‘ lorsque l’inclinomètre
Sachez donc qu’il existe aujourd’hui un
Ainsi par exemple écrirez-vous :
est horizontal
tilt = Adin(0)
module, de référence Accel chez Lextrotilt = tilt – 512 nic (www.lextronic.fr), qui comporte tous
pour récupérer l’information de tan‘ ajuster en fonction de
les composants de la
gage ave c un PIC
programmé en Basic
figure 1 rassemblés sur
3
un minuscule circuit
(compilateur MikroR2
Basic et convertisseur
imprimé de 15 mm sur
analogique/digital
20 mm (voir photo).
L’utilisation de notre
10 bits dans le cas de
21
accéléromètre en tant
cet exemple).
+6V...+12V
C1
C4
1
24
SOUT
VIN
qu’inclinomètre quant
Les mêmes instructions
2
100n
10n
SIN
à elle se résume à
seront bien évidem8
2
3
22
8
ATN
RES
1
mesurer ses tensions
ment utilisées pour
VDD
IC3
IC2.A
2
7
3
5
20
analogiques de sortie
le roulis, mais avec la
BIAS
XOUT
P0
P15
R1
6
19
IC1
P1
P14
sur ses deux axes et
voie analogique n° 1 si
4
5
7
18
NC
NC
P2
P13
IC2 = OP284
à en soustraire la tenvous avez adopté les
8
17
ADXL311
P3
P12
sion délivrée au repos,
schémas de câblage
1
6
5
9
16
ST
YOUT
P4
P11
7
10
CB220
15
c’est à dire lorsque son
des figures 2 ou 3. Il ne
P5
P10
COM
IC2.B
6
11
14
3
P6
P9
circuit imprimé supvous restera plus alors
4
12
13
P7
P8
port est parfaitement
qu’à exploiter ces donC2
C3
parallèle à la surface
nées afin d’éviter que
4
23
47n
47n
du sol.
votre robot ne se casse
La figure 2 présente
la figure sur un terrain
070305 - 13
un exemple d’utilisatrop pentu pour lui !
tion de cet inclinomè(070305-I)
Capteur pour robot suiveur de ligne
48
+5V
R2
100k
R1
10k
R3
1k
L’une des disciplines traditionnelles
auxquelles les robots sont censés participer est la compétition du suivi de
ligne. Les robots sont rangés derrière
une ligne dessinée d’avance (généralement une bande autocollante noire)
posée sur une surface blanchâtre (en
papier, carton ou plastique).
Cette discipline requiert des capteurs
spéciaux. D’habitude, il s’agit de photocapteurs à réflexion (tels que CNY70,
LTH209…). Un tel capteur contient un
phototransistor et une LED infrarouge.
Les capteurs sont pointés vers la surface
sur laquelle le robot va devoir montrer
sa vitesse et son agilité. La LED émet des
rayons infrarouges et le phototransistor
agit comme récepteur. La couleur noire de
la ligne à pister réfléchit moins intensément
que la surface blanche qui l’entoure.
Le courant dans un phototransistor dépend
P1
3
5
10k
4
1
IC2
3
IC1
2
12
LM339N
2
CNY70
4
070230 - 11
de l’intensité du rayonnement qu’il détecte.
Dès lors, il y circulera plus de courant
quand il surplombera une surface blanche. De la même manière, ce dispositif
peut aussi servir à détecter des types
de surface.
Le plus petit nombre de capteurs nécessaire à fabriquer un robot suiveur de
ligne est deux : un à gauche, l’autre à
droite de la ligne. Il est pourtant préférable d’en prévoir un troisième, au milieu
des deux autres, comme précaution au
cas où le robot tomberait de la table.
Dans ce circuit, on compare la tension
sur le phototransistor à un niveau de
référence réglé par P1. Quand IC2 est
éclairé, sa tension chute. IC1A compare cette tension à celle de référence.
Si la tension de référence dépasse celle
du phototransistor, la sortie du comparateur baisse jusqu’aux environs de
zéro. C’est ce qui se passe quand il y a
une ligne noire sous le capteur. Le signal
de sortie du comparateur est alors envoyé
à un microprocesseur ou toute logique de
elektor - 7-8/2007
commande qui, on peut l’espérer, répond
en adaptant le cap du robot.
Il faut étalonner les circuits au préalable.
La meilleure méthode consiste à mettre
le potentiomètre P1 au milieu, puis à placer le capteur au-dessus de la surface à
détecter, la blanche. Remarquez que la
hauteur du capteur par-dessus la surface
est importante. C’est moins grave avec un
CNY70, par exemple, mais un LTH209,
entre autres, ne fonctionne qu’à de très
faibles distances (à peu près 3,8 mm). Si
la réponse de la sortie du comparateur
est correcte (broche 2 haute), déplacez le
capteur vers la ligne. Si le résultat est bien
celui attendu (broche 2 basse), le circuit
est étalonné. Sinon, changez le réglage de
P1 jusqu’à atteindre le bon étalonnage.
Le schéma représente un seul des quatre
canaux que l’on peut construire avec une
seule puce LM339. La résistance de forçage haut à la broche 2 du comparateur
est nécessaire parce que le LM339 a les
sorties à collecteur ouvert. R3 détermine
le courant pour la LED IR.
On peut utiliser une grande variété de
comparateurs, il se fait que le LM339 était
sous la main. On peut en dire autant du
photocapteur ; remarquez cependant qu’il
y a différents brochages possibles, vérifiez-le donc dans les caractéristiques du
constructeur.
(070230-I)
Capteur de CO
Filtre au charbon actif
Couvercle / Electrode
Orifice d'admission
Film de
régulation
de la diffusion
des gaz
Orifice d'admission
Couche de Couche de
réaction
Catalyse
Joint
d'étanchéité
La résistance R1 sert à éviter une polarisation éventuelle du capteur lorsque l’électronique se trouve hors-tension.
Il est d’une importance capitale de veiller à ce
qu’il n’y ait
jamais,
Séparateur
(immergé dans un
électrolyte alcaline liquide)
Couche de captage du gaz
Rondelle
Eau
Boîte métallique /
Contre-électrode
070187 - 12
quelles que
soient les conditions, application d’une
tension au capteur lui-même, car
ceci se traduirait par un endommagement irréversible du capteur. La tension
aux bornes du capteur ne doit en aucun
cas dépasser 10 mV.
Figure 1. Structure interne du capteur.
C1
22µ
R2
7-8/2007 - elektor
100k
IC1
2
working
3
AD708
1
Uout
R1
1k
d'oxyde de carbone
• Relation linéaire entre la concentration
de CO et la tension de sortie
• Sensibilité faible en présence d'éthanol
• Grande insensibilité aux autres gaz
présents
La figure 1 donne la structure interne du
capteur TGS 5042. La couche sensible au
gaz CO se trouve intercalée entre une rondelle d’acier inoxydable (contre-électrode)
et une tête électrolysée au nickel (électrode
de fonction). Cette dernière est enveloppée
d’une sorte de film et de plusieurs couches
de soutien. Le tout prend place dans une
enveloppe cylindrique en acier inoxydable. Le compartiment inférieur est rempli
d’eau, dans la partie supérieure on trouve
un filtre de charbon actif.
La figure 2 propose un schéma d’application de base du TGS 5042. Le capteur
génère un courant minuscule converti, par
le biais de l’amplificateur de mesure que
constitue la paire IC1/R2, en une tension.
TGS5042
Le capteur TGS 5042 de Figaro est un capteur d’oxyde de carbone qui a rendu, et
rend toujours, d’éminents services dans
de nombreuses applications industrielles
telles que détecteurs de fumé, systèmes
de détection d’incendie et de commande
de ventilation, dans les garages souterrains
par exemple. Ce type de capteur convient
de façon idéale pour les applications à alimentation autonome (piles) et présente, si
on le compare à des capteurs traditionnels,
de nombreux avantages. L’électrolyte utilisé est respectueux de l’environnement, le
boîtier évite tout risque de fuite. Le capteur
est en état de détecter des concentration
de CO de 1% seulement, sa plage de température s’étalant de –40 à +70 °C. Le boîtier présente une forme identique à celle
d'une pile de type AA.
Caractéristiques marquantes :
• Utilisable pour les applications alimentées par pile
• Sensibilité/précision élevées en présence
counter
070187 - 11
Figure 2. Exemple de schéma
d’application simple.
Citons, à titre d’exemple, certains applications possibles du capteur :
• Détection de CO dans les logements
• Monitoring du CO dans des installations
industrielles
• Commande de système de ventilation
pour garages souterrains.
(070187-I)
49
Capteur auditif stéréo
Comment permettre à un robot de
localiser des sources sonores
Claude Baumann et Laurent Kneip
Les serviteurs robots de l’avenir doivent être capables de
localiser leur « maître » ou « maîtresse », de les identifier
à la voix et aussi de comprendre leurs ordres vocaux.
Cet article est consacré à la localisation acoustique
basée sur la fonction d’intercorrélation. Une simplification
de ce procédé de calcul met le tout à la portée d’un
microcontrôleur. Le « capteur binaural » ainsi conçu peut
déterminer la direction d’un signal sonore continu à 10° près.
Le robot en LEGO GASTON [1], réalisé
en 2003 par des élèves (grande photo)
comporte un grand nombre de fonctions
intéressantes, telles qu’exprimer des sentiments. Il peut en outre localiser des sources sonores dans l’espace et tourner la tête
dans cette direction. Il se sert pour cela
d’un capteur dit à effet d’antériorité ou
de Haas équipé de 3 microphones. Une
onde sonore parvient à chaque micro à
un instant différent. Ce décalage temporel
permet d’estimer la direction d’où provien-
D
G
Source sonore
060040 - 13
Figure 1. Pour les fréquences dépassant 1 kHz,
la tête constitue un obstacle qui joue le rôle
de filtre passe-bas. Le signal reçu par l’oreille
orientée vers la source sonore est bien plus
fort que celui que reçoit l’autre oreille.
50
nent des bruits d’un niveau plus ou moins
élevé (applaudissements ou claquements
de doigts).
Malgré son impressionnante panoplie fonctionnelle, l’ouïe de GASTON ne lui permet
pas de repérer un bruit continu, sans parler
de localiser sa provenance. Il faut recourir
à des techniques plus élaborées, atteignant
même le franchement complexe, comme
nous le verrons ci-dessous.
Comment effectuer une
localisation acoustique
L’ouïe humaine est un système d’une
extrême complexité aux propriétés étonnantes. Elle se compose de l’organe sensoriel proprement dit et des régions cervicales chargées de l’analyse. Sans ces dernières, il serait impossible de séparer les
informations nécessaires de la cacophonie
ambiante. Le cerveau effectue entre autres
une détermination extrêmement complexe
de la direction d’où provient le son. La
précision de cette détermination atteint
3° environ ! Le repérage correct exige la
collaboration de plusieurs sous-systèmes.
Il faut tout d’abord posséder 2 oreilles, ce
que l’on traduit par « système binaural ».
L’ouïe dispose de différentes méthodes
pour localiser latéralement une source
sonore.
a. Interaural Level Difference – ILD
La longueur d’onde des basses fréquences
dépasse le diamètre d’une tête humaine.
Elles contournent donc celle-ci, de sorte
qu’elles atteignent les 2 oreilles avec une
intensité du même ordre. Pour les fréquen-
ces dépassant 1 kHz, la tête constitue au
contraire un obstacle qui joue le rôle de
filtre passe-bas (jusqu’à –20 dB) en dispensant une « ombre sonore ». Le signal reçu
par l’oreille orientée vers la source sonore
est bien plus fort que celui que reçoit
l’autre oreille (figure 1).
b. Interaural Time Difference – ITD
Si le son arrive latéralement, la réception
des signaux par les 2 oreilles n’est pas
simultanée. Ce délai est mesuré à l’aide
d’une sorte d’intercorrélation neuronale.
Le déphasage entre les 2 signaux permet
en effet de déterminer l’angle par rapport
à la source sonore (azimut α).
Considérons la figure 2. Mathématiquement, tous les points M(u,v) ayant la
même différence de temps de propagation
se trouvent sur une hyperbole dont l’équation est :
u2/a 2 – v2/b2 = 1, a = ∆x / 2, b2 = k 2 – a 2,
où k est la moitié de la distance entre
les oreilles et ∆x le chemin parcouru par
l’onde sonore pendant la courte différence
de temps ∆t, où ∆x = c · ∆t. La vitesse du
son c vaut 343 m/s à 25°C.
La partie avant de l’hyperbole se rapproche asymptotiquement de l’équation :
v = b/a · u, avec tan(β) = b/a


4k 2 1

β = arctan
⋅
−
1
 c 2 ∆t 2



Pour R (Right : oreille droite), on a :
elektor - 7-8/2007
α = 90° – β, pour L (Left : oreille gauche),
par conséquent α = –(90° – β).
L’ouïe doit encore obtenir des informations
supplémentaires sur la provenance avant ou
arrière du son. De plus, le son peut provenir
d’en haut ou d’en bas. On se trouve donc
en présence d’un hyperboloïde à la surface
duquel sont situés tous les points ayant la
même différence de temps de propagation.
Pour résoudre ce genre d’ambiguïté, l’oreille
humaine fait appel aux modifications caractéristiques de la représentation spectrale
dues au tronc, à la tête et aux pavillons des
oreilles. Des mouvements de la tête, qui
pourraient tenir compte de l’effet Doppler,
sont également impliqués.
L’exemple qui suit donne une idée de la
puissance de calcul que doit fournir le
cerveau lui-même lors de la détermination gauche-droite. Supposons que le son
provienne de la droite (α = 20°). Dans le
cas d’un éloignement moyen des oreilles
de 17,5 cm, les équations nous donnent un
temps de propagation de 175 µs. Avec 3°,
la valeur se réduit à 27 µs. Que le cerveau
(dont le temps d’activation des neurones est
de l’ordre de la milliseconde) puisse mesurer des différences de temps aussi brèves et
en déduire la direction laisse entrevoir un
mécanisme d’une grande complexité.
Figure 2. Si le son arrive latéralement, la réception des signaux par les 2 oreilles n’est pas
simultanée. Mathématiquement, tous les points ayant la même différence de temps de
propagation se trouvent sur une hyperbole (rouge) dont une asymptote (blanche) se rapproche :
Le cerveau peut en déduire la direction de la source sonore à défaut de son emplacement.
+5V
+5V
3
IC1.A
R7
1µ
16V
10k
VREF
100n
5
IC1.B
14
7
R9
R6
4
17
VREF
18
R17
+5V
R12
C3 R11
1k
1µ
16V
IC1.C
C4
8
R14
1µ
16V
10k
100k
13
2k2
MICL
VREF
3
100k
9
10
R15
12
JP1
IC1.D
R13
14
MCLR
RB7
RB6
IC2
RA0
RB5
RA1
RB4
RA2
PIC16F88
RA3
RA4/T0CKI
JP2
RB3
RB2
RB1
RB0/INT
OSC2
15
13
12
K3
11
TX
10
9
8
7
K4
6
RX
OSC1
X1
16
5
K5
R16
C10
10k
22k
47k
2
SENSITIVITY
RELATIVE
IC1 = LM324N
1
HOLD
R10
C8
6
2k2
MICR
R20
Digital
C2
1
R19
22p
VREF
+5V
C9
20MHz
22p
PWM/Servo
2
R18
10k
1k
1µ
16V
100k
10k
22k
47k
C1 R4
K2
R8
10k
R5
10k
R3
060040 - 11
C6
C7
4
IC1
POWER
100µ
16V
100n
11
VREF
R2
33k
K1
47k
R1
C5
22µ
16V
Figure 3. Le circuit se compose de 2 canaux audio équipés chacun d’un microphone à électret et d’un amplificateur à 2 étages. Les sorties des
amplificateurs sont raccordées à 2 entrées du microcontrôleur configurées comme convertisseurs A/N.
7-8/2007 - elektor
51
R16
C10
SL5
C9
R9
R15
C4
R11
R14
SL2
C3
1
1
R10
R12
8
IC1
1
7
18
10
IC2
9
SL3
1
R2
R7
1
R19
JP1
JP2
1
C2
R4
SL1
SL6
R3
R1
R5
C6
C5
1
R20
SL4
C7
R13
R6
1
SL7
R8
C8
Q1
14
R18
C1
1
R17
r otkelE )c(
060040-1
1-040060
(c) Elekto r
Figure 4. Schéma de montage du capteur binaural. Le dessin des pistes est téléchargeable
gratuitement depuis le site Web d’Elektor [3].
Liste des composants
Résistances :
R1,R5,R12 = 47 kΩ
R2 = 33 kΩ
R3,R10 = 22 kΩ
R4,R11 = 1 kΩ
R6,R9,R13,R16,R18,R19,R20 = 10 kΩ
R7, R14 = 2kΩ2
R8, R15 = 100 kΩ
R17 = ajustable 100 kΩ
Condensateurs :
C1,C2,C3,C4 = 1 µF/16 V
C5 = 22 µF/16 V
C6 = 100 µF/16 V
C7,C8 = 100 nF
C9,C10 = 22 pF
Semi-conducteurs :
IC1 = LM324
IC2 = PIC16F88 (programmé, EPS06004041 disponible auprès des adresses
habituelles)
Divers :
X1 = quartz 20 MHz
support DIL14
support DIL18
K1,K3,K4,K5 = embase autosécable à
1 rangée de 2 contacts (K4 est ponté
pour l’instant par une résistance de
100 kΩ, cf. texte)
K2 = embase autosécable à 1 rangée de
6 contacts
JP1,JP2 = cavalier
MicR,MicL = micro électret CZ034
platine EPS060040-1 téléchargeable
gratuitement depuis www.elektor.fr
Figure 5. La précision du repérage varie en
fonction de l’azimut. La moyenne est de
l’ordre de 9°.
Les limites d’application de la détermination ITD sont évidentes. À partir de 1 kHz,
la différence maximale de temps de propagation de 500 µs déterminée par la distance interauriculaire correspond à la moitié d’une période, soit à une relation de
phase de 180°. Il devient alors impossible
de déterminer si le signal de droite est en
avance ou en retard de phase par rapport
au signal de gauche.
c. Effet d’antériorité
De fortes distorsions des signaux par réverbération acoustique compliquent passablement la localisation. Un sous-système
prend alors le relais, l’interprétation gauche-droite. Son fonctionnement rappelle
celui de la détermination ITD à la différence essentielle près que seul le front de
l’onde sonore est considéré. On peut se
représenter ce système comme une porte
neuronale qui s’ouvre pendant environ
1 ms en présence d’un signal sonore. La
différence de phase des 2 signaux reçus et
raccourcis est alors extraite. Tous les échos
suivants sont rejetés. L’ouïe du robot GASTON est basée sur cet effet. Il va sans dire
que l’analyse d’antériorité ne convient pas
dans le cas d’un signal continu.
L’intercorrélation, une alternative
Figure 6. Prototype de notre capteur binaural.
52
L’intercorrélation (corrélation croisée)
compte parmi les méthodes les plus populaires permettant de comparer 2 signaux
équivalents. Comme l’analyse de Fourier,
elle fait partie des incontournables parmi
les techniques numériques de traitement
du signal.
La fonction numérique d’intercorrélation
de 2 signaux enregistrés se calcule comme
décrit ci-dessous. On obtient la valeur de
cette fonction à ∆t = 0 en effectuant tout
d’abord le produit des valeurs mesurées
des 2 signaux pour tous les points t. On
elektor - 7-8/2007
additionne alors tous ces produits et on
applique un facteur de normalisation au
résultat. On procède de façon analogue
pour calculer la fonction d’intercorrélation
à une autre valeur du temps, par exemple
∆t = 1 µs. On décale toutefois d’abord le
second signal de 1 µs par rapport au premier. On multiplie ensuite toutes les mesures, on additionne les produits et on effectue la normalisation. On procède de façon
identique pour calculer toutes les autres
valeurs de la fonction d’intercorrélation.
Il faut bien entendu limiter le volume de
calcul en choisissant un pas raisonnable.
La fonction d’intercorrélation permet de
déterminer si les 2 signaux sont « corrélés ». Supposons par exemple que le
premier signal soit déphasé par rapport
au second, mais sinon très semblable ;
la fonction d’intercorrélation possèdera
un maximum prononcé à l’endroit du
déphasage. Le grand nombre de multiplications et d’additions vaut à la fonction
d’intercorrélation la réputation d’être un
des consommateurs les plus redoutables
de temps processeur.
Comment limiter le volume de calcul
L’audition de notre robot ne souffrira aucunement d’une recherche du déphasage
restreinte à la plage basée sur la distance
entre les 2 oreilles – pardon microphones.
Il est en outre facile de démontrer que la
maximisation de la somme des produits
(intercorrélation) équivaut à la minimisation
d’une fonction bien plus simple à calculer.
La somme des différences des 2 valeurs du
signal (au carré) peut être transformée pour
chaque déphasage τ de telle sorte que la
fonction d’intercorrélation γ (τ) apparaîtra
dans l’équation.
2
f (τ ) = ∑
 x (t ) − y (t + τ ) 

2
2

= ∑
 x (t ) + y (t + τ ) − 2 x (t ) y (t + τ ) 
= ∑ x 2 (t ) +∑ y 2 (t + τ ) − 2 ∑ x(t ) y(t + τ )
=
c1
− 2 ∑ x (t ) y (t + τ )
= c1 − 2⋅ N ⋅ γ (τ )
avec γ (τ) = (2N)-1 [c1 – f(τ)]
La valeur c1 est identique pour tous les
déphasages. En effet, les carrés de toutes les valeurs du signal sont additionnées
chaque fois, quelle que soit leur relation
de phase. (N est la moyenne géométrique,
elle aussi constante, de toutes les valeurs
du signal. Elle est le coefficient de normalisation de γ (τ).) Il est évident qu’une maximisation de la fonction d’intercorrélation
est équivalente à une minimisation de la
somme des déviations f. On peut enfin
remplacer f par la fonction suivante qui
ne nécessite qu’une puissance de calcul
bien plus modeste
7-8/2007 - elektor
g (τ ) = ∑ x (t ) − y (t + τ )
et le comportement de la courbe obtenue
est similaire à celui de la fonction d’intercorrélation. Il suffit pour cela de soustraire
l’une de l’autre les 2 valeurs instantanées
du signal puis de laisser tomber le signe,
en d’autres termes de déterminer la valeur
de la différence d’amplitude. La somme
constitue une valeur non normalisée qu’il
faut minimiser. Nous disposons ainsi d’une
méthode de calcul au moins 20 x plus
rapide que l’intercorrélation.
Comment réaliser son propre capteur binaural
Le circuit (figure 3) est on ne peut plus
simple. Il se compose de 2 canaux audio
équipés chacun d’un microphone à électret et d’un amplificateur à 2 étages. Les
sorties des amplificateurs sont raccordées
à 2 entrées du microcontrôleur configurées
comme convertisseurs A/N. La sensibilité
du capteur est ajustée par le l’ajustable R17
(Sensitivity).
Les repérages sont disponibles au rythme
d’un dixième de seconde. Ils sont fournis
sous différentes formes pour que le capteur puisse être raccordé à différents types
de robots. Le résultat de chaque repérage
est envoyé sous forme d’octet de mesure
(2400, 1, N, 8) par le module UART (TX).
Il est aussi fourni sous forme de valeur
numérique de 5 bits (Digital). La sortie servo (PWM/Servo) produit un signal
50 Hz d’une largeur de 1 à 2 ms permettant de commander un servomoteur de
type courant destiné aux modèles réduits.
Le cavalier 1 (Hold) peut être inséré pour
effectuer des tests. Il permet d’effectuer
une pause de 2 s entre 2 mesures au cours
de laquelle la dernière valeur de sortie est
maintenue. Si le cavalier 2 (Relative) est
inséré, la moyenne est envoyée si le signal
est trop faible, sinon la valeur précédente
est maintenue. Le capteur offre en effet
2 configurations de base. S’il fait partie
d’un robot mobile, les microphones se
déplacent avec la base de celui-ci. Le robot
ne doit pas pivoter quand les signaux sont
faibles, sous peine de poursuivre en vain
un bruit fantôme. L’azimut de α = 0 fourni
par le capteur donne le résultat désiré. Si
par contre le capteur utilise une configuration fixe des microphones, par exemple
pour commander une caméra Web, une
interprétation erronée ferait pivoter continuellement celle-ci. La stratégie dans ce
cas consiste à conserver la dernière valeur
correcte.
L’entrée RX ne remplit actuellement aucune
fonction. Elle pourrait toutefois être utilisée
lors d’une future mise à jour du micrologiciel. Il est préférable de relier cette entrée
à la masse par une résistance additionnelle
de 100 kΩ pour éviter les phénomènes
d’entrée flottante.
Séquence temporelle et résolution
Le capteur doit avoir un taux d’échantillonnage suffisamment élevé pour déterminer
des ITD (donc des différences de temps
de propagation) dans une plage de 200 à
1000 Hz. Ce but ne sera atteint qu’avec
une organisation élaborée du programme
du microcontrôleur. Le PIC16F88 offre un
accès simple et rapide des 2 x 96 octets
dans les blocs de mémoire (banks) 2 et 3.
Il suffit de modifier un seul bit pour que
les valeurs des 2 canaux de signalisation
soient mémorisées à la vitesse de l’éclair
par adressage indirect.
Bien que le PIC16F88 possède des convertisseurs A/N 10 bits, seuls les 8 bits les plus
significatifs sont utilisés. On obtient une
fréquence d’échantillonnage de 20 kHz.
Les valeurs de mesure sont lissées par un
filtre FIR. Le programme ignore simplement les erreurs d’interprétation ; la dernière valeur correcte est maintenue.
Un déphasage de 180° pour un signal de
1 kHz correspond à une différence de
temps de propagation 0,5 ms, donc à la
durée de mesure de 10 points.
La plus petite différence du temps de propagation détectable équivaut à une distance minimale de :
dmin = 50 [µs] · 343 [m/s] = 1,7 cm
La distance optimale 2k entre les microphones est donnée par :
2k = 10 [Samples] · dmin = 17 cm
Si le signal provient exactement de la droite
ou de la gauche (azimut α = ±90°), une
différence du temps de propagation égale
à ±10 échantillons (samples) est mesurée.
Le calcul de la corrélation comporte donc
au moins 20 sommations des différences
d’amplitude. Considérons maintenant le
cas où les microphones sont fixés à une
« tête ». Il faut remplacer la distance interaurale directe par le trajet réel du son diffracté autour de la tête, c’est-à-dire par la
longueur d’arc maximale r · π, où r est le
rayon de la tête. Le rayon doit être tel que
la longueur d’arc ne dépasse pas 17 cm.
La précision du repérage varie en fonction
de l’azimut. Comme on peut le déduire de
la figure 5, elle atteint environ 5° quand
le son provient de l’avant. Elle atteint 11°
avec des ondes venant du côté. Elle n’est
plus que de 25° à la limite de détection.
La moyenne est de l’ordre de 9°. La caractéristique de directionnalité prononcée
des microphones à électret rend superflue toute analyse supplémentaire en sens
longitudinal.
53
bêta. Le programme
en langage assembleur
Binaural_v132.asm et
le fichier en pseudocode binaire Binaural_v132.hex peuvent
être téléchargés à partir du site Web d’Elektor [3]. Un contrô leur programmé peut
être obtenu au même
endroit. Le schéma
de montage est reproduit dans la figure 4.
Le dessin de la platine
peut être téléchargé
gratuitement depuis le
site Web d’Elektor [3].
2
R1
3
IC1.A
1
K1 U out
R2
10k
20k
IC1 = LM358N
R3
20k
10k
+5V
R5
20k
R6
8
10k
5 Bit Digital IN
K2
R4
IC1
4
R7
R8
10k
20k
R9
6
R10
20k
20k
5
IC1.B
7
Montage et test
Lors de la réalisation
pratique de ce capteur,
il est parfois nécessaire
de raccorder les microphones par des câbles
audio blindés. On
empêche ainsi un taux
excessif de signaux
060040 - 12
Figure 7. Le réseau de résistances sert de convertisseur N/A.
Il faut ici utiliser des résistances à de tolérance de 1%.
Le PIC16F88 a été programmé avec Ultimate Lab. Cet environnement de développement, basé sur LabVIEW, a été conçu
pour répondre aux besoins du Center for
Engineering Education Outreach (CEEO)
de la Tufts University, Massachusetts. Il
est actuellement disponible en version
Signification des valeurs de sortie du capteur
(s+2) entier 8 bits
Direction
(TX)
parasites de parvenir aux entrées des
amplificateurs. Notre prototype est reproduit dans la figure 6.
Le courant de l’ordre de 10 mA consommé
par ce capteur est assez faible pour qu’une
alimentation 5 V, de faible puissance mais
stable, suffisent déjà à ses besoins. Les
microphones, montés vers l’avant, doivent
se trouver à une distance de 17 cm l’un
de l’autre. Un signal de test de 500 Hz
est idéal pour les premiers essais. On
peut aussi pousser la chansonnette ou en
charger la radio. Il faut tout d’abord faire
pivoter le potentiomètre trimmer jusqu’à
la butée de gauche pour que le capteur
offre la sensibilité la plus élevée.Pour obtenir une tension comme signal de sortie, il
est recommandé de raccorder un réseau
de résistances 2R/R en aval de la sortie
numérique des capteurs (figure 7). Il est
toutefois indispensable de le faire suivre
d’un convertisseur d’impédance.
(060040-I)
Liens sur le Web
[1] www.convict.lu/Jeunes/RoboticsIntro.htm
[2] www.ultimaterobolab.com
[3] www.elektor.fr
PWM/Servo
(s+6) entier 5 bits
(Digital)
À fond à droite
22
2 ms
26
Centre
12
1,5 ms
16
À fond à gauche
2
1 ms
6
Convertisseur N/A simple pour robots
Tilo Gockel
Lorsqu’un convertisseur numériqueanalogique (CNA) intégré fait défaut à
un microcontrôleur pour la sortie de
valeurs analogiques, on peut naturellement y suppléer à l’aide d’un circuit
intégré CNA externe. Cette solution
n’est ni la plus simple ni la plus élégante. Le montage présenté ici, proposé dans une note d’application de
Microchip [1], se passe de circuit intégré spécial et résout judicieusement le
problème. Le microcontrôleur y produit un signal à modulation en largeur
d’impulsion (MLI = PWM pour Pulse
Width Modulation en anglais) qu’un
simple filtre passe-bas RC convertit en un
signal analogique. En fait, le signal PWM
est déjà un signal analogique, même s’il
54
+10V
C51
ANALOG
OUT
R
PWM1
OPAMP
3k9
C
10n
-10V
070133 - 11
présente l’aspect d’un signal numérique:
son amplitude est certes aussi constante
que la fréquence du signal PWM, mais la
durée des impulsions varie entre 0% et
100%, proportionnellement à l’amplitude du signal analogique à produire.
On peut ainsi obtenir une tension analogique en sollicitant en PWM une broche de port à l’aide d’un chronomètre,
par exemple.
La note d’application explique comment calculer le filtre passe-bas RC.
Avec les valeurs de composants indiquées (3,9 kΩ et 10 nF), la fréquence
de coupure à –3 dB du filtre passe-bas
est de quelque 4 kHz. Pour une fréquence PWM de 20 kHz, le dispositif produira des signaux analogiques
(émissions vocales ou sonores du
robot, par exemple) avec une bande
passante qui peut atteindre 4 kHz. Le filtre
passe-bas atténue de 14 dB la fréquence
PWM de 20 kHz. La faiblesse de cette atté-
elektor - 7-8/2007
nuation ne pose pas de problème pour une
émission vocale puisque le signal résiduel
de 20 KHz ne sera pas perçu par l’oreille
humaine, ou à peine si elle est jeune.
Le choix de l’amplificateur opérationnel
n’est pas critique et un modèle courant,
comme le TL071, par exemple, conviendra. On peut, naturellement, adapter la fré-
quence de coupure à l’émission de signaux
analogiques de fréquence inférieure, voire
continus, de façon à atténuer plus fortement la fréquence PWM. On réduira ainsi
l’ondulation du signal (continu) de sortie.
Cette tension de sortie pourra servir, par
exemple, de signal de commande, au standard industriel de ±10V, à un asservisse-
ment de vitesse. Si le moteur, à la sortie
d’un étage de puissance, est attaqué directement par la PWM, le moteur assurera la
fonction de filtre passe-bas.
(070133-I)
[1] http://ww1.microchip.com/downloads/
en/AppNotes/00538c.pdf
Du magnétophone à cassettes
au moteur de propulsion de robot
B. Broussas
1
+6V
Il existe à l’heure actuelle trois modes prinC1
cipaux de propulsion d’un robot mobile :
10µ
la servo de radiocommande modifié, le
16V
moteur pas à pas et le moteur à courant
7
continu. Tous présentent des avantages et
1
8
des inconvénients qu’il importe de bien
IN1
IN1
OUT1
M1
IC1
3
6
connaître avant de faire son choix.
VCONT
NC
M
LB1630
La servo de radiocommande modifié pré4
5
OUT2
IN2
IN2
sente de nombreux avantages, dont le prin400mA max.
cipal est d’offrir une puissance de traction
2
relativement importante sans nécessiter le
070303 - 11
montage d’aucune mécanique de démultiplication. En effet, cette dernière est déjà
contenue dans le boîtier de la servo
qu’il ne reste donc plus qu’à monter
Tableau : Table de vérité
sur le robot en fixant directement
du circuit de commande de moteur LB1630.
les roues sur son axe. En outre, une
IN1
IN2
OUT1
OUT2
Moteur
servo de radiocommande s’alimente
H
L
H
L
Marche avant
sous une tension de 4,8 volts ce qui
s’avère particulièrement bien adapté
L
H
L
H
Marche arrière
aux robots utilisant quatre batteries
H
H
HiZ
HiZ
Arrêt
rechargeable de 1,2 volt.
L
L
HiZ
HiZ
Arrêt
L’inconvénient majeur de la servo de
radiocommande n’est pas tant son
mode de commande impulsionnel,
pour lequel diverses solutions vous
2
21
sont proposées par ailleurs dans ce
+6V
1
24
même numéro, que l’imprécision
SOUT
VIN
2
SIN
C1
du comportement de la servo vis à
3
22
ATN
RES
vis de la largeur des impulsions. En
10µ
IC2
16V
20
5
effet, si la servo tourne théoriqueP15
P0
19
6
ment à sa vitesse maximum dans un
P14
P1
18
7
P13
P2
7
sens ou dans l’autre pour des impul17
8
P12
P3
sions de 1 ou 2 ms et s’arrête pour
16
9
1
8
IN1
OUT1
P11
P4
M1
des impulsions de 1,5 ms ; l’expéIC1
15
CB220
10
P10
P5
3
6
VCONT
NC
M
14
11
rience montre que des écarts de 10
P9
P6
LB1630
13
12
4
5
OUT2
à 20% sur la largeur des impulsions
P8
P7
IN2
à utiliser sont parfois rencontrés.
400mA max.
4
23
2
Ces écarts imposent donc de calibrer les programmes de commande
070303 - 12
de propulsion des robots équipés
de servos au cas par cas, interdisant
toute reproductibilité d’un modèle
7-8/2007 - elektor
de robot à une autre.
Les moteurs pas à pas quant à eux ne
souffrent pas de ces inconvénients, mais
ils ne comportent le plus souvent aucune
démultiplication mécanique intégrée,
ce qui impose d’en prévoir une externe
si l’on ne veut pas disposer d’un couple
trop faible. Si vous ne voulez pas réaliser
une telle démultiplication vous-même ; il
est possible de faire appel à des « boîtes
de vitesse » vendues en kit chez divers
détaillants en robotique ou en modélisme, mais l’expérience montre que ces
dernières sont généralement prévues pour
des moteurs à courant continu standards,
et sont donc mal adaptées à l’encombrement assez important des
moteurs pas à pas. En outre, la commande de ces derniers nécessite de
recourir, soit à un circuit intégré spécialisé, soit à un ensemble de circuits
logiques associés à des transistors de
puissance.
Si donc vous êtes contraint de recourir à une démultiplication externe,
parce que vous ne voulez pas utiliser une servo par exemple, le
moteur à courant continu s’impose
alors comme un choix naturel, et ce
d’autant que certains kits de « boîtes
de vitesse » sont vendus avec de tels
moteurs. Reste alors à commander
ces derniers correctement.
Si des schémas classiques à base de
transistors sont toujours utilisables,
sachez qu’il existe également une
solution très simple, directement inspirée des (anciens) magnétophones
à cassettes sur lesquels les moteurs
à courant continu étaient monnaie
courante. Elle consiste à faire appel
à un circuit intégré fabriqué par
Sanyo, baptisé LB1630, que vous
pourrez récupérer sur de nombreux
magnétophones à cassettes mis au
55
rebut ou bien acheter neuf chez Lextronic
par exemple (www.lextronic.fr).
Le LB1630, disponible en boîtier DIP 8 pattes, est d’une mise en œuvre ridiculement
simple comme le montre la figure 1. Il ne
lui faut en effet qu’un condensateur externe
de découplage pour pouvoir fonctionner et
il se commande au moyen de deux signaux
logiques compatibles TTL lorsque le circuit
est alimenté sous une tension de l’ordre de
5 volts. Cette dernière d’ailleurs doit être
comprise entre 2,5 et 6 volts et ne doit en
aucun cas dépasser 7 volts sous peine de
destruction du circuit.
La consommation de courant du moteur
ainsi commandé peut atteindre 400 mA
au maximum, même si des pointes jusqu’à
2 ampères sont admises, mais seulement
sous forme d’impulsions dont la durée ne
saurait excéder 50 ms avec un rapport
cyclique de 10%.
Les diodes de protection, indispensables
lorsque l’on commande un moteur électrique avec des transistors, sont intégrées
dans le LB1630 et n’ont donc pas besoin
d’être ajoutées sur la figure présentée.
Les deux entrées IN1 et IN2 permettent une commande logique du moteur
conformément aux indications du tableau
ci-dessous.
En fait, il suffit que les entrées IN1 et IN2
du LB1630 soient dans un état contraire
pour que le moteur tourne dans un sens
ou dans l’autre. Une commande à partir
de deux lignes de ports parallèles de n’importe quel microcontrôleur est donc très
facile à réaliser.
Indépendamment de cette commande de
type « tout ou rien », qui permet de faire
tourner le moteur dans un sens ou dans
l’autre ; il est possible de réaliser de la
commande de vitesse de rotation. Il suffit
pour cela d’appliquer des impulsions PWM
à l’une ou l’autre des entrées IN1 et IN2.
La figure 2 présente ainsi un exemple de
réalisation d’une telle commande de vitesse
au moyen d’un Cubloc CB220 qui présente
l’avantage, sur de nombreux autres microcontrôleurs programmables en Basic, de
pouvoir générer des signaux PWM (MLI,
Modulation en Largeur d’Impulsion) de
manière continue. Avec un tel schéma, il
suffit d’écrire par exemple :
OUT 6,0
PWM 0, SPEED, 255
pour faire tourner le moteur dans un sens à
une vitesse réglable au moyen de la variable SPEED qui peut varier de 0 à 255, et :
OUT 6,1
PWM 0, (255-SPEED), 255
pour le faire tourner à la même vitesse
mais dans l’autre sens.
Notez également que, compte tenu du fait
que les entrées IN1 et IN2 du LB1630 sont
des entrées de signaux logiques, il est possible d’en connecter plusieurs en parallèle
afin de commander ainsi plusieurs moteurs
de manière identique.
Attention ! Si vous commandez de la sorte
deux moteurs de traction placés dos à dos
de part et d’autre du robot, il faut qu’ils
tournent en sens inverse l’un de l’autre
pour faire avancer ou reculer le robot. Il
faut alors croiser les entrées des LB1630
(IN1 de l’un sur IN2 de l’autre et vice versa)
si vous les commandez simultanément,
ou bien encore câbler les moteurs à l’inverse l’un de l’autre sur les sorties OUT1
et OUT2.
(070303-I)
Un robot qui ne perd pas le Nord
C.Tavernier
La réalisation d’un robot capable de suivre une direction précise sans nécessiter de support matériel, telle
qu’une ligne tracée sur le
sol par exemple, a pendant longtemps été une
opération très délicate à
réaliser. Grâce à l’essor
de la robotique amateur d’une part et au
développement de nouveaux capteurs d’autre
part ; il est aujourd’hui possible de réaliser des robots dont
les fonctions relevaient encore de la
science fiction il y a seulement quelques
années. C’est ce que nous vous proposons
de découvrir maintenant avec la réalisation d’un robot capable de repérer le Nord
magnétique terrestre, et donc de suivre
n’importe quelle direction angulaire par
rapport à ce dernier, exactement comme
vous le feriez pour vous repérer avec une
boussole. Il utilise pour cela le successeur
de la bonne vieille boussole à aiguille sous
la forme d’un module fabriqué par Devantech, qui a pour nom CMP03 (ou CMPS03
56
selon les versions et les documents).
Ce module, fourni sous forme d’un petit
circuit imprimé prêt à l’emploi comme
le montre la photo qui illustre cet article,
contient deux capteurs de champ magnétique KMZ51 de Philips, montés à angle droit,
dont les signaux de sortie sont traités par un
microcontrôleur PIC16F872 convenablement
programmé. Il est capable de délivrer une
information de positionnement angulaire par
rapport au Nord magnétique terrestre avec une précision qui peut atteindre le
dixième de degré. Cette
information est disponible sous forme d’un signal
PWM dont la largeur des
états hauts des impulsions
est l’image de cet angle,
mais la résolution n’est
alors que de un degré. Elle
est également disponible
via un bus I2C qui, selon
le registre que l’on va lire
dans le module, peut permettre de disposer de cet
angle sous forme d’un mot
de 16 bits qui offre alors
une précision d’un dixième de degré.
Si l’on équipe un robot d’un tel module, il
est alors possible à tout instant de connaître l’angle que fait sa trajectoire avec le
Nord magnétique et donc de le diriger
exactement comme vous le feriez vousmême avec une boussole.
Le seul « problème » qui peut se poser
est l’interfaçage du module CMP03 avec
le microcontrôleur qui équipe le robot.
Afin de répondre au plus grand nombre
elektor - 7-8/2007
1
21
1
PULSIN 0, 1, PULSE
POSITION = (PULSE – 500) / 50
La première ligne permet à l’instruction PULSIN de lire la durée
de l’état haut de l’impulsion
générée par le module CMP03.
La seconde ligne, ne fait qu’appliquer la relation vue ci-dessus
en tenant compte du fait que la
résolution de la mesure effectuée
par PULSIN est de 2 µs dans le
cas du Basic Stamp II. On dispose donc bien, dans la variable
POSITION, de l’angle par rapport
au Nord magnétique exprimé en
degrés.
Si vous souhaitez bénéficier
d’une précision plus importante
ou bien encore si votre microcontrôleur dispose d’une inter-
7-8/2007 - elektor
VIN
SIN
3
ATN
RES
IC1
20
19
18
17
16
15
P15
P0
P14
P1
P13
P2
P12
P3
P11
P4
P10
14
13
BS2
P5
P9
P6
P8
P7
4
24
1
22
3
4
6
5
7
6
8
7
9
8
10
9
2
3
5
6
7
9
10
11
12
CMP03
ou
CMPS03
11
12
S1
23
070304 - 11
face I2C, il vous est possible d’utiliser cette
interface pour dialoguer avec le module
CMP03 comme le montre à titre d’exemple la figure 2. Elle a été dessinée dans le
cas d’un Cubloc CB220 ou d’un PIC programmé en Basic avec un compilateur
disposant d’une bibliothèque I2C, ce qui
+U
SOUT
R1
VIN
SIN
ATN
RES
IC1
P0
P15
P1
P14
P2
P13
P3
P12
P4
P5
CB220
P11
P10
P6
P9
P7
P8
4
24
R2
4k7
1
2
5
21
8
Lire une telle information avec
un Basic Stamp II ou un PIC programmé en Basic se résume à
deux lignes de programme :
SOUT
2
La figure 1 présente le schéma à
utiliser pour exploiter les signaux
PWM. Elle a été réalisée dans le
cas d’un Basic Stamp II mais peut
être transposée à n’importe quel
microcontrôleur PIC programmé
en Basic ne disposant pas de fonctions I2C.
L’interrupteur S1, présent au niveau
de la patte 6 du module CMP03,
n’intervient pas dans le processus
de dialogue mais permet de calibrer le module selon la procédure
indiquée dans sa documentation,
que nous ne reproduirons pas ici car cela
ne présente aucune difficulté.
L’information délivrée par le module
CMP03 est une succession d’impulsions
au niveau haut séparées par des états bas
de 65 ms de durée. La largeur des états
hauts des impulsions indique l’angle de
l’axe principal du module par
rapport au Nord grâce à la rela2
tion suivante :
Position =
(Largeur – 1) x 10 où :
• Position est l’angle, exprimé
en degrés, par rapport au Nord
magnétique.
• Largeur est la largeur de l’état
haut des impulsions exprimée en
millisecondes.
+U
4k7
de configurations robotiques possibles nous allons donc vous montrer comment exploiter les deux
moyens de dialogue proposés par
le module : les signaux PWM et le
bus I2C.
1
22
2
3
20
4
19
5
18
6
17
7
16
8
15
CMP03
ou
est le cas de la majorité d’entre eux
aujourd’hui.
Les seules précautions à prendre
avec ce schéma concernent les
résistances de rappel du bus I 2C
qui doivent être câblées car elles
ne sont intégrées ni dans le module
CMP03, ni dans le microcontrôleur
(quel qu’il soit). Si vous utilisez un
PIC programmé en Basic, il faut également veiller à choisir correctement
les ports destinés à gérer les signaux
SDA et SCL du bus I2C car certains
compilateurs Basic imposent des
restrictions à ce niveau.
Afin de pouvoir écrire le programme
correspondant, il suffit ensuite de
savoir que l’adresse I2C du module
CMP03 est égale à C0 et que quatre
registres principaux sont à notre disposition à partir de cette adresse :
• le registre 0 contient le numéro de version du logiciel du module ;
• le registre 1 contient l’angle codé sur un
octet. L’évolution de cette valeur de 0 à
255 correspond donc à un cercle de 0 à
360° ;
• les registres 2 et 3 contiennent l’angle,
codé cette fois-ci sur deux octets,
sous la forme d’un nombre compris entre 0 et 3599 (exprimé en
décimal) qui est en fait l’angle en
degrés multipliée par dix.
Dès lors, la lecture de ces informations au travers d’un bus I2C ne
présente aucune difficulté comme
le montre le très court listing cidessous rédigé dans le cas du langage Basic du Cubloc :
CMPS03
9
14
SCL
13
SDA
S1
23
070304 - 12
Pin 9 - 0V GND
Pin 8 - No Connect
Pin 7 - 50/60 Hz
Pin 6 - Calibrate
Pin 5 - No Connect
Pin 4 - PWM
Pin 3 - SDA
Pin 2 - SCL
Pin 1 - +5V
070304 - 13
I2CSTART
Temp = I2CWRITE (&HC0)
Temp = I2CWRITE(0)
I2CSTART
Temp = I2CWRITE(&HC1)
Version = I2CREAD(0)
Temp = I2CWRITE(&HC1)
Position8 = I2CREAD(0)
Temp = I2CWRITE(&HC1)
Position16.byte1
= I2CREAD(0)
Temp = I2CWRITE(&HC1)
Position16.byte0
= I2CREAD(0)
Les trois premières instructions
adressent le module et sélectionnent le premier registre à lire.
Les instructions suivantes lisent
les quatre registres décrits précédemment, l’un après l’autre, et
permettent donc de disposer dans
la variable Version du numéro
de version du logiciel, dans la
variable Position8 de l’angle
codé sur 8 bits et dans la variable
16 bits Position16 de l’angle
codé sur 16 bits.
La variable Temp ne sert à rien
mais elle est requise par la syn-
57
taxe particulière des instructions I2C du
Basic du Cubloc. De même, la constante 0
qui doit être présente au niveau des instructions I2CREAD, n’a aucune signification particulière.
Si vous utilisez ce listing avec un PIC programmé en Basic, une légère adaptation
pourra donc s’avérer nécessaire selon le
compilateur auquel vous ferez appel (voir
par exemple à ce sujet l’ouvrage « Microcontrôleurs PIC : programmation en Basic »
Adresses Internet :
publié chez Dunod).
Que vous choisissiez la version PWM ou
la version I2C pour interfacer le module
CMP03, vous disposez donc, avec celuici, d’une information de positionnement
de la trajectoire de votre robot par rapport
au Nord magnétique. Il ne vous reste plus
qu’à en faire bon usage pour que votre
robot « ne perde pas le Nord ».
Devantech www.robot-electronics.co.uk/shop/ Compass_CMPS032004.htm
Un peu de lecture : http://zedomax.com/blog/zedomax-diyhack-lets-make-a-digital-compass/
http://zedomax.com/blog/2006/08/16/digital-compass-using-cmps03/
(070304-I)
Capteur de pouls sans fil
+5V
+5V
R4
10k
Markus Bindhammer
IC1
100k
4
100k
R5
C1
220 Ω
3
470n
1
IC1.A
2
5
7
IC1.B
6
T1
R6
1k8
BD139
R7
LDR1
R3
R2
IC1 = LM358
1k
LED3
47k
Ce capteur de pouls a été conçu pour servir d’interface de communication hommemachine. Le robot peut réagir à au changement du rythme cardiaque de son vis-à-vis
humain. Les sorties numériques du circuit
permettent de l’utiliser efficacement dans
d’autres applications.
8
P1
R1
220 Ω
Pour robots et autres
commandes
P2
100k
LED2
Le capteur de pouls proprement dit est
constitué par une LDR (résistance en pleine
P3
BD139
BC547
21 mm
+5V
TSOP1136
C
E
BC547
IC3
58
OUT
THR
NE555
TR
7
R8
6
2
CV
5
C3
C2
10n
1n
IR
1
TSOP1136
070006 - 12
lumière 300 Ω, résistance dans l’obscurité environ 10 MΩ) ordinaire et une LED
claire (D1). Celle-ci doit produire au moins
1 000 mcd et éclaire la LDR à travers le
doigt. Chaque fois que le cœur effectue un
battement pour envoyer du sang dans les
artères, le doigt s’assombrit – tout au moins
à l’intérieur. La LDR reçoit donc moins de
lumière. L’évaluation qui s’ensuit donne
lieu à une impulsion.
Chaque battement modifie l’impédance
de la LDR, donc la tension d’entrée du
comparateur IC1.A. Le gain de ce dernier
est ajusté par le potentiomètre trimmer P1
3
1
LED1
3
Gaine thermorétractable
1k8
IC2
R11
3
2
LED
R10
100 Ω
Ø 22 mm
100n
2
T2
C
C5
1
B
4
R
DIS
E
B
22k
8
LDR
Tube de plastique
R9
100n
6k8
15mm
10k
30 ... 40 kHz
C4
de la rétroaction. Le deuxième comparateur IC1.B qui suit le premier et le potentiomètre P2 déterminent la sensibilité du
circuit. Le petit étage de sortie T1 alimente
une LED (D2) qui reflète « localement » le
pouls, mais active surtout le temporisateur
555 (IC2) utilisé comme générateur classique de signaux rectangulaires. La fréquence du signal modulé par le pouls produit par le générateur est déterminée par
le potentiomètre trimmer P3 dans la plage
de 30 à 40 kHz. La LED IR raccordée à la
sortie du 555 par un étage d’attaque peut
transmettre le signal modulé au module
070006 - 11
récepteur IR IC3. La portée de l’interface
croît avec la puissance de la LED IR. Il peut
donc devenir nécessaire d’ajuster R11 en
fonction du courant requis par la LED. Le
module récepteur peut envoyer directement son signal de sortie démodulé à un
microcontrôleur. La fréquence de travail
du module de réception utilisé détermine
la valeur de P1.
Un petit tube de plastique ne dépassant
pas 40 mm et fermé à une extrémité sert
de capteur de pouls. Il doit s’ajuster étroitement mais commodément au bout du
doigt. Percer les trous pour la LED et la
elektor - 7-8/2007
LDR à 15 mm de l’extrémité. Coller les
2 composants (veiller à ce qu’ils soient
d’une forme appropriée) de façon à ce
qu’ils « voient » l’intérieur du tube. Isoler
les fils de connexion et recouvrir tout le
capteur d’un morceau de gaine rétractable
pour éviter l’intrusion de lumière parasite
dans la LDR. Si le tout paraît trop gros-
sier, on peut aussi se servir d’un capteur de
pouls à clip, par exemple d’une bicyclette
d’entraînement.
(070006-I)
Capteur PIR
Abraham Vreugdenhil
1
On se trouve toujours, lorsque l’on envisage de réaliser un robot, confronté au
choix des capteurs. Ce choix dépend bien
entendu également de la « mission » du
robot. La difficulté de mise en oeuvre et le
coût du capteur jouent eux aussi un rôle
non négligeable dans cette décision. Les
capteurs répondant le mieux à ce cahier
2
3
Sig
+
–
des charges sont indubitablement les
détecteurs de choc et les antennes (moustaches) à base de micro-interrupteurs
(microswitch) mais aussi les télécapteurs
IR de Sharp et les capteurs à ultrasons.
Si nous souhaitons détecter des objets
« chauds » tels qu’êtres humains ou animaux, les détecteurs PIR (Passive InfraRed
sensor) d’Eltec tels que le Eltec-442. Il s’agit
d’un très beau capteur dont le prix (dépassant 60 dollars) constitue un problème
majeur. Conrad FR propose un capteur
PIR, le LHI958 (référence 178730) pour
5,50 €. L’inconvénient de ce capteur est
qu’il faut le doter d’un amplificateur si l’on
veut disposer d’un signal de sortie utilisable. La documentation descriptive de ce
capteur n’en parle qu’à mots couverts.
Il existe une autre approche possible : utiliser un capteur que l’on trouve un peu
partout de nos jours : le fameux détecteur
de présence dont sont dotés les éclairages
extérieurs et que l’on trouve, à un prix très
abordable, dans tous les magasins de bricolage. Ils sont souvent proposés à moins
de 10 euros. Après démontage de ce capteur on se trouve en présence d’une platine
principale dans laquelle est enfichée un circuit imprimé auxiliaire (figure 1). C’est sur
ce dernier que se trouve le détecteur PIR
et son électronique connexe. Les points
7-8/2007 - elektor
d’application de la tension d’alimentation
et le signal de sortie se trouvent sur le dos
de cette platine (figure 2). Normalement,
l’alimentation du capteur se fait sous 8 V,
mais il fonctionne parfaitement sous 5 V.
Un robot d’une certaine taille sera souvent
doté de plusieurs capteurs PIR montés à des
angles différents sur le bâti. À cet effet, nous
pouvons monter 3 capteurs sur un morceau
de platine d’expérimentation à pastilles et
limiter leur champ de vision par le biais de
morceaux de tubes d’installation électrique
en plastique. La longueur de ce morceau de
tube détermine l’angle de vision souhaité.
Nominalement, l’angle de détection de ce
type de capteurs est de 140 °, ce qui expli-
que la nécessité de limitation du champ de
vision. Il est bon de faire en sorte que les
champs de vision des différents capteurs se
recoupent. Une triplette de capteurs permet ainsi de définir 5 domaines de détection. On peut bien évidemment envisager
d'utiliser plus de 3 capteurs de manière à
augmenter la résolution.
Il est possible, de cette façon et à un coût
relativement abordable, une belle unité
de détection PIR. L'exemple représenté
en figure 3 comporte 3 détecteurs PIR.
Ce type d’unité de détection est facile
à réaliser et fonctionne de façon très
satisfaisante.
(070189-I)
59
Télémètre infrarouge
à PIC ou
à Basic Stamp
1
VCC
3
C. Tavernier
VCC
Régulateur
Objet
réfléchissant
VCC
Circuit
traitement
signal
Circuit
de
commande
12k
Si les robots les moins évolués peuvent se
contenter d’une simple détection d’obstacles, nombre de robots qui requièrent de
la précision dans leur positionnement ont
besoin de pouvoir mesurer des distances
avec exactitude. Pour cela, il est nécessaire
de faire appel alors à un télémètre, qui
peut utiliser des infrarouges ou des ultrasons, tout en sachant que les infrarouges
sont bien adaptés à de la mesure à courte
distance (quelques centimètres à quelques
dizaines de centimètres) alors que les ultra-
4
VOUT
Détecteur lumière
(PSD)
LED IR
Circuit
Commande
LED
2
VCC
1
GND
VIN
(Entrée
du signal
de
commande)
070235 - 11
Listage 1 : Utilisation du GP2Dxx avec un Basic Stamp.
Vin
Vout
Mesure
Lecture
Attente
con
con
var
0 1
Byte
Mesure = 0
‘
:
Vin = 0
‘
:
IF Vout = 0 THEN Attente
‘
SHIFTIN Vout, Vin, 2, [Mesure]
Vin = 1
‘
Pause = 1
‘
‘ Définition de l’entrée de commande
‘ Définition de la sortie de données
‘ Réservation d’un octet pour le résultat
Initialisation de la variable « Mesure »
Validation du télémètre
Attente de la disponibilité du résultat
Mise en veille du télémètre
Temps de repos par précaution
‘ Le résultat de la mesure est disponible dans la variable « Mesure »
Listing 2 : Utilisation du GP2Dxx avec un microcontrôleur PIC.
Lecture
Attente
Lectbit
BCF
NOP
PortA.0
‘ Validation du télémètre
BTFSS
GOTO
BSF
CLRF
MOVLW
MOVWF
BCF
NOP
PortA,1
Attente
PortA,0 Mesure
8
Compte
Status,C
‘ Attente de la disponibilité du résultat
BCF
NOP
NOP
RLF
BTFSC
BSF
BSF
NOP
NOP
DECFSZ
GOTO
Porta.0
‘ Horloge au niveau bas
Mesure,f
PortA.1
Mesure,0
PortA.0
‘ Rotation du bit précédent
‘ Lecture du bit de données
Compte,f
Lectbit
‘ Décomptage du nombre de bits à lire
‘ Mise au niveau haut de Vin
‘ Initialisation de la variable « Mesure »
‘ Préparation à la lecture de 8 bits
‘ Mise à zéro de la retenue
‘ Horloge au niveau haut
‘ Le résultat de la mesure est disponible dans la variable « Mesure »
60
elektor - 7-8/2007
2
3
+5V
PIC
ou
Basic Stamp
Connecteur
GP2Dxx
1
2
3
4
D1
1N4148
0,2 ms ou moins
70 ms ou plus
1,5 ms ou plus
Alim
OFF
VIN
RA0 (PIC) ou
P0 (Stamp)
RA1 (PIC) ou
P1 (Stamp)
Sortie
MSB
sons conviennent mieux à des distances
allant de quelques dizaines de centimètres
à quelques mètres.
Si la réalisation d’un télémètre reste possible avec des moyens classiques, elle ne
présente plus aujourd’hui beaucoup d’intérêt en raison de la mise sur le marché de
modules intégrés prêts à l’emploi qui sont
tout à la fois relativement précis, peu coûteux et peu encombrants. Si l’on s’intéresse
aux télémètres à infrarouges, c’est Sharp
qui dispose aujourd’hui de la gamme la
plus vaste et la mieux distribuée tant que
l’on cherche à rester dans des produits à
prix compatibles d’un robot « amateur ».
Cette gamme, dont toutes les références
commencent par GP2, comprend des télémètres qui délivrent des informations de
type tout ou rien (ce ne sont plus vraiment
des télémètres !), des informations sous
forme analogique et des informations sous
forme numérique. Si les versions délivrant
des informations analogiques semblent
être les plus faciles à mettre en œuvre,
c’est cependant une absurdité que de les
utiliser dans un robot piloté par un microcontrôleur. En effet, ce dernier va s’empresser de convertir cette tension analogique en numérique via son convertisseur
intégré afin de pouvoir l’exploiter. Il vaut
donc mieux, dès le départ, disposer d’une
information numérique même si elle semble un peu plus difficile à lire en sortie du
télémètre.
Dans ces conditions, deux références sont
actuellement facilement disponibles en
Europe, chez Selectronic notamment, avec
le GP2D02 capable de mesure de 10 cm à
80 cm environ et le GP2D021 capable de
mesurer de 4 à 30 cm environ. Ces deux
références sont totalement compatibles
tant en termes mécaniques qu’électroniques et tout ce que nous allons écrire
maintenant est donc valable pour ces deux
modèles.
Le principe d’un télémètre à infrarouge
est relativement simple : une LED émet un
faisceau infrarouge qui, s’il rencontre un
objet, est réfléchi par ce dernier vers une
photodiode. Si on le laisse tel quel, un tel
système est de type tout ou rien et tient
plus du détecteur d’obstacle que du vrai
télémètre. Si certains des télémètres Sharp
LSB
LSB
Exemple de sortie de mesure de distance (8 bits)
fonctionnent selon ce principe, les deux
références que nous avons retenues sont
capables de réaliser une véritable mesure
de distance car ce n’est plus une simple
photodiode qui reçoit le rayon réfléchi par
l’objet mais une barrette de CCD.
De ce fait, l’angle d’incidence du faisceau
réfléchi arrivant sur cette barrette varie en
fonction de l’éloignement de l’objet détecté
et permet donc une véritable mesure de
distance, pour peu qu’un minimum de traitement du signal exploite les informations
générées par le capteur CCD.
C’est le cas dans les télémètres Sharp de
ce type dont le synoptique interne vous
est présenté figure 1. Pour ceux des télémètres qui ont une entrée de validation
de mesure, ce qui est le cas des modèles choisis, la LED est mise sous tension
uniquement sous contrôle de celle-ci, ce
qui permet de réduire de façon très importante la consommation au repos. Dans
les autres télémètres, elle fonctionne en
permanence.
Le capteur CCD est suivi par une circuiterie de traitement du signal qui permet de
générer en sortie : soit une information de
type tout ou rien pour les télémètres les
plus simples, soit une information analogique, soit enfin, dans les modèles qui nous
intéressent, une information numérique
codée sur 8 bits.
Nous avons choisi de vous montrer comment utiliser un tel télémètre avec un Basic
Stamp ou bien encore avec un microcontrôleur PIC programmé en Basic ou en langage machine afin d’être compatible d’un
maximum de solutions robotiques.
Le schéma de connexion du télémètre se
résume à ce que vous pouvez découvrir
figure 2, que ce soit avec un PIC ou avec
un Basic Stamp. Le détecteur GP2D02 ou
GP2D021 est alimenté en permanence
mais, du fait de la présence de son entrée
de commande, il ne consomme quasiment
rien tant qu’il ne réalise pas de mesure.
L’examen de son chronogramme de fonctionnement, présenté figure 3, permet de
constater que cette entrée sert non seulement à valider la mesure mais qu’elle sert
également d’horloge pour lire le résultat
fourni sur sa borne Vout.
Elle doit donc être contrôlée par le micro-
070235 - 13
contrôleur associé, mais comme elle ne
doit pas se voir appliquer une tension
supérieure à 3 volts, la diode D l’isole de
la sortie du microcontrôleur lorsque cette
dernière est au niveau haut.
Ceci étant précisé, l’examen du chronogramme de la figure 3 vous permettra
sans peine de suivre les listings des très
courts programmes que nous avons écrits
pour exploiter ce capteur, que ce soit en
Basic, pour le Basic Stamp et pour les PIC
programmés en Basic, ou en assembleur
PIC pour ceux d’entre vous qui préfèrent
le langage machine.
Pour ce qui est du Basic Stamp, la seule
instruction SHIFTIN, suffit à lire le résultat
de mesure du capteur. Pour ce qui est du
PIC, il faut évidemment faire appel à un
peu plus d’instructions de façon à générer l’horloge de lecture et à récupérer les
données correspondantes. Dans les deux
cas, ces programmes fournissent dans la
variable « Mesure » la donnée numérique renvoyée par le télémètre suite à la
mesure réalisée. A charge ensuite par le
programme de gestion de votre robot d’exploiter cette valeur directement, ou de la
linéariser grâce à une table de conversion
si vous voulez faire de la mesure de distance réelle.
En effet, comme le montre la figure 4, et
c’est peut être là le seul défaut de ces télémètres, l’information qu’ils délivrent est
loin d’être linéaire.
(070235-I)
220
Papier blanc : carte grise R-27 faite par KODAK
surface blanche (réflectivité : 90%)
Papier gris : carte grise R-27 faite par KODAK
surface grise (réflectivité : 18%)
200
Sortie de mesure de distance (DEC)
070235 - 12
7-8/2007 - elektor
1,5 ms ou plus
1 ms ou plus
180
160
Blanc
140
120
100
80
60
Gris
40
20
0
0
20
40
60
80
100
Distance -> objet réfléchissant L [cm]
4
120
140
070235 - 14
61
Détecteur d’obstacles lointains
à ultrasons
62
+5V...+12V
R5
1k
lin.
14
C4
IC1
10n
4k7
R1
R7
C5
10k
P1
2k2
R3
330 Ω
100µ
15V
7
1
C1
22n
C2
R2
T1
D2
R6
1
IC1.B
2
3
1
4
S2
T3
220k
R4
BC548B
RXUS
IC1 = 74HC14
IC1.A
470k
Le premier capteur dont on équipe habituellement un robot est un détecteur d’obstacles.
Il peut revêtir trois aspects différents selon
le type d’obstacles que l’on souhaite détecter mais aussi et surtout selon la distance à
laquelle on souhaite que la détection ait lieu.
Pour les obstacles proches ou très proches
on fera appel le plus souvent à des capteurs
à infrarouge à réflexion, dont un exemple de
réalisation vous est proposé par ailleurs dans
ce numéro. Ces capteurs sont toutefois limités à des distances de quelques mm à une
dizaine de mm tout au plus.
Une autre solution, simple et fréquemment
rencontrée, consiste à faire appel à des
détecteurs à contacts ou « moustaches »
qui ne sont rien d’autre que des tiges plus
ou moins longues, en corde à piano ou
en matériau similaire, qui agissent sur des
microrupteurs. La détection a lieu un peu
plus loin qu’avec les capteurs infrarouges
mais reste limitée à quelques cm car, dans
le cas contraire, les moustaches deviennent trop longues et gênent le déplacement normal du robot car elles risquent
de se coincer dans son environnement.
Pour les obstacles situés au delà d’un ou
deux cm, une autre solution efficace existe
et consiste à faire appel aux ultrasons. Elle
est souvent de mise en œuvre délicate car
leurs concepteurs raisonnent comme s’ils
devaient réaliser un télémètre alors que
l’on cherche juste ici à détecter la présence
ou l’absence d’obstacles, et non à mesurer
la distance à laquelle ils se trouvent.
Nous vous proposons donc ici une approche originale qui permet de réduire le
schéma nécessaire à une poignée de composants classiques et peu coûteux. Notre
solution repose sur l’effet Larsen, bien connu
des amateurs de sonorisation. Cet effet, qui
se traduit par un sifflement plus ou moins
violent, se produit lorsqu’un micro capte
le son des enceintes qui lui sont reliées au
travers de l’amplificateur. On réalise ainsi
un oscillateur acoustique en réinjectant le
signal de sortie, produit par le haut-parleur,
sur l’entrée, matérialisée par le micro.
Notre détecteur fonctionne sur le même
principe, mais le micro est un récepteur à
ultrasons tandis que le haut-parleur est un
émetteur d’ultrasons. Entre les deux, il n’y a
qu’un banal amplificateur très facile à réaliser et c’est l’obstacle dont on veut détecter
la présence qui se charge de réfléchir le faisceau ultrasonore de la sortie sur l’entrée.
1
470k
B. Broussas
560p
T2
D1
BC548B
C3
1N4148
BC548B
S1
1N4148
470n
TXUS
070236 - 11
Comme le montre la figure 1, le récepteur
à ultrasons RXUS est relié à l’entrée d’un
amplificateur à grand gain réalisé grâce aux
transistors T1 et T2. Le gain de cet étage étant
très élevé, il peut être réduit si nécessaire au
moyen du potentiomètre P1 pour éviter qu’il
entre en oscillation tout seul, en l’absence
d’obstacle. La sortie de cet amplificateur est
reliée à l’émetteur à ultrasons TXUS constituant ainsi la boucle susceptible d’osciller par
effet Larsen. Lorsque cela se produit, c’est à
dire lorsqu’un obstacle se trouve suffisamment prés des transducteurs à ultrasons ; un
signal pseudo sinusoïdal à 40 kHz, qui est
leur fréquence de résonance, apparaît en
sortie de l’amplificateur c’est à dire aux bornes du transducteur émetteur. Ce signal est
redressé par D1 et D2 et filtré par C3 et, s’il
est d’amplitude suffisante, il produit dans R6
un courant capable de rendre le transistor T3
plus ou moins conducteur.
Selon la nature et l’éloignement de l’obstacle, ce processus ne fonctionne pas nécessairement de manière parfaitement binaire
et le niveau disponible sur le collecteur de
T3 peut être assez mal défini. Les inverseurs CMOS à trigger de Schmitt se chargent donc de le transformer en un signal
logique digne de ce nom. En présence
d’obstacle S1 est donc au niveau haut tandis que S2 est au niveau bas.
L’alimentation peut avoir lieu sous n’importe quelle tension comprise entre 5 et
12 volts. Le gain, et donc la sensibilité de
détection du montage, varie un peu lorsque la tension d’alimentation augmente
mais le potentiomètre P1 permet dans tous
les cas un réglage satisfaisant.
Bien qu’il soit très simple, ce montage est
capable de détecter dans de bonnes conditions un obstacle normalement réfléchissant aux ultrasons jusqu’à 5 ou 6 cm de
distance environ. Si une distance plus faible est nécessaire, il suffit tout simplement
de réduire le gain en agissant sur P1.
La réalisation du montage ne présente
aucune difficulté. Les deux transducteurs
sont des modèles 40 kHz que l’on trouve
chez tous les revendeurs, quant aux autres
composants, ils sont on ne peut plus classiques. Par contre, il faut prendre une précaution, lors du câblage des transducteurs.
En effet, même s’ils ne sont pas polarisés
au sens strict du terme, une de leurs électrodes est commune avec leur boîtier
métallique. C’est celle-ci qu’il faut relier à
la masse du montage tant côté émetteur
que côté récepteur.
Le fonctionnement est immédiat et se
limite au réglage de P1 afin de choisir la
2
Distance
maximum
de
détection
Obstacle
070236 - 12
distance de détection qui vous convient,
mais celle-ci dépend aussi du positionnement des transducteurs. Pour un fonctionnement optimum, nous vous conseillons
de les orienter comme indiqué figure 2.
(070236-I)
elektor - 7-8/2007
Positionnement
à réseau de photodiodes
Pascal Choquet
Le tableau résume les principales caractéristiques des réseaux les plus usuels.
Comme la sensibilité effective d’une photodiode se calcule à partir du temps d’intégration et de la surface, le tableau reprend
aussi les dimensions des surfaces de diodes actives.
De l’extérieur, un réseau est construit très
simplement. Il se connecte par trois fils,
plus l’alimentation, à un microcontrôleur:
Une entrée d’horloge (CLK), une entrée
destinée à une impulsion de démarrage
(SI) et une sortie analogique – pas plus.
La sortie analogique se connecte à la
masse par l’intermédiaire d’une résistance
de 330 Ω. Une lecture procède comme
suit: le contrôleur délivre un signal d’horloge. Quand une impulsion SI est appliquée pendant le flanc positif du signal,
les valeurs des pixels successifs apparaissent sur la sortie analogique à chacun des
flancs négatifs suivants du signal d’horloge. Le microcontrôleur n’a plus qu’à lire
successivement ces valeurs sur son entrée
analogique et à les enregistrer. Le flanc qui
suit le dernier pixel réinitialise l’électronique de lecture.
Le MLX90255 présente des particularités :
les deux premières valeurs sont des pixels
« pour rien » (dummy). La première valeur
réelle arrive donc avec le troisième flanc.
Les autres pixels suivent et, sur les flancs
numéro 131 et 132, suivent encore deux
pixels fictifs. Le 133ème flanc est le signal
de réinitialisation. Les photodiodes extérieures sont, ensuite, les plus sensibles,
puisque la pondération cosinus est adaptée à la poursuite d’une LED, dont l’éclai-
7-8/2007 - elektor
10k
R2
C6
C5
100n
100n
20
K1
1
7
6
5
4
4
3
2
IC2
A OUT
SI
CLK
3
MCLR/VPP
IC3
C3
1µ
RA5/AN4/SS/LVDIN
RA4/T0CKI
RA3/AN3/VREF+
RA1/AN1
C1
RA0/AN0
PIC18F242
1
21
2
22
23
MLX90255
24
25
5
26
27
28
RB0/INT0
RC7/RX/DT
RB1/INT1
RC6/TX/CK
RB2/INT2
RC5/SDO
RB3/CCP2
RC4/SDI/SDA
RB4
RC3/SCK/SCL
RB5/PGM
RC2/CCP1
RB6/PGC
RC1/T1OSI/CCP2
RB7/PGD
RC0/T1OSO/T1CKI
OSC1
R1
8
9
25V
2
RA2/AN2/VREF-
18
1µ
25V
1
3
12
17
11
16
10
15
9
14
13
12
11
C2
1µ
25V
4
5
V+
C1+
IC1
C1–
X1
K2
R1OUT
R1IN
T1IN
T1OUT
T2IN
T2OUT
R2OUT
R2IN
C10
13
RX
14
TX
7
8
C2+
MAX232
C2–
15
V6
OSC2
10
16
C4
19
1µ
25V
330Ω
Un robot de fabrication doit toujours
savoir précisément ou se trouvent ses
actionneurs, ses outils et les pièces. Pour
des tâches de positionnement précises,
il existe des circuits intégrés à réseaux
de photodiodes qui contiennent aussi
une électronique de lecture et font d’excellents capteurs de déplacement. Leurs
échantillonneurs-bloqueurs (E&B) peuvent
analyser simultanément toutes les diodes.
Cette caractéristique est importante, puisque la sensibilité, toutes choses égales par
ailleurs, dépend surtout du temps d’intégration pendant lequel les photodiodes
enregistrent les quanta de lumière. Sans
ces E&B, la diode la plus sensible serait
toujours la dernière diode lue.
+5V
C9
15p
15p
4.9152MHz
070314 - 11
Caractéristiques de réseaux de photodiodes
Réseau
MLX90255
TLS1301
TLS1401
TLS208R
Pixels (* Cf. texte)
128 (+ 4*)
102
128
512
Pas [DPI]
385
300
400
200
Pondération
cosinus
uniforme
uniforme
uniforme
L x l [µm]
200 x 66
85 x 77
63,5 x 55,5
120 x 70
Valeur de sortie [V]
0,125 à 2,4
0 à 2,0
0 à 2,0
0 à 2,0
rage est irrégulier.
Le temps d’intégration démarre toujours au
18ème flanc et dure jusqu’à la SI suivante.
Les valeurs collectées sont celles de l’intégration précédente. Si la mesure n’est pas
permanente, le cycle doit se répéter une
fois pour une mesure unique. Le premier
cycle délivre des résultats non exploitables,
puisqu’il n’est parcouru que pour démarrer
l’intégration. Le temps d’intégration est, de
ce fait, égal au nombre de pixels moins
18, divisé par la fréquence d’horloge. Le
microcontrôleur peut donc bien commander la sensibilité.
Le montage élémentaire représenté se
compose, pour l’essentiel, du capteur,
d’un simple microcontrôleur PIC et d’un
convertisseur de niveau pour une interface
sérielle. L’auteur y propose un programme
convenable. Vous pouvez en télécharger le
fichier source en C (EPS070314-11.zip) sur
le site d’ELEKTOR. On démarre un cycle à
l’aide d’un programme de terminal et de
la combinaison de touches « Ctrl+S ». Les
valeurs s’affichent séparées par des pointsvirgules de façon à faciliter leur introduction dans un tableau Excel.
Un réseau de photodiodes peut fournir un
bon capteur fonctionnant sur le principe
de la chambre noire à un robot. Il lui permettra de suivre une ligne avec une bonne
résolution et à une grande distance de travail du sol. Un prisme ou une grille optique
permettront même une détection simple et
précise des couleurs.
(070314-I)
63
Système de vision CMUCam1
Seattle Robotics dote de la vision le BoeBot (et les autres robots)
Ken Gracey (Parallax, Inc.)
Le BoeBot est un petit véhicule-robot
conçu et vendu par Parallax Inc [1]. Son
intelligence lui est conférée par un autre
poulain de l’écurie Parallax, le Board
of Education (BoE, Carte d’apprentissage), lequel à son tour est basé sur leur
fameux BASIC Stamp. Le robot lui–même,
tout autant que le BoE, a eu les faveurs
de nombreuses publications dans la presse
et sur l’Internet. À juste titre car, en plus
de leur prix modique, ces projets bénéficient d’un niveau de qualité et d’un volume
de production qui les rendent compatibles avec l’utilisation dans les écoles et
en général avec l’apprentissage de la
robotique [2].
Pour le CMUCam1 Vision
System, Parallax a fait
équipe avec l’Université
Carnegie Mellon [3]
par l’entremise de
Seattle Robotics [4].
Toutefois, le produit n’est disponible que chez
Parallax et ses
distributeurs,
comme Milford
Instruments [5] et
Lextronic [9] pour
la France.
La
livraison du CMUcam1 comprend :
1. Une caméra CMUcam1 montée sur
une platine d’interface AppMod.
2. Un manuel d’utilisation imprimé.
3. Un cédérom de programmes de
démonstration.
L’ensemble vise un fonctionnement aussi
proche que possible du plug and play.
Branchez le matériel (plug), téléchargez le
code de démonstration, appuyez sur les
boutons et observez comment votre BoeBot se sert de son « œil » tout neuf pour
voir son environnement et y réagir.
Objectif
Le système de vision CMUcam1-AppMod
se compose d'une caméra CMUcam1 montée sur une prise dans la platine AppMod.
La platine AppMod offre une interface utilisateur simple constituée de deux boutons,
huit LED et un haut-parleur piézo. L'interface utilisateur remplit trois fonctions :
1) Un système simple de sélection par
menu lié au code de démonstration pour
vous permettre de choisir et lancer l'un des
huit programmes de démonstration de la
vision robotique.
2) Un retour visuel par les LED, pendant
que le programme se déroule, pour montrer comment la caméra perçoit la cible
poursuivie.
3) L'indication de la couleur de l'objet
repéré, par l'éclairement de la LED correspondante (par ex. LED rouge pour un
objet rouge).
Grâce à un circuit astucieux sur la platine AppMod, huit LED et un haut-parleur
piézo se contentent de quatre broches
d'entrée/sortie de votre Basic Stamp2,
Tableau 1. Jeu d’instructions de base
Instruction
Paramètres
Description 1
\r
néant
Touche <Enter> ou <Retour>. Met la caméra en attente
GM
néant (\r)
Capture la couleur dominante dans l’image courante.
L1
valeur \r
Commande la LED verte de poursuite.
MM
mode \r
Commande le mode Middle Mass qui ajoute les coordonnées du centre de gravité aux données de poursuite normales.
NF
active \r
Réglage du filtre de bruit. Accepte les valeurs booléennes 1 (défaut) et 0. Activé par 1, arrêté
par 0.
PM
mode \r
Active le mode balayage (Poll). Le paramètre 1 active le mode, 0 l’arrête.
RS
néant (\r)
Remet à zéro la carte de vision. Nota : pour le reset, le premier caractère est un /r.
SW
[x y x2 y2] \r
Fixe la fenêtre de vision de la caméra. Accepte les coordonnées cartésiennes x et y du coin
supérieur gauche, suivies par celles du coin inférieur droit de la fenêtre visée.
TC
[R min R max Gmin Gmax
B min B max]\r
Poursuite d’une couleur. Accepte les valeurs RVB minimales et émet un paquet de données M
ou C (suivant la commande MM).
néant (\r)
Poursuit la couleur trouvée dans la partie centrale de la fenêtre courante.
TW
1 On
64
trouvera une description détaillée dans le manuel de l’utilisateur.
elektor - 7-8/2007
Tableau 2. Instructions avancées
Instruction
Paramètres
Description 1
CR
[ reg1 value1 [reg2
value2 ... reg16
value16] ]\r
Règle directement les registres internes de la caméra. L’adresse des registres et les contenus possibles
se trouvent dans la documentation Omnivision.
DF
néant (\r)
Décharge une trame par le port sériel.
DM
valeur \r
Règle le délai avant la transmission des paquets par le port sériel
GV
néant (\r)
Lit la version du microcode installé dans la caméra.
HM
active \r
Règle la caméra en mode demi-résolution horizontale pour les commandes DF et LM pour le vidage
d’une image bitmap.
I1
néant (\r)
Utilise le port servo comme une entrée tout ou rien.
LM
active \r
Active le mode Line qui utilise le temps entre les trames pour transmettre des données plus détaillées
sur l’image.
RM
bit_flags \r
Active le mode de transfert brut (Raw). Il lit la valeur des trois premiers bits (LSB) pour configurer les
réglages.
S1
position \r
Règle la position du servo 1. La valeur 0 l’arrête et maintient la ligne au niveau bas. Les valeurs de 1 à
127 règlent la position du servo pendant la poursuite ou l’acquisition des donnés moyennes.
valeur \r
Active le mode Switching de poursuite de couleur.
SM
1 On
trouvera une description détaillée dans le manuel de l’utilisateur.
ce qui laisse les autres disponibles pour
d'autres usages.
8 Fonctions de démonstration
Une fois le système de vision CMUcam1AppMod enfiché dans le connecteur
AppMod du BoeBot, l'étape suivante
consiste à charger le code de démonstration du cédérom dans le Basic Stamp2. Les
huit fonctions du programme de démonstration illustrent chacune une des fonctions
de la camera CMUcam1.
À la première mise sous tension du BoeBot, les huit LED de l'interface AppMod clignotent plusieurs fois, puis le haut-parleur
émet un bip pour signaler que le robot est
prêt. Chaque fonction commence avec un
bip et finit avec deux bips. Les LED clignotent différemment suivant la fonction en
cours d'exécution pour indiquer comment
elle s'exécute.
Les huit fonctions de démonstration sont :
1. Calibrage de la lumière
Une vingtaine de secondes sont nécessaires pour permettre à la CMUcam1 d’évaluer les conditions d’éclairage ambiant.
2. Échantillonnage et sauvegarde de la
couleur
Il faut environ une seconde à la caméra
pour se verrouiller sur la couleur d’un objet
tenu devant elle ; les LED clignotent et le
haut-parleur émet deux bips quand c’est
fait. Les données de couleur sont stockées dans la mémoire EEPROM du Basic
Stamp2.
3. Poursuite d’une couleur
Le robot se déplace en avant, en arrière, à
droite et à gauche pour suivre la couleur
de l’objet sauvegardée par la fonction 2.
4. Déplacement et contournement
Le robot avance et évite les objets à l’aide
de sa seule vision. Il le fait en évaluant la
plage de couleur du sol devant lui.
7-8/2007 - elektor
5. Poursuite adaptative
Le robot se verrouille sur la première couleur qu’il voit et poursuit cette couleur
(en avant, à gauche, à droite, mais pas en
arrière). S’il perd l’objet pendant environ
cinq secondes, il se verrouille sur la première couleur qu’il voit ensuite et la suit
jusqu’à ce qu’il la perde et ainsi de suite.
6. Suivi de ligne
On suppose qu’une ligne blanche de
1,2 cm environ (un demi-pouce) est tracée sur le trajet.
7. Doigt pointé et poursuite
Le robot enregistre, tourne à droite et à
gauche en fonction du doigt pointé. Il le
fait en utilisant le même angle de visée
vers le bas que pour les autres fonctions.
8. Affichage de couleur
Le robot allume une ou plusieurs des LED
rouge, verte et orange en réponse à la couleur de l’objet placé devant lui. Cela fonctionne bien avec un disque de caoutchouc
ou un bloc de plastique coloré de 5 cm de
diamètre.
Pour la meilleure exécution de toutes les
fonctions, la caméra doit être inclinée vers
le bas de façon à pointer juste devant le
robot.
Basic Stamp2SX et Basic Stamp2P
Le programme de démonstration et le système CMUcam1-AppMod fonctionnent
aussi avec les versions plus puissantes 2SX
et 2P du Basic Stamp. Des versions adaptées différentes se trouvent sur le cédérom.
Les différences de code sont mineures et
liées à la vitesse d’exécution deux fois et
demie plus rapide.
Vous avez davantage de possibilités avec
les Stamps 2SX et 2P du fait de leur vitesse
supérieure et de leur mémoire plus vaste.
L’interface sérielle du Basic Stamp2 est
limitée à 9 600 bauds pour le dialogue
avec la caméra, alors que les 2SX et 2P
ont un débit maximal de 115 200 bauds.
La commutation en 115 200 bauds se fait
par le déplacement de deux cavaliers sur
la carte. La vitesse supérieure permet au
robot de réagir plus vite au système de
vision.
À propos de la CMUcam et du module
La caméra CMUcam1 est constituée d’un
microcontrôleur SX28 [6] attelé à une
caméra CMOS OV6620 Omnivision [7]
sur une puce qui permet d’extraire simplement des données de haut niveau à partir du flux vidéo de la caméra. La platine
communique par un port sériel à niveaux
TTL, avec les fonctions suivantes :
Poursuivre des taches de couleur définie à
17 images par seconde.
Trouver le centre de gravité de la tache.
Trouver la couleur moyenne et des données sur la variation.
Fenêtre arbitraire de l’image.
Résolution de 80 x 143.
Communication sérielle à 9600 bauds.
Détection automatique d’une couleur
et pilotage d’un servo pour suivre la
couleur.
Mode de traitement parallèle asservi sur un
bus de caméra unique (fonction avancée).
Possibilité de commander un servo ou une
broche d’entrée/sortie (fonction avancée).
Réglage des propriétés optiques de la
caméra (fonction avancée).
Si on utilise la caméra à l’extérieur, étant
donné la forte teneur en infrarouges de la
lumière du soleil, même par temps couvert, il faudra probablement monter un filtre IR ou un filtre gris neutre de densité 3
(c’est-à-dire 3 crans de diaphragme, ou 8
fois, 23) pour réduire la forte intensité lumineuse. Un verre prélevé sur une paire de
65
contrôle du dialogue (ni logiciel Xon/Xoff,
ni matériel).
Toutes les instructions sont envoyées au
moyen de caractères ASCII imprimables,
c’est-à-dire que le nombre 123 est envoyé
sous la forme des trois chiffres 1, 2 et 3.
Après transmission correcte d’une instruction, la chaîne ACK est renvoyée.
S’il y a une erreur de syntaxe ou si
une erreur de transfert est détectée, la
chaîne renvoyée est NCK. La chaîne ACK
ou NCK est suivie par \r (retour chariot).
Quand une invite est renvoyée (« \r »_
suivi par « : ») cela signifie que la caméra
au repos attend une nouvelle instruction.
Les espaces blancs sont pris en compte et
servent à séparer les paramètres. Le caractères \r (ASCII 13, retour chariot) termine
la ligne et active la commande. Si la transmission en caractères imprimables est trop
lourde, il est possible d’utiliser différents
degrés de transfert de données brutes
(Raw mode).
Le système reconnaît deux jeux d’instructions : basic (tableau 1) et advanced
(tableau 2).
lunettes bon marché, placé devant l’objectif, permettra à la CMUcam1 de travailler
en plein soleil.
Communication sérielle et jeu d’instructions
Les paramètres de la communication
sérielle sont : 9 600 bauds, 8 bits de données, 1 bit d’arrêt ; pas de parité, pas de
Affichage des données de poursuite de la
CMUcam1 sur l’écran de débogage.
Le premier paquet de données affiché par
l’écran de débogage est le paquet « S »
(Statistiques) qui indique la couleur de
l’objet poursuivi. Cela vous permet d’évaluer les possibilités de votre caméra pour
la poursuite d’un objet donné. Essayez des
objets de couleurs et de tailles différentes
pour voir les effets sur les données de
poursuite. C’est un programme important
que vous réutiliserez souvent, quand vous
trouverez des choses intéressantes à faire
avec votre CMUcam1 et votre BoeBot. Ce
programme vous permet de voir et comprendre exactement ce que peut voir votre
BoeBot avec son système de vision.
Vous trouverez sous la référence [8] une
courte vidéo qui montre un BoeBot équipé
de CMUcam1 repérant un objet rouge.
(070132-I)
Références ouèbe
[1] www.parallax.com
[2] www.stampsinclass.com
[3] www.cs.cmu.edu/~cmucam
Programmes utilitaires
[4] www.seattlerobotics.com
Le cédérom de Seattle Robotics contient
aussi les utilitaires qui suivent.
Test de la communication entre CMUcam
et BoeBot.
Ce programme règle la communication
sérielle à 9 600 bauds entre le Stamp et
la CMUcam1. Il fait clignoter la LED verte
de la caméra.
[5] www.milinst.com
[6] www.ubicom.com/processors/sx/ sx_family.html
[7] www.ovt.com
[8] www.seattlerobotics.com/video.htm
[9] http://www.lextronic.fr/cmucam/PP.htm
Robots moustachus
Alexander Wiedekind-Klein
Lorsque la télédétection
avec caméras vidéo,
infrarouge ou ultrasons
jette l’éponge, il est
temps de se tourner vers
les bons vieux capteurs
tactiles. Ces « palpeurs »
fonctionnent comme
les antennes (feelers) ou
moustaches (whiskers)
dans le règne animal et
servent à explorer l’environnement rapproché. En cas de contact,
66
1
un capteur de ce genre
transmet un signal au
robot signifiant qu’il y a
« quelque chose » là.
Il est possible de réaliser des capteurs tout à
la fois sensibles et stables basés sur des cordes de guitare en acier.
Celles-ci tout en étant
très flexibles, sont aussi
conductrices. Le principe ne pourrait pas être
plus simple : Le morceau
de fil passe par un manchon métallique. Le fil
se plie en cas de contact
elektor - 7-8/2007
avec l’environnement et
entre en contact électrique avec le manchon.
Le mode de réponse et
la sensibilité sont principalement déterminés par la longueur et
l’épaisseur du morceau
de corde.
3. Déplacer la corde
dans la gaine pour que
seule une longueur d’environ 10 mm soit isolée à
l’extrémité du manchon.
Fixer la corde au centre
au moyen d’adhésif à
chaud. Ne pas laisser
trop d’adhésif pénétrer
dans le manchon.
2
3
+5V
Le résultat devrait ressembler à la figure 2.
Il n’est pas interdit de se livrer à quelques
expériences...
La moustache du robot n’est en principe
rien d’autre qu’un interrupteur de contact.
Pour détecter la collision la plus légère, il
est recommandé de déclencher une bascule au moyen de la « moustache » comme
dans la figure 3. Le microcontrôleur du
robot peut lire le résultat en toute tranquillité avant de réinitialiser la bascule.
10k
La réalisation ne constitue pas un obstacle
insurmontable, même en cas d’allergie à
la mécanique. Procédons comme dans la
figure 1 :
1. Couper un morceau de corde de guitare
(8 à 10 cm suffisent) et scier environ 2 cm
d’un tube en laiton (Ø 4 mm) ; ébarber l’intérieur et l’extérieur de ce dernier.
IC1 = 74HC74
4
S
2
D
IC1.A
3
C
2. Souder un fil torsadé à une extrémité du
petit tube en laiton et un autre fil torsadé
à l’extrémité de la corde de guitare. Isoler
le point de soudage sur la corde au moyen
d’une gaine rétractable.
Q
Q
Entrée capteur
5
6
R
1
Sortie réinitialisation
(070282-I)
070282 - 11
Oreille de chauve-souris
Alexander Wiedekind-Klein
1
C1
R5
470k
7-8/2007 - elektor
39k
14
11
IC1
IC2
7
4
2
C5
IC1.A
3
≥1
1
R1
5
IC1.B
≥1
6
4
8
9
Émetteur US
IC1.C
(40kHz)
10
≥1
100n
12
R9
13
22k
IC1 = CD4001
IC2 = TL084
+5V
US
+5V
IC1.D
11
≥1
STI
1
+5V
2
3
GND
4
C3
CONTROL
C6
R3 10p
R6 10p
56k
R7
3k9
100n
Récepteur US
US
(40kHz)
100k
2
3
IC2.A
C2
1
R2
4k7
V+
100n
C4
4µ7
25V
C8
4µ7
25V
13
9
10
IC2.C
8
D1
12
14
IC2.D
LL4448
R4
6
180k
C7
5
R8
C9
IC2.B
7
R10
22k
Les signaux réfléchis sont
amplifiés à l’aide d’IC2.A et
IC2.C, redressés par D1 et
tamponnés par IC2.D. Nous
disposons ainsi du « frontal » analogique pour un
microcontrôleur. La straté-
150p
P1
10k
V+
180k
Strictement parlant, ce télémètre à ultrasons fonctionnant par réflexion est plus
qu’une simple oreille puisqu’il émet également, à
40 kHz, l’impulsion sonore.
Le montage de la figure 1
comprend deux parties.
Nous avons, en haut, l’oscillateur de 40 kHz à côté
de l’étage de sortie « pushpull » composé d’IC1.C et
IC1.D qu’un signal logique de 5 V sur l’entrée de
commande (broche 2 de
ST1) permet d’activer et
désactiver. La fréquence
de l’oscillateur s’ajuste précisément à la fréquence de
résonance (40 kHz nominal)
du convertisseur à ultrasons
à l’aide de P1.
100n
070281 - 11
67
gie d’élaboration d’un algorithme de
traitement numérique du signal s’appuiera sur les réflexions suivantes:
après l’émission d’une salve d’ultrasons pendant 2,5 ms, on balaie pendant 50 ms (étendue de mesurage de
8 m environ, puisque le signal doit
aller et revenir) la courbe d’enveloppe du signal reçu fournie par le
montage. La figure 2 reproduit l’allure typique du signal. Le tracé rectangulaire vert représente le signal à
l’entrée de commande (broche 2 de
ST1) qui déclenche l’oscillateur pendant 2,5 ms. On voit déjà pendant
cette durée (t1) un premier signal à la
sortie du récepteur puisqu’il n’est pas
possible d’éviter tout à fait la réception directe du signal émis. Il est bien
sûr indispensable d’en tenir compte
lors de l’évaluation.
Le second signal, après le temps t2,
est le signal réfléchi par un objet. Le
temps t2 est proportionnel à la distance de l’objet. Il se mesure entre
le milieu de l’émission de la salve
(donc 1,25 ms après le déclenchement de l’oscillateur) et l’instant de
date auquel le signal réfléchi atteint
son maximum. La distance de l’objet
(dans l’air) en centimètres se calcule
très facilement et avec une bonne
précision en multipliant simplement
par 16 la durée en ms. Si t2 est de
10 ms, par exemple, l’objet est éloigné de 160 cm.
Si l’objet est très proche, le signal de
retour arrive avant la fin de l’émission puisque la propagation dure
très peu. Le signal reçu est également très fort (figure 3). Dans ce
cas, le mieux est de mesurer, à partir
du déclenchement de l’oscillateur,
le temps que met le signal réfléchi
pour atteindre environ la moitié de
son maximum. Ce temps (t2 sur la
figure 3) servira de mesure de la distance de l’objet.
4
Entrée de commande
t1
1er maximum
Sortie analogique
3ème maximum
2ème maximum
Temps
070281 - 14
Si le signal émis rencontre sur son
parcours plusieurs objets à des distances différentes, on doit s’attendre
à recevoir plusieurs signaux réfléchis
d’amplitudes différentes (figure 4). Il
est vite évident, dans ce cas, qu’un
simple détecteur de seuil, au lieu
d’un microcontrôleur, ne fournira
pas de résultat fiable. Un microcontrôleur avec un logiciel « intelligent » pourra, en revanche, mesurer
l’éloignement de l’objet le plus proche ou, en un seul mesurage, celui
de plusieurs objets.
Comme le montage, en dehors du
+5 V et de la masse, n’a besoin que
du signal de commande de l’émetteur
et conduit le signal analogique de la
courbe d’enveloppe du récepteur
vers le matériel d’analyse, on peut
équiper un robot de quatre télémètres décalés de 90 degrés, par exemple, pour lui permettre de s’orienter
dans l’espace.
2
Entrée de commande
Sortie analogique
t1
t2
Temps
070281 - 12
3
Entrée de commande
Signal très fortement réfléchi
t1
Sortie analogique
t2
Temps
070281 - 13
(070281-I)
Convertisseur A/N pour robots
Tilo Gockel
Le composant TLC549CP de Texas Instruments se prête fort bien au rôle de convertisseur A/N pour petits robots (en particulier avec des microcontrôleurs compatibles
8051). Cet ADC sériel 8 bits est facilement
disponible, relativement peu coûteux et il
est facile d’en extraire les données.
Un coup d’œil à la fiche technique du
TLC549 suffit à faire comprendre la séquence
temporelle des lignes I/O Clock, DATA OUT
et CS (figure 1). Une manip avec un potentiomètre trimmer comme diviseur de tension
fournissant une tension analogique variable
est vite mise sur pied. La figure 2 indique
la mise en circuit strictement nécessaire du
TLC549 et le raccordement à un microcontrôleur compatible 8051.
68
operating sequence
1
2
3
4
5
6
7
8
8
Don’t
I/O
CLOCK
Access
Cycle B
tsu(CS)
tconv
(see Note A)
Sample
Cycle B
1
2
3
4
5
6
7
Care
Access
Cycle C
Sample
Cycle C
tsu(CS)
CS
twH(CS)
DATA
OUT
A7
Hi-Z State
A6 A5 A4 A3 A2 A1 A0
Previous Conversion Data A
MSB
LSB
(see Note B)
Hi-Z State
B7
B7
A7
Conversion Data B
MSB
ten
B6 B5 B4 B3 B2 B1 B0
MSB
LSB
MSB
ten
NOTES: A. The conversion cycle, which requires 36 internal system clock periods (17 µs maximum), is initiated with the eighth I/O clock pulse
trailing edge after CS goes low for the channel whose address exists in memory at the time.
B. The most significant bit (A7) is automatically placed on the DATA OUT bus after CS is brought low. The remaining seven bits (A6–A0)
are clocked out on the first seven I/O clock falling edges. B7–B0 follows in the same manner.
Comment se présente le code source
nécessaire pour lire les données sérielles
du TLC549, c’est-à-dire pour les envoyer
au contrôleur au rythme approprié ?
elektor - 7-8/2007
+5VDC
µC51
1
REF+
8
VCC
TLC549
I/O CLOCK
DATA OUT
2
ANALOG
7
6
Px.x
A7
A6
A5
5
A4
A3
A2 A1
A0
Px.x
Px.x
10k
3
REF-
GND
//_wait(); // > 20 usek (50kHz)
P3_B0 = 0;
for(count = 0; count
< 8; count++){
addat = addat << 1;
if (P1_B3 == 1) ++addat;
P1_B2 = 1;
//_wait();
P1_B2 = 0;
}
return addat;
}
4
070134 - 12
Lors de nos essais avec une carte contrôleur
AT89S8252 (carte flash ELEKTOR), il s’est
avéré que la fonction _ wait() est superflue,
car le contrôleur n’est pas particulièrement
rapide (voir les commentaires dans le listage).
L’implémentation en C devrait donc être :
unsigned char
unsigned char
unsigned char
P1_B2 = 0; //
P3_B0 = 0; //
P3_B0 = 1; //
ReadADC1() {
count;
addat = 0;
clk
Chip Select
Cette conversion A/N peut servir par
exemple à raccorder 2 photorésistances
(LDR) au microcontrôleur par le biais de
2 circuits TLC549 pour y lire leur état. Il
suffit de reproduire à deux exemplaires le
circuit de la figure 2. Les photorésistances
sont intercalées dans les diviseurs de tension formés par les potentiomètres trimmer
voire tout simplement raccordées en parallèle sur ceux-ci.
(070134-I)
Boussole pour Mindstorms® NXT Lego
Zeno Otten
Elektor a accordé, il y a quelques années,
toute l’attention voulue à la construction de
capteurs pour le bloc de commande intelligent (RCX) du Mindstorms de Lego [1].
Celui-ci a trouvé entre temps un successeur.
Le NXT est le coeur du nouveau Mindstorms. Avec ce système, l’amateur de microinformatique peut s’en donner à coeur joie,
développer, construire et, surtout, programmer de nombreux de robots.
Avec un compas (une boussole) le NXT
peut déterminer son cap à quelques degrés
près. Un robot équipé de ce capteur pourra
naviguer.
teurs à effet Hall KMZ51 de Philips disposés à angle droit pour détecter le champ
magnétique terrestre. Un petit contrôleur
PIC calcule une valeur comprise entre 0
et 360 degrés et la met numériquement à
disposition à la sortie du module. La communication avec le monde
extérieur s’effectue par l’intermédiaire d’une procédure
I2C ou des impulsions d’un
signal.
Le module demande 5 V de tension d’alimentation et consomme
environ 20 mA. Il est (presque) fait sur
mesure pour le NXT.
Connexion
NXT 4V3
+V
4
1
2
I C NXT SCL
2
5
I C NXT SDA
6
NXT GND
3
CMPS03
82k
82k
+5V
Robot Compass
Module
SCL
SCL
GND
SDA
2
9
3
SDA
GND
070156 - 11
Module de compas CMPS03
Devantec [2] fournit un module de compas
tout équipé. Ce module utilise deux cap-
7-8/2007 - elektor
Le nouveau NXT supporte des capteurs qui
utilisent la procédure I2C. Il est de ce fait
possible de connecter le capteur par l’intermédiaire d’une prise RJ12 au NXT.
Il suffit de savoir que le bus I2C du NXT
ne comporte pas de résistances de rappel
au niveau haut. Celles-ci lui seront donc
câblées à l’extérieur. Lego conseille des
résistances de 82 kΩ tant sur la ligne de
données (SDA) que sur celle d’horloge
(SCL).
Programme
La programmation du Mindstorms de Lego
consiste à associer les uns aux autres des
blocs de fonctions représentées par des
69
icônes. Outre cette association, il n’est
possible de modifier que les paramètres
des blocs, leurs fonctions sont définies une
fois pour toutes.
Not Exact C (NXC) est un langage de
programmation pour le NXT qui ressemble beaucoup au C. La programmation y
est beaucoup plus souple. Il est sûr que
cela simplifie les choses lorsqu’il s’agit de
programmer du matériel étranger à Lego
comme ce compas.
Le compilateur (BricX) [3] est disponible
gratuitement, son utilisation est simple et
il offre beaucoup de possibilités pour la
programmation du NXT.
Le programme « compass.nxc » (gratuit,
à télécharger sur le site d’Elektor sous la
référence 070156-11) collecte en continu
les données du capteur. Les valeurs mesurées sont ensuite traitées dans un robot qui
« indique » successivement le nord, le sud,
l’est et l’ouest. Les valeurs de mesure du
compas électronique s’affichent sur l’écran
du bloc NXT.
(070156-I)
Bibliographie et liens Internet
[1] Boussole pour RCX de Lego, Z. Otten,
Elektor n° 288, juin 2002, page 20 et suivantes
[2] Devantec: http://www.robot-electronics.
co.uk/shop/Compass_CMPS032004.htm
[3] BricX: http://bricxcc.sourceforge.net/
Interrupteur/indicateur de surchauffe
T. K. Hareendran
entraîne aussi T2 en conduction
pour alimenter suffisamment
R1
R3
À la base de ce circuit, on
l’oscillateur et le faire démarC6
trouve un capteur de tempérer. Le 555 est en mode astable
2x
100µ
BC 547
16V
T2
rature de précision du type
et commande directement un
T1
C1
LM35 (IC1) qui fournit un
vibreur piézoélectrique, Bz1,
10µ 16V
R4
1
signal linéaire et juste, direcqui donne un puissant signal
IC2
R7
R2
5
tement proportionnel à la
d’alerte. Ce sont les composants
7
IC1
2
3
C5
12k
4
8
6
LM35
température dans la gamme
R7, R8 et C4 qui déterminent le
47µ 16V
2
R
8
7
3
4
DIS
rythme des pulsations sonores.
de zéro à +155 °C. La tension
1
IC3
R8
CA3130
de sortie du LM35 change de
On peut utiliser le circuit
LMC555
2
3
TR
OUT
TP1
d’émetteur de T1 (TP1) pour for10 mV par variation de 1 Kel6 THR
CV
vin. Par construction, le LM35
mer une commande transistoriBZ1
R5
R6
5
1
C3
C4
ne consomme que très peu de
sée de relais. De même, il est
P1
10µ
1µ
10k
courant ce qui lui permet de
possible de remplacer l’avertis16V
16V
5V
réduire considérablement sa
seur piézo par un relais adéquat
060349 - 11
propre dissipation, même en
capable de commuter un flash
l’absence de courant d’air.
puissant, une sirène ou autre
relève sa sortie jusqu’à environ 2,2 V, ce qui
Dès que la température mesurée excède le
dispositif d’alarme alimenté sur secteur.
niveau défini par l’utilisateur, le comparateur
polarise instantanément le transistor T1, mais
(060349-I)
1M
2k2
22k
220k
12k
10k
1k
+5V REG
Commutateur à commande sonore
Hesam Hoshiri
70
+5V...+12V
R4
33k
R6
1k8
R2
3M3
R1
5k6
T3
R5
330 Ω
BD140
C2
R3
47k
Il peut s’avérer utile de commander par le
son, non seulement en robotique mais aussi
en domotique, par exemple, question de se
construire une lampe qui répond à un coup
sur la porte ou un claquement des mains. La
lumière s’éteindra d’elle-même après quelques secondes. Elle peut constituer un moyen
de dissuasion contre les cambriolages : si un
individu tente d’ouvrir la porte ou de casser
quelque chose, la lumière s’allumera et fera
penser qu’il y a quelqu’un sur place.
Le circuit peut fonctionner avec n’importe
quelle source régulée de courant continu
entre 5 et 12 V, selon la tension requise
pour la bobine du relais.
Quand vous brancherez l’alimentation
pour la première fois, le relais s’activera
C1
0µ1
MIC1
4µ7
T2
T1
2SC945
2SC945
D1
RE1
1N4007
060379 - 11
sous l’effet du condensateur C2. Attendez
quelques secondes pour qu’il retombe.
Vous pouvez augmenter ou diminuer la
période d’allumage en changeant la valeur
de C2. Une capacité plus grande allonge
la période et vice-versa. N’utilisez pas de
valeur supérieure à 47 µF.
La résistance de polarisation R1 détermine
dans une large mesure la sensibilité du
microphone. D’ordinaire, un micro à électret
est équipé d’un FET embarqué qui réclame
une tension de polarisation pour fonctionner. Cherchez donc par essais successifs le
niveau optimal de réponse au son.
Il y a lieu de prendre toutes les précautions requises quand on travaille sur des
appareils alimentés par le secteur, en particulier ici les contacts des relais.
(060379-I)
elektor - 7-8/2007
LED comme capteur de lumière
Andreas Grün
La mesure de la luminosité joue un rôle
important en robotique, et plus encore la
mesure des variations de luminosité. On
utilise généralement un circuit standard
(figure 1) pour mesurer le courant photoélectrique d’un photo-transistor par la chute
de tension aux bornes de R1 (et ensuite
un convertisseur analogique-numérique).
C’est la valeur de R1 qui fixe les limites de
la plage de mesure. Une forte résistance
convient pour les faibles éclairements, une
moins forte pour les éclairements plus intenses. En tout état de cause la plage de mesure
est déterminée aussi par la résolution du
convertisseur analogique-numérique.
1
VCC
R1
T1
070356 - 11
Une diode LED polarisée dans le sens bloqué laisse passer aussi un courant photoélectrique. Toutefois ce courant, notablement inférieur à celui d’un photo-transistor,
exclut toute mesure directe. La publication
de Mitsubishi référencée en [1] éclaire
une nouvelle voie. Le dispositif présenté
là exploite le fait qu’une LED polarisée en
inverse présente une forte capacité. Pour la
mesure, cette capacité est chargée d’abord
pour être ensuite déchargée par le courant
photo-électrique. La durée de la décharge
est une mesure de l’éclairement (figure 2).
La charge et la mesure peuvent se faire
simplement à l’aide d’une seule broche du
microcontrôleur, si elle peut être commutée entre sortie et entrée. Comme entrée,
elle présente une forte impédance qui n’influe pas sur la décharge. La mesure s’effectue en deux étapes :
1. Commuter la broche en sortie et la porter au niveau haut ; la capacité se charge
(figure 3).
2. Commuter la broche en entrée, inhiber la polarisation éventuelle et mesurer
le temps que met l’entrée à repasser au
Listage
niveau bas (figure 4).
L’exemple de programme selon le listing a
été écrit pour des processeurs Atmel AVR.
Ce programme de test inverse après chaque
cycle tous les bits du port A, de façon à
produire un signal de rapport cyclique proche de 50% et de fréquence proportionnelle à l’éclairement. La fréquence varie
du millihertz (pièce obscure) à quelques
centaines de kilohertz (éclairage direct de
la LED). Une telle dynamique de mesure
est inimaginable avec un convertisseur
analogique-numérique. En fait, on mesure
une période et non une fréquence. À cette
large dynamique s’ajoute un autre avantage : les LED se trouvent avec des angles
de rayonnement divers, ce qui permet de
choisir la zone de mesure. De même les
LED sont sensibles à la couleur, ce qui peut
être mis à profit pour la reconnaissance
des couleurs. Ainsi s’ouvrent à la robotique
une série de nouvelles possibilités.
(070356-I)
Source
www.merl.com/publications/TR2003‑035/
Exemple de programme #include <avr/io.h>
#include <avr/interrupt.h>
2
#define LEDPIN 0x40
// LED on PB6
I photo
070356 - 12
int main()
{
unsigned char cr=0,cb=0;
DDRB = 0x00;
// PORTB input
DDRA = 0xff;
// PORTA output for display LEDs
PORTA = 0;
// off
PORTB = LEDPIN;
// PB6 hi
3
sei();
VCC
while(1)
{
if((PINB & LEDPIN) == 0) // discharge complete
{
PORTB = LEDPIN; // PB6 hi
// multiple times
to get enough charging time
DDRB |= LEDPIN; // PB6 output and
DDRB |= LEDPIN; // PB6 output and
DDRB |= LEDPIN; // PB6 output and
DDRB |= LEDPIN; // PB6 output and
070356 - 13
4
hi,
hi,
hi,
hi,
charges
charges
charges
charges
LED
LED
LED
LED
DDRB &= ~LEDPIN; // PB6 input, still charging w/ pullup
PORTB = 0;
// switch off pullup
PORTA ^= LEDPIN; // toggle PORTA for display LEDs
IN
}
}
return(0);
070356 - 14
7-8/2007 - elektor
}
71
Quel cerveau pour mon robot ?
Petit guide pratique
C. Tavernier
Plus encore que toute autre réalisation électronique, un robot
ne peut aujourd’hui quasiment pas se passer de la présence
d’au moins un microcontrôleur pour le piloter. La question de
son choix se pose donc tout naturellement et cet article est
là pour vous aider dans cette tâche délicate. En effet, si les
robots les plus simples peuvent se satisfaire de quasiment
n’importe quel type de microcontrôleur programmé dans le
langage de votre choix ; au fur et à mesure que la complexité
du robot croît, on s’aperçoit que certains circuits sont mieux
adaptés que d’autres à une application purement robotique.
Après un court exposé des besoins particuliers qui caractérisent les robots, nous
allons donc vous présenter un certain
nombre de microcontrôleurs et tenter de
mettre en avant leurs points forts dans le
cadre d’une utilisation robotique.
Le besoin crée l’organe
Si on le compare à un montage électronique classique, un robot comporte certaines
particularités qui influent directement sur
le choix du microcontrôleur qui l’équipe.
Ainsi, qu’il soit fixe ou mobile – et les premiers robots réalisés par des amateurs
sont très souvent mobiles car il faut bien
reconnaître que ce sont les plus spectaculaires – un robot comporte toujours un ou
plusieurs moteurs. Comme vous avez pu
le découvrir tout au long de ce numéro
d’Elektor, ils peuvent revêtir la forme de
servos de radiocommande, de moteurs pas
à pas ou bien encore de moteurs à courant
continu. Aucun ne se commande exactement de la même façon mais tous demandent au microcontrôleur de savoir générer
de manière plus ou moins répétitive des
impulsions.
Notre robot est évidemment muni de capteurs. Si les versions les plus simples se
72
contentent de simples « moustaches » ou
détecteurs d’obstacles à contacts ; au fur
et à mesure que les robots évoluent, ils se
couvrent littéralement de capteurs dont
certains peuvent être très complexes.
Les informations qu’ils délivrent sont le
plus souvent de type numérique, depuis
la simple information « tout ou rien » d’un
interrupteur ouvert ou fermé, aux complexes trames NMEA d’un récepteur GPS.
Quelques rares capteurs fournissent également une information sous forme analogique et il importe de ne pas les oublier.
Le microcontrôleur de notre robot doit
donc disposer de nombreuses lignes de
ports parallèles pour les informations de
type « tout ou rien », mais également d’interfaces série asynchrones et synchrones
(I2C, SPI, etc.) pour les capteurs délivrant
une information plus complexe (boussoles
électroniques, inclinomètres, etc.) ainsi
que d’au moins un convertisseur analogique/digital pour les informations de type
analogique.
Jusque là, tout ce que nous avons exposé
reste à la portée de tous les microcontrôleurs actuels et ne nous aide pas beaucoup
à faire notre choix. En fait, la situation est
plus compliquée que peut le laisser croire
cet exposé que l’on peut qualifier de « statique ». En effet, lorsque notre robot est en
mouvement il faut tout à la fois commander ses moteurs, interpréter l’information
délivrée par les capteurs et prendre les
décisions qui s’imposent. Sur les robots les
plus simples, dotés d’un faible nombre de
capteurs, on peut y arriver en programmation séquentielle classique, mais dès que
le nombre ou la complexité des capteurs
augmente, la situation devient vite inextricable. Il faut alors faire appel à un fonctionnement multitâche, c’est à dire encore
à un mode de fonctionnement pendant
lequel le microcontrôleur s’occupe tout à
la fois et « en même temps » des capteurs,
des moteurs et des prises de décisions.
Tous les microcontrôleurs et tous les langages de programmation sont hélas loin de
pouvoir y parvenir.
La dernière particularité des robots est
que, contrairement à des montages électroniques classiques, ils sont souvent
réalisés par des amateurs venus d’autres
horizons que l’électronique. Mécaniciens, modélistes, simples curieux se lancent ainsi dans la conception de robots.
Pour tous ces concepteurs, qui apportent
beaucoup au monde de la robotique car
ils ont une vision différente de celle des
électroniciens, il faut que le microcontrôleur soit simple à mettre en œuvre et à
programmer. Cette simplicité bute parfois
sur l’écueil du fonctionnement multitâche
que nous venons d’évoquer mais nous
allons voir que, par un choix judicieux du
microcontrôleur, il est possible de concilier
l’inconciliable.
Microcontrôleurs ordinaires
ou spéciaux ?
Si l’électronique n’a plus de secret pour
vous et si la programmation ne vous fait
pas peur, vous pouvez bien évidemment
choisir pour votre robot un microcontrôleur classique. PIC de chez Microchip,
AVR de chez Atmel, etc. ; la liste est longue d’autant que chaque fabricant propose
une large palette de circuits aux ressources
très diverses.
Ainsi chez Microchip, la famille PIC18 est
en train de supplanter peu à peu la famille
PIC16 qui a fait les délices des amateurs
elektor - 7-8/2007
pendant de nombreuses années. Les circuits sont en effet plus performants, plus
puissants et coûtent à peine plus cher.
Quant aux outils de développement, l’indétrônable MPLAB, de plus en plus agréable d’emploi et toujours gratuit bien sûr,
fonctionne aussi bien avec les uns qu’avec
les autres et la transition se fait donc en
douceur. Et si la puissance de la famille
PIC18 ne vous suffit pas, la famille PIC24
est toute prête à la remplacer comme Elektor s’en est fait l’écho à partir du numéro
343 avec la présentation de l’Explorer-16.
Même son de cloche chez Atmel où les
circuits AVR de la gamme ATméga, rares
et coûteux il y a encore quelques années,
sont aujourd’hui à portée de toutes les
bourses avec leurs innombrables ressources internes et leurs capacités mémoire
parfois impressionnantes. Là encore
l’outil de développement AVR Studio est
gratuit et se trouve à votre disposition sur
le site d’Atmel.
Compte tenu de ce que nous venons
d’écrire, ce n’est cependant pas à ces
circuits « classiques » que nous allons
nous intéresser, d’autant que ce sujet a
déjà été traité par le passé dans Elektor
(numéro 322), mais à des microcontrôleurs
« spéciaux » qui rencontrent un vif succès
en robotique en raison de leur facilité de
mise en œuvre et des particularités de leur
langage de programmation. Vous connaissez certainement le plus ancien d’entre eux
qui n’est autre que le célèbre Basic Stamp,
mais il est loin aujourd’hui d’être le seul.
En effet, ce concept imaginé par Parallax a
fait des émules, et on rencontre désormais
sur le marché de nombreux microcontrôleurs qui se réclament de sa filiation tout
en prétendant, bien sûr, faire beaucoup
mieux. C’est parmi ces circuits, que nous
vous proposons de faire votre choix.
Un ancêtre qui a bien vieilli
Pour ceux d’entre vous qui ne le connaîtraient pas encore, sachez que le Basic
Stamp, développé et commercialisé dès
1993 aux Etats-Unis par la société Parallax,
est un microcontrôleur qui se comporte
comme s’il était directement programmable en Basic, mais cette particularité est
loin d’être la seule à avoir assuré son succès. En effet, c’est aussi un microcontrôleur
prêt à l’emploi car il ne lui faut ni quartz
d’horloge, ni circuit de reset externe, ni
même une alimentation stabilisée pour
fonctionner. Il dispose déjà de tout cela
en interne.
Comme tout microcontrôleur qui se respecte, le Basic Stamp doit être programmé,
mais cette programmation se réalise en
langage Basic, simple d’emploi et accessible à tous, au point d’être presque devenu
un standard sur lequel se sont appuyés ses
7-8/2007 - elektor
Tableau 1. Brochage du Basic Stamp 2 en boîtier 24 pattes, adopté par nombre de
ses concurrents (Basic Atom 24, Cubloc CB220, Javelin Stamp entre autres).
Appellation
N° de broche
Fonction
SOUT
1
Sortie de programmation (port série du PC)
S IN
2
Entrée de programmation (port série du PC)
ATN
3
Entrée de programmation (port série du PC)
VSS
4 et 23
Masse
P0 à P15
5 à 20
Ports d’entrées/sorties
VDD
21
Sortie (entrée si VIN trop faible) 5 volts stabilisés
RST
22
Entrée de reset externe manuel si nécessaire
VIN
24
Alimentation positive non stabilisée de 5 à 15 volts (12 volts pour 2E, 2SX et 2P24)
successeurs. Aucun programmateur n’est
nécessaire puisque ce dernier se résume à
… un simple câble reliant le Basic Stamp
ou port série de n’importe quel PC, même
ancien ou de bas de gamme. L’outil de
développement, destiné à l’écriture des
programmes, est totalement gratuit et disponible en téléchargement libre sur le site
de Parallax.
Même si le plus simple des Basic Stamp,
en l’occurrence le Basic Stamp 1, peut être
utilisé pour piloter un robot, nous vous
conseillons sans hésiter de faire appel au
minimum au Basic Stamp 2 afin de bénéficier de ressources plus nombreuses et
d’un jeu d’instructions plus riche. En outre,
de très nombreux successeurs du Basic
Stamp 2, appelé BS2 dans la suite de cette
étude, lui sont compatibles broche à broche, ce qui permet un éventuel remplacement lors de l’évolution du robot sans avoir
à modifier l’électronique associée.
La figure 1 présente tout à la fois l’aspect
physique du BS2 et son brochage tandis
que les fonctions des différents signaux disponibles sont rappelées tableau 1. Comme
tous ses successeurs, le Basic Stamp n’est
pas un « vrai » circuit intégré mais un
minuscule circuit imprimé de la taille d’un
circuit intégré DIL à 24 pattes sur lequel
ont pris place un certain nombre de composants CMS dont : un microcontrôleur,
Figure 1. L’aspect physique, les dimensions
et le brochage du Basic Stamp 2 ont été
repris par nombre de ses concurrents : Basic
Atom 24, Javelin Stamp, Cubloc CB220
entre autres.
sa circuiterie de reset et d’horloge, une
mémoire EEPROM destiné au stockage du
programme et un régulateur 5 volts pour
son alimentation.
Basé sur un « vieux » PIC16C57 à 20 MHz,
le BS2 se programme directement en Basic,
Même s’il est un peu dépassé aujourd’hui, voici le père de tous les Basic Stamp : le Basic Stamp 1.
73
Tableau 2. Caractéristiques principales des différents Basic Stamp et du Javelin Stamp.
Paramètre
Basic Stamp 2
Basic Stamp 2SX
Basic Stamp 2E
Basic Stamp
2P24
Basic Stamp
2P40
Javelin Stamp
Microcontrôleur
PIC16C57
SX28
SX28
SX48
SX48
SX48
Fréquence d’horloge
20 MHz
50 MHz
20 MHz
20 MHz
20 MHz
25 MHz
Mémoire de programme
(octets)
2 K
8 x 2 K
8 x 2 K
8 x 2 K
8 x 2 K
32 K
Mémoire de programme
(instructions)
500
4 000
4 000
4 000
4 000
–
Mémoire de travail (octets)
32
32
32
38
38
32 K
Mémoire bloc-notes (octets)
–
64
64
128
128
–
Vitesse (inst./sec.)
4 000
10 000
4 000
12 000
12 000
8 500
Nombre d’instructions Basic
36
39
39
55
55
0 (Java)
Entrées/sorties parallèles
16
16
16
16
32
16
Courant maximum absorbé/
fourni par sortie
20/25 mA
30/30 mA
30/30 mA
30/30 mA
30/30 mA
30/30 mA
Courant maximum absorbé/
fourni par circuit
40/50 par
groupe de
8 entrées/sorties
60/60 par
groupe de 8
entrées/sorties
60/60 par
groupe de
8 entrées/sorties
60/60 par
groupe de
8 entrées/sorties
60/60 par
groupe de
8 entrées/sorties
60/60 par
groupe de
8 entrées/sorties
Interface de programmation
Port série PC 9 600 bauds
Port série PC 9 600 bauds
Port série PC 9 600 bauds
Port série PC 9 600 bauds
Port série PC 9 600 bauds
Port série PC 28 800 bauds
Tension d’alimentation
5 à 15 V
5 à 12 V
5 à 12 V
5 à 12 V
5 à 12 V
5 à 24 V
Consommation en
fonctionnement
8 mA
60 mA
20 mA
40 mA
40 mA
80 mA
Consommation en veille
100 µA
200 µA
100 µA
400 µA
400 µA
Pas de mode
veille
appelé parfois PBasic, et s’avère capable
d’exécuter environ 4 000 instructions par
seconde tandis que sa mémoire peut stocker environ 500 lignes de programme. Son
succès planétaire, et le mot n’est pas trop
fort, a poussé Parallax à mettre sur le marché d’autres BS2 dont voici rapidement
résumés les points forts.
Première évolution à avoir vu le jour, le
Basic Stamp 2SX ou BS2SX, est en fait
une version nettement plus rapide du
BS2. Il exécute en moyenne 10 000 instructions par seconde grâce au remplacement du microcontrôleur du BS2 par un
SX28 de la société Ubicom. La mémoire
de programme est également de taille
plus importante et peut accueillir environ
4 000 lignes de programme. Tout cela est
bien sûr transparent pour l’utilisateur et le
jeu d’instructions du BS2SX est identique à
celui du BS2 hormis trois instructions nouvelles permettant justement de gérer cette
mémoire supplémentaire.
Le BS2SX et sa mémoire de programme de
taille relativement importante ont créé un
besoin chez certains utilisateurs de Basic
Stamp qui, tout en souhaitant bénéficier
de cette mémoire plus vaste, n’avaient
pas besoin de la vitesse (et donc du prix !)
du BS2SX. Parallax leur a donc proposé
le Basic Stamp 2E qui n’est autre qu’une
version « dégradée », uniquement au plan
de la vitesse s’entend, du BS2SX. Le Basic
74
Stamp 2E a donc toutes les caractéristiques
du BS2SX mais il affiche la même vitesse
d’exécution des programmes que le BS2.
Les Basic Stamp 2P24 et 2P40 présentent
quant à eux des innovations plus nombreuses mais peuvent être présentés simultanément car leurs caractéristiques sont identiques à un seul détail près que nous verrons
dans un instant. Outre le fait qu’ils soient plus
rapides que le déjà rapide BS2SX, puisqu’ils
atteignent 12 000 instructions par seconde ;
ils disposent d’un jeu d’instructions étendu
puisque les 36 ou 39 instructions des BS2
ou BS2SX passent à 55. Cette augmentation
se traduit par l’apparition d’instructions très
puissantes et extrêmement pratiques capable de commander directement un afficheur
alphanumérique à cristaux liquides, de dialoguer avec des périphériques sur bus I2C
ou bien encore de piloter des circuits disposant d’un bus « un fil » de Dallas. Cette
évolution se fait toutefois intelligemment et
les 36 instructions du BS2 se retrouvent donc
identiques à elles-mêmes parmi les 55 instructions des BS2P24 et BS2P40. Le BS2P24
adopte un brochage compatible des autres
Basic Stamp tandis que le BS2P40 adopte
l’allure d’un circuit DIL 40 pattes ce qui lui
permet de disposer de 16 lignes de ports
parallèles supplémentaires par rapport aux
boîtiers 24 pattes.
Le tableau 2 synthétise les informations les
plus importantes relatives aux différentes
versions de Basic Stamp afin de vous gui-
der dans votre choix. Notez qu’il contient,
par raison de commodité, le Javelin Stamp
décrit dans la suite de cette étude.
Tous ces Basic Stamp font merveille dans
des robots car leur jeu d’instructions a réellement été conçu pour un usage orienté
microcontrôleurs. Ainsi, pour faire passer
la ligne de port parallèle P2 au niveau haut
on écrit tout simplement HIGH P2, pour lui
faire générer des impulsions on utilise l’instruction PULSIN, pour recevoir des données sous forme série asynchrone on utilise SERIN alors que pour lui faire émettre
des données sous forme série synchrone
on utilise SHIFTOUT.
Du fait de la syntaxe très simple et très parlante (en anglais bien sûr mais ce n’est pas
vraiment un problème) de ces instructions,
n’importe qui est capable d’écrire des programmes pour un Basic Stamp après seulement quelques heures de manipulations
et sans connaissances préalables en programmation. En outre, vu l’ancienneté et
le succès du Basic Stamp, la bibliothèque
de programmes disponibles est immense.
Il suffit de « donner un p’tit coup de Google » pour le constater.
Le Basic Stamp est donc à notre avis un
bon choix pour qui veut débuter en robotique même s’il présente à nos yeux deux
défauts d’inégale importance : il reste un
produit cher si on le compare aux autres
circuits similaires, et il ne supporte pas le
elektor - 7-8/2007
Le Basic Stamp a fait des petits.
fonctionnement multitâche. Ce point doit
toutefois être relativisé par le fait qu’un
certain nombre de microcontrôleurs qui
le supportent sont compatibles broche à
broche avec les Basic Stamp 24 pattes et
permettent donc une substitution facile en
cas d’évolution du robot en ce sens.
Les « clones » du Basic Stamp
Le succès du Basic Stamp a évidemment
fait des envieux et différents produit ont
tenté de l’imiter tout en cherchant à compenser certaines de ses faiblesses. Deux
produits au moins sont dans ce cas :
le Basic Atom 24 de la société Basic
Micro et la gamme PICBasic de Comfile
Technology.
Basé sur un PIC16F876, le Basic Atom 24,
compatible broche à broche avec les Basic
Stamp 2 en boîtiers 24 pattes, dispose
d’une mémoire de programme de la taille
de celle du BS2E. Il est globalement plus
rapide, avec environ 33 000 instructions
par seconde, et propose des ressources
internes plus nombreuses dont un convertisseur analogique/digital, deux ports PWM
et un relatif support des interruptions. Son
jeu d’instructions est également plus riche
que celui des Basic Stamp « classiques » et
s’apparente à celui des Basic Stamp 2P en
étant toutefois un peu plus complet du fait
de ses ressources internes plus nombreuses. Il peut donc représenter une alterna-
7-8/2007 - elektor
tive intéressante au Basic Stamp d’autant
qu’il est un peu moins coûteux à l’achat.
A son passif nous devons toutefois noter
que lui non plus n’est pas multitâche et
que son réseau de distribution laisse à
désirer car le produit n’a manifestement
pas eu le succès espéré par ses concepteurs (ou est arrivé trop tard sur le marché).
Comme il est assez peu utilisé, la bibliothèque de programmes le concernant est
également sans commune mesure avec
celle du Basic Stamp.
Le PICBasic quant à lui est, ou plutôt a été,
un succédané de Basic Stamp 2 conçu par
la société Coréenne Comfile Technology.
Nous n’en parlerons pas ici car ce produit
est manifestement en voie d’extinction si
l’on en croit le site Internet de Comfile, au
profit de la gamme Cubloc de ce même
fabricant. Lorsque vous aurez découvert
dans un instant les possibilités du Cubloc
et sachant qu’un CB220 (entré de gamme
Cubloc) coûte quasiment le même prix
qu’un PICBasic 2S, vous comprendrez
aisément les raisons de cet abandon.
Un premier pas
vers le multitâche
C’est encore une fois Parallax qui a innové
en matière de multitâche avec deux produits distincts aux finalités totalement différentes. Le premier, qui est aussi le plus
ancien, est le Javelin Stamp, beaucoup
moins connu que le Basic Stamp. Il faut
dire que son prix qui avoisine les 67 euros
y est peut-être pour quelque chose ...
Le Javelin Stamp se présente donc physiquement comme un Basic Stamp 2 mais il
se programme en Java. Ce n’est pas cela
bien sûr qui suffit à lui conférer son caractère multitâches mais le fait qu’il dispose
de deux modes de fonctionnement : un
mode « avant-plan » (ou foreground en
bon anglais), dans lequel s’exécute le programme principal écrit en Java donc, et
un mode « arrière-plan » (ou background)
dans lequel peuvent s’exécuter un certain
nombre de tâches indépendamment, et
donc en même temps, que le programme
principal.
Ces tâches s’exécutent au moyen de périphériques virtuels ou VP qui, pour ce qui
est du mode arrière-plan, sont au nombre
de cinq : UART, génération de signaux
PWM, timer 32 bits, convertisseur digital/
analogique 1 bit et convertisseur analogique/digital de type delta sigma. Ainsi par
exemple, la génération de signaux PWM
en arrière-plan s’avère très intéressante
dans le cadre des applications robotiques
puisque de nombreux moteurs sont commandés par des signaux de ce type. Le
Javelin Stamp peut donc piloter par exemple les moteurs d’un robot et convertir
l’information analogique provenant d’un
75
Figure 2. Architecture interne du Cubloc CB220.
capteur tout en continuant à exécuter son
programme principal.
Indépendamment de ces particularités, le
Javelin Stamp utilise un processeur Ubicom SX48 fonctionnant à 25 MHz ce qui
lui confère une vitesse d’exécution de
8 500 instructions par seconde ; ses autres
caractéristiques essentielles étant résumées
dans le tableau 2 afin de vous permettre
une comparaison rapide avec les Basic
Stamp.
Le caractère partiellement multitâche du
Javelin Stamp en fait donc un processeur
intéressant pour des applications robotiques mais il souffre à nos yeux de deux
défauts : son prix excessif si on le compare à des processeurs « concurrents »
et le fait qu’il se programme en Java, qui
est tout de même un langage assez difficile à maîtriser pour qui n’a jamais fait de
programmation.
Un microcontrôleur
à deux têtes
Le PicBasic (à droite) marquait l’entrée de Comfile Technology dans le monde de ces
microcontrôleurs particuliers. Il n’était pas encore compatible broche à broche
avec le Basic Stamp 2 (à gauche).
Figure 3. L’architecture interne du Propeller a de quoi impressionner
mais permet réellement un fonctionnement multitâche.
76
La gamme Cubloc de Comfile Technology
est quant à elle beaucoup plus innovante
en matière de multitâche. En effet, comme
le montre la figure 2 qui présente la structure interne d’un Cubloc, ce microcontrôleur est en fait double et comporte d’un
côté un processeur qui se programme en
Basic et de l’autre un processeur qui se
commande en langage Ladder. Ce langage,
qui vous est peut-être inconnu, n’est autre
que le langage utilisé pour les automates
programmables. Ces deux processeurs
du Cubloc peuvent bien sûr fonctionner
simultanément ce qui fait véritablement
du Cubloc un processeur multitâche, sous
réserve bien sûr que l’on mélange programmation en Basic et programmation
en Ladder.
Afin de faciliter sa prise en mains, il est
bien sûr possible de ne le programmer que
dans un langage ou dans l’autre, et si vous
choisissez le Basic, sachez que sa syntaxe
est proche de celle du Basic Stamp avec,
toutefois, de nombreuses nouvelles instructions facilitant la génération de signaux
PWM, ou bien encore le pilotage d’un bus
I2C, l’interfaçage avec un clavier, etc.
Bien que la gamme Cubloc comporte
actuellement quatre modules principaux
dont les caractéristiques essentielles sont
résumées tableau 3, nous vous conseillons
de faire vos première armes avec le CB220.
Outre le fait que ce soit le moins coûteux
des Cubloc, ce circuit est en effet compatible broche à broche avec le Basic Stamp 2
et permet donc de faire évoluer une application monotâche utilisant ce dernier en
application multitâche, sans avoir à faire
la moindre modification de sa partie
électronique.
En outre, compte tenu du fait qu’il est
basé sur un ATmega128 à 18 MHz, il peut
elektor - 7-8/2007
Tableau 3. Caractéristiques principales des différents Cublocs.
Paramètre
CB220
CB280
CB290
CB405
Microcontrôleur
ATmega128
ATmega128
ATmega128
ATmega2560
Fréquence d’horloge
18,432 MHz
18,432 MHz
18,432 MHz
18,432 MHz
Mémoire de programme
80 K
80 K
80 K
200 K
Mémoire vive (RAM)
2 K (Basic) 1 K (Ladder)
2 K (Basic) 1 K (Ladder)
24 K (Basic) 4 K (Ladder)
51 K (Basic) 4 K (Ladder) 55 K (pile)
EEPROM de données
4 K
4 K
4 K
4 K
Vitesse (inst./seconde)
36 000
36 000
36 000
36 000
64
Entrées/sorties
16
49
91 (33 entrées, 32 sorties et
26 entrées/sorties)
Ports série
1 RS-232 1 TTL
1 RS-232 1 TTL
1 RS-232 1 TTL
4 RS-232
Convertisseur A/D
8 canaux 10 bits
8 canaux 10 bits
8 canaux 10 bits
16 canaux 10 bits
Convertisseur D/A
3 canaux 16 bits (PWM)
6 canaux 16 bits (PWM)
6 canaux 16 bits (PWM)
12 canaux 16 bits (PWM)
Interruptions externes
–
4
4
4
Compteurs rapides
2 x 32 bits
2 x 32 bits
2 x 32 bits
2 x 32 bits
Horloge temps réel
–
–
Oui
–
Tension d’alimentation
5 à 12 V
5 V
5 V
5 V
Consommation en
fonctionnement
40 mA
40 mA
70 mA
50 mA
Boîtier
DIL 24 pattes compatible
Basic Stamp 2
Module 64 pattes
Module 108 pattes
Module 80 pattes
exécuter environ 36 000 instructions par
seconde et sa mémoire de programme offre
une capacité très confortable de 80 Koctets. Notez qu’il dispose également d’un
convertisseur analogique/digital 10 bits
à 8 canaux et d’un convertisseur inverse
16 bits à 3 canaux capable de générer des
signaux PWM.
Le Cubloc CB220 nous semble donc être
aujourd’hui un bon choix en matière de
processeur destiné à la robotique car il
regroupe en un seul boîtier de nombreux
atouts : compatibilité matérielle avec le
Basic Stamp 2, simplicité de la programmation en Basic, possibilité de fonctionnement en multitâche ; le tout pour un prix
qui reste raisonnable si on le compare à
celui des autres produits de cette étude.
portant chacun son propre processeur et
de la mémoire vive. Ces Cogs sont reliés
via un bus géré par un Hub qui se charge
de la synchronisation de leurs échanges.
Par ailleurs, ils se partagent les 32 lignes
d’entrées/sorties du produit qui sont toutes
banalisées.
Très peu de périphériques spécialisés sont
intégrés dans le Propeller mais cela ne
pose aucun problème compte tenu du fait
que son langage de programmation, appelé
Spin, est en fait un langage orienté objet. Si
donc vous avez besoin, par exemple, d’un
port série RS 232, il vous suffira de puiser
dans la volumineuse bibliothèque d’objets mise à votre disposition par Parallax
pour y trouver votre bonheur. Vous ferez
de même pour générer des signaux PWM,
piloter un bus I2C, un afficheur LCD, etc.
Compte tenu du fait que l’on dispose de
8 Cogs, il est possible de faire tourner
simultanément jusqu’à 8 applications différentes. Un robot équipé d’un tel processeur n’a donc aucune difficulté à gérer les
moteurs de ses roues tout en analysant les
données issues de plusieurs capteurs et en
prenant les décisions correspondantes.
Bien sûr, le Spin est un peu rébarbatif et
l’écriture des premières instructions se fait
Enfin du vrai multitâche
Que les lecteurs d’Elektor se rassurent,
nous n’avons pas été payés par Parallax pour écrire cet article, même si c’est
encore un produit de cette société dont
nous allons parler maintenant avec le Propeller. Force est de constater en effet que,
depuis la sortie du premier Basic Stamp
il y a près de 15 ans, Parallax ne s’est pas
endormie sur ses lauriers. Mais, alors que
les produits précédents étaient basés sur
des processeurs existants, le Propeller est
véritablement un « silicium » développé
par Parallax.
Comme le montre la figure 3, il s’agit d’un
produit impressionnant de prime abord
car il ne comporte pas moins de 8 bloc
fonctionnels indépendants, les Cogs, com-
7-8/2007 - elektor
Le Cubloc CB220 (à droite) est quant à lui directement interchangeable
avec le Basic Stamp 2 (à gauche).
77
Les outils de développement pour Basic
Stamp et Cubloc incluent un terminal de mise
au point fort pratique
Le langage Spin, dont on voit ici un extrait
dans l’outil de développement du Propeller,
n’est pas une partie de plaisir mais le jeu en
vaut la chandelle.
L’outil de développement de l’OOPic permet
d’inter agir de manière graphique sur les
objets utilisés par le programme.
quelque peu dans la douleur pour qui n’a
jamais programmé au préalable, mais le
jeu en vaut la chandelle. En outre, Parallax
met à votre disposition un forum et surtout
une zone de son site sur laquelle chacun
peut venir déposer les différents modules
objets qu’il a développés pour le Propeller. Cette librairie participative est riche
aujourd’hui de plus de 75 modules objets
couvrant les domaines les plus divers et ne
cesse de s’enrichir.
Si donc vous souhaitez réaliser un robot
pour lequel un véritable fonctionnement
multitâche est requis, le Propeller est
actuellement une des meilleures solutions
qui soit, et ce d’autant que le prix du circuit n’est que le quart de celui d’un Basic
Stamp, d’un Cubloc CB220 ou d’un produit similaire.
très facile, avec un OOPic, de réaliser une
application multitâche. Mais le concept
va plus loin. Il est possible de relier ces
objets entre eux pour constituer ce que
l’on appelle des circuits virtuels réalisant
des fonctions complètes. Concrètement,
cela signifie que les objets peuvent échanger des informations entre eux, en tâche
de fond, sans même que votre programme
principal n’ait à s’en occuper.
architecture n’est plus à la portée d’un
débutant en robotique mais, après avoir
fait ses premières armes avec un Basic
Stamp ou un Cubloc par exemple, elle
reste accessible à qui veut s’en donner la
peine d’autant qu’elle ne nécessite aucun
investissement particulier puisque l’OOPic
se programme dans le langage de votre
choix, que les objets sont mis gratuitement
à votre disposition et que la programmation du circuit a lieu avec un simple câble
connecté sur le port parallèle de n’importe
quel PC.
Un drôle de PIC multitâche
Nous ne saurions terminer cette revue des
processeurs spéciaux pour robot par un
circuit relativement peu connu sous nos
latitudes malgré son indéniable intérêt :
l’OOPic. Comme son nom le laisse supposer, ce circuit n’est autre qu’un microcontrôleur PIC programmable en langage
orienté objet puisque OO signifie en effet
« Object Oriented » mais ce n’est pas
tout.
L’OOPic est en effet un PIC que vous allez
pouvoir programmer dans le langage de
votre choix : Basic, C ou même Java mais
ce programme va se résumer à de simples
scripts qui vont appeler des objets. Ces
objets, actuellement au nombre de 130,
sont capables de gérer quasiment tout ce
que l’on peut imaginer piloter au moyen
d’un microcontrôleur et, plutôt que d’en
faire la liste ici, nous vous renvoyons au
site de l’OOPic pour les découvrir.
Tous ces objets peuvent fonctionner simultanément et indépendamment les uns des
autres en tâche de fond pendant que le
programme principal s’exécute. Il est donc
78
Autre avantage, et non des moindres de
l’OOPic, il dispose d’une possibilité de
mise en réseau et l’on peut ainsi interconnecter jusqu’à un maximum de 128 OOPic
conjointement à des circuits I2C, grâce à
un bus à trois fils et sans aucun composant
externe supplémentaire. Il est donc possible, avec l’OOPic, de réaliser ce que l’on
appelle une architecture robotique semidistribuée c’est à dire encore de ne plus
faire du multitâche mais du multiprocesseur. Un processeur se charge de la gestion
de la propulsion, un autre de tel ou tel type
de capteur, et ainsi de suite, tandis qu’un
processeur « central » n’a plus à se charger
que des prises de décisions compte tenu
des informations qui lui sont transmises.
Bien sûr, la mise en œuvre d’une telle
Conclusion
Ce panorama est nécessairement incomplet surtout lorsque l’on sait que le manuel
de programmation de l’un quelconque des
circuits présentés ici comporte au minimum une centaine de pages ! Nous espérons cependant vous avoir fait découvrir
ou re-découvrir des processeurs particulièrement bien adaptés à la robotique et qui,
tout en étant simples à mettre en œuvre,
ne sacrifient en rien les performances.
(070319-I)
Carnet d’adresses
Adresse
Société
Commentaire
www.atmel.com
Atmel
Fabricant des microcontrôleurs AVR
www.basicmicro
Basic Micro
Fabricant des Basic Atom
www.comfile.co.kr/english2/
Comfile Technology Site « PicBasic »
Fabricant des PicBasic
www.comfiletech.com
Comfile Technology Site général
Fabricant des Cubloc
www.microchip.com
Microchip
Fabricant des microcontrôleurs PIC
www.oopic.com
Savage Innovations
Fabricant des OOPic
www.parallax.com
Parallax
Fabricant des : Basic Stamp,
Javelin Stamp, Propeller
www.tavernier-c.com
–
Site de l’auteur
elektor - 7-8/2007
Programmateur STK200/300 optimisé
pour µC AVR
26
1
20
14
IC1
2
10
R1
C1
100n
100k
Hesam Moshiri
Le programmateur STK200/300
accompagne presque tous les
logiciels de programmation pour
les microcontrôleurs AVR d’Atmel.
Celui qui vous est proposé ici se
différencie de ses semblables par
son autosuffisance alimentaire,
tout en offrant l’ensemble des
possibilités de programmation du
STK200 comme du STK300.
+5V
K1
15
27
16
4
17
5
IC1
19
EN2
1
EN1
18
6
19
7
20
8
21
Pour rappel, les microcontrôleurs
AVR se contentent de cinq fils
seulement pour la programmation
en circuit : horloge, MOSI, MISO,
mise à zéro et masse, auxquels il
faut ajouter la tension d’alimentation en +5 V, prélevée sur le
microcontrôleur de la carte cible.
Sur le schéma du programmateur,
vous ne trouverez rien d’autre
GND
3
9
22
10
23
2
16
6
14
8
12
11
13
CLK
18
1D1
4
MOSI
RST
9
1D2
MISO
7
15
5
17
3
74HC244
11
24
12
25
13
SUB D25
060374 - 11
qu’une puce tampon du type
74HC244, un connecteur mâle
sub-D à 25 broches à brancher
sur le port parallèle d’imprimante
(Centronics) du PC, une résistance de forçage haut de 100 kΩ
sur la ligne MOSI et un condensateur de découplage de 1 µF sur
l’alimentation de +5 V.
Un chouïa d’habileté vous permettra de pelotonner tout le circuit dans le boîtier du connecteur
sub-D. Et pour compléter le tout,
un petit bout de câble en nappe
et une prise IDC à 6 broches vers
la carte cible. Après programmation, il vous suffira de débrancher
le câble de la carte cible.
Le matériel pour les programmateurs STK200 ou STK300 est
disponible dans de nombreux
ensembles avec logiciels pour
microcontrôleurs, par exemple
BASCOM et CodeVision.
(060374-I)
« TEAclipper »
programmateur « timbre-poste »
Richard Hoptroff
L’art subtil de l’électronique discrète
(à base de composants distincts) a été
remplacé, depuis une bonne décade,
par le code machine stockée dans la
mémoire de microcontrôleurs. Le progiciel (firmware) est la baguette magique des circuits électroniques actuels
et à raison. Cette approche est plus
rapide, moins chère, plus simple et
bien plus flexible que son homologue
consistant à modifier le matériel.
Malheureusement, l’échange de progiciel
est encore à ses balbutiements. Qu’avezvous comme options si vous voulez acheter le progiciel créé par une autre personne ? Dans le meilleur des cas, vous
avez l’option d’acheter un composant préprogrammé chez l’auteur, voire auprès du
service de vente d’un magazine comme
l’e-choppe d’Elektor ou sur www.hexwax.
7-8/2007 - elektor
com. Dans le pire des cas, vous obtenez
un fichier hexadécimal (.hex) et vous programmez le microcontrôleur vous-même
- à condition bien entendu d’avoir l’équipement de programmation adéquat. Et, à
supposer que le progiciel soit bogué, ce
n’est sans doute pas l’approche la plus
aisée pour procéder à une remise à niveau
(upgrade).
Les choses seraient beaucoup plus simples
si le progiciel tenait un peu plus du
logiciel. Fournir du logiciel est l’une
des tâches les plus simples qui soient,
nous le faisons sans même y penser,
à un point tel que c’est devenu l’une
des industries les plus profitables au
monde (le grand Bill (Gate) n’est pas
pour rien l’une des personnes les plus
riches au monde).
De la taille d’un timbre-poste, le TEAclipper de FlexiPanel Ltd (www.flexipanel.com) semble être un pas dans
la bonne direction. Ce programmateur de
microcontrôleur constitue un mécanisme
de fourniture de progiciel simple et fiable.
Il peut avoir été préchargé d’un progiciel
donné et envoyé ensuite à un client. Mais
ce dernier a également la possibilité de
télécharger du progiciel par le biais d’Internet et d’envoyer ce dernier vers le TEAclipper par le biais d’un adaptateur USB.
Le TEAclipper est ensuite implanté sur la
79
platine-cible et génère tous les signaux
nécessaires pour procéder à la programmation du microcontrôleur.
La connexion se fait par le biais d’une
embase à 5 contacts qui véhicule également la tension d’alimentation requise par
le TEAclipper. S’agissant d’une connexion
temporaire, il n’est pas même nécessaire
de disposer d’une embase fixe sur le circuit
imprimé. On peut envisager d’appuyer les
contacts en question contre des orifices
métallisés prévus à cet effet présents sur la
platine les quelques secondes nécessaires
à la programmation.
Il est même possible de spécifier le nombre
de cycles de programmation, la mémoire
du timbre-poste s’auto-effaçant ensuite. Il
est possible de cette manière de contrô-
ler le nombre de ventes et d’achats de
progiciels.
Il existe actuellement des TEAclipper
permettant la programmation de BASIC
STAMP de Parallax et de microcontrôleurs PIC de Microchip, mais ce système
ne manquera pas de se développer pour
d’autres modèles de microcontrôleurs.
(070117-I)
Programmateur pour LPC900
Jürgen Wickenhäuser
De l’avis de l’auteur les contrôleurs de la
famille LPC900 sont le « couteau suisse »
des CPU compatibles 8051. L’abréviation
« LPC » précédent la dénomination de
type LPC900 signifie « Low Pin Count »,
slogan publicitaire que nous ne
vous ferons pas l’injure de traduire : la
famille LPC900 [1]
de NXP (anciennement Philips Semiconductor) prend la forme d’une
série de microcontrôleurs de petite
taille agréables à mettre en oeuvre. Ils
conviennent fort bien à toutes les petites
applications rapides. Comme le LPC900
possède un noyau 8051, il est facile à
prendre en main. Et pourtant, le LPC900
est bien plus qu’un 51 légèrement remis au
goût du jour. En voici les caractéristiques
marquantes :
• Noyau 8051 grande vitesse à 2 cycles
(6 fois plus rapide qu’un 8051
standard !)
• Mémoire Flash (de 1 à 16 Koctets) programmable à 100% via ISP (In-System
Programming) ou IAP (In-Application
Programming)
• Oscillateur RC interne haute précision
à base de quartz 7,327 8 MHz convenant excellemment pour des taux de
transmission allant jusqu’à 115 kbauds
sans nécessité de quartz externe
• Les composants sont disponibles en version DIL mains aussi en variantes CMS
(TSSOP) extrêmement compactes
• Un système minimaliste ne requiert
qu’un unique condensateur comme
composant connexe
• Nombreux périphériques embarqués :
détecteur de tension faible (brown-out),
80
Figure 1. L’outil gratuit « Code Architect » fait de l’utilisation des contrôleurs LPC900
un vrai jeu d’enfant.
elektor - 7-8/2007
chien de garde (watchdog), comparateurs, Convertisseur Analogique/Numérique (CAN)
11
&
C4
C5
1u
1u
6
+3V3
10
T2IN
9
R2OUT
K1
IC2 = 74HCT00
D1
1
R1
IN
OUT
IC1
LM317
ADJ
4
C2
IC1
C1
4u7
25V
R2
4
5
C7
1u
+3V3_ISP
R11
1k
1
2
IC2B
&
&
9
10
6
IC2A
3
IC2C
&
nement compatibles CMOS, ce qui présente souvent des avantages. Il nous faut
immédiatement mentionner une particu-
CPU_VCC
CPU_RXD
CPU_TXD
CPU_RES
CPU_GND
R12
1k
8
Connecteur ISP
R4
1k
T1
+3V3_ISP
3V3 commuté
BC857
R3
R7
14
R1
240R
IC2
C2
10u
6V
LED1
C3
7
LED2
R13
100n
LPC900 PROGR AMME R
Figure 3. Sérigraphie de l’implantation des
composants.
K3
R9
1k
+3V3
2
3
6
7
390R
C3
K3
R13
T1 R 3
IC3
C7
R2
LED1
R7
R9
R11
LED2
K1
1N4001
IC2
C4
R12
C8
7
T2OUT
8
R2IN
R10
220k
C 1 D1
R4
C5
R6
R8
C 6 (c) Elektor
070084-1
5
R5
1
11
T1IN
12
R1OUT
R6
220k
R 10
K2
14
T1OUT
13
R1IN
GND
1u
4
C2+
5
C2-
IC3
MAX3232
9
6
V-
15
10
1
6
2
7
3
8
4
9
5
C6
1
C1+
3
C1-
VCC
V+
1u
R8
220k
K2
11
C8
R5
220k
La seule différence importante par rapport à un 8051 standard est une structure
améliorée des Entrées/Sorties (I/O) : elles
travaillent aussi en modes de fonction-
2
1k
IC2D
1k
12
13
1k
+3V3
• Tension d’alimentation allant de 2,4 à
3,6 V
16
+3V3
070084 - 11
Figure 2. L’électronique du programmateur pour LPC900.
larité importante : après une réinitialisation (reset) tous les ports de trouvent en
mode d’entrée (Input Mode) CMOS ce qui
implique qu’il faut, le cas échéant, commencer par les initialiser.
Sinon, la mise en oeuvre des LPC900 est
Liste des composants
Résistances :
R1 = 240 Ω (CMS 0805)
R2 = 390 Ω (CMS 0805)
R3,R4,R7,R9,R11 à R13 = 1 kΩ (CMS 0805)
R5,R6,R8,R10 = 220 kΩ (CMS 0805)
Condensateurs :
C1 = 4µF7/25 V (CMS 1206 ou 1210)
C2 = 10 µF/6 V (CMS 1206 ou 1210)
C3 = 100 nF (CMS 0805)
C4 à C8 = 1 µF (CMS 0805)
Semi-conducteurs :
D1 = GF1M
T1 = BC857 (CMS SOT23)
LED1,LED2 = LED rouge (CMS 0805)
IC1 = LM317 (CMS SO8)
IC2 = 74HCT00 (CMS SO14)
IC3 = MAX3232 (SO16)
Divers :
K1 = embase jack d’alimentation
encartable
K2 = embase sub-D à 9 contacts en
équerre encartable
K3 = embase autosécable à une rangée
de 5 contacts
platine EPS070084-1 disponible via
thePCBShop (Cf. www.elektor.fr)
7-8/2007 - elektor
Figure 4. Les initialisations spécifiques du LPC ne comportent que 5 instructions.
81
extrêmement simple au point que l’on
peut se passer de fiche de caractéristiques grâce au « Code Architect » de
« Embedded Systems Academy » [2]
gratuit. Cet outil est en mesure de
générer les pièces de code-source en
C correspondants (Cf. figure 1).
Le transfert de programmes vers les
contrôleurs de type LPC900 se fait
on ne peut plus simplement : si, après
mise sous tension (Power-On) de la
CPU, il se présente 3 impulsions dans
une fenêtre de durée définie, la CPU
saute vers un chargeur d’amorce (bootloader) le reste de la communication
se faisant par le biais des lignes RxD
et TxD. Une fois le téléchargement terminé, les 3 lignes de signal sont disponibles, ce qui explique que l’on ait
besoin d’un câble à 5 contacts pour le
téléchargement.
Comme le montre la figure 2, le matériel requis se limite à bien peu de choses. Il est même en mesure d’alimenter
le LPC en courant et fait même office
de convertisseur d’interface (vers RS232, et convient de ce fait idéalement
pour un programme de terminal). On
retrouve, en figure 3, la platine développée par l’auteur.
Le principe de fonctionnement est
incroyablement simple : la CPU se
laisse activer et désactiver par le biais
de la ligne DTR. La ligne RTS fait office
de sas : si RTS est activé, les signaux
de la ligne RxD (RS-232) sont transmises à la broche de réinitialisation de
la CPU, en vue d’activer le chargeur
d’amorce.
Remarque importante : R13 sert à faire
chuter rapidement la tension d’alimentation du matériel-cible. Il est judicieux
de limiter à quelque 10 µF la capacité
des condensateurs de l'alimentation
3,3 V du matériel-cible, vu que sinon
il se pourrait qie le contrôleur à programmer ne reconnaisse pas l'initialisation à la mise sous tension (POR =
Power-On Reset).
On pourra, pour un flashage (programmation de la mémoire de programme)
confortable, utiliser le programme gratuit « Flash Magic » de « Embedded
Systems Academy », programme que
nombre de lecteurs connaissent suite
à la publication du lecteur RFID [3].
Cet outil intègre même un programme
de terminal adéquat.
On a impérativement besoin, pour la
programmation des membres de la
famille LPC900, d’un compilateur C
optimisant le code. Il en existe plusieurs versions commerciales. Il est bon
ici de parler succinctement de la mise
en oeuvre du μC/51 [4]. On pourra,
pour la quasi-totalité des variantes de
82
Figure 5. Le compilateur μC/51 travaille avec un système
Make classique parfaitement lisible.
Figure 6. Flash Magic est un outil gratuit servant à la
programmation des contrôleurs LPC.
Figure 7. Paramétrage des lignes RTS et DTR dans le
programme de terminal de Flash Magic.
la famille LPC900, parfaitement utiliser
la version de démonstration gratuite de
ce compilateur. La seule limitation que
connaît cette version gratuite est celle
de 8 Koctets de code seulement ce qui
signifie qu’il est possible de réaliser des
applications relativement complexes
déjà à l’aide de contrôleurs compatibles 8051. Le compilateur produit un
code extrêmement compact.
Il est en mesure, tout d’abord, de bien
utiliser la RAM interne à la capacité
quelque peu limite des LPC en raison
de la présence d’un processus d’optimisation graphique permettant l’utilisation multiple de secteurs de la mémoire.
Il est possible ainsi, avec ces CPU
minuscules, d’utiliser à plein la fonction « printf() ». Le μC/51 comporte en
outre une librairie de virgule flottante
complète et fiable (Notre : la société
GeoPrecision a développé le μC/51 en
tant qu’outil où il est utilisé et amélioré
depuis de nombreuses années).
Les outils logiciels mentionnés plus
haut collaborent parfaitement et réduisent énormément les durées de développement. En 3 étapes on passe du
code-source à un programme fonctionnel. Nous avons utilisé, à titre de
démo, un microcontrôleur 89LPC922
dont le port P1.7 avait été doté d’une
LED. Le listage donné en figure 4 est
un projet donné à titre d’exemple et
que l’on trouve dans le μC/51 à partir
de la version 1.20.06. Comme le montre la figure 5, le compilateur utilise
un système Make classique bien compréhensible. Avec ce programme, le
transfert du programme vers le microcontrôleur se fait de façon quasiment
intuitive (figure 6). Il est recommandé
de configurer le programme de terminal intégré dans « Flash Magic »
de manière à démarrer immédiatement ensuite l’application sur le LPC.
Important : il faut paramétrer correctement la fonction des lignes RTS
et DTR (activées toutes les deux) ce
qu’illustre la recopie d’écran de la
figure 7.
(070084-I)
Littérature et Liens :
[1] www.standardics.nxp.com/products/
lpc900 (NXP, fabricant du LPC900)
[2] www.esacademy.com (Embedded
Systems Academy : Flash Magic, Code
Architect)
[3] Lecteur RFID (avec 89LPC935) d’Elektor, Elektor n°339, septembre 2006,
page 28 et suivantes
[4] www.wickenhaeuser.de (compilateur
μC/51, version de démonstration)
[5] www.geo-precision.de (développement de projets géotechniques)
elektor - 7-8/2007
Platine de prototypage à Propeller
pour le BoeBot
La puce Propeller de Parallax est un extraterrestre, ou un surdoué, dans le monde
des microcontrôleurs. Ce circuit intégré
renferme pas moins de huit noyaux de
processeurs à 32 bits qui accèdent un par
un aux périphériques et à la vaste mémoire
du microcontrôleur. Le Propeller peut ainsi
s’acquitter de ses tâches à une vitesse
considérable et fonctionner sans mécanisme d’interruption : les tâches que nous
étions habitués à confier aux interruptions
se voient simplement affecter leur propre
noyau de processeur (« COG » en langage
Propeller). Ce processeur est par exemple
assez rapide pour attaquer directement un
écran VGA tout en exécutant d’autres processus. L’étude plus approfondie du Propeller et de son logiciel nous entraînerait
trop loin. Toute la documentation nécessaire, des exemples d’application et un
environnement de développement étendu
sont disponibles au téléchargement gratuit
sur le site de Parallax.
7-8/2007 - elektor
BoeBot
On sait que Parallax est aussi le fabricant du
kit robotique BoeBot, un châssis avec tout le
matériel nécessaire pour construire un véhicule robot et toutes sortes de capteurs pour
l’équiper. L’ensemble est piloté par une platine à microcontrôleur sur la base du Basic
Stamp ou du Javelin Stamp. La version à
Basic Stamp a donné lieu à de nombreux
articles d’Elektor, mais pas mal d’eau à coulé
sous les ponts depuis lors : fin 1999-début
2000 pour être précis. Le concept semble
pourtant solide comme l’acier, compte tenu
du fait que le BoeBot est toujours très utilisé dans l’enseignement. Rien d’étonnant si
on sait que Boe signifie Board of education,
platine d’apprentissage.
Mise à niveau
Il était tout naturel de mettre ce robot à
niveau avec une platine processeur à puce
Propeller. Parallax a aussi mis sur la marché récemment une platine de prototypage
taillée sur mesure pour le châssis BoeBot.
On voit immédiatement que la platine présente une zone perforée pour l’adjonction
d’électronique supplémentaire : la « vieille »
platine à Basic Stamp est munie d’une mini
platine à enfichage. Il faut donc souder des
composants supplémentaires sur la platine à Propeller, ce qui est certes un peu
plus laborieux que de les enficher, mais en
contrepartie plus solide pour un robot. Malgré tout le soin apporté à sa construction et
à la conception du logiciel, il peut arriver
qu’un robot croise le chemin, ou devienne
la victime, de quelque animal domestique
de passage qui le prendrait pour un nouveau camarade de jeu. Avec une platine à
enfichage, les composants risquent de tomber, avec une platine perforée, les chances
de survie sont plus grandes.
La platine de prototypage est très propre,
complète et son prix est tiré, mais nous y
avons vu un inconvénient qui peut se révéler gênant, surtout dans l’enseignement : le
processeur comme la mémoire sont montés
en surface. Si quelque chose est mal soudé,
cela peut signifier la fin du processeur, voire,
dans bien des cas, la fin de la platine. Tout le
monde ne dispose pas de l’outillage adapté à
l’utilisation de ce genre de composants.
Parallax n’a vu aucun inconvénient à ce
que nous développions une version de la
platine équipée de composants traversants.
Si un accident arrive à l’un des circuits
intégrés, il suffira d’enficher simplement
un exemplaire neuf dans le support (après
avoir trouvé et supprimé la cause !).
Naturellement ces composants occupent
une plus grande partie de la surface limitée
du châssis BoeBot ; en particulier le processeur en version DIL est beaucoup plus
encombrant que son petit frère en boîtier
LQFP. C’est pourquoi nous avons renoncé
à certains composants qui se trouvent
sur la platine Parallax, mais n’ont guère
d’utilité selon nous sur un robot mobile :
connecteurs VGA, clavier, souris.
Schéma
Le schéma (voir figure 1) brille par sa simplicité. Deux régulateurs de tension à faible
tension de déchet fournissent le 3,3 V pour
le processeur et l’EEPROM, le 5 V est disponible pour les périphériques qui auraient
besoin d’une plus forte tension, comme par
83
IC1
LM2937ES-5.0
K1
1
+5V
3V3
3
3V3
R1
270
3
1
C3
C2
C1
100n
10u
16V
10u
16V
D1
GND
GND
3V3
C4
RX
TX
RESn
S2
10k
100n
5MHz
8
GND
VCC
IC3
5
1
SDA
NC
6
2
SCL 24LC256 NC
7
3
WC
NC
GND
P31
P30
P29
P28
P27
P26
P25
P24
P23
P22
P21
P20
P19
P18
P17
P16
40
39
38
37
36
35
34
33
28
27
26
25
24
23
22
21
4
12
VDD
VDD
RES
IC4
P8X32A-D40
X1
C5
GND
30
XI
9
VSS
29
VSS
K3
P0
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
32
11
RX
TX
RESn
10
BOE
31
XO
1
2
3
4
5
6
7
8
13
14
15
16
17
18
19
20
K2
3V3
R2
100n
Côté pratique
La platine est simple elle aussi (voir
figure 2). Nous avons opté délibérément
pour une réalisation en simple face, pour
faciliter la gravure et la réalisation maison.
Les deux régulateurs de tension sont soudés sur le dessous de la platine.
Le circuit intégré IC3 n’est pas absolument
indispensable à la mise en œuvre du Propeller. Quand le processeur démarre, il
lance son chargeur amorce (bootloader),
lequel vérifie d’abord si la communication
avec l’hôte est possible puis attend le téléchargement d’un programme. L’utilisateur
peut choisir de charger une application
IC2
LM2937ES-3.3
5V
2
4
S1
2
4
exemple les servo-moteurs modifiés qui
assurent la propulsion du BoeBot. Veillez
à ce que les broches du Propeller ne puissent pas voir le 5 V. En plus de S1, interrupteur de la tension d’alimentation, on trouve
un emplacement pour quatre connecteurs
SIL tripolaires pour le raccordement des
servo-moteurs et autres périphériques qui
doivent être alimentés en 5 V.
Le connecteur K1 peut recevoir toute tension comprise entre 5,5 et 26 V, mais il
vaut mieux que cette tension ne soit pas
trop élevée, pour éviter une dissipation
excessive dans IC1.
Quant à l’interface de programmation avec
un PC, il existe deux possibilités : K3 sert à
la connexion de l’interface Propeller Plug
de Parallax, qui permet l’utilisation d’un
port USB. Le connecteur K2 est destiné à
l’interface sérielle ordinaire décrite ailleurs
dans ce numéro. La diode D1 signale la
présence de la tension d’alimentation, S2
est la touche de remise à zéro.
GND
+5V
+5V
GND
GND
+5V
+5V
GND
GND
070275 - 11
GND
Figure 1. Le schéma de la platine de prototypage pour Propeller.
PROM ; s’il n’en trouve pas, il s’arrête et
arrête le processeur.
Un programme peut être chargé directement du PC dans la mémoire interne et
dans la méoire interne du Propeller ou
dans l’EEPROM externe.
En l’absence de liaison avec le PC, le chargeur va chercher un programme dans l’EE-
Liste des composants
Résistances :
K1
R1 = 270 Ω
R2 = 10 k Ω
P16
P17
P18
P19
P20
P21
P22
P23
Condensateurs :
Semi-conducteurs :
IC1 = LM2937ES‑5.0
IC2 = LM2937ES‑3.3
IC3 = 24LC256
IC4 = Propeller‑chip P8X32A‑D40
(Parallax)
Divers :
X1 = quartz 5 MHz
K2 = barrette SIL 5 broches
K3 = barrette SIL 4 broches
S1 = inverseur unipolaire
S2 = unipolaire à fermeture
4 barrettes SIL 3 broches
platine EPS070275‑1 (voir www.elektor.fr)
84
IC4
X1
C1,C2 = 10 µF/16 V radial
C3 à C5 = 100 nF
P15
P14
P13
P12
P11
P10
P9
P8
S2
C4
P7
P6
P5
P4
P3
P2
P1
P0
P24
P25
P26
P27
P28
P29
P30
P31
IC3
R2
K3
K2
S1
C3
C2
C1
R1
D1
C5
Figure 2. Le dessin de la platine est à simple face, mais pour un usage intensif de la zone pastillée,
la solidité du double face à trous métallisés est préférable.
elektor - 7-8/2007
exécuté, mais il ne faut pas oublier que
cette mémoire est volatile. Elle est effacée
quand l’alimentation est coupée.
Le quartz aussi est superflu a priori, le
Propeller démarre avec un oscillateur RC
interne qui cadence la puce à 12 MHz, une
fréquence suffisamment élevée pour nombre d’applications. Le quartz X1 n’est utilisé
que si les registres internes le prévoient.
Une fois le processeur alimenté, et relié au
PC par une interface, il faut lancer le logiciel
« Propeller Tool » et appuyer sur F7 (ou choisir Identify Hardware dans le menu Run). Les
ports sériels du PC sont scrutés un par un
jusqu’à trouver le Propeller ; si tout paraît en
ordre, un message apparaît comme sur la
figure 3. Le numéro du port COM est celui
auquel l’interface est raccordée.
Après l’apparition du message, nous pouvons nous mettre au travail avec le Propeller et découvrir le monde de ce microcontrôleur étonnant.
(070275-I)
Lien ouèbe :
www.parallax.com/propeller
Figure 3. Ce message annonce que la liaison est établie avec le Propeller. La fête peut
commencer !
Commande de servo-moteur par PC
Bas Lijten
La commande de plusieurs servos par un
microcontrôleur représente toujours un
problème. Ce problème est résolu par l’arrivée sur le marché d’un contrôleur de servos à connecter à un PC : le SSC-32.
Le SSC-32 est un contrôleur open-source,
il établit la liaison à travers le port sériel.
Il dispose de 32 sorties, pour commander
simultanément jusqu’à 32 servo-moteurs.
En plus de cela, chaque sortie peut être
utilisée comme une sortie universelles
au niveau TTL. Comme si cela ne suffisait pas, le microcontrôleur dispose de
quatre entrées tout ou rien et la platine
comporte un support pour recevoir une
EEPROM. Au moment de la rédaction,
ce support est inutilisé, mais les futures
mises à jour du micro-code l’exploiteront
vraisemblablement.
Les servos raccordés au contrôleur se
commandent de façon très simple. Il
suffit, pour faire se mouvoir le servo, de
connaître le servo à commander, la longueur d’impulsion (position) et la vitesse
ou la durée. Si une vitesse est indiquée,
le servo se déplacera à cette vitesse jusqu’à la position demandée. Si c’est une
7-8/2007 - elektor
durée qui est
donnée, le servo prendra ce
temps pour rejoindre la position.
On dit dans l’introduction que les servos
peuvent être commandés simultanément.
C’est possible avec une commande groupmove. On indique la liste des servos, la
longueur d’impulsion et le temps imparti
pour rejoindre la position demandée. Ainsi
tous les
servos se déplacent
simultanément.
Ce mouvement de groupe peut être pratique quand on veut imprimer à un bras de
robot un mouvement fluide. Le contrôleur
calcule lui-même les vitesses auxquelles
les servos doivent tourner.
Le microcontrôleur contient en outre les
fonctions nécessaires pour commander un
hexapode, ou robot à six pattes. Ainsi il est
inutile de concocter des algorithmes dans
le PC pour faire marcher le robot : il existe
85
des commandes pour faire mouvoir le côté
droit ou le côté gauche.
Le code du microcontrôleur est dit open
source, c’est-à-dire qu’il est accessible
librement. Cela permet d’ajouter, modifier
ou supprimer des fonctions. Pas satisfait
par l’hexapode ? Vous pouvez le réécrire
« facilement ».
De même on peut ajouter des fonctions.
Par exemple un code pour déplacer un
bras de robot dans un système de coordonnées cartésiennes. Il serait alors inutile
de commander les mouvements, il suffirait
d’envoyer les coordonnées pour faire mouvoir le bras.
Ce contrôleur facile à piloter, autant qu’à
modifier pour le programmeur expérimenté, conviendra à toute personne qui
s’intéresse à la robotique.
(070373-I)
Fabricant du microcontrôleur :
www.lynxmotion.com
Interface sérielle pour Propeller
Simple et
bon marché
Luc Lemmens
La carte de prototypage Propeller décrite
ailleurs dans ce magazine nécessite une
interface de programmation, tout comme
la carte de Parallax elle-même. Le producteur fournit à cet effet la fiche et le clip
Propeller, qui l’une comme l’autre permettent la liaison avec le port USB du PC.
Ces mini-platines portent un FT232 de
FTDI, une puce qui revient fréquemment
dans nos colonnes. La différence entre
fiche (Plug) et clip réside dans la manière
dont ils donnent contact avec la carte
du processeur : la fiche s’adapte sur une
embase SIL à 4 broches tandis qu’on pince
le clip sur quatre pastilles en bordure de
carte. C’est la liaison par clip qui était utilisée sur la première version de la carte
Demo Propeller et n’est plus très pertinente. Aussi bien avec la carte de prototypage de Parallax que la nôtre, la fiche Propeller est l’interface correcte pour l’USB.
Cette petite carte coûte une vingtaine
d’euros, mais celui qui désire limiter les
frais et dispose encore d’une bonne vieille
interface RS-232 peut se construire cette
interface sérielle simple.
86
4k7
T2
10k
R5
10k
T3
K1
11
10
1
6
2
7
3
8
4
9
5
R7
BC547
K2
R6
1k
BC560B
R4
C1
T1
R1
10k
+3V3
RX (P31)
TX (P30)
RESn
GND
R2
10n
10k
Sur K2, qui assure la liaison vers la carte
Propeller, on a fait en sorte que l’ordre des
connexions soit le même que sur la fiche
Propeller, il ne faut y ajouter que la ligne
d’alimentation en 3,3 V. De cette façon, il
est possible d’utiliser aussi cette interface
R3
10k
Il suffit de trois transistors communs et une
poignée de résistances pour mettre en communication Propeller avec le port sériel
d’un PC. En réalité, il ne faut pas plus de
trois inverseurs adaptateurs de niveau qui
s’arrangent pour faire travailler ensemble le
Propeller alimenté sous 3,3 V et le port COM
du PC qui joue avec du + et du –12 V.
3V3
BC547
D Connector 9
GND
070276 - 11
elektor - 7-8/2007
sur la carte de prototypage de Parallax. Il
faut naturellement une petite modification
pour raccorder l’alimentation.
Nous avons dessiné une petite platine
pour ce circuit, mais il va de soi qu’on
peut aussi bien la construire en vitesse sur
un bout de platine à trous. On peut même
5
9
imaginer, avec une certaine habileté, un
montage tellement compact qu’il se loge
dans le boîtier d’un connecteur RS-232 à
9 contacts.
Lors de la mise en service de cette interface, on peut se réjouir de n’avoir aucun
R4
R5
1
6
K1
R3
C1 = 10 nF
K1 = embase sub-D femelle à 9 contacts, à
angle droit pour circuit imprimé
K2 = support SIL à 5 broches
platine EPS070276-1 disponible aux
adresses habituelles
K2
R1
R6
C1
R7
Condensateurs :
Divers :
T2
R1,R2,R4,R5,R7 = 10 kΩ
R3 = 4,7 kΩ
R6 = 1kΩ
T1
T1,T2 = BC547
T3 = BC557
R2
Résistances :
Semi-conducteurs :
T3
Liste des composants
souci de réglage (débit binaire, nombre
de bits, etc.) puisque c’est le logiciel de
développement « Propeller Tool » qui s’en
charge. Utilisez pour la liaison sérielle un
câble direct, donc pas de câble croisé ou
de null-modem.
(070276-I)
« Navigateur »
Pilotage par GPS de
robot mobile
Ulli Sommer
L’un des rêves (restant souvent
à l’état de rêve) de nombre de
concepteurs de robots est de
réaliser une machine ayant
une capacité de navigation
autonome. À quoi donc servent
alors GPS et tous ces modules de
réception dont le prix ne cesse de
devenir plus abordable ? Notre
système de navigation GPS pour
robot repose sur un ATmega32,
programmé en BASCOM-BASIC
et communiquant avec le monde
extérieur par le biais du bus I2C.
Construire une machine qui, à l’image
du fameux robot Sojourner se promenant
sur Mars, serait en mesure de se déplacer
de façon autonome en terrain inconnu,
est sans doute le rêve le plus fou de tout
amateur de robotique. Ne serait-il pas
intéressant, par exemple, de pouvoir se
contenter d’entrer, dans la mémoire d’un
robot mobile, les coordonnées d’un lieu
quelconque pour voir ensuite la machine
7-8/2007 - elektor
se mettre d’elle-même à sa recherche. Si
nombre d’idées d’applications robotiques
d’un niveau aussi éthéré resteront (encore)
longtemps de rêves, le problème décrit
peut être résolu, comme le prouve l’auteur
à l’aide d’une platine additionnelle destinée au robot de surveillance de son cru
(photo de gros plan).
La réalisation d’un système de navigation
pour robot de conception-maison tient à
l’existence de modules bon marché permettant la réception et le traitement des signaux
fournis par les satellites GPS. Autre ingrédient de la recette, un microcontrôleur aux
épaules solides pouvant être programmé, si
possible, à l’aide d’un logiciel gratuit.
Un central appelé ATmega
Le système de navigation décrit a pour
87
MISO
3
8
7
SCK
4
6
5
RST
5
4
3
2
1
6
MOSI
7
8
K2
ISP
+5V
RXD
TXD
RXD
14
TXD
15
16
GND
17
18
GPS ou câble
de programmation
19
20
K3
21
470 Ω
Droite
Gauche
R16 S3
S2
D6
D5
R22
PB1(T1)
(ADC1)PA1
PB2(INT2/AIN0)
(ADC2)PA2
PB3(OC0/AIN1)
(ADC3)PA3
PB4(SS)
(ADC4)PA4
PB5(MOSI)
(ADC5)PA5
PB6(MISO)
(ADC6)PA6
PB7(SCK)
(ADC7)PA7
ATmega32
PD0(RXD)
(TOSC2)PC7
PD1(TXD)
(TOSC1)PC6
PD2(INT0)
(TDI)PC5
PD3(INT1)
(TDO)PC4
RESET
PRG
SIGNAL TRAJET
(TMS)PC3
PD4(OC1B)
PD5(OC1A)
(TCK)PC2
PD6(ICP1)
(SDA)PC1
PD7(OC2)
(SCL)PC0
GND
XTAL1
11
XTAL2
GND
12
31
13
SYSTEM
RUN
R13
R11
R10
R12
4k7
4k7
4k7
R6
4k7
R7
4k7
40
4
39
5
38
6
37
7
36
9
35
10
34
11
33
12
SDA
P1
IC2
P2
P3
C1
22p
22p
INT
P4
P5
A0
P6
A1
P7
A2
SDA
14
SCL
13
GND
1
+5V
R5
10k
2
R4
10k
3
R3
10k
8
27
25
ADR
+5V
26
K5
B u s I 2C
24
+5V
23
SDA
22
SCL
K6
2k2
2k2
GND
Boussole
R1
R2
I 2C LCD 16 x 4
IC3
D1
C2
SCL
+5V
15
PCF8574
28
X1
16MHz
P0
29
D3
10k
R15
10k
10k
R14
R18
(ADC0)PA0
470 Ω
R17
470 Ω
But OK
PB0(XCK/T0)
K7
+5V
7805
R19
1N4001
C4
C5
C6
C7
47µ
100n
100n
1µ
+8V ... +15V
470 Ω
100n
9
K4
JP3
+5V
10
16
IC1
JP2
C3
2
RST
Bus I 2C
vers Annonce Point Tournant
Contrôleur Principal
+5V
JP1
1
K1
30
AVCC
4k7
R9
9
10
VCC
4k7
32
AREF
4k7
R24
10k
10k
R23
R8
+5V
D2
AFFICHAGE
POWER
070350 - 11
Figure 1. L’ATmega32 communique avec la boussole et l’affichage LCD par le biais du bus I2C, la souris GPS passant par l’interface RS-232. Le circuit
d’interfaçage I2C PCF8574P a pour charge de recevoir un octet de commande et de l’appliquer aux broches 33 à 40 de l’ATmega.
coeur un ATmeg32 d’Atmel qui se trouve
tie RS-232. Elle pourra, dès l’instant où
niveau MAX232. Il est fort probable, bien
au centre tant du schéma (figure 1) que de
elle fournit ses données à niveaux TTL,
souvent, que la platine principale du robot
la platine du prototype (figure 2). La proêtre reliée directement à notre platine de
soit déjà dotée d’un tel adaptateur.
grammation du contrôleur AVR fait appel à
navigation. Si au contraire elle fournit de
La souris GPS fournit les coordonnées
un dialecte BASIC et par le biais d’un sysprécises (longitude et latitude géographi« vrais » niveaux RS-232 (±12 V), il fautème de développement de BASCOM reladra la doter, en amont, d’un adaptateur de
ques) sous un format prédéfini (cf. l’un
tivement connu et
des encadrés). Elle
téléchargeable graest également en
tuitement (dans sa
mesure de déterversion de démonsminer le cap suivi,
tration) auprès du
à condition que la
fabricant du logivitesse de déplacement ait une valeur
ciel [1]. Nous mettons à votre dispominimum, comprise
sition, gratuitement,
entre 3 et 5 km/
sur le site d’Elekh. Comme nous
tenons à connaître
tor [2], le code source et le code
la direction même
.hex du projet. Tout
robot à l’arrêt, nous
ce dont on a encore
avons besoin d’une
besoin est un câble
« boussole éle cde programmation
tronique » (Cf. le
IPS, que l’on trousynoptique de la
vera, par exemple,
figure 3). Le CMPSà l’adresse donnée
03 de Devantech
en référence [3].
(disponible en [4] et
On pourra utiliser,
utilisé dans un autre
en tant que réceparticle de ce même
teur GP S, n’im numéro) est l’un des
porte quelle souris
modules de bousGPS du commerce
sole adéquat. Cette
Figure 2. Prototype de la platine de navigation pour robots mobiles.
dotée d’une sorboussole attaque
88
elektor - 7-8/2007
notre platine de navigation par le biais de
l’un des ports I2C.
Nous avons en outre besoin, si nous voulons afficher les coordonnées et la direction, d’un module LCD. Pour nous éviter de
nous compliquer la vie avec le protocole
de communication par le biais du microcontrôleur, nous allons piloter l’affichage
LCD lui aussi par le biais du bus I2C. À
noter qu’il existe des affichages LCD dotés
d’une interface I2C intégrée, mais nous
pouvons fort utiliser un circuit intégré pour
interface I2C comme le PCF8574 [5] (cf.
figure 4), composant que nous remettrons
à contribution ailleurs dans ce montage.
Commande du moteur
Nous souhaitons que notre robot non
seulement indique où il se trouve mais
aussi qu’il soit capable d’aller à un endroit
donné. Pour cela, notre Navigateur, à
savoir l’ATmega32, est en mesure de fournir des signaux de direction. Ces derniers
sont disponibles sur deux broches. Les broches Motor l et Motor r donnent, en com-
binaison, la direction de déplacement et
de la manière suivante :
Motor_l
Motor_r
0
0
Fonction
ARRÊT
1
1
Aller tout droit
1
0
Aller à gauche
0
1
Aller à droite
Il manque encore, aspect important, la possibilité d’indiquer au robot Navigateur où se
rendre. Il nous faut commencer par entrer
Programmation des points tournants
Avant de pouvoir lâcher notre robot dans la nature il faut doter le
système de navigation d’une série de positions précalculées, les
points tournants (track-points). On commence par substituer un
câble de données (modem zéro) à la souris, câble connecté à un
PC. Une fois la connexion au PC rétablie, nous allons ouvrir un programme de terminal tel que, par exemple, Hyperterminal. L’environnement BASCOM comporte lui aussi un programme de terminal. L’interface doit être paramétrée exactement comme le serait la
souris GPS (4 800 bauds). Dès que l’on a établi la communication,
on appuie simultanément sur les touches de réinitialisation (Reset)
et de programmation. On relâche ensuite d’abord la touche Reset,
une seconde plus tard environ, la touche de programmation.
GPS-NAVI:\
Ensuite nous devrions voir sur notre terminal l’écran suivant :
Les coordonnées des points tournants peuvent être déterminées à
l’aide d’un second système GPS (PNA ou PDA GPS); on pourra bien
entendu transporter le robot aux différents « points de passage
obligés » et en lire sur son affichage LCD les coordonnées.
*************************************
* GPS - Navigation Programming Mode *
*
Assistance call with Help
*
*
Sommer Robotics 2006 V1.0
*
*************************************
7-8/2007 - elektor
Nous avons alors le choix des instructions suivantes :
Help = Appel d’un petit manuel d’aide
Data = Liste les données GPS mémorisées
Input = Permet l’édition des données GPS
Reset = Réinitialisation du système de navigation
Exit = Quitter mode de programmation
Info = Infos générales (e
Une fois les données programmées dans le système, on peut lâcher
la bête !
89
SCL
GND
16
3
2
1
A1
A2
13
A0
SDA
7
14
P3
6
13
P2
P1
5
P0
4
12
12
8
11
11
9
P7
10
8
P5
P4
IC4
PCF8574
7
RS232
Aller à gauche
Aller à droite
But OK
9
GPS
PRG
6
GPS-BOT-DRIVE
INT
+5V
RST
14
Gauche
SCL
Droite
K8
Annonce Point
Tournant
P6
I 2C
SDA
+5V
I 2C
15
Boussole
10k
D7
D6
D5
D4
5
4
3
2
10
D3
D2
D1
D0
E
R/W
RS
VO
VDD
VSS
Figure 3. Synoptique simplifié de « Navigateur ». Les touches servent à la programmation. La sortie
des instructions destinées aux moteurs se fait au travers d’une paire de broches.
1
070350 - 13
LC DISPLAY
16 x 4
dans le système de
navigation une série
de coordonnées de
points tournants
(« track-points »),
opération qui se
fait, avant que le
robot ne soit autonome, par le biais
d’un câble (Cf. l’un
des encadrés). En
cours de déplacement, la platine de
navigation est informée du prochain
« point tournant »
à passer, ce qui
pourra, par exemple, se faire depuis le processeur principal
du robot.
Ce second petit problème de communication s’est vu résolu, lui aussi, à l’aide du
bus I2C ô combien pratique, bus auquel il
est facile d’accéder en BASCOM-BASIC.
Un circuit intégré d’interfaçage I2C, un
PCF8574P, se charge de la saisie d’un octet
de commande et de son application aux
broches 33 à 40 de l’ATmega (Cf. figure 1).
Pour cela, logiciellement, ce composant est
configuré en entrée (« Input »). Si l’on préfère une approche matérielle plus simple,
on pourra se passer de ces circuits d’exten-
sion de port I2C vu
qu’il est également
possible d’attaquer
directement et en
parallèle les ports
du Mega32 par
l’application de
niveaux hauts cris
bas.
Si l’on veut, par
I 2C, choisir, par
exemple, le point
tournant 1 il faut
envoyer un « 1 »
au PCF8574P. En
BASCOM-BASIC
cela prend la forme suivante :
I2cstart
I2cwbyte &H7A (adresse du PCF8574P, fonction
de l’adressage, cf. fiche de caractéristiques)
I2cwbyte 1 (Track Point Number)
I2cstop
Après émission des octets des points tournant, Navigateur se lance à la recherche
de la direction à prendre vers le but. Il
procède pour cela à une comparaison
entre la direction calculée avec le cap
actuel du robot (déterminé à l’aide de
Données souris
070350 - 12
Figure 4. La commande du LCD se fait par
le biais du bus I2C. On retrouve ailleurs un
second exemplaire du circuit d’interfaçage
PCF8574P (Cf. figure 1).
la boussole). Nous n’avons pas, lors des
calculs, tenu compte de la rotondité de la
Terre car il est fort peu probable que nous
envoyions notre robot sur des trajets à longue distance.
Si les directions actuelle et de consigne
sont identiques, notre robot avance tout
droit. Si, en cours de trajet, il devait dériver
du cap vers le but, le système de navigation corrige et ramène le robot au bon cap.
S’il devait se faire que la qualité du signal
GPS devienne trop mauvaise ou qu’il n’y
ait pas suffisamment de satellites dans le
« champ de vision », le robot attend sagement jusqu’à ce que le signal capté soit à
nouveau OK pour le calcul d’un nouveau
cap de consigne.
Une fois le but atteint, le robot s’arrête et
fournit, sur sa broche But OK, un signal
de niveau haut que le processeur principal
pourra traiter ensuite. Il pourra, par exemple, appeler le point tournant suivant, de
manière à ce que le robot parcoure un trajet prédéterminé.
(070350-I)
D’après le protocole $GPGGA simple, un bloc de données reçu par la souris GPS prend le
format suivant :
$GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45
Type de
protocole
Latitude
Heure
Longitude
Nombre de satellites « visibles »
Qualité de la mesure (0=invalide, 1=OK)
Comme nous le constatons, nous disposons de toutes les données requises : le type de protocole ($GPGGA), la longitude (191410,4735.5634,N), la latitude (00739.3538,E) et qualité du
signal (données valides (1) ou non) et le nombre de satellites visibles (4). Il suffit de paramétrer la souris GPS pour le protocole $GPGGA et de fixer le taux de transmission à 4 800 bauds.
Il faudra désactiver les protocoles restants. L’intervalle entre données devrait être de l’ordre
de 1 s. Ce paramétrage est à faire par le biais du logiciel fourni avec la souris GPS.
Liens Internet
[1] www.mcselec.com
[2] www.elektor.fr
[3] http://www.kanda.com
[4] http://www.robot-electronics.co.uk
[5] www.nxp.com/cgi-bin/pldb/pip/pcf8574
90
elektor - 7-8/2007
Carte USB de démo à bas² coût
Retrouver sa voie
dans l’USB
VDD
1
470 Ω
JP1
R3
analogiques qui se muent
470 Ω
S1
3
P1
C3
en graphiques, appareils
100n
10k
8
VDD
9
10
Mais comment font-ils ?
R8
1Ω
15
16
K1
+5V
D–
D+
ite
6
7
un avion, le tout en USB…
L’USB v
4
5
et cadrans comme dans
fait, b
2
t
ien fai
GND
USB-B
1
2
3
4
R10
10 Ω
10 Ω
R11
17
23
24
25
26
18
e)
tiomètr
oten
1 sur p
iques (
g
lo
a
rs)
n
rrupteu
trées a
s (inte
• 2 en
e
u
q
ri
umé
trées n
• 2 en
s (LED)
érique
m
u
n
4550
s
ie
PIC18F
• 4 sort
ce : le pour vous)
u
p
)
le
mmé
e seu
ction
• 1 (un nible progra
onstru
s de c
c
lo
(dispo
b
des
mplet
tail co
• Éven iciel
++ 6
ilder C
du log
our Bu
p
t
r A/N
je
pro
rtisseu
iel de
conve mérique
r
u
o
• Logic
p
u
Demo phique et n
ra
ramme
• Prog affichage g
avec
MCLR/VPP
32
RB7/PGD
RB6/PGC
RA0/AN0
RB5/PGM
RA1/AN1
RB4/AN11
RA2/AN2
RB3/AN9
RA3/AN3
RB2/AN8
RA4/T0CKI
RB1/AN10
RA5/AN4
RB0/AN12
IC1
RE0/AN5
R16
100n
11
Graphe futés, données
R7
330 Ω
100n
R2
R6
C2
10k
10k
C1
10k
R1
Martin Valle
40
39
R5
470 Ω
38
37
D5
R4
36
35
470 Ω
PWR
S2
S3
34
33
RE1/AN6
RE2/AN7
PIC18F4550
RC0/T1OSO
RD7/SPP7
RC1/T1OSI
RD6/SPP6
RC2/CCP1
RD5/SPP5
RC4/D-
RD4/SPP4
RC5/V+
RD3/SPP3
RC6/TX
RD2/SPP2
RC7/RX
RD1/SPP1
VUSB
RD0/SPP0
OSC1
12
13
30
29
28
27
22
21
20
19
OSC2
14
R9
R15
R14
RD2
330 Ω
R13
RD1
330 Ω
R12
31
RD3
330 Ω
330 Ω
RD0
D4
D3
D2
D1
10M
100n
JP2
X1
C6
C4
C5
20MHz
22p
22p
060342 - 11
Figure 1. Le schéma de la carte démo USB.
Comme ceci : une simple carte, branchée au PC par câble USB et qui exhibe
un microcontrôleur PIC de pointe. Ajoutez-y ce qu’il faut de logiciel et votre carte
démo USB se transforme en système de
développement pour vous faire découvrir
comment l’USB s’est greffé sur un microcontrôleur programmé à traiter des E/S
analogiques et numériques pour de vraies
applications de tous les jours.
Matériel
Au centre du circuit de la figure 1, on
trouve un microcontrôleur PIC18F4550
de Microchip. Il jouit de la connectivité
USB… si vous savez comment vous en servir ! Le processeur est scandé à 20 MHz
par le quartz X1. Les interrupteurs (sauf
S1), les LED (sauf D5) et le potentiomètre
connectés au PIC micro seront vos appareils d’E/S (entrée/sortie) de base.
7-8/2007 - elektor
Figure 2. Panneau de configuration arborant l’installation de la carte PICDEM FS USB Demo.
91
vaste. Le plaisir, c’est qu’il est disponible
gracieusement sur le site web d’Elektor
sous le numéro d’archive 060342-11.zip.
Le programme tout prêt est aussi à votre
disposition, mais via l’e-choppe d’Elektor
sous la référence 060342-41.
Il y a en réalité quatre fichiers zippés :
MCHPFSUSB.zip contient tous les composants du projet que l’on peut télécharger
gratuitement chez Microchip plus le projet
spécial pour le microcontrôleur, la version
de démonstration du logiciel et l’amorce
de chargement qui cause : « talker ».
Project.zip contient tous les fichiers nécessaires pour réaliser le projet en Builder
C++ 6.
REQUIRED.zip contient les fichiers de project.zip que vous aurez à copier si vous
voulez lancer un nouveau projet.
Without builder.zip contient tous les
fichiers nécessaires pour tourner le fichier
.exe sans avoir installé Builder sur votre
ordinateur.
Figure 3. L’outil PICDEM FS USB indiquant l’appareil (la carte) connecté.
Vous ne devriez avoir aucune difficulté à
assembler le tout sur un morceau de platine pour prototype ou de Veroboard (perforé ou à bandes).
Logiciel
En contraste flagrant avec le matériel minimum, le logiciel pour ce projet est très
Voici comment exécuter le logiciel.
1. Extraire le fichier MCHPFSUSB.zip dans
le répertoire racine C:\ Vérifiez qu’il n’y a
pas de doublon du classeur MCHPFSUSB
du genre :
C:\ MCHPFSUSB\ MCHPFSUSB\
repe rtoire_xx,
à la place de :
C:\ MCHPFSUSB\répertoire_xx.
2. En utilisant un appareil adéquat, programmer le microcontrôleur PIC18F4550
par le fichier : C:\MCHPFSUSB\fw\_factory_hex\picdemfsusb.hex. La puce est
aussi disponible déjà programmée.
Réveil du F4550
Quand vous avez réalisé le projet et vérifié qu’il n’y a pas d’erreur, vous pourrez
connecter l’USB à l’hôte. Lors de la première connexion, Windows XP est préférable. Dès le branchement de la carte
sur l’hôte, les LED D0 et D1 commencent
à clignoter, puis l’hôte détecte l’appareil
comme « PICDEM FS USB Demo Board
© 2004 » et demande s’il y a des pilotes à
bord. Sélectionnez alors les pilotes voulus
situés en :
C:\ MCHPFSUSB\Pc<MCHPUSB
Driver\Release\
Figure 4. Mode Demo de l’outil Pdfsusb.
92
Windows va encore se plaindre que l’appareil ne réussit pas le test du logo Windows.
Ignorez ses lamentations et continuez simplement l’installation de l’appareil.
elektor - 7-8/2007
Vous pouvez vérifier la bonne installation
par une exploration dans le Gestionnaire de
périphériques de Windows, il devrait ressembler à la figure 2. Maintenez enfoncé le
bouton S3 (RB4) et mettez à zéro le microcontrôleur en poussant et lâchant S1. Cette
procédure entraîne le microcontrôleur en
mode « chargeur d’amorce ». L’hôte va
détecter un nouvel appareil et il vous faudra répéter la procédure d’installation avec
le pilote assis à la même place :
C:\ MCHPFSUSB\Pc<MCHPUSB
Driver\Release\
À partir de maintenant, vous pouvez
charger de nouveaux programmes dans
le microcontrôleur à l’aide du chargeur
d’amorce en utilisant les poussoirs S3 et
Mise à zéro.
L’application sur le PC qui communique
avec le chargeur d’amorce est le fichier
exécutable :
Figure 5. Deux canaux ADC (convertisseur A/N) et l’USB du PIC en pleine action.
C:\MCHPFSUSB\Pc\pdfsusb\
PDFSUSB.exe.
L’outil Pdfsusb doit apparaître dans la fenêtre de connexion exactement comme à la
figure 3.
Mode démo et chausse-trappes
Si vous mettez la carte à zéro sans garder le doigt sur S3, le microcontrôleur va
exécuter le programme en mémoire, donc
pas le chargeur d’amorce. Idem si vous
cliquez sur le bouton « / Execute » dans
l’application. C’est pourquoi le premier
appareil détecté par l’hôte n’a pas été le
chargeur d’amorce. C’était un programme
de test avec l’autre partie de l’outil Pdfsusb
(mode démo), il s’agit du bouton en haut, à
gauche, à l’intérieur du mode Bootload.
Ce mode est représenté à la figure 4. Il
permet la lecture de la position approximative du potentiomètre connecté à RA0,
commande l’état des LED branchées sur
RD2 et RD3 et mesure la température d’un
capteur SPI qui n’est pas encore relié à la
carte (aussi, ne tenez aucun compte de la
température affichée).
Le micrologiciel Demo utilise quelques
broches pour vérifier la tension principale
sur l’USB (ceci n’est pas représenté dans
le schéma). Il arrive que cette vérification rate après connexion de l’appareil à
l’ordinateur.
Heureusement, l’erreur ne vaut que pour le
micrologiciel Demo, pas pour le chargeur
d’amorce. Il y a une manière aisée d’éviter ceci. Dans chaque projet inclus dans
le dossier MCHPFSUSB, il y a un fichier
C:\MCHPFSUSB\fw\project_name_folder\
autofiles\usbcfg.h. Il contient les déclara-
7-8/2007 - elektor
tions qui causent le problème. Il suffit de
transformer en commentaire (//) les deux
définitions SENSE_IO comme le montre
le listage 1.
Quand vous l’aurez fait, vous pourrez
recharger le projet Demo ou n’importe
quel autre de ce sujet, et tout marchera
convenablement.
On y va, Letsgo ?
Maintenant, il est temps d’explorer l’exemple d’application. Comme antérieurement,
mettez le microcontrôleur à zéro tout en
enfonçant S3 pour exécuter le chargeur
d’amorce et transférez dans le microcontrôleur le fichier hex situé dans :
C:\MCHPFSUSB\fw\Hid02/_output/
NICAPM.hex
À présent, lancez le programme.
liser l’attirail du nom de « Without builder.
zip ». De toute évidence, le microcontrôleur doit être branché sur l’hôte et exécuter
le micrologiciel NICAPM.
La fenêtre de l’application demo devrait
ressembler à la figure 5, qui montre les
signaux sur le canal 0 (AN0, broche 2) et
le canal 1 (AN1, broche 3). Il y a aussi un
fichier d’archive appelé project.zip si vous
désirez modifier quelque chose dans le
projet PC.
Voulez-vous entamer un nouveau projet
Builder ? Il ne vous faudra veiller qu’à deux
choses :
1. Ajouter le fichier hid.lib en faisant :
Project ➞ Add to project ➞ hid.lib
2. Changer l’alignement des données de
mots, de Quad en octet, en faisant :
Project ➞ Options ➞ Advanced Options
➞ Data alignment.
Vous pouvez tourner l’application pour
PC directement, sans avoir à installer C++
Builder 6 sur l’ordinateur, à condition d’uti-
(060342-I)
Listage 1.
/** D E F I N I T I O N S *****************************************/
#define EP0_BUFF_SIZE
8
// 8, 16, 32, or 64
#define MAX_NUM_INT
1
// For tracking Alternate Setting
/* Parameter definitions are defined in usbdrv.h */
#define MODE_PP
_PPBM0
#define UCFG_VAL
_PUEN|_TRINT|_FS|MODE_PP
//#define USE_SELF_POWER_SENSE_IO
//#define USE_USB_BUS_SENSE_IO
93
MotoBox
Pilote moteurs à CC, pas à pas et servos
Joseph Zamnit (MCAST, Malta)
Avant de faire bouger un robot, peu importe qu’il marche, nage, se
faufile dans un labyrinthe ou arrache l’asphalte, il faut vous occuper
de l’interface et du pilotage de différents types de moteurs. Rédiger les
algorithmes appropriés va encore allonger la durée de développement,
d’autant que des étirements et adaptations semblent nécessaires pour
toute nouvelle application. Ce projet résout la question, il présente une
carte générique de pilotage de moteur, capable de commander trois
sortes de moteurs, pas à pas, à courant continu ou encore servos,
sans devoir programmer l’algorithme au cas par cas. MotoBox
est idéal pour les débutants en robotique autant que pour
les chevronnés qui se serviront de la carte pour les
prototypes et le développement. La platine peut
aussi piloter deux types de moteurs en même temps !
On programme la carte par une interface
RS232. Le protocole est celui que l’on rencontre sur beaucoup de microcontrôleurs.
Il peut être issu du port sériel d’un PC ou
d’un autre microcontrôleur. Le code utilisé en commande du moteur est un jeu
d’instructions très simple à 6 caractères.
Il a été choisi tel pour obtenir une interface très conviviale. Le code permet également à l’utilisateur de lire l’état de la
carte. En outre, cette carte surveille le
courant consommé par chaque moteur et
coupe le pilote dès qu’elle détecte un
court-circuit.
L’auteur est ingénieur de profession,
compte de nombreuses années d’expérience dans la conception et la construction de circuits électroniques. Il est spécialiste des antennes planar et enseigne
actuellement les télécommunications à
l’MCAST, à Malte.
Description du circuit
Si l’on se reporte au schéma de la figure 1,
on
s’aperçoit que le coeur du circuit
est un PIC16F628A qui commande et surveille les pilotes de
moteurs. Le microcontrôleur est
s
e
u
câblé pour utiliser son oscillaq
i
n
s tech
e
teur interne à 4 MHz, ce qui
u
q
i
t
is
r
é
t
c
libère les broches du quartz
a
Car
teurs :
o
pour les attribuer à l’interface
m
s
e
sd
olaire
3 type
)
pas bip
sérielle. PORTB sert de sortie
C
à
C
s
• Pilote
(
a
p
ontinu
oteurs
de commande des pilotes de
urant c
o
•m
c
à
1
oteurs
00, N,
6
m
9
•
moteurs, tandis que PORTA
@
l
oteurs
rt série
ervom
r le po
a
s’occupe de différentes foncp
rs
•s
oteu
,8 V
n des m
u’à 13
o
tions, la lecture du courant,
q
ti
s
a
v
ju
ti
• Ac
oteurs
des m
la commande des pilotes et
n
é
o
is
ti
a
ta
en
mploi
rvo)
e
’e
s
d
• Alim
t
s
des LED. La broche MCLR
e
e
C
mand
2 A (C
squ’à
de com
est maintenue haute par
ju
u
e
t,
J
n
•
coura
R15 et D13. On trouve
nce du as)
la
il
»
e
p
rreur • Surv
(pas à
aussi un connecteur de
uge « e
ro
,
»
ou 4 A
k
vert « o
t
:
n
D
programmation ICSP
o
E
p
L
que
oin à
de cha
• Tém
e
ll
pour programmer la
e
u
divid
ande in oteurs
puce in situ. Les lignes
m
m
o
•C
te de m
PGC et PGD sont découplées par
du pilo
94
condensateurs de 100 nF.
Le module reçoit son énergie d’une alimentation de 12 V régulée à 5 V par un
78L05. Un témoin, la LED verte D16,
indique la mise sous tension. Le module
est prévu pour travailler sur batterie au
plomb/acide qui fournit 13,8 V fraîchement chargée mais peut descendre jusqu’à 7 V. Il importe que le module ne
doive pas partager la source de tension
utilisée par les moteurs à cause des pics
de courant, pointes de tension et bruit
induits par le moteur.
C’est un MAX232 qui sert d’interface entre
le module et le port sériel d’un ordinateur
de bureau ou d’un portable. Il faut absolument que le MAX232 soit compris dans
le circuit, sinon, assurez-vous que la broche de réception RA7 est maintenue au
niveau bas quand elle n’est pas utilisée. Le
microcontrôleur pourrait confondre le bruit
d’une entrée flottante avec des données,
ce qui conduirait à des erreurs d’opéra-
elektor - 7-8/2007
Vsup
+5V Vsup
C17
C19
100n
IC6C
D14
4
GND
GND
1u
5
25V
4
VCC2
10k
330
VSS
1u
25V
GND
R2
VCC2
9
5
1A1
7
1A2
6
1EN
D7
D8
D9
D10
GND
IC5
6
K5
2
1Y1
3
1Y2
1
1E
5
4
K10
3
13
10
2A1 L298KV 2Y1
12
14
2A2
2Y2
15
11
2EN
2E
2
D11
D12
K9
1
6x 1N5400
K4
K2
D13
GND
C14
GND
4k7
1N4148
R15
C11
C10
100n
100n
R8
220n
R7
10k
4k7
C8
C2-
100n
100n
GND
D15
GND
GND
C6
6
7
8
9
10
11
12
13
C18
8
D Connector 9
MAX232CPE
3
11
10
12
9
4
1u
25V
RA0/AN0
RB0/INT
RB1/RX/DT
RA1/AN1
IC1
RA2/AN2/VREF
RB2/TX/CK
RA3/AN3/CMP1 PIC16F628-04/P RB3/CCP1
RA4/T0CKI/CMP2
RB4/PGM
RA5/MCLR/VPP
RB5
RA6/OSC2/CLKOUT
RB6/T1OSO/T1CKI/PGC
RA7/OSC1/CLKIN
RB7/T1OSI/PGD
10k
15
C1T1IN
T2IN
R1OUT
R2OUT
C2+
C7
C16
5
VDD
T1OUT
7
T2OUT
13
R1IN
8
R2IN
1
Vsup
R13
VDD
17
18
1
2
3
4
15
16
2
10
IC3
100n 14
VEE
11
10u 25V
C1+
5W
GND
+5V Vsup
14
470
GND
R9
C13
100n
100n
6
1
6
2
7
3
8
4
9
5
+5V
C4
25V
VCC
2
1k5
C9
16
IC6A
R3
+5V
R12
C3
VCC1
1
GND
C22
4k7
5k6
3
R17
100n
K3
K8
1
6x 1N5400
R5
220n
R4
10k
R16
1u
D6
GND
C12
+5V
+5V
2
D5
R11
IC6 = LM358AJG
C23
K7
3
0R22
GND
8
C21
D16
K6
5
4
GND
+5V
5
7
IC6B
6
R6
R10
10k
C15
0R22
47u
25V
6
13
2Y1
14
2Y2
15
2E
GND
C20
D4
8
C5
100n
D3
D2
2
1Y1
3
1Y2
1
1E
4
100u 100n
63V
L298KV
10
2A1
12
2A2
11
2EN
R1
VCC1
C2
R14
D1
GND
IC4
10k
C1
1
330
K1
5
1A1
7
1A2
6
1EN
+5V
470
3
L78L05CZ
IC2
2
Vsup
100n
9
100n
GND
100n
5W
070129 - 11
GND
Figure 1. Schéma du Motobox, le contrôleur « tout en un » pour moteurs de robots.
tion. Un autre microcontrôleur peut également commander le module en utilisant
le connecteur K2.
Les moteurs sont attaqués par les étages de
puissance du L298, chacun en commande
d’un seul moteur. Le L298 est un pilote
à double demi-pont capable de délivrer
2 A par canal, avec validation et mesure
du courant séparées pour chaque pont. Il
peut servir à la commande de différents
types de moteurs. Dans ce projet, le L298
est validé par le microcontrôleur et cette
ligne Enable est attirée au niveau bas lors
de la mise sous tension pour s’assurer que
la puce reste inactive. Les condensateurs
de découplage de 100 nF chacun sont placés tout près de la puce.
Le LM358 constitue un amplificateur CC
qui mesure la tension aux bornes de la
résistance d’entrée. Il est suivi d’un filtre
passe-bas et d’un tampon amplificateur
dont le gain diminue avec la fréquence
pour éliminer le bruit. Les moteurs à CC
7-8/2007 - elektor
génèrent, quand l’armature donne contact
avec le commutateur, des parasites qui se
manifestent en pointes de courant, lesquelles se répercutent aux bornes de la
résistance de mesure. Des pics de courant
peuvent produire, pour le microcontrôleur,
un effet similaire à un court-circuit et lui
faire arrêter le moteur. Le filtre adoucit tous
les pics de tension. En outre, il y a dans
le micrologiciel un algorithme qui détecte
des surcharges de courant limitées dans le
temps avant de couper le canal en cause.
Tableau 1. Mémento des options de pilotage du moteur
Fonction du pilote de moteur
Sortie
Moteur 1
Broche µC
Broche embase
Moteur 2
RB3
RB2
RB1
RB0
RB7
RB6
RB5
RB4
2
3
4
5
2
3
4
5
Mode
Chaque sortie
commande une phase
Pilote pas à pas
Pilote moteur à CC (1)
Pilote Servo (2)
3
3
3(3)
P(4)
P(4)
3(3)
Chaque sortie
commande une phase
3
3
3(3)
P(4)
P(4)
3(3)
(1) Entrée différentielle
(2) Utiliser la broche de terre sur le connecteur pour le servomoteur
(3) Permet de piloter 2 servomoteurs en même temps avec le même signal
(4) Utilisé pour alimenter le servomoteur
95
Construction
K2
K4
C13
D16
C15
R6
IC6
R12
R15
D13
C22
C3
C9
C7
R4
R3
C12
C10
5
K3
1
R14
C2
D9
C19
D12
D3
15
C1
K1
IC5
IC4
C16
1
IC2
C17
R13
C18
R10
R5
R1
D15
C5
R2
R11
D14
R9
D6
15
C20
C14
R7
R8
C23
C8
C21
C4
IC1
IC3
C6
1
Inspection préalable
D10
D8
D7
D4
D2
D1
D11
K9
K10
K5
D5
K8
K7
K6
Une fois le circuit construit, il convient
d’en vérifier le fonctionnement. Mettez-le
sous tension avant d’y insérer les circuits
intégrés. D16 doit s’allumer. Contrôlez le
5 V sur les broches concernées des supports de IC1, IC3, IC4, IC5, IC6. La tension
d’alimentation doit aussi arriver sur la broche 4 de IC4 et de IC5. Si tout est correct,
débranchez et insérez le microcontrôleur
programmé et le restant des puces. On
peut aussi programmer le microcontrôleur
en circuit par le connecteur K4.
S’il vous faut contrôler la carte à partir d’un
autre microcontrôleur, vous pouvez utiliser
le connecteur K2. Il s’agit d’un connecteur
direct, il faut permuter les lignes Transmission/Réception avant de les brancher
à la carte. En revanche, si c’est le connecteur sub-D qui est utilisé, la permutation
des signaux a été réalisée sur la platine
elle-même.
9
C11
6
R16
R17
Bonne nouvelle : le projet ne nécessite
aucun composant exotique, à l’exception
éventuellement du radiateur à agrafer, mais
il est disponible chez Mouser.
Le circuit ne contient que des composants
traversants pour simplifier la fabrication et
ils sont tous aisément disponibles et d’un
montage facile sur la platine, dont vous
pouvez voir la sérigraphie d’implantation
à la figure 2.
Peu de chose à dire sur les composants,
sauf que pour la résistance de 0,22 Ω, il
vaut mieux prendre un modèle non bobiné,
et que les LED bicolores ont deux pattes,
pas trois ! Si vous ne comptez pas utiliser
la platine avec un PC, vous pouvez vous
passer du connecteur sub-D. Cependant,
le MAX232 doit toujours être présent. De
même, IC4 et IC5 doivent dans tous les cas
être soudés sur la carte.
Figure 2. Sérigraphie de l’implantation des composants sur la carte conçue pour MotoBox. Le
dessin des pistes est disponible gracieusement en téléchargement sur le site d’Elektor.
ché sur la carte. Il faut taper la commande
« DC1FOR », en capitales ou en bas de
casse, pour faire tourner le moteur à l’en-
droit. Le logiciel convertit toutes les lettres
en capitales. La commande sera exécutée
dès son expédition. La bonne réception
Tableau 2. Syntaxe de commande
Commande
Description de commande
1
ST1FOR
Pas à pas 1 cw (cw = clockwise = sens horaire)
2
ST1BAK
Pas à pas 1 ccw (ccw = counter clockwise = sens anti-horaire)
3
ST2FOR
Pas à pas 2 cw
4
ST2BAK
Pas à pas 2 ccw
5
STBFOR
Les deux pas à pas cw — simultanément
6
STBBAK
Les deux pas à pas ccw — simultanément
7
STSYNC
Mettre les deux pas à pas dans la même position si glissement
8
AMSTOP
Arrêt d’urgence. Couper tous les moteurs — p. ex surcharge
9
ST1FXX
Tourner pas à pas 1 xx (999 pas max) positions cw
10
ST1BXX
Tourner pas à pas 1 xx (999 pas max) positions ccw
… et on les contrôle
11
ST2FXX
Tourner pas à pas 2 xx (999 pas max) positions cw
Aussitôt la carte bien alimentée, elle va
expédier le caractère « I » à l’hôte pour
confirmer son initialisation et attendre une
commande. Elles ont toutes une longueur
de six caractères, comme vous pouvez le
voir dans la liste du tableau 2.
Supposons qu’un moteur à CC soit bran-
12
ST2BXX
Tourner pas à pas 2 xx (999 pas max) positions ccw
13
DC2FOR
Moteur CC 2 ON/cw
14
DC2BAK
Moteur CC 2 ON/ccw
15
DC2OFF
Moteur CC 2 OFF
16
DC1FOR
Moteur CC 1 ON/cw
17
DC1BAK
Moteur CC 1 ON/ccw
On branche les moteurs…
La meilleure façon de vérifier complètement la carte est de la connecter au PC et
de lancer HyperTerminal pour lui envoyer
des commandes. Attachez-y un moteur
selon l’une des configurations indiquées
à la figure 3 pour tester la carte. Utilisez
le mémento des options de pilotage du
moteur, dans le tableau 1, pour brancher
correctement les bornes du moteur.
96
elektor - 7-8/2007
est alors effacé et la carte reste en attente
d’une nouvelle commande. Les LED s’allument tant que le système fonctionne bien,
elles sont au rouge si le pilote du moteur
a été coupé.
Il y a des commandes de moteur pas à pas
pour les faire tourner « cw » (clockwise,
sens des aiguilles) et « ccw » (counter clockwise, sens inverse) d’un certain nombre
de pas (maximum 999). Cette commande
s’accompagne d’un nombre de trois chiffres, par exemple 050 pour avancer de
50 pas. Pour des nombres de pas inférieurs
à 100, le ou les zéros de tête doivent être
écrits.
Les commandes pour moteur CC, pour
servo et celles d’état s’exécutent immédiatement, mais pour le moteur pas à pas,
elles subissent un retard (20 ms par défaut)
de manière à ce que la commande soit
acceptée après que le moteur ait démarré.
Si l’on envoie une commande pendant
cet intervalle, elle se perdra et sera omise.
On peut demander le type de moteur en
service à tout moment par la commande
Liste des composants
Résistances :
R1 à R4,R6,R7 = 10 kΩ
R5,R8,R15 = 4kΩ7
R9,R10 = 0Ω22/5 W
R11,R13 = 330 Ω
R12,R14 = 470 Ω
R16 = 5kΩ6
R17 = 1kΩ5
Condensateurs :
se signale par un caractère « A », avec
une répétition du code de la commande
en cours. C’est très utile quand on utilise
un terminal élémentaire. Si la commande
envoyée est incorrecte, la réponse sera le
« E » de erreur. Le tampon de commande
C1 = 100 µF/40 V radial
C2 à C5,C10,C11,C13,C15 à C19,C21,C23
= 100 nF
C6-C9 = 1 µF/25 V radial
C12,C14 = 220 nF
C20 = 47 µF/25 V radial
C22 = 10 µF/25 V radial
Semi-conducteurs :
18
DC1OFF
Moteur CC 1 OFF
19
DCBFOR
Les deux moteurs CC cw
20
DCBBAK
Les deux moteurs CC ccw
21
DCBOFF
Les deux moteurs CC OFF
22
SV2FOR
Servo 1 cw
23
SV2BAK
Servo 1 ccw
24
SV2MID
Servo 1 position centrale
25
SV2HLD
Servo 1 maintien
D1 à D12 = 1N5400
D13 = 1N4148
D14,D15 = LED 5 mm bicolore à
2 contacts
D16 = LED 5 mm
IC1 = PIC16F628-04/P programmé
EPS070129-41
IC2 = 78L05
IC3 = MAX232
IC4,IC5 = L298N avec radiateur pour
boîtier Multiwatt15 (mouser.com)
IC6 = LM358
26
SV1FOR
Servo 2 cw
Divers :
27
SV1BAK
Servo 2 ccw
28
SV1MID
Servo 2 en position centrale
K1,K5 à K10 = bornier à 2 contacts au pas
de 5 mm encartable
K2 = embase autosécable à 1 rangée de
3 contacts
K3 = embase sub-D à 9 contacts femelle
en équerre encartable
K4 = embase autosécable à 1 rangée de
4 contacts
platine réf. EPS070129-1
fichiers source et .hex téléchargeables
gratuitement EPS070129-11.zip depuis
www.elektor.fr
29
SV1HLD
Servo 2 en maintien
30
MTYPEX
Retourne le type de moteur
31
STDELX
Configurer retard moteur pas à pas
32
ECHOST
Configurer l’écho. Défaut = ON
33
AMONXX
Tous les moteurs ON
34
MONOFF
Ne pas surveiller la consommation
35
CMONON
Surveiller la consommation
36
RESUME
Débloquer les moteurs après une surcharge
7-8/2007 - elektor
97
Alimentation
Alimentation
Alimentation
2
3
2
3
1
Entrée
sérielle
2
Entrée
sérielle
Carte
moteur
Entrée
sérielle
Carte
moteur
M
Carte
moteur
M
4
4
5
5
6
M
3
070129 - 12
Figure 3. Voici comment connecter vos moteurs.
« MTYPEX », la réponse sera un caractère
révélateur du type de moteur.
Surcharge, pointes,
ondulations…
Par l’intermédiaire du comparateur analogique, la section logicielle surveille en
permanence le courant consommé. La
carte coupera le moteur si la consommation de courant excède les spécifications
du moteur en service.
Un filtrage a lieu pour que le contrôleur ne
coupe pas les moteurs sur n’importe quel
parasite. De rapides mises en et hors service de moteurs CC produisent de grandes
pointes de courant, ce qui peut conduire
le contrôleur à inhiber le pilote du moteur
en question. Il est possible de supprimer
la surveillance du courant, mais ce n’est
pas recommandé. Une surcharge de courant peut imposer une surchauffe exagérée
du L298 et causer sa destruction. Il faut
envoyer une commande « RESUME » après
inhibition du pilote de moteur pour remettre le moteur en service. Une période de
répit est accordée avant d’autoriser l’envoi
d’une autre commande et tenter de débloquer le moteur.
Logiciel
Les codes source et hex pour le PIC16F328A
sont disponible sur le site d’Elektor. Le
numéro de fichier est EPS070129-11.zip
(Juillet/Août 2007).
(070129-I)
Adresses du site web
et de courriel de l’auteur :
www.mcast.edu.mt
[email protected]
Liens Internet
http://www.microchip.com
www.st.com/stonline/products/literature/
ds/1773.pdf
Commande de servos
Avec un PIC
programmé en
Basic, un Basic
Stamp ou un Cubloc
C. Tavernier
Les servos de radiocommande connaissent
aujourd’hui une nouvelle jeunesse grâce à
la robotique en raison de leur caractéristiques qui, sans l’avoir prévu au départ, se
trouvent être bien adaptées au besoin.
En effet, les servos de radiocommande
sont aujourd’hui peu encombrants si l’on
98
tient compte du fait qu’il contiennent tout
à la fois leur propre mécanique ainsi que
leur électronique de commande qui se
satisfait en entrée de simples signaux logiques TTL ou CMOS. La force qu’ils sont
capables d’exercer peut être très importante pour les plus puissants d’entre eux
(ceux initialement destinés aux « grosses »
maquettes d’avions ou de bateaux) et enfin
ils sont généralement livrés avec une multitude d’accessoires tels que palonnier, roue
perforée, etc. qui facilitent leur interfaçage
avec les éléments à actionner.
Il existe aujourd’hui deux modes essentiels
d’utilisation d’une servo dans un robot. Le
premier, décrit par ailleurs dans ce même
numéro, consiste à transformer la servo en
moteur de propulsion ce qui le détourne
un peu de sa fonction première il est vrai.
Le second, que nous allons étudier ici,
consiste à l’utiliser pour faire du positionnement. Que ce soit dans un bras, pour
faire tourner une plate-forme supportant
une caméra, un télémètre ou tout autre
organe, notre servo est en effet parfaitement adaptée.
Nous ne vous ferons pas l’affront de vous
dire à quoi ressemble une servo car, même
si vous n’êtes pas un « accro » de la radiocommande, vous en avez sans doute déjà
elektor - 7-8/2007
vu. Par contre, voici quelques informations qu’il faut connaître afin de
pouvoir l’utiliser.
Au plan électrique, une servo ne dispose que de trois fils codés par des
couleurs. Les fils rouge et noir sont
destinés à son alimentation qui peut
être comprise entre 4,8 et 6 volts.
Le troisième fil, de couleur jaune
ou blanche, ou en pratique de toute
autre couleur que rouge et noir, sert à
transmettre les ordres à la servo sous
forme de signaux PWM que l’on peut
appeler plus simplement impulsions
codées en largeur.
1
La figure 1 montre tout à la fois le
principe de codage de ces impulsions et l’influence qu’elles ont sur la
position de la servo. Remarquez tout
d’abord qu’elles doivent se répéter
à un rythme tel que l’on ne doit pas
2
avoir plus de 10 à 20 ms d’écart entre
deux impulsions successives.
En théorie, cette répétition n’est pas
absolument indispensable mais, si
elle a lieu, la servo tient la position
imposée par la largeur des impulsions
reçues. Si ces impulsions ne se répètent pas, la servo va bien à la position
codée par la dernière impulsion reçue
mais, dès qu’elle disparaît, le moindre effort sur son axe lui fait perdre la
position ainsi atteinte.
Ceci étant, sachez que, comme l’indique la figure :
• une impulsion de 1,5 ms de large
place la servo dans sa position dite
centrée ou de repos ;
• une impulsion de 1 ms de large fait tourner la servo dans sa position maximum en
sens inverse des aiguilles d’une montre, ce
qui représente généralement un angle de
45° par rapport à sa position de repos ;
• une impulsion de 2 ms de large fait tourner la servo dans sa position maximum
dans le sens des aiguilles d’une montre ce
qui représente, là aussi, un angle de 45°
par rapport à sa position de repos.
Toutes les positions intermédiaires peuvent être atteintes lorsque l’on fait varier
la largeur des impulsions de 1 ms à 2 ms.
Listage 1
‘ Version Basic Stamp I et II
ou PIC programmé en Basic
boucle:
for b2 = 100 to 200
for b3 = 1 to 5
pulsout 0,b2 ‘ servo
connectée sur le port P0
pause 15
next
next
goto boucle
7-8/2007 - elektor
1,5 ms
Centré
10 ... 20 ms
1 ms
- 45 °
10 ... 20 ms
2 ms
+45 °
10 ... 20 ms
070238 - 11
Basic Stamp
ou
Cubloc
+5VServo
P0 (Stamp)
rouge
blanc, jaune
Servo
P5 (Cubloc)
VSS
noir
070238- 12
Pour une utilisation robotique, il est même
possible d’aller au delà et d’appliquer à la
servo des impulsions un peu plus courtes
que 1 ms ou un peu plus longues que 2 ms
et atteindre ainsi un angle total de rotation de 180°. Mais attention ! On se trouve
alors hors des spécifications de la servo
qui risque de se bloquer sur ces positions
extrêmes et de détruire ainsi son moteur,
son électronique de commande ou les
deux à la fois si vous avez de la chance !
Ceci étant, la connexion d’une servo à
un microcontrôleur (Basic Stamp, PIC,
Cubloc) est très simple comme le montre
la figure 2. La seule précaution à prendre
se situe au niveau de l’alimentation de la
servo. En effet, compte tenu des appels
de courant relativement importants réalisés par la servo lorsqu’il tourne, il est
préférable de l’alimenter sous une tension
indépendante de celle du microcontrôleur.
Lorsque ce n’est pas possible, il faut s’assurer d’un excellent découplage entre les
deux en alimentant par exemple la servo
et le microcontrôleur au travers de deux
régulateurs indépendants.
Pour ce qui est du logiciel, la commande
d’une servo avec un Basic Stamp ou un
PIC programmé en Basic ne demande que
très peu de lignes de programme. Il suffit
en effet de faire appel aux deux instructions que sont PULSOUT et PAUSE
pour y parvenir.
Voici, à titre d’exemple, un programme
qui fait tourner une servo lentement de
sa position extrême d’un côté à sa position extrême de l’autre et ainsi de suite.
Il peut ainsi par exemple déplacer un
capteur dans un plan de 90° d’amplitude totale.
L’instruction PULSOUT génère des
impulsions de durée variant de 100
x 10 µs à 200 x 10 µs en fonction de
l’évolution de la variable de boucle
b2, tandis que l’espacement entre ces
impulsions est fixé à 15 ms au moyen
de l’instruction PAUSE.
Ce programme est écrit ici en langage
Basic Stamp I mais sa transposition
en Basic Stamp II ou pour l’utiliser
avec un PIC programmé en Basic,
ne demande que la modification des
valeurs extrêmes et du pas de la variable de boucle b2. En effet la résolution
de l’instruction PULSOUT n’est plus de
10 µs mais de 2 µs. Il faut donc multiplier ces différentes valeurs par 5.
L’utilisation d’une servo avec un Cubloc
de Comfile Technology est tout aussi
simple mais fait appel à une instruction appelée PWM selon le listing
ci-dessous.
Dans une application de ce type,
l’avantage du Cubloc sur le Basic Stamp
est que la commande PWM génère les
impulsions indéfiniment, même si le
programme continue à s’exécuter. Dans
le cas du Basic Stamp, l’instruction PULSOUT ne génère qu’une impulsion et doit
donc être appelée dans une boucle pour
produire en permanence ces dernières, ce
qui interdit au Basic Stamp de faire autre
chose. Si vous ne voulez pas recourir à un
Cubloc, une autre solution consiste à faire
appel à un circuit spécialisé, tel le MIC 800
de Mictronics (www.mictronics.com) capable de commander de manière autonome
jusqu’à 8 servos simultanément (Cf. le cas
échéant le numéro double d’Elektor de
l’été 2006).
(070238-I)
Listage 2
‘ Version Cubloc
Const Device = CB220
Dim Position As Integer
Low 5 ‘ Servo connectée
sur le port P5
Do
For Position = 2300 to Position = 4300 Step 20
Pwm 0, Position, 32768
Delay 100
Next
Loop
99
Pilote complet de moteur pas à pas
+5V
10k
20
1
RST
9
IC2
8
13
14
15
T0/P3.4
P1.7
P1.1/IN–
P1.6
P1.2
P1.5
P1.3
P1.4
19
1
18
2
17
3
16
4
5
AT89C2051
12
9
11
P1.0/IN+
RXD/P3.0
TXD/P3.1
T1/P3.5
INT0/P3.2
P3.7
INT1/P3.3
X1
X0
5
4
10
S2
S3
S4
R1
C4
8k2
S1
Plein
pas
Droite
6
3
7
6
I1
O1
I2
O2
I3
IC3
I4
I5
I6
O3
O4
ULN2003
I7
O5
O6
O7
16
15
14
M1
M
13
12
11
10
GND
7
8
R8
M1 = Moteur
pas à pas 5 V
R9
Tableau 1
Angle de pas
(degrés)
C3
12MHz
+9V
33p
7805
500
1,8
200
2,0
180
C2
2,5
144
100n
5,0
72
7,5
48
15
24
+5V
Gauche
C1
47µ
16V
070228 - 11
Hesam Moshiri
Ce circuit va vous permettre de faire à
peu près tout ce qu’il faut dans les applications de robotique : tourner à gauche ou
à droite, à pas complets ou par demi-pas.
Le moteur pas à pas convertit des impulsions électriques en mouvements mécaniques. Sur les disques durs, les imprimantes,
les numériseurs, certains photocopieurs,
on utilise des moteurs pas à pas pour tourner ou commander avec précision le positionnement d’organes mécaniques. La plu-
Pas
par tour
0,72
IC1
33p
Demipas
X1
2
DS
10k
10µ
16V
R7
10k
R6
C5
10k
R5
10k
R4
10k
10k
R3
10k
R2
part des moteurs pas à pas sont faits d’un
axe en aimant permanent appelé rotor,
entouré d’une partie fixe que l’on nomme
stator. D’habitude, ces moteurs sont dotés
d’un stator à quatre fils avec deux ou un
point commun, que l’on branche souvent
au positif de l’alimentation.
En envoyant une séquence déterminée
d’impulsions à chaque enroulement du
stator, on met le moteur en rotation. Les
moteurs pas à pas diffèrent par la taille, la
forme, la puissance, la tension d’alimentation, le prix, la précision, entre autres, mais
surtout par le nombre de pas nécessaires
pour effectuer un tour complet. C’est cette
même caractéristique qui définit l’angle de
pas, comme vous pouvez le constater dans
le tableau 1.
Si par exemple un moteur présente un
angle de pas de 1,8 degré, on en déduit
qu’il faudra 360 / 1,8 = 200 impulsions
pour obtenir une révolution complète de
l’axe.
On dispose de deux modes de fonctionnement du moteur : à pas complets ou
par demi-pas. Ces deux régimes sont
Tableau 2. Mode plein-pas
Rotation vers la
droite (horaire)
§
Pas
Enroulement A
Enroulement B
Enroulement C
Enroulement D
1
1
0
0
0
2
0
1
0
0
3
0
0
1
0
4
0
0
0
1
Pas
Enroulement A
Enroulement B
Enroulement C
Enroulement D
1
1
0
0
0
2
1
1
0
0
3
0
1
0
0
4
0
1
1
0
5
0
0
1
0
6
0
0
1
1
7
0
0
0
1
8
1
0
0
1
Rotation vers la
gauche (anti-horaire)
£
Tableau 3. Mode demi-pas
Rotation vers la
droite (horaire)
§
100
Rotation vers la
gauche (anti-horaire)
£
elektor - 7-8/2007
résumés séparément dans le tableau 2 et
le tableau 3.
Faire travailler le moteur à demi-pas augmente le précision dans la rotation de
l’axe. Dans le cas d’un moteur à angle de
1,8 degré, la commande en demi-pas correspond à 400 stades par révolution.
Un autre avantage important des pulsations à demi-pas est de conférer plus de
puissance au moteur, ce qui se traduit
généralement par un couple plus élevé.
Le circuit de pilotage du moteur est
bâti autour d’un microcontrôleur Atmel
AT89C2051 scandé à 12 MHz et d’un
réseau de transistors Darlington haute tension et fort courant du type ULN2003.
Les impulsions de commande du moteur
générées par le microcontrôleur animé
par le micrologiciel sont transmises à
l’ULN2003 via les quatre lignes de port
P1.4 à P1.7. Les enroulements du stator du
moteur sont connectés aux broches correspondantes de l’ULN2003, lequel peut
fournir jusqu’à 500 mA à chaque ligne de
sortie. Notez que c’est un moteur pas à
pas de 5 V qui est mis en service dans ce
circuit.
Vous pouvez télécharger gratuitement les
fichiers (archivés) de code source ainsi que
le micrologiciel (fichier .hex) de l’AT89 à
partir de notre site Elektor sous la référence
070228-11.zip.
Votre circuit achevé, mettez-le sous tension. Appuyez sur le bouton Full Step ou
Half Step. Poussez ensuite sur Left ou Right
et vous verrez le moteur démarrer et tourner selon le mode choisi. Vous pouvez
changer à tout moment entre pas complet
et demi-pas.
Mais ceci ne vaut évidemment que si vous
avez câblé votre moteur correctement. Le
code source de l’AT89 contient un certain
nombre d’indications pour vous aider à
modifier le câblage dans le logiciel plutôt
que d’avoir à refaire les soudures et vous
perdre dans les différentes couleurs de
fils.
En pratique, vous remarquerez qu’en mode
à pas complets le rotor atteint une vitesse
supérieure et un couple moteur plus faible,
alors qu’en demi-pas, couple et précision
sont augmentés, au détriment de la vitesse.
C’est pourquoi, quand ce genre de moteur
entraîne un disque ou un plateau, on les
commande de façon à ce qu’ils démarrent
et s’arrêtent en demi-pas, tandis que les
parcours intermédiaires ont lieu à pas complets pour atteindre la vitesse maximale.
(070228-I)
Robot-footballeur
1
Po u r t ir e r u n e
Noyau de fer
balle avec la force
n é c e s s air e, le s
jambes du robot
sont commandées
Ressort
par des électroaimants de levage.
La qualité du tir
dépend toutefois
plus de l’accélération que de la
2
force. Les électro-aimants du commerce ne conviennent pas. Ils sont
certes puissants, alimentés en général sous 12 V ou 24 V, mais beaucoup trop lents pour ce que nous
voulons faire. L’effet magnétique
dynamique (l’impulsion donc) de la
bobine sur un induit en fer, considéré en fonction du temps dépend
– toutes grandeurs statiques telles
que nombre de spires, géométrie
de bobine, perméabilité mises à
part – de la vitesse de variation du
courant dans la bobine. Le courant
variera d’autant plus vite que nous choisirons une tension plus élevée. Il nous faut
donc de la haute tension.
7-8/2007 - elektor
Nous confierons la production de la haute
tension aux composants d’un appareil
photo jetable avec flash que l’on peut
éventuellement récupérer gratuitement
dans un magasin spécialisé. L’électronique de l’appareil contient une cascade
haute tension avec condensateur d’alimentation du flash. Ces pièces conviena
b
Bobine
THY1
TIC126D
R1
BT1
1V5
2k2
Vous avez peut-être vu ces images de
Robocup et de footballeurs qui tiraient des
balles très rapides sur le terrain. Il n’est pas
absolument indispensable d’être un professionnel pour réaliser une électromécanique de ce style. Il est possible d’en faire
autant avec des moyens « maison » très
bon marché.
Circuit de
charge d’un
appareil
photo jetable
330V
Julian Straub
L1
R2
LDR
C1
120µ 400V
070316 - 11
Bobine de
lancement
nent parfaitement au footballeur. Il reste à
les récupérer.
Ouvrez prudemment l’appareil après
l’avoir déchargé. Commencez par retirer la
pile pour ne pas risquer de vous brûler les
doigts sur le condensateur. Déchargez prudemment ce dernier sur une résistance (de
l’ordre du kilohm). Sortez ensuite la platine. Comme le condensateur se chargera
par la suite en permanence, vous pouvez
court-circuiter l’interrupteur. Nous avons
r é cu p é r é n o t r e
platine sur un petit
Kodak qui charBaguette
en
geait en 16 s sous
plastique
330 V avec une
pile de 1,5 V son
condensateur de
120 µF.
070316 - 12
Pour la suite,
nous nous servirons dans la boîte
de couture: nous avons besoin de
deux petites bobines de fil (vides),
que nous transformerons en inductances avec du fil de cuivre émaillé.
Quel diamètre de fil ? En prenant
du fil très fin, vous bobinerez évidemment plus de spires sur un
plus grand nombre de couches et
fabriquerez une forte inductance.
Un fil trop fin a toutefois l’inconvénient d’offrir une plus grande
résistance au passage du courant. Il
s’agit de trouver le bon compromis.
Un conseil pour vous simplifier le
bobinage du fil fin: commencez par
coller une couche de ruban adhésif double
face sur le corps de la bobine. Vos spires
y adhéreront et le fil ne se décalera pas.
101
Faites de même entre chaque couche de
façon à éviter aux spires de se croiser. Terminez la bobine par une couche de ruban
isolant en laissant bien sûr dépasser les
deux fils de connexion du paquet (avec
un isolant supplémentaire).
Vous trouverez, avec un peu de chance, les
deux noyaux de fer dans la boîte de fin de
série d’un magasin d’électronique. À défaut,
vous êtes condamné à les fabriquer. Prenez de l’acier rond (ni acier « VA » ni maté-
riau non ferreux) chez un quincaillier ou
un mécanicien. Vos ronds d’acier doivent
pouvoir coulisser sans trop de jeu dans les
bobines. Percez un trou à une extrémité de
chaque noyau et fixez-y une petite rondelle
qui empêche un léger ressort de pression
de sortir. La fonction du ressort est de rappeler rapidement la jambe après chaque tir
(figure 1a) à sa position initiale (figure 1b).
Enfilez les noyaux dans les bobines et collez
des cylindres de plastique à leurs extrémi-
tés libres, celles qui seront en contact avec
la balle.
La commande est très simple, comme le
montre la figure 2: un thyristor TIC126D
est inséré comme déclencheur final entre
la platine haute tension et la bobine. Le
thyristor est amorcé optiquement par l’intermédiaire d’une LDR qui assure la séparation galvanique entre la haute tension et
l’électronique de commande.
(070316-I)
zBot : étage de puissance 10 A
niveau sont nécessaires.
Le schéma de l’étage
de puissance en
H montre
quel-
ques sont très importantes parce que la
façon simpliste, c’est-à-dire la commande
directe, de piloter les quatre MOSFET présente un inconvénient rédhibitoire.
En cas de plantage logiciel, il pourrait arriver
qu’un ou plusieurs des MOSFET se trouve
commandé de façon incorrecte, par exemple T4 et T7 simultanément. Dans ce cas, le
courant qui traverse les transistors n’est limité
par rien d’autre que la résistance interne des
MOSFET, à peu près 10 mΩ, autant dire rien.
Un erreur de ce genre détruirait les transistors à coup sûr. Le verrouillage logique mis
en œuvre ici interdit ce genre de situation
illégale et désastreuse.
La commande de moteur à courant continu
utilise trois signaux : DIR, PWM et STOP.
ques
inverseurs, des portes NON-ET et deux
tampons à trois états. Ces fonctions logi-
pour
moteur CC
U+
C11
102
IC7
IC8
7
7
R18
RFP30P06
T4
STOP
1
2
IC7.A
3
&
RFP30P06
D2
D1
T5
T3
R15
10k
IC7 = 74HCT00
IC8 = 74HCT125
R17
10k
14
T6
1N4001
R18
10k
1N4001
BC337
IC7.D
11
&
12
13
BC337
M
BUK101
IC8
EN
1
PWR
DIR
9
10
4
5
T7
D5
D6
T8
BUK101
3
IC8
6
R14
1N4001
1N4001
5
EN
R21
10k
2
10k
Si vous regardez le châssis du véhicule
zBOT1, vous trouvez deux organes qui réclament une commande intelligente : la servo
de direction et le moteur à courant continu.
Le montage dit pont en H est le circuit usuel
de la commande de vitesse de propulsion et
de direction. Le moteur à courant continu
d’une voiture Tamiya est suffisamment puissant pour propulser le zBot jusqu’à plus de
30 km/h. Le moteur consomme alors plus
de 10 A, c’est pourquoi on choisit des
MOSFET de puissance à fort courant pour
l’étage de sortie. Le choix est large dans une
grande variété de types.
Le MOSFET dont nous avons besoin doit
passer le courant maximal du moteur et
–ce qui est important– il doit commuter
avec des tensions de grille d’environ 5 V.
Dans ce cas, le microcontrôleur commande la puissance directement du côté
masse(low side). Du côté alimentation
positive (high side) des adaptateurs de
14
10k
Jens Altenburg
4
IC7.C
&
8
IC7.B
&
6
070172 - 11
elektor - 7-8/2007
Le signal DIR commande le sens de rotation du moteur, PWM règle la vitesse et
STOP freine le moteur.
Le module logiciel de commande de
moteur CC s’appelle dcm.c.
[1] Le document complet intitulé
Zbot – the Robot Experimental Platform
(en anglais)
est disponible au téléchargement gratuit sur le site elektor. Le fichier s’appelle
070172-11.zip.
(070172-I)
Comment commander des moteurs
CC de puissance
1
2
COMMANDE
2
+VS
OUT 1
COMMANDE
1
OUT 2
OUT 3
OUT 4
100n
2
+VSS
9
+U M
3
4
13
14
Vref
A
B
100n
RE2
1
RE1
2
3
4
IN 1
5
12
IN 2
7
10
IN 3
EN A
6
11
EN B
IN 4
M1
M
1
8
15
SENSE A
SENSE B
070317 - 11
RSA
RSB
070317 - 12
B. Broussas
La commande des « petits » moteurs pouvant être utilisés en robotique ne pose
généralement pas trop de problèmes. Les
moteurs de servos disposent en effet de
leur propre électronique de commande,
les moteurs pas à pas peuvent être facilement commandés par des transistors de
puissance classiques ou par des ULN2803
comme cela vous a été présenté par
ailleurs dans ce numéro car ils consomment rarement plus que quelques centaines de mA. Quant aux petits moteurs à
courant continu, de simples transistors
suffisent, à moins que vous ne préfériez
par exemple le LB1630 de Sanyo, limité
hélas à un courant de 400 mA et une tension de 6 volts.
Par contre, dès que la consommation du
moteur atteint ou dépasse l’ampère ou
bien encore que sa tension d’alimentation
dépasse une vingtaine de volts, la situation
se complique et ce d’autant que vous êtes
nombreux à ne pas trop aimer l’électronique de puissance. Cet article se propose
donc de vous donner quelques idées ou
7-8/2007 - elektor
niers comme indique figure 1, vous disposez d’une commande de sens de fonctionnement selon ceux des relais qui sont
collés et décollés, ainsi que d’une commande d’arrêt faisant office de frein électrique très efficace lorsque les deux relais se
trouvent dans la même position. Dans ce
pistes de recherche pour la commande de
tels moteurs.
La première méthode, pour commander
un moteur à courant continu de puissance, n’est autre que le bon vieux relais
ou, plus exactement, la paire de relais.
Sous réserve en effet de câbler ces der3
+U L
+U M
M2
C2
D2
M
100n
IN2(4)
IN2(4)
+VSS
IN1(3)
+VS
1
/2 L298
IN1(3)
OUT2(4)
ENA(B)
C1
ENA(B)
GND
100n
OUT1(3)
D1, D2 = BY252; 1N5402
M1
D1
M
070317 - 13
103
4
+U L
sons de niveaux logiques des entrées de
commande et d’inhibition du L298, on
dispose même de deux possibilités d’arrêt
du moteur comme indiqué dans le tableau
ci-dessous : le mode « roue libre » ou non
freiné, ou le mode freiné comme vu précédemment avec le schéma à relais.
+U M
D3
C2
D4
M1
100n
M
D1
D2
D1 ... D2 =
BY252; 1N5402
OUT
1(3)
OUT
2(4)
+VSS
+VS
IN1(3)
IN1(3)
IN2(4)
1
/2 L298
ENA(B)
ENA(B)
Si le sens de rotation du moteur doit pouvoir être modifié, il faut alors faire appel à
un montage en pont ou en H comme indiqué figure 4. Notez que, avec un L298,
il est possible de commander ainsi deux
moteurs puisque le circuit contient quatre
amplificateurs. Un seul L298 suffit donc
généralement pour les moteurs de propulsion droite et gauche d’un robot mobile.
C1
100n
GND
IN2(4)
070317 - 14
Tableau 1.
EnA(B)
In1(3)
In2(4)
M1
M2
H
H
H
Frein
Rotation
H
L
L
Rotation
Frein
L
X
X
Arrêt en roue
libre
Arrêt en roue
libre
5
D1
R1
10k
1N4148
1
/4 L298
C1
In x
Out x
1n5
070317 - 15
6
+U L
+U M
C2
C1
100n
4
+VSS
IN1
100n
9
+VS
L298
5
2
1
OUT1
6
IN2
7
10
EN
3
2
13
3
11
12
14
4
GND
8
15
1
R1
Rs
070317 - 16
104
OUT2
cas en effet, le moteur se retrouve courtcircuité sur lui même et il est donc freiné
par sa propre force contre électromotrice
(fcem). Des relais capables de couper 10
ampères tout en ne nécessitant que 5 volts
et quelques dizaines de mA au niveau de
leur bobine sont aujourd’hui monnaie courant (voyez par exemple les relais Finder)
et peuvent donc être utilisés de la sorte
sans difficulté.
Si cette solution électromécanique vous
déplaît, nous vous conseillons de recourir au circuit de puissance en pont dont
un des dignes représentants est le L298
de ST Microelectronics. Comme le montre son synoptique interne visible figure 2,
ce circuit renferme quatre amplificateurs
de puissance en pont précédés d’une circuiterie logique de commande. Conçu à
l’origine pour la commande des « gros »
moteurs pas à pas, ce circuit peut recevoir
une multitude d’autres applications dont
voici quelques exemples.
En raison de la relative indépendance des
amplificateurs qu’il contient, il peut être
utilisé pour commander quatre moteurs
sous réserve de se satisfaire d’un seul sens
de rotation. Il est alors possible de ramener une des connexions de ces moteurs à
la masse ou à l’alimentation comme indiqué figure 3. En jouant sur les combinai-
Bien que le circuit dispose d’une protection
contre les échauffements excessifs, sachez
que vous pouvez accroître sa sécurité de
fonctionnement en surveillant le courant
consommé par les moteurs. Il suffit pour
cela de placer une résistance de très faible valeur entre les entrées SENSE A ou
SENSE B et la masse. Cette résistance sera
alors traversée par l’intégralité du courant
consommé par le moteur connecté aux
bornes de l’amplificateur correspondant
et, par simple application de la loi d’Ohm
et mesure de la tension à ses bornes, il sera
ainsi possible de surveiller ce courant.
Si vous ne souhaitez pas mettre en place
cette surveillance, il est alors conseillé de
protéger le circuit des éventuels courts-circuits de ses sorties à la masse, qui sont
les plus susceptibles de se produire dans
un robot (une cosse du moteur qui touche
le châssis métallique par exemple !). Dans
ce cas, le schéma de la figure 5 est préconisé par ST Microelectronics. Ce circuit se
déclenche en 10 µs et se réarme tout seul
lorsque le court-circuit disparaît.
Le L298 est capable de supporter une tension d’alimentation maximum de 46 volts
et chacun de ses amplificateurs de puissance peut fournir un courant de 2 ampères ce qui est déjà une valeur plus que
confortable, même pour un robot mobile
relativement lourd. Si cela ne vous suffit
pas, sachez qu’il est possible de monter les
amplificateurs de puissance en parallèle,
sous réserve de ne pas le faire « n’importe
comment ». On dispose alors d’un courant de sortie maximum de 3,5 ampères.
Pour cela, il faut respecter le schéma de la
figure 6 à l’exclusion de tout autre ; c’est
à dire encore que les amplificateurs 1 et
4 d’une part et 2 et 3 d’autre part doivent
être mis en parallèle.
Remarquez, avant de conclure cet article, que les diodes de protection ne sont
pas intégrées dans le L298. Il est donc
indispensable de les prévoir en externe
comme nous l’avons fait sur chacune de
elektor - 7-8/2007
nos figures, sinon c’est la destruction
assurée du L298 dès les premiers tours
de roues du robot !
Ce circuit n’est bien sûr pas le seul qui soit
utilisable pour commander des moteurs
à courant continu de puissance pour des
applications robotiques. Des boîtiers plus
récents et/ou plus performants existent en
effet aujourd’hui. Le L298 présente cependant l’avantage d’être bien distribué, peu
coûteux et de pouvoir répondre à une
large plage de besoins ce qui justifie largement à nos yeux cette présentation de
ces divers modes d’utilisation. Et si vous
êtes un tant soit peu curieux, vous pour-
rez en outre découvrir sur le site de ST
Microelectronics (www.st.com) de nombreuses notes d’applications qui lui sont
consacrées et qui seront autant de source
d’idées complémentaires pour le mettre
en œuvre.
(070317-I)
Relais PIC clignotant
Herbert Musser
+12V
1k
R6
1k
R2
1
3
6
7
R1
C1
100n
D1
GP4
GP3
IC1
GP1
GP5
PIC12F675
GP0
GP2
8
R4
T2
100k
1k
R3
1k
La réalisation de ce relais électronique clignotant a été déclenchée par les demandes
de motards. Les vibrations de certains types
de motos conduisent à une forte usure des
lampes des clignotants. Les modules clignotants à LED disponibles entre-temps
pour la plupart des motos résolvent ce
problème. Un autre vient toutefois prendre sa place : les relais clignotants ordinaires dépendent de la charge. Comme celle
des modules LED est faible, ils clignotent
beaucoup trop rapidement.
Les premières tentatives de résoudre le
problème par des circuits électroniques
clignotants ont été insatisfaisantes : la
première impulsion de clignotement dure
en général deux fois plus longtemps que
les suivantes (la faute en est à la charge
initiale du condensateur de l’élément de
temporisation).
Le mini circuit PIC de commande d’un FET
présenté ici constitue une meilleure solution. Cette exécution du circuit permet de
régler élégamment un autre problème :
il est bien connu que certains motards
oublient le clignotant après l’avoir mis. Si
le cavalier représenté dans le schéma est
posé, le logiciel veillera à ce que le clignotant s’éteigne de lui-même après 120
impulsions. Il clignotera bien entendu de
nouveau lorsqu’il sera actionné.
Le circuit se contente d’un nombre très
réduit de composants. Le circuit, mis à
4
2
IRF4905
R5
T1
1k
BC547
5
JP1
D2
1N4001
4V7
070090 - 11
l’épreuve et déjà réalisé à plusieurs exemplaire, ne mesure que 20 sur 30 mm environ et peut être placé dans le boîtier du
clignotant.
Le signal de commutation à la sortie du
PIC commande un robuste transistor de
puissance HEXFET (T2) par l’entremise du
transistor d’attaque (T1). Le IRF4905 possède une résistance de commutation de
20 mΩ, une valeur incroyablement faible,
et peut commuter jusqu’à 74 A. Pour que
le microcontrôleur survive dans l’environnement peu convivial du réseau de bord,
sa tension d’alimentation (provenant de la
commande des clignotants) est limitée à
4,7 V par D1 et découplée par C1.
Des versions du micrologiciel sont disponibles pour les contrôleurs PIC 12F629, 12F683
et 12F675. Il peut bien entendu être aussi
téléchargé à partir du site Web ELEKTOR.
Pour moins de 10 euros en matériel, on
peut réaliser un relais électronique clignotant fiable, insensible aux vibrations et surtout indépendant de la charge. Il convient
toutefois de tenir compte des règlements
en vigueur avant de lâcher ces motos améliorées sur les routes.
(070090-I)
Contrôleur de moteur pas à pas
à PIC12C508
C.Tavernier
Lorsque l’on n’utilise pas un moteur pas à
7-8/2007 - elektor
pas pour assurer le positionnement précis
d’un élément de robot, on peut l’employer
en tant que moteur de traction, en lieu et
place des classiques servos modifiés présentés par ailleurs dans ce même numéro.
Dans ces conditions, il n’est plus nécessaire de savoir « compter les pas » que doit
accomplir le moteur puisque l’on souhaite
seulement le faire tourner de manière
continue dans un sens ou dans l’autre.
105
Toutefois, pour l’utilisation d’un
moteur pas à pas en tant que moteur
de traction, ces solutions sont loin
d’être satisfaisantes. En effet, elles
imposent toutes de générer des impulsions de manière permanente tant
que l’on veut faire tourner le moteur,
ce qui nécessite soit un oscillateur
programmable supplémentaire, soit
la mobilisation d’une ressource du
microcontrôleur de commande du
robot.
Aussi avons nous décidé de vous proposer une autre approche, avec ce
contrôleur de moteur pas à pas spécifiquement prévu pour faire tourner le
moteur dans un sens ou dans l’autre,
sous le contrôle d’un simple niveau
logique. Et comme les moteurs utilisés pour la propulsion d’un robot
vont généralement par paire, nous
allons même vous proposer un double contrôleur en détournant de sa
fonction première un circuit intégré
très répandu et peu coûteux.
L’utilisation d’un moteur pas à pas
en tant que moteur de propulsion
n’ayant que faire de la précision du
positionnent et donc de la précision
des pas, de simples modèles unipolaires conviennent très bien. Notre
montage est donc prévu pour des
moteurs de ce type.
IC2
+U
7805
C2
C1
C3
C4
47µ
16V
10n
220n
470µ
25V
IC1
R1
1
GP0
5
G
D
4
GP1
7
GP0
6
GP1
GP2/T0CK
GP3/MCLR
GP4/OSC2
GP5/OSC1
8
3
GP4
2
GP5
12C508
070302 - 11
2
+U
D8
BD679
R1
GP0
T4
1k
D1
D2
R2
GP1
1k
BD679
D7
T3
L2
D1...D8 = 1N4004
M1
L1
+U M
M
L3
L4
D6
BD679
R3
GP4
Il permet de commander le moteur
GP5
au moyen de deux entrées logiques
compatibles TTL ou CMOS. Lorsque
ces deux entrées, baptisées G et D,
sont au niveau logique haut ou en l’air
(elles ont leur propre résistance de
tirage) le moteur reste à l’arrêt mais en
mode freiné puisque c’est un moteur
pas à pas. Lorsque l’entrée G est mise au
niveau logique bas, le moteur tourne dans
un sens (arbitrairement vers la gauche d’où
l’appellation G) alors que si c’est l’entrée D
qui est mise au niveau bas, il tourne dans
l’autre sens. Si les deux entrées sont mises
à la masse simultanément, l’entrée D est
prioritaire et le moteur tourne donc dans
le sens qui lui correspond.
La vitesse de rotation du moteur est fixe
mais, comme nous vous fournissons le listing source du logiciel utilisé pour cette
application, il vous est très facile de la
106
modifier si elle ne vous convient pas,
voire même d’ajouter une possibilité
de réglage externe si nécessaire.
Le schéma de la partie « intelligente »
de notre contrôleur est présenté
figure 1 et, comme vous pouvez le
constater ; elle fait appel à un microcontrôleur PIC12C508 de Microchip.
Il est utilisé ici en mode horloge et
circuiterie de reset internes. De ce
fait, il ne nécessite aucun composant
externe pour sa mise en œuvre et
toutes ses lignes de port sont donc
disponibles.
Les ports parallèles GP2 et GP3 sont
utilisés en entrées et, comme GP2
ne dispose pas d’une résistance de
tirage au niveau haut en interne,
celle-ci est réalisée au moyen de R1.
Les ports parallèles GP0, GP1, GP4
et GP5 quant à eux sont utilisés en
sorties pour générer les impulsions à
destination des bobinages du moteur.
Ces dernières peuvent être amplifiées
par deux types d’étages de puissance,
dont nous verrons le schéma dans un
instant, selon le modèle et le nombre
de moteurs à commander.
1
10k
Plusieurs solutions sont alors à
notre disposition pour commander
le moteur dont certaines vous sont
d’ailleurs présentées dans ce même
numéro : utilisation d’un circuit
intégré spécialisé dans le contrôle
des moteurs pas à pas, exploitation
d’un ou plusieurs ports parallèles de
microcontrôleurs convenablement
programmés ou encore réalisation
d’un contrôleur à base de circuits
logiques conventionnels.
T2
1k
D3
D4
R4
1k
BD679
T1
D5
070302 - 12
Programmation de la durée des pas
par modification d’une constante
utilisée dans le programme.
Constante binaire
Durée d’un pas
10010010
1 ms
10010011
2 ms
10010100
4 ms
10010101
8 ms
10010110
16 ms
10010111
32 ms
Le 12C508 devant être alimenté sous
5 volts, cette tension est produite à
partir de la tension d’alimentation
du moteur au moyen d’un régulateur
intégré trois pattes classique IC2.
Si le contrôleur n’est destiné qu’à un
seul moteur, ou si le moteur à commander consomme plus de 500 mA
par bobine, l’étage de puissance dont
le schéma vous est présenté figure 2
peut être utilisé. Il fait appel à des
transistors bipolaires classiques qui,
compte tenu de leurs caractéristiques,
peuvent commuter des courants de
3 ampères. Les diodes D1 à D8 écrêtent les surtensions parasites générées
par la commutation brutale du courant dans les bobinages du moteur et
protègent les transistors.
Par contre, si le moteur utilisé
consomme moins de 500 mA et à
plus forte raison si vous devez commander deux moteurs de ce type, une
solution élégante et astucieuse existe,
comme indiqué figure 3. Elle consiste
à faire appel à un classique ULN2803,
habituellement utilisé pour de la commande de relais, mais qui renferme 8 Darlingtons de moyenne puissance avec leurs
diodes de protection. Ce circuit peut donc
parfaitement commander n’importe quel
moteur pas à pas unipolaire tant que la
tension nécessaire ne dépasse pas 50 volts
et le courant par bobine 500 mA.
De plus, comme l’ULN2803 contient
8 étages identiques, on peut le faire précéder par deux contrôleurs analogues à
celui de la figure 1 et commander ainsi
elektor - 7-8/2007
deux moteurs de propulsion
de robot : un à gauche et un
à droite repérés MA et MB sur
cette figure.
La réalisation de l’une ou l’autre
des versions ne présente aucune
difficulté. Le PIC 12C508 doit
être programmé avec le fichier
que vous trouverez sous forme
objet, mais également sous
forme source au cas où vous
souhaiteriez le modifier, sur
le site Internet d’Elektor ainsi
que sur celui de l’auteur (www.
tavernier-c.com).
3
Comme nous vous fournissons
en téléchargement le listing
source complet du logiciel programmé dans le 12C508, il vous
est possible de le modifier afin
de l’adapter à vos besoins. Si
vous n’êtes pas familier de l’assembleur des microcontrôleurs
PIC, voici les indications nécessaires pour la modification la
plus importante que vous souhaiterez peut-être réaliser : celle
de la vitesse de génération des
impulsions de commande des
moteurs et donc, de leur vitesse
de rotation (voire le tableau).
Il suffit pour cela de modifier la
constante binaire qui se trouve
placée sur la ligne :
+U
L2
10
1
GP0A
2
GP1A
3
GP4A
4
GP5A
5
GP0B
6
GP1B
7
GP4B
8
GP5B
Si vous réaliser l’amplificateur de puissance à transistors
notez que T1 à T4 n’ont pas
besoin de radiateur tant que la
consommation du moteur ne
dépasse pas l’ampère. Dans
le cas contraire, vissez-les sur
une petite plaquette de dural
de quelques cm2. Pour des raisons de simplification de montage mécanique, elle peut être commune aux quatre
transistors mais il faut dans ce cas utiliser
les accessoires d’isolement classiques que
sont le mica et les rondelles à épaulement
car le collecteur des transistors est relié à
I1
IC1
I3
I4
I6
O3
I8
O8
VEE
+U M
15
13
O6
O7
L4
16
14
O5
I7
L3
17
O2
O4
ULN2803
M
18
O1
I2
I5
MA
L1
12
L6
11
MB
9
L5
M
L7
L8
MOVLW B’10010101’
se trouvant juste au dessus de
la ligne contenant OPTION sur
le listing source. Avec la valeur
originale, la durée d’un pas est de 8 ms,
mais le tableau ci-dessus indique quelle
constante utiliser en fonction de la durée
des pas que vous pouvez souhaiter.
070302 - 13
la partie métallique de leur boîtier.
Si vous réalisez la version à base
d’ULN2803, aucune précaution particulière n’est à prendre si ce n’est de ne pas
dépasser les possibilités en courant maximum du circuit (500 mA rappelons-le).
(070302-I)
Commande bidirectionnelle
de moteur 12 V
R1
R3
T2
R9
1k
230V
Le circuit comporte aussi un
transformateur secteur 18 V (1,5 A), 4 diodes (D1 à D4) pour un redresseur en pont
et un condensateur électrolytique de
charge (C1) fournissant une tension d’environ 24 V. La commande du moteur est
7-8/2007 - elektor
D2
C2
D4
D3
1µ
4x 1N5401
40V
R7
BC327
2k2
D5
T5
1W
R5
BC327
T6
D6
2k2
150 Ω
T3
T4
BAT42
R4
BAT42
T1, T2 = BDW93C; BD901; BD679
T3, T4 = BDW94C; BD902; BD680
effectuée en le plaçant dans un pont en H
classique formé de T1/T3 et T2/T4. Le courant du pont est limité par T5 et T6 et par
les « détecteurs de courant » R7 et R8. Ces
résistances permettent de modifier le cou-
1W
R6
150 Ω
R2
P1.B
R8
150 Ω
1000µ
P1.A
0Ω47
C1
0Ω47
18V
1A5
150 Ω
Cette commande est conçue
pour les moteurs à courant
continu consommant jusqu’à
1 A. Le circuit, d’une grande
simplicité, ne comporte que
des composants ordinaires. La
tension de sortie entre 0 et 14 V
permet de modifier la vitesse du
moteur et l’inversion de polarité
cause celle du sens de rotation.
Le circuit se prête donc aussi
à la régulation de la marche
de trains miniatures à courant
continu et à la commande de
petits outils électriques.
T1
150 Ω
D1
150 Ω
TR1
Stefan Brandstetter
070104 - 11
rant maximum du moteur, normalement de
1 A (IOUT = 0,6 V/R7 ou R8). L’alimentation
(transfo/redresseur) doit alors pouvoir fournir un courant plus élevé et les transistors
en pont sont à redimensionner en consé-
107
quence. Un potentiomètre linéaire double
(P1) sert d’organe de réglage. Il forme un
double diviseur de tension ajustable avec
R1 et R2 ou R3 et R4. Les deux moitiés
du potentiomètre sont raccordées en sens
opposé. La tension d’un curseur est alors
maximale et celle de l’autre curseur mini-
male quand le potentiomètre se trouve en
position extrême. Les curseurs des 2 moitiés du potentiomètre en position médiane
se trouvent à une tension à peu près égale.
La tension appliquée au moteur est donc
nulle (position zéro). Le moteur tournera
plus ou moins vite dans un sens ou dans
l’autre selon la position angulaire du potentiomètre. La chute de tension aux bornes
de D5/D6 équilibre UBE des transistors en
pont. Cela permet de faire démarrer le
moteur sans à-coups à partir de la position zéro.
(070104-I)
Commande de moteurs pas à pas
Sans circuit
spécialisé
B. Broussas
Très utilisé en robotique où il est un
concurrent direct des moteurs à courant continu et autres servos de radiocommande, le moteur pas à pas souffre
cependant de la relative difficulté que l’on
rencontre pour le commander. En effet,
contrairement à ses homologues à courant continu qui tournent dès qu’ils sont
alimentés, le moteur pas à pas demande
une succession d’impulsions appliquées à
ses diverses bobines pour le faire tourner.
En contrepartie, et sous réserve que l’on ne
dépasse pas ses possibilités mécaniques,
le nombre d’impulsions appliquées à ses
bobines correspond au nombre de pas
élémentaires accomplis par le moteur. On
dispose donc ainsi d’une information de
positionnement quasi automatique, impossible à obtenir avec un moteur à courant
continu.
Dans nombre de robots qu’il nous a été
donné d’observer, la commande du ou des
moteurs pas à pas était confiée à un circuit spécialisé, au premier rang desquels se
trouve le L293 de ST Microelectronics qui,
malgré son âge, reste toujours d’actualité.
De nombreuses autres solutions existent
pourtant, telle que la commande directe
par un des ports du microcontrôleur qui
pilote le robot ou bien encore celle que
nous vous proposons de découvrir maintenant et qui se contente de ... deux circuits
logiques CMOS standards.
Comme vous le savez peut-être déjà,
il existe en fait deux types de moteurs
pas à pas : les moteurs unipolaires et les
moteurs bipolaires. Alors que les premiers se contentent de simples impulsions envoyées à leurs quatre bobines,
les seconds nécessitent une inversion de
la polarité des signaux appliqués à celles-ci. Afin de ne pas compliquer outre
mesure notre schéma, nous l’avons donc
conçu pour des moteurs unipolaires dont
108
1
+5V
IC3
+5V
78L05
50mA max
C2
C1
C3
C4
10µ
16V
10n
220n
1000µ
25V
D8
SENS
1
2
BD679
IC1.A
=1
R1
4
3
5
6
IC1.C
=1
6
4
3
5
R
J
C
K
IC2.A
T4
2k2
1
D1
2
D2
R2
S
2k2
7
BD679
+5V
D7
T3
L2
PAS
IC1 = 4070
IC2 = 4027
14
16
IC1
IC2
7
8
M1
L1
+U MOTEUR
M
L3
D1...D8 = 1N4004
L4
D6
BD679
R3
9
10
9
12
13
8
IC1.B
=1
11
=1
IC1.D
10
J
13
11
R
C
K
IC2.B
15
14
S
12
T2
2k2
D3
D4
R4
2k2
BD679
T1
D5
070299 - 11
le tableau ci-dessous rappelle le « chronogramme » de fonctionnement.
La lecture des colonnes de ce tableau de 1
vers 4 correspond à la rotation du moteur
dans un sens, alors que le parcours de 4
vers 1 inverse le sens de rotation. Chaque
colonne de ce tableau correspond à un pas
mécanique du moteur ; pas qui varie de
1,8° à 7,5° selon le type de moteur choisi.
Ceci étant précisé, le schéma de notre
contrôleur sans circuit intégré spécialisé,
présenté figure 1, est très simple puisque
son « intelligence » se limite en fait à deux
circuits logiques IC1 et IC2, en l’occurrence de simples portes OU exclusif et
deux bascules J-K, tandis que l’étage de
puissance est confié à de vulgaires transistors bipolaires passe-partout.
Les impulsions destinées à faire avancer
le moteur doivent être appliquées à l’entrée PAS. Chaque impulsion fait avancer le moteur d’un pas dans un sens ou
dans l’autre ; sens qui est déterminé bien
entendu par l’état de l’entrée SENS. Cette
dernière agit sur les portes OU exclusif
IC1a et IC1d qui sont utilisées ici en inverseurs programmables.
Rappelons en effet qu’une porte OU exclusif peut être considérée, vis à vis d’une de
ses entrées, comme une porte qui inverse
ou non le signal qui la traverse en fonction
de l’état de son autre entrée. Cela se voit
elektor - 7-8/2007
très bien à la lecture de la table de vérité
de la figure 2. Si l’entrée A est à « 0 », le
signal appliqué sur l’entrée B se retrouve
identique à lui-même en sortie (0 donne
0 et 1 donne 1). Par contre, si l’entrée A
est à « 1 », le signal appliqué sur l’entrée
B se retrouve inversé en sortie (0 donne 1
et 1 donne 0). Nous n’avons rien écrit là
de bien nouveau mais nous avons tenu à
préciser cette interprétation de la table de
vérité du OU exclusif utilisée comme un
inverseur programmable car nous avons
remarqué que vous étiez nombreux à ne
pas la connaître (ou à l’avoir oubliée !).
Ceci étant, la partie réellement active du
circuit est constituée par les deux bascules
J-K IC2A et IC2B. La figure 2 rappelle la
table de vérité de ces bascules ; table de
vérité qui se simplifie ici compte tenu du
fait que J et K sont toujours toutes deux
au même niveau. Lorsque ces entrées sont
à « 1 », les bascules changent d’état pour
chaque impulsion d’horloge, c’est à dire
en fait pour chaque impulsion appliquée
à l’entrée PAS. Dans le cas contraire, c’est
à dire lorsque J et K sont toutes deux à
« 0 », les sorties Q et Q conservent leur
état précédent.
Si vous doutez encore que cela génère
bien les chronogrammes correspondant au
tableau ci-dessus, armez-vous d’un papier
quadrillé 5 x 5, d’un crayon, de patience et
dessinez les chronogrammes des signaux
fournis, lorsque SENS est à un niveau que
vous choisirez arbitrairement.
2
J
K
R
J
Q
C
CLK
K
A
Q
S
B
S
EXOR
JK FLIP-FLOP
CLK
=1
J
K
Qn
Qn + 1
A
B
S
1
x
0
1
0
0
0
X
0
1
1
0
1
1
0
X
0
0
1
0
1
1
1
0
X
1
1
0
1
1
Qo
Qo
X
X
X
Qn
070299 - 12
Tableau
Numéro de pas
1
2
3
4
Bobine 1
1
1
0
0
Bobine 2
0
0
1
1
Bobine 3
1
0
0
1
Bobine 4
0
1
1
0
L’étage de puissance, quant à lui, est réalisé au moyen de transistors bipolaires,
protégés des surtensions générées par la
commutation du courant dans les bobines
des moteurs grâce aux diodes D1 à D8.
Avec les transistors utilisés, il est possible
de commuter des courants pouvant atteindre 3 ampères, ce qui laisse beaucoup de
souplesse quant au choix du moteur pas
à pas.
La partie logique du montage est alimentée sous une tension fixe de 5 volts, stabilisée par IC3, ce qui rend les entrées PAS et
SENS compatibles TTL. On peut également
utiliser cette tension pour alimenter le circuit qui précède le contrôleur sous réserve
de ne pas dépasser une cinquantaine de
mA avec le régulateur choisi.
Si votre moteur est alimenté sous 6 volts,
il est conseillé de remplacer IC3 par un
LM2936Z5 par exemple, qui est un régulateur 5 volts à faible chute de tension. En
effet, pour pouvoir fonctionner correctement, le 78L05 prévu d’origine pour IC3
demande près de 2 volts entre entrée et
sortie, ce qui est évidemment impossible
à obtenir avec une tension d’alimentation
du moteur de 6 volts.
Toujours à propos de la tension d’alimentation du moteur, notez qu’elle peut
atteindre 24 volts si nécessaire. Tant que
le courant consommé par le moteur ne
dépasse pas l’ampère, les transistors n’ont
pas besoin de radiateur alors que celui-ci
devient conseillé au delà. Sa surface peut
toutefois se limiter à quelques cm2 puisque
les transistors fonctionnent ici en commutation et dissipent donc une puissance relativement faible.
(070299-I)
Fiche de caractéristiques du L293
www.st.com/stonline/books/pdf/
docs/1328.pdf
Contrôleur de moteur CC MLI de 3 A
Rajkumar Sharma
Ce circuit est conçu pour des applications de
commande de déplacement, un besoin classique en robotique ! Ce contrôleur de moteur
CC MLI (Modulation en Largeur d’Impulsion
= PWM pour Pulse-Width Modulation en anglais)
tér
Carac
istique
s
CC
à 3 0 V
teu r 12
li menta
n sortie
ion d’a
nti nu e
• Ten s
d e co
Hz
A
3
’à
à 35,1 k
it ju squ
e 1,16
rn
d
u
le
o
F
b
•
g la
mètre
PWM ré
tentio
u e n ce
pa r po
u
n
• Fréq
ti
n
e n co
g la ble
0%
0 à 10
• M LI ré
r
ue de
utateu
q
li
c
y
co m m
port c
n pa r
o
ti
• Ra p
c
e
ir
e de d
u itée
ma nd
rt-circ
• Co m
e co u
rg
a
h
ec
ction d
• Prote
nts
iq ue
m posa
therm
d e co
etu re
e
c
rm
a
e
F
rf
•
n su
tage e
e mon
leu r
• Pa s d
contrô
e m icro
d
e
c
n
• Abse
mo
tion d u
7-8/2007 - elektor
à prix abordable peut pilon’importe quel moteur PMDC
(Permanent Magnet
Direct Current = à
courant continu et
aimants permanents)
entre 12 et 30 V et
3 A maximum. La
direction du
moteur
est
pilotée
par un
commutateur à glissière
et la vitesse
par un
ter
potentiomètre
ordinaire.
Le schéma du circuit de la figure 1
présente des circuits
intégrés de t ype
LMD18200
et
SG3525
au
coeur
du montage.
Le
SG3525 est un
circuit de commande
de modulation de largeur d’impulsions (MLI), le
LMD18200 étant lui un pont en
H (H-bridge) permettant au moteur
de fonctionner dans les deux sens de
rotation.
Le circuit SG3525 supporte la commande
109
GND
B
4
2k7
7
SD
R5
R2
S1
3
330
1k5
18k
10
12
GND
VS
6
18k
VREF
VCC
15
16
de fréquence et le pilosateurs C6 à C10 sertage du rapport cyclique.
vent à supprimer les
VCC2
VCC2
VCC1
La fréquence de l’oscillaparasites sur les deux
R1
10k
teur est déterminée par
voies d’alimentation.
C1
R4
les composants pris aux
Le régulateur de ten100n
13
3
sion L7805ACV pour
broches 5 et 6. L’ajusSYNC
VC
R3
GND
6
4
C2
2k2
OSC OUT
RT
table P2 sert à régler la
l’alimentation de la par9
1
T
BS1
IC1
11
2
5
fréquence entre 1,16 et
tie de logique accepte
K1
100n
OUT A
IN+
PWM
14
1
IC2 OUT1 2
INOUT B
toute tension conti35 kHz. Bien qu’il soit
10
9
CMPEN
OUT2
7
3
habituellement recomnue non régulée comLMD18200
C4
P1
P2
SG3525AN
DISC
DIR
5
8
8
11
SS
CS
BS2
CT
mandé de rester auprise entre 7,5 et 18 V
R6
100n
appliquée au bornier
dessus de 20 kHz pour
100k
10k
C3
éviter d’entendre le bruit
K2. L’autre connecteur
18n
du moteur, cela n’est
d’alimentation, K3, est
GND
GND
pas toujours possible en
destiné à l’alimentation
IC3
VCC1
VCC2
fonction du moteur utidu moteur. La capacité
L7805ACV VCC1
lisé. Le potentiomètre
de l’alimentation du
R2
1
2
R7
R5
P2 détermine le rapport
moteur dépend bien
K3
K2
C8
C5
C6
C9
C7
S1
cyclique, qui peut être
sûr du moteur utilisé.
0
0
D2
D1
100u 63V 100n
100n
100u 63V 100n
réglé de 0 à 100 % pour
S’il est prévu 12 V, alors
commander la vitesse
R7 devrait être de 1 kΩ,
060339 - 11
du moteur, et le condenet si on veut travailler
GND
GND
GND
1
sateur C5 sert au redéà 24 V, elle aura une
marrage en douceur. Les
valeur de 1,5 kΩ. Si
transistors internes sont
vous voulez utiliser un
utilisés pour obtenir
moteur lourd consomun rapport cyclique de
mant plus de 1 A environ, il peut être utile
100 %. Les transistors
IC2
C2
C4
K1
d’attaque internes utilide renforcer les pistes
sés sont mis à la masse
de cuivre venant de et
K3
1
11 R7C7
C1
allant vers K2/K3 en les
par les broches 11 et 14
R4
pour alterner les cycles
dotant de vrais fils de
P2
d’oscillateur. La brocuivre de 1,5 mm 2 de
C6
IC1 R6
D1
D2
section.
che 16 du circuit intégré
R1
Si vous désirez interfaest la borne REF V, qui
C9 C5
K2
P1
cer le circuit avec une
produit 5 V en sortie. La
résistance R1 fournit la
source fournissant de
R3
tension d’alimentation
0 à 5 V, enlevez simC8
IC3
à un transistor interne à
plement le potentioC3
collecteur ouvert pour
mètre P1 et appliquez
une sortie MLI à niveau
la tension analogique à
TTL.
la broche 2 du circuit
2
Quant au circuit
intégré.
LMD18200, le commutateur à glissière
masse. L’entrée Brake (frein, broche 4) est
La figure 2 présente la platine de comS1 (sur l’embase K1) pilote l’entrée de la
reliée directement à la masse. Les condenmande conçue pour le circuit, qui devrait
sateurs C2 et C4 à la sortie du moteur sont
s’adapter à de nombreuses applications à
commande de direction (broche 3) pour
changer la direction du moteur de cw
des endroits critiques dans un robot. Après
des condensateurs « d’amorce » (boots(clockwise = sens horaire) vers ccw (countout, la plupart des méthodes de déplacetrap). Les broches 2 et 10 sont les sorties
ter clockwise = sens antihoraire), ou inverment d’un robot nécessitent un moteur
en pont H alimentant le moteur à courant
sement. La résistance R4 est connectée
quelconque. La platine a été conçue pour
continu.
à la broche de signalisation thermique
être compacte toute en utilisant uniqueDans la section alimentation, les condenment des compoT (broche 9), qui
n’est pas utilisée
sant s classiques,
C5 = 22 µF/63 µF
ici. La fonction peut
c’est dire que nous
Liste des composants
C6,C8 = 100 µF/63 V
être utilisée pour
n e t r o u vo n s ici
envoyer un avertisaucun composant
Résistances :
Semi-conducteurs :
sement lorsque la
CMS (Montage en
R1 = 10 kΩ
D1,D2 = LED
température de la
Surface). Le desR2,R4 = 18 kΩ
IC1 = SG3525AN
sin des pistes et
puce atteint 145 °C.
R3 = 2kΩ2
IC2 = LMD18200
R5 = 330 Ω
Le circuit intégré est
la sérigraphie de
IC3 = L7805ACV
R6 = 2kΩ7
automatiquement
l’implantation des
R7 = 1kΩ5
mis hors ser vice
composants sont
P1 = potentiomètre 10 kΩ
Divers :
téléchargeables
arrive à 170 °C. La
P2 = ajustable 100kΩ
K1 à K3 = bornier encartable à 2 contacts
gratuitement depuis
broche 8 du circuit
au pas de 5 mm
LMD18200 est l’enn o t r e si t e We b
S1 = inverseur à glissière
Condensateurs :
platine EPS060339-1 disponible via
trée de détection
sous la référence
C1,C2,C4,C5,C7,C9,C10 = 100 nF
thePCBShop
de courant. R6 relie
EPS060339-1.zip.
C3 = 18 nF
cette broche à la
(060339-I)
1 3 2
110
elektor - 7-8/2007
Conversion servo-moteur ➧ moteur
Paul Goossens
Les servo-moteurs utilisés en modélisme
servent le plus souvent à actionner les bras,
pieds et autres « organes » d’un robot. En
dehors de cette utilisation évidente, ils remplissent parfaitement la fonction de moteur,
par exemple pour actionner les roues d’un
robot. Il suffit pour cela de commencer par
modifier une servo standard.
Les servos sont utilisées depuis longtemps
en modélisme. C’est pourquoi ils sont faciles à trouver, et souvent pour des prix très
abordables.
Servo standard
Une servo standard est destinée à atteindre
une position donnée et à la conserver. La
servo reçoit sur son entrée un train d’impulsions numériques. C’est la longueur de
ces impulsions qui détermine la position
que l’arbre de sortie doit rejoindre.
L’électronique interne utilise un potentiomètre lié mécaniquement à l’arbre de sortie pour déterminer sa position.
Dans le cas où la longueur des impulsions
ne correspond pas à la position réelle du
potentiomètre, l’électronique actionne le
moteur interne.
Si l’arbre est trop loin à droite, le moteur
tournera à gauche et inversement. Dès
que l’arbre arrive à la position correcte, le
moteur cesse d’être alimenté.
Petite adaptation
Une servo standard n’est donc pas en
mesure de faire tourner des roues ou autre
organes du même genre. Un peu de bricolage nous permettra d’adapter une servo à
cet usage.
Le truc est tout simple. Le potentiomètre
est remplacé par un diviseur de tension
composé de deux résistances de 10 kΩ.
Ainsi l’électronique « croit » que l’arbre est
toujours en position médiane.
Si on envoie à la servo une impulsion de
1,5 ms (position neutre), il ne se passe rien.
La servo coupe l’alimentation du moteur.
Réduisons à 1 ms la durée de l’impulsion,
la servo s’efforcera de d’amener l’arbre en
butée à gauche. Pour cela il fait tourner le
moteur vers la gauche. Pendant ce temps,
son entrée de contre-réaction « voit » toujours l’arbre au milieu. Ainsi le moteur
continue de tourner vers la gauche. Pour
faire tourner le moteur dans l’autre sens,
on lui envoie une impulsion de durée
supérieure à 1,5 ms (par exemple 2 ms).
Le moteur s’arrête à nouveau si la durée
d’impulsion est ramenée à 1,5 ms.
7-8/2007 - elektor
Attention au fait que la plupart des servos ont des butées mécaniques de fin de
course qui empêchent la rotation totale
de l’arbre. Nous devrons donc retirer ces
butées préalablement pour éviter que le
moteur parte en fumée pendant les tests.
échéant de remettre en place le pignon
du moteur.
Pour finir on revisse la plaque du fond. La
servo ne peut plus servir de servo mais il
est prêt à servir de moteur-réducteur.
(070358-I)
Mécanique
Pour ce qui est de l’électronique, la modification ne représente pas grand’chose.
Elle demande un peu de savoir faire pour
l’exécution dans le petit volume de la
servo. Nous utilisons comme exemple une
servo bon marché de Conrad (figure 1). Le
fond du boîtier montre quatre vis à retirer
d’abord. Ensuite, on peut déposer le fond
du boîtier.
Retirez alors précautionneusement la partie supérieure. Elle renferme un certain
nombre de pignons toujours enclins à
prendre leur liberté. Il faut repérer exactement leur position, parce qu’il faudra bientôt leur faire reprendre la même place. Une
photo (c’est tellement facile avec les appareils numériques !) avec tous les pignons
visibles se révèle une référence précieuse
au moment du remontage de la servo.
Après cela, la servo prend l’aspect de la
figure 2.
Retirez l’arbre de sortie. Il est situé sur l’axe
du potentiomètre. Cet axe est muni d’un
téton qui limite la course mécanique avec
deux encoches dans le boîtier. Cette limitation est indésirable, supprimez le téton
avec un couteau tranchant (figure 3).
La deuxième tâche consiste à extraire le
circuit imprimé du boîtier. S’il ne se laisse
pas retirer facilement, une poussée délicate sur l’axe du potentiomètre devrait suffire à le convaincre. Il doit rester un pignon
de petit diamètre sur l’arbre du moteur. Il
arrive qu’il reste collé dans le boîtier ; dans
ce cas, il faudra le chahuter un peu pour
le retirer, puis le remonter plus tard sur
l’arbre.
On reconnaîtra facilement le potentiomètre et le moteur. Le potentiomètre est remplacé comme indiqué par deux résistances.
Chacune a une broche soudée à l’un des
points extrêmes occupés précédemment
par le potentiomètre. Les broches restantes
sont soudées ensemble et à la connexion
du curseur.
1
2
3
4
5
Voilà : la servo est transformée. Si tel est le
cas, votre servo ressemble à notre exemplaire de démonstration de la figure 4. Il
reste à remonter les éléments de la servo.
On veillera à remettre chaque pignon
à sa place et à ce que tout tourne rond
sans encombre. Ne pas oublier le cas
111
Catapulte pour robot ...ou autre
Pascal Liégeois
À l’heure des rayons laser, parler de catapulte paraît anachronique mais détrompezvous, ce n’est pas si absurde que ça.
Dans de nombreux thèmes de concours
de robots, partout sur la planète, il a
été question à un moment de ramasser
des balles, de différents formats selon
les concours, et de les projeter dans un
réceptacle, souvent à des distances non
négligeables pour nos petits robots.
Il est une catégorie de balle, très légère,
et connue de tous, la balle de ping pong,
qui est beaucoup utilisée comme projectile
dans ce type de concours.
Outre la collecte de ces balles, leur projection pose souvent le problème de la précision et de la fiabilité.
J’apporte dans ces lignes ma solution, qui
n’est pas forcément la meilleure du monde,
mais qui a fait ses preuves.
Cette catapulte se réarme toute seule après
chaque tir, et ce en 2 secondes, et elle
est réglable en portée par réglage de sa
courbe balistique, et ce grâce à un unique
potentiomètre.
Son électronique est très simple et peu onéreuse, ne nécessitant pas de composant programmable et disposant de sortie pour renseigner le porteur sur l’état de la catapulte.
Le schéma
L’élément principal du système est un vulgaire servomoteur standard, tel qu’utilisé en
modélisme. Ce type d’actionneur est une
petite merveille qui contient un moto réducteur asservi en position grâce à un potentiomètre et une électronique adaptée.
La commande d’un servomoteur se réalise
à l’aide d’un signal à fréquence fixe (50 Hz)
dont la largeur de l’impulsion est variable,
généralement de 1 à 2 ms.
Pour réaliser ce signal, nous utiliserons le
célèbre NE555 (IC1) utilisé en astable câblé
de telle manière à ce qu’il délivre la fréquence requise. La diode D1, en parallèle
sur la résistance R1 déterminant le rapport
cyclique, permet de fixer à 18 ms environ
la partie négative de l’impulsion dont la
largeur de la partie positive est ajustable à
l’aide de R2 et P1 ou P2. La sortie du 555
attaque l’entrée du servomoteur.
La partie « électromécanique » du schéma
est basée sur l’emploi d’un relais 2RT et de
deux microswitchs. Le premier, Sw1 a pour
fonction de déclencher le réarmement
automatique de la catapulte, le second,
Sw2 remplit deux fonctions : il donne une
information de réarmement de la catapulte et il permet, une fois ce réarmement
112
R
Sw1
P
2
1
G
L
V
Sw2
Electro-aimant
070210 - 12
Figure 1. Synoptique fonctionnel de la catapulte.
effectué, de repositionner le servomoteur
en position de tir.
Sur le schéma, Sw2 est représenté actionné,
ce qui correspond à la position réarmée de
la catapulte.
En se conformant à la représentation
synoptique figure 1, on comprendra aisément le fonctionnement de la catapulte.
Lorsque l’on alimente brièvement l’électroaimant via l’entrée « TIR » qui commande le transistor T1 , le levier L est relâ-
Trous oblongs
ché, rappelé par le ressort R. Ce levier vient
finir sa course sur le galet en caoutchouc
G fixé sur la palonnier P du servomoteur.
En venant se poser sur ce galet, le projectile est envoyé et le levier actionne
aussi Sw1 qui alimente le relais RE1, qui
s’auto alimente via son contact re1B et le
microswitch Sw2 revenu entre temps à son
état repos.
Le servomoteur se met en mouvement
dans le sens horaire et le galet entraîne le
Sw1
Levier section carrée
Profilé
Electro-aimant
Tringlerie
Sw2
Ressort
Gâchette
070210 - 13
Figure 2. Détails de la réalisation mécanique.
elektor - 7-8/2007
levier vers sa position réarmée. En fin de
course, le levier s’accroche à la gâchette en
même temps que Sw2 est actionné. Celuici supprime alors l’auto-maintien du relais
qui, en revenant au repos, commande au
servomoteur de revenir en position de tir.
L’ajustable P1 permet de régler la position haute du galet et donc la portée du tir
comme l’explique la figure 3.
P2 permet le réglage du point d’accroche
du levier en position réarmé.
On peut voir sur la figure 1 deux positions
de tir (en pointillés) du levier et aussi les
positions correspondantes du galet de
caoutchouc (numérotées 1 et 2).
Pour affiner la portée de tir, il faut simplement savoir, et c’est logique, qu’en position 1 la balle montera en hauteur, et qu’en
position 2 la balle montera moins. Tout
dépend de l’utilisation : si l’on veut atteindre un réceptacle au sol avec une balle de
ping pong, il vaut mieux prévoir d’y arriver
par rebonds successifs, dont d’effectuer un
tir plus en hauteur. Par contre, si l’on vise
un panier en hauteur, il faudra viser « pile
poil dedans », donc laisser le levier remonter plus haut.
Une fois les réglages faits, vous serez épatés par la reproductibilité de ce système.
Le circuit intégré sera monté sur support à
8 broches. Les ajustables P1 et P2 seront
des multitours de préférence, horizontaux
ou verticaux.
Bien vérifier votre câblage. Alimenter le
circuit sans IC1 ni le relais. Vérifier les tensions d’alimentation sur IC1, sur les communs des switchs qui seront reliés au circuit via des fils d’une dizaine de cm. Vérifier la présence du +VCC sur le picot central
du connecteur servomoteur.
Connecter un +VCC sur l’entrée « TIR » et
vérifier que l’électro-aimant est activé.
La mécanique,
sans être d’une complexité suisse, requiert
néanmoins un peu d’attention.
Le plan représenté figure 2 détaille les éléments et parties essentielles du système.
Le châssis se réalise principalement sur
un morceau de profilé alu en L, ou sur un
pliage équivalent. Le servomoteur, équipé
d’un palonnier d’un diamètre de 35 mm
environ, est monté sur la plan vertical de
ce profilé.
L’axe d’articulation du levier se situe un
peu avant celui du servomoteur. J’ai réalisé
pour ma part ce levier à l’aide d’un tube
carré en laiton de 5 mm de côté.
Cette section creuse permet de pouvoir
accrocher avec la petite gâchette le levier
une fois réarmé.
Cette gâchette est actionnée par l’électroaimant au moyen d’une petite tringlerie. L’électroaimant est un modèle 6 V qui
sera fixé sur le plan horizontal de notre
profilé alu.
Le positionnement des switchs est important,
notamment celui de Sw2 dont le positionnement est figé une fois le réglage du réarmement optimum. Ce réglage nécessitera d’avoir
réalisé l’électronique décrite plus haut.
Le montage de Sw2 sur le profilé se fait au
Réalisation
L’électronique
La partie électronique étant relativement
simple, elle se réalisera sur un morceau de
circuit imprimé à pastilles. Le relais DIL
RE1 sera monté sur un support confectionné avec un DIP14 tulipe.
Le connecteur du servomoteur sera réalisé
avec 3 picots (de 10 mm utiles) de barrette
sécable au pas de 2,54 mm. Marquer la
broche signal afin d’éviter une erreur de
branchement du servomoteur.
+4V8...+6V
4k7
R2
1RT
Sw1
re1A
RE1
Sw2
P2
P1
2RT-6V
1RT
8
7
D2
TIR
1N4148
S1
re1B
10k
6
6V
2
NE555
TR
5
C1
C2
C3
330n
10n
470µ
16V
P1, P2 = 4k7 à 5k multitour
Figure 3. L’électronique de la catapulte.
7-8/2007 - elektor
Servo
CV
1
2N2219
K1
3
THR
1N4148
4k7
R4
IC1
OUT
Electro-aimant
T1
R3
DIS
D1
68k
R1
4
R
070210 - 11
moyen d’une petite équerre dans laquelle
on pratiquera deux trous oblongs afin de
permettre le positionnement de ce switch.
Pour Sw1, deux trous oblongs en arc de
cercle seront pratiqués sur le plan vertical,
où est fixé le servomoteur, afin de permettre de réglage de la portée de tir, conjointement à l’effet de l’ajustable P1.
Une fois la mécanique entièrement terminée, on mettra le levier en position basse,
ce qui détendra le ressort. On s’assurera
de la gâchette vienne bien accrocher le
levier sur au moins un millimètre. L’opération doit se faire sans forcer, le ressort doit
permettre à la gâchette de s’incliner sur la
droite avant de s’accrocher dans le tube.
Bien vérifier que l’électroaimant est
équipé de son ressort de rappel qui peut
se trouver entre la bobine et le noyau
magnétique, ou dans le puit de la bobine,
où plonge le noyau.
Le ressort doit pousser légèrement le
noyau afin qu’il ressorte de la bobine après
sollicitation de cette dernière.
Mise au point
La mise au point du montage est facile.
Ne pas implanter le relais sur son support. Mettre le levier en position réarmé
et vérifier que la gâchette le retienne bien
en position horizontale. Déclencher la
gâchette et s’assurer que le levier remonte
bien à l’aide du ressort.
Mettre le montage sous tension. Le servomoteur va prendre une position quelconque. À l’aide de l’ajustable P2, amener le
servomoteur, via le galet en caoutchouc,
à positionner le levier à l’horizontale jusqu’à l’accroche de la gâchette. Ajuster la
position de Sw2 afin qu’il soit actionné par
la petite équerre solidaire du levier. Si le
servomoteur ne fonctionne pas, vérifier le
montage, les soudures et le positionnement
correct du connecteur du servomoteur.
S’assurer que le signal et la masse ne soit
pas inversés.
Couper l’alimentation. Mettre le relais sur
son support. Remettre sous tension. Le
servomoteur doit prendre une position
quelconque. Ajuster P1 pour amener le
galet dans une position de tir quelconque
(par exemple 1). Couper l’alimentation et
ajuster Sw1 pour qu’il soit actionné par le
levier en position haute.
Remettre sous tension. La catapulte doit
se réarmer seule et le servomoteur doit se
remettre en position haute comme défini
plus haut. Tout fonctionne. C’est parfait.
Sollicitez l’électro-aimant pour vérifier que
le tir s’effectue correctement. Vous pouvez
maintenant équiper le levier d’un support
pour le projectile (balle).
À noter que le contact travail de Sw2 étant
non utilisé, vous disposez sur ce contact
d’un +VCC qui vous signale que la catapulte est réarmée…
(070210-I)
113
Commande de moteurs pas à pas
Avec un
Basic Stamp ou un
PIC programmé en
Basic
+U Moteur
(50V max)
+5V Stamp / Cubloc
C. Tavernier
1k
1k
R2
Tableau 1
Numéro de pas
1
2
3
4
Bobine 1
1
1
0
0
Bobine 2
0
0
1
1
Bobine 3
1
0
0
1
Bobine 4
0
1
1
0
Du fait de cette commande impulsionnelle,
les moteurs ne tournent pas de manière
continue mais avancent en fait à chaque
fois d’un pas élémentaire, d’où leur nom ;
pas dont la taille peut varier entre 1,8 et
7,5° selon le type de moteur utilisé.
Cette avance par pas permet en principe
au programme qui commande le moteur
de connaître très précisément sa position.
Pour que cela reste vrai, il faut toutefois
veiller à ne pas dépasser la charge maximum permise par le moteur car, dans ce
cas, le moteur pourrait ne pas avancer
pour chaque impulsion reçue et ainsi «
sauter » des pas.
Un autre avantage non négligeable du
moteur pas à pas est que, s’il est alimenté
mais ne reçoit plus d’impulsions, il reste
2
R4
1k
R3
1k
P1
9
1
P0
Lorsque l’on souhaite motoriser un robot,
deux solutions principales nous sont offertes : le moteur à courant continu, utilisé
seul ou au sein d’une servo de radiocommande transformé comme expliqué
par ailleurs dans ce même numéro, et le
moteur pas à pas. Si le moteur à courant
continu est bien adapté à tout ce qui touche à la propulsion, le moteur pas à pas
convient mieux lorsqu’il s’agit de réaliser des positionnements précis tels ceux
demandés par un bras robot, un capteur
mobile dans un plan, etc.
Par contre, alors que la commande d’un
moteur à courant continu reste relativement simple puisqu’il tourne dès qu’il est
alimenté, la commande d’un moteur pas à
pas est un peu plus délicate. En effet, ces
derniers ne tournent que lorsqu’ils reçoivent des impulsions sur leurs différentes
bobines ; impulsions qui doivent être présentées dans un ordre bien précis pour
faire tourner le moteur dans un sens ou
dans l’autre.
114
R1
Basic Stamp
ou
Cubloc
3
4
5
6
7
DS
I1
O1
I2
I3
I4
I5
I6
O2
IC1
ULN2003
I7
O3
O4
O5
O6
O7
16
L3
L1
M1
15
M
14
13
12
L2
L4
11
10
GND
8
070237 - 11
verrouillé sur la position qu’il a atteinte.
On dispose ainsi d’une sorte de frein électrique, toujours sous réserve de ne pas
dépasser les possibilités de charge du
moteur évoquées ci-dessus bien sûr.
À l’heure actuelle, il existe deux familles de
moteurs pas à pas : les moteurs unipolaires et les moteurs bipolaires. Les premiers
sont les plus simples à commander car il
suffit d’appliquer ou non une tension à
leurs bobines tandis que, dans les moteurs
bipolaires, il faut inverser régulièrement la
tension appliquée à ces même bobines ce
qui complique quelque peu le schéma à
mettre en œuvre.
Le tableau ci-joint indique l’ordre dans
lequel il faut alimenter les bobines d’un
moteur unipolaire pour le faire tourner. Si
l’on parcourt les colonnes de ce tableau de
1 vers 4 on fait tourner le moteur dans le
sens horaire, alors qu’un parcours inverse
change son sens de rotation. Chaque
colonne de ce tableau correspond bien
sûr à un pas mécanique du moteur, compris rappelons-le entre 1,8 ° et 7,5 ° selon
les modèles.
De nombreux circuits spécialisés dans la
commande de moteurs pas à pas existent
sur le marché et diverses solutions vous
‘ Commande d’un moteur pas à pas unipolaire
‘ Le nombre de pas est placé dans w1
‘ Le sens de rotation est défini par b0
‘ Définition des variables
Symbol
Symbol
Symbol
Symbol
direction = b0
pas = w1
index = w2
delai = b6
‘ Initialisation
dirs = %00000011
pins = %00000001
b1 = %00000001
‘ Le programme de l’application doit initialiser
‘ pas, direction et délai avec les valeurs désirées ici
if direction = 0 then paspas
b1 = b1 ^ %00000011
paspas:
for index = 1 to pas
pins = pins ^ b1
b1 = b1 ^ %00000011
pause delai
next
elektor - 7-8/2007
sont proposées dans ce même numéro
d’Elektor mais, si votre robot utilise un
Basic Stamp ou bien encore un microcontrôleur PIC programmé en Basic, il existe
une solution extrêmement simple et peu
coûteuse pour lui faire commander de tels
moteurs.
Il suffit en effet de faire appel à un banal
ULN2003 ou ULN2803 qui est, rappelons-le, un septuple (ULN2003) ou octuple (ULN2803) Darlington de puissance
intégré, utilisé habituellement pour commander des bobines de relais. Le logiciel
nécessaire et quant à lui fort simple grâce à
l’utilisation de deux astuces suggérées par
Parallax (fabricant du Basic Stamp).
La première consiste à remarquer que
l’état des bobines 1 et 2 d’une part et 3 et
4 d’autre part est toujours contraire comme
indiqué dans le tableau ci-joint. De ce fait,
on peut commander le moteur avec seulement deux sorties du Basic Stamp comme
le montre le schéma fort simple que nous
vous proposons.
Les bobines 1 et 3 sont commandées par
deux lignes de port du Basic Stamp après
amplification par l’ULN2003 ou 2803.
Les bobines 2 et 4 quant à elles reçoivent
ces signaux après inversion réalisée grâce
aux amplificateurs libres contenus dans
l’ULN2003 (ou 2803 qui est surabondant mais parfaitement utilisable). Notez
7-8/2007 - elektor
la présence des
deux résistances
de tirage (pullup) indispensables de 1 kΩ,
connectées en
sor ties des
amplificateurs contenus dans l’ULN2003
ou 2803 puisque ce dernier ne comprend en fait que des Darlingtons à collecteur ouvert.
La deuxième astuce proposée par Parallax
consiste à calculer directement la séquence
des signaux à appliquer sur les sorties P0
et P1 du Basic Stamp plutôt que d’extraire
ces données d’une table. Il suffit en effet
pour cela d’un simple OU exclusif logique
comme le montre le listing.
Ce court exemple de code peut être inclus
tel quel dans une application plus complète. Comme le montre son analyse, il
fait tourner le moteur pas à pas connecté
comme indiqué sur la figure du nombre de
pas préalablement placé dans w1. Le sens
de la rotation est quant à lui déterminé par
le contenu de b0. Si b0 est différent de
0 le moteur tourne dans un sens ; sinon
il tourne dans l’autre. Ce programme permet également de définir le délai d’attente
entre chaque pas
au moyen de la donnée utilisée
dans l’instruction PAUSE. La seule précaution à prendre est de ne pas trop réduire
ce délai compte tenu du moteur utilisé et
de la charge qu’il actionne.
Afin d’être le plus général possible, notez
que cet exemple de code a été écrit en
langage Basic Stamp I. Il est donc parfaitement transposable, sans aucune restriction,
sur tout autre modèle de Basic Stamp, ainsi
bien sûr que sur n’importe quel PIC programmé en Basic puisque la majorité des
compilateurs Basic pour PIC est compatible du langage du Basic Stamp I. Il est également transposable sans aucune difficulté
à un PicBasic ou à un Cubloc de Comfile
Technology.
(070237-I)
115
Antenne 2,4 GHz
pour véhicules robotisés
Ragnar Jensen
4
Les inconditionnels de robotique sont également de farouches partisants d’équipement radio trafiquant sur la bande sans licence des
2,4 GHz dite bande ISM (Industriel/Scientifique/Médical, pour une
fois que cela colle aussi en français); laissez un peu divaguer votre
imagination et pensez à ce que vous pourriez faire avec Bluetooth,
des caméscopes sans fils, des télécommandes et même un point
d’accès ou client WLAN monté sur un véhicule robotisé !
L’un des hics est qu’une application-maison de ce genre requiert,
normalement, une antenne qui se doit d’être (1) omnidirectionnelle,
(2) présentant un minimum de flexibilité en raison des risques de
dommages qu’elle encourt en court d’utilisation et (3) de coût faible2.
L’antenne présentée ici remplit avec brio ce « cahier à 3 charges ».
Liste des ingrédients : un petit morceau de câble coaxial de 50 Ω tel
que du RG58(C)U doté d’un connecteur BNC serti (« empruntez »
un câble auprès du département IT ?) ; un couteau de poche bien
affûté; un outil pointu (une aiguille de bonne section ou un tournevis d’horloger) ; une règle; un fer à souder (optionnel) ; un pistolet
thermique à colle ; un rien de bon sens et de l’ordre de 30 minutes
de votre temps libre.
En vous servant de l’outil pointu démêlez soigneusement les filaments
constituant la tresse.
5
C’est parti.
1
Le matériel de base : un petit morceau de câble coaxial 50 Ω.
2
Jusqu’à ce que le blindage « détressé » ressemble un peu à cela...
6
Coupez quelque 40 mm de la gaine d’isolation extérieure. Vous verrez
apparaître la tresse métallique servant de blindage du câble.
3
Retroussez la tresse cuivrée pour voir apparaître la gaine d’isolation
interne.
116
Répartissez les fils en 4 ensembles de taille similaire et espacés
régulièrement (ah des tresses !)
elektor - 7-8/2007
7
8
Repliez-les maintenant à 45 degrés par rapport au câble. Cet angle
donne à l’antenne son impédance de 50 Ω environ.
Recouvrez les faisceaux de fils de soudure. Bien que cette étape soit
optionnelle, elle permet aux éléments constituant l’antenne de mieux
garder leur forme et évite qu’ils ne s’entremêlent.
9
10
Soudure terminée !
Appliquez quelques gouttes de thermocolle...
12
11
... ceci permettra à l’ensemble de gader la forme correcte.
Coupez les rayons et l’élément rayonnant (radiator) à une longueur de
30 mm (exact, cela correspond exactement au 1/4 de lambda (1/4λ).
13
Nous avons terminé !
(070142-I)
(reproduit avec modifications et extensions du numéro de téléphone 17 du magazine CQ-TV).
7-8/2007 - elektor
117
Récepteur pour télécommandes RC5
D30
1N4148
+5V
IC4
+8V
78L05
R2
RESET
CLK
IC1.A
14 1
7
R
6
2
7
R
1D
SRG4
11 12 13
6
9
C2
C3
100n
100n
R
1D
10 3
4
SRG4
5
2
SRG4
11 12 13
10 3
4
5
BC557B
D2
D3
D4
D6
D7
D8
D9
D10
D11
D12
D13
IC8.D
R16
D14
11
R19
D15
R21
&
1k
R18
1k
R17
1k
R15
1k
R14
1k
R13
1k
R12
1k
R11
1k
1k
D5
R10
1k
R9
1k
R8
1k
R7
1k
10k
R5
1k
R6
1k
R4
1k
R20
D1
2
IC2.A
14 1
12
D16
100k
SRG4
10k
1
TSOP1736
15
T1
R3
3
IC2.B
9
R
1D
C1/
1D
2
IC3
1
15
100n
220n
1000µ
IC1.B
C1/
C1
C1/
C6
C1/
C7
DATA
47k
100 Ω
R1
C4
C5
47µ
470µ
13
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IC8.C
9
DATA
&
8
10
+5V
1
IC6.A
3
C
R
4
2
D17
D18
39k
180k
R27
P1
2
0
11
1
2
CT=0
3
IC7
IC5
CT
OUT
6 THR
10k
CTR12
8
7555
TR
4
16
R
DIS
3
18kHz
10
+
4
5
6
7
8
CV
5
C9
C10
150p
100n
IC8.A
1
2
1
4040
9
10
11
&
3
9
7
6
5
IC9.C
5
D19
3
D20
2
D21
9
11
4
13
D22
12
D23
D
S
C
R
118
&
8
8
IC1, IC2 = CD4015
IC6 = CD4013
IC8, IC9 = CD4093
D17...D29 = 1N4148
8
9
13
IC9.B
IC6.B
12
4
10
D26
14
15
10
8
6
&
IC9.A
3
&
5
6
IC9.D
11
&
12
13
+5V
1
2
D27
D24
R29
1
D25
8
Reset 02
Les microcontrôleurs actuels peuvent décoder « comme en se jouant » les signaux
des télécommandes RC5. Les composants
dédiés de décodage RC5 sont passés de
mode. Pas tout à fait ! L’évaluation des
signaux RC5 par des composants usuels
a encore son mot à dire. Ils jouent tout
d’abord un rôle didactique : comprendre
le codage. Ils s’adaptent aussi facilement à
des besoins particuliers.
Le circuit était initialement conçu dans le
seul but d’afficher les adresses et commandes qu’une « télécommande universelle »
exécute en réponse à la pression d’un
bouton. Il est toutefois aussi en mesure de
télécommander tous les appareils domestiques imaginables, comme un amplificateur audio, par l’entremise des diverses
16
IC2
IC8.B
&
Reset 01
Thomas Möll
16
IC1
100p
100k
4
7
47µ
C11
R28
R26
C8
R30
D28
télécommandes, ornements de tout foyer.
Il suffit de choisir une adresse non encore
attribuée et de définir les commandes propres à l’appareil.
Le récepteur IR TSOP 1736 inverse la suite
de bits du signal émis. T1 l’inverse une
seconde fois et la remet donc l’état initial.
La LED de la liaison collecteur Data indique la réception. Le niveau de la première
moitié du bit de départ est bas (0 V). Le
saut au niveau haut (5 V) au début de la
seconde moitié du bit de départ l’identifie
comme haut et active la bascule IC6.A. Sa
sortie inversée est basse et permet au diviseur CD4040 de diviser le signal rectangulaire 18 kHz produit par un bon vieux
NE555. Une impulsion de niveau bas est
engendrée simultanément par l’étage différentiateur C11/R23. Celle-ci, transformée
en une impulsion de niveau haut Reset_02
100k
S
R25
100k
D
1M
33k
6
5
R24
100k
R23
100k
R22
14
14
14
IC6
IC8
IC9
7
7
7
D29
070089 - 11
par le trigger de Schmitt inverseur IC8.A,
efface tout le contenu des registres à décalage CD4015 (IC1/IC2). La sortie Q4 (broche 5) du CD4040 se trouve à 1 125 Hz, ce
qui correspond à une période de 888,8 µs
et une largeur d’impulsion de 444,4 µs.
La sortie Q5 (broche 3) est inversée par
la porte trigger de Schmitt IC8.B dont la
sortie se trouve donc à l’état haut dès le
début. Le circuit ET formé par la matrice
de diodes positionne exactement une
entrée de IC8.C à l’état haut lors du premier accroissement de Q4. La sortie inversée de la bascule IC6.B se trouve aussi à
l’état haut. Une impulsion de synchronisation de niveau haut (inversée par IC8.D)
est donc envoyée au registre à décalage
CD4015 pour qu’il reprenne l’information
instantanée du signal de données. Ce processus se répète ensuite toutes les 1,333 µs
elektor - 7-8/2007
donc – et cela constitue le véritable tour de
force du circuit – toujours aux ¾ des bits
envoyés par un émetteur. Le niveau bas ou
haut de chaque bit est donc détecté avec
précision.
Conformément à leur définition, les informations RC5 se terminent après 14 bits.
Une matrice de diodes ET aux sorties de
CD4040 active la bascule IC6.B dont la
sortie passe à l’état bas et bloque le signal
d’horloge destiné au registre à décalage. Le
protocole d’envoi se termine après 64 bits.
Q12 (broche 1) du diviseur CD4040 passe
brusquement à l’état haut au début du
64ème bit. Reset_01 réinitialise la bascule
IC6.A, bloquant ainsi le compteur. Les
informations aux sorties ne changent pas
jusqu’à ce qu’une suite de bits de l’émetteur active la bascule IC6.A, ce sur quoi les
mémoires sont temporairement vidées et
la détection est rétablie. L’impulsion d’arrêt de la broche 11 du CD4040 permet de
reprendre les informations pour évaluation.
Il est bon de munir la sortie du 555 d’une
broche de test lors du montage du circuit.
Elle permettra de toujours ajuster avec
précision le signal d’horloge de18 kHz
– pour le plus grand bien de la séquence
temporelle.
(070089-I)
zBot: liaison sans fil
Jens Altenburg
Il existe de nombreux modules de
communication sans fil, tous utilisables librement dans les bandes de
fréquences ISM (Industriel, Scientifique, Médical), telles que 433 MHz,
866 MHz et plus récemment 2,4 GHz.
On en trouve d’abordables avec de
faibles débits, et d’autres excellents à
grande vitesse. « Combien (me coûtera
la chose) ? » est la question la plus fréquemment posée si vous cherchez un
module radio. Les modules à faible débit
sans intelligence sont bon marché ; les
rapides et intelligents passablement chers.
Simple, mais ça ne nous aide guère.
La société CT-Video GmbH (www.ctvideo.com) commercialise un module
spécial avec un haut débit numérique,
sans intelligence, à un prix raisonnable. Le
module est basé sur un émetteur-récepteur
complètement intégré avec une interface
numérique. Il est utilisé avec succès dans
le zBOT [1].
Il s’agit d’une petite platine complètement assemblée et testée. Elle comporte
la section radio complète. Le module travaille dans la bande ISM 433 MHz, avec
une puissance de 10 mW à l’émission
et une sensibilité de –108 dBm côté
réception.
Pour la mise en œuvre du module dans
vos propres réalisations, un module
logiciel est disponible aussi. Ce dernier
ne consomme qu’une petite parties des
ressources du microcontrôleur : quelques entrées/sorties à usage général
(GPIO) et un canal UART. L’UART sera
configuré pour un débit de 76,8 kbits/
s. Ce débit doit être précis, faute de
quoi le comportement sera celui d’un
récepteur à faible sensibilité.
Le module logiciel de communication
radio s’appelle rf433.c.
(070173-I)
[1] Le document complet intitulé
Zbot – the Robot Experimental Platform
(en anglais) est disponible au téléchargement gratuit sur le site Elektor.
Le fichier s’appelle EPS070172-11.zip.
Voix de robot
Pascal Choquet
Que serait le film 2001 Odyssée de l’espace sans la voix à la fois douce et inquiétante de HAL ? C’est précisément pour cela
que nos robots ont besoin d’une voix. Un
module à construire soi-même va mettre
fin au mutisme de nos machines.
Si vous imaginez un générateur de parole
avec une foule de circuits intégrés, vous
vous trompez ! On s’en tire avec un circuit
unique. Le circuit intégré ISD2500 de Winbond, dans la famille baptisée ChipCorder,
offre presque tout ce qui est nécessaire.
7-8/2007 - elektor
Cette puce est capable d’enregistrer et de
restituer plusieurs signaux audio différents.
Elle contient un préampli de micro pour les
capsules à électret bon marché, un amplificateur de sortie pour le haut-parleur,
mémoire, oscillateur, convertisseurs A/N
et N/A, de même qu’une commande automatique de gain (CAG). Il existe quatre
versions : les derniers chiffres de la référence indiquent la capacité de la mémoire
en secondes (2560, 2575, 2590 et 25120).
La taille réelle de la mémoire est la même,
seule change la fréquence d’échantillonnage. Ainsi la version 60 offre la meilleure
qualité audio.
Comme le circuit intégré n’a besoin pour
la restitution que de deux condensateurs
de découplage (voir la figure 2), il est logique de prévoir un circuit d’enregistrement
séparé (figure 1) et d’équiper chaque platine d’un support pour le circuit intégré.
Une fois l’enregistrement terminé, le circuit intégré peut être retiré et enfiché dans
l’électronique du robot.
L’enregistrement se déroule comme suit :
Le commutateur S3 doit se trouver comme
celui de la figure 1 dans la position enregistrement. Une action sur S2 lance le pre-
119
IC2
+U
S4
+5V
7805
D1
C9
C8
C11
10µ
25V
100n
100n
10µ
16V
R6
220 Ω
C10
+5V
D2
C4
100n
16
22
VCCA
23
24
27
S2
S3
R2
10k
S1
20
PD
22µ 16V
Play/Rec Next
100n
21
IC1
CE
PD
17
A7
A6
P/R
A5
ANAIN
A4
A2
ANAOUT
18
11
19
470k
A1
MIC
SP+
10
9
8
7
6
5
4
3
2
1
14
ISD2560
100n
10k
A8
A0
C2
R5
28
VCCD
A9
100n
R3
100n
A3
C1
MIC1
OVF
C3
C7
C5
R4
220 Ω
R1
1k
R7
4k7
R9
4k7
R8
4k7
mier enregistrement. Une deuxième pression y met fin, une troisième démarre le
deuxième enregistrement. On peut continuer jusqu’à ce que la mémoire interne
soit pleine (état signalé par la LED D2) ou
bien qu’on n’ait plus rien à dire. Dans ce
dernier cas, on appuie une fois sur S1 et
le circuit se remet à zéro. On peut alors
passer en restitution avec S3 et écouter
les enregistrements en séquence avec S2.
Si quelques chose se passe mal, on peut
remettre à zéro avec S1, basculer S3 et
recommencer depuis le début.
Il est conseillé de n’enregistrer que des
mots isolés qu’on pourra restituer à la
suite pour énoncer un texte. Donc au lieu
d’enregistrer « Obstacle devant » etc. on
enregistrera « Obstacle », « devant », « à
gauche », « à droite » etc. sans oublier les
chiffres « un », « deux », « virgule »...
Lors de l’enregistrement, le CI place après
chaque message un drapeau EOM (End
Of Message) qui permet lors de la restitution un saut très rapide (jusqu’à 800 fois
la vitesse normale) au message suivant. Le
circuit de restitution minimal de la figure 2
se pilote par quatre lignes du microcontrôleur pour les signaux : A0, PD, CE et EOM.
Le circuit intégré est activé en mode restitution par PD=0. Si c’est le premier message qui doit être restitué, CE reçoit une
courte impulsion au niveau bas. La restitution se déroule avec A0=0. Si A0=1, on a
le « bobinage rapide ». Si on veut entendre
le troisième message après le premier, on
envoie une impulsion sur CE avec AO=1
puis on attend le drapeau EOM. Quand
EOM passe à zéro, on peut écouter le troisième message avec A0=0 et une impulsion sur CE.
Comme les impulsions durent moins de
10 ms, le recours aux interruptions est
recommandé.
C6
MICREF
SP–
AUX IN
EOM
LS1
16 Ω
15
25
AGC
VSSA
XCLK
VSSD
13
26
12
4µ7
16V
070313 - 11
Un exemple de code source en C pour
le microcontrôleur à 16 bits MSP430 de
Texas Instruments, par l’auteur, est disponible sous la référence EPS070313-1.zip sur
le site Elektor (www.elektor.fr).
(070313-I)
Lien :
www.winbond-usa.com/mambo/content/
view/153/283/
Télécommande radio
pour PDA et Smartphones
Peter Zirngibl
Sous la désignation de AVR Blue Remote,
l’auteur présente sur son site Web une
télécommande radio Bluetooth munie de
6 relais de sortie et de 6 entrées d’acquittement. Elle est accompagnée du logiciel
avrblueremote.exe pour téléphone intelligent et du logiciel avrblueremote.hex
pour microcontrôleur. Elle permet entre
120
autres d’ouvrir la porte d’un garage à faible distance ou de réaliser un télérupteur
de l’éclairage d’une portée d’environ 10 m.
L’utilisation du logiciel dans des buts non
commerciaux est gratuite.
L’émetteur peut être basé sur un téléphone
intelligent équipé du système d’exploitation
Windows Mobile 5.0. Le récepteur, qui fait
partie d’un circuit dépourvu de complications, est un module Bluetooth (Blue Nice
Com III) fabriqué par Amber Wireless. De
la taille d’un timbre-poste, il inclut une
antenne puce. Le module est basé sur un
LMX9820A de National Semiconductor. Il
transfert le télégramme radio décodé à un
microcontrôleur AVR ATMega8L d’Atmel
par son interface UART RX/TX. L’étage de
puissance octuple ULN2803, connecté
aux sorties du contrôleur, fournit assez de
« jus » pour commuter sans difficultés des
elektor - 7-8/2007
IC4
+3V
4
3
6
5
7
1
FB3
VCC
AVCC
PD3(INT1)
PD4(XCK/TO)
SCK
19
MISO
18
MOSI
17
16
FB4
15
FB5
14
FB6
IC1
PB5(SCK)
PC0(ADC0)
PB4(MISO)
PC1(ADC1)
PB3(MOSI/OC2)
PC2(ADC2)
PB2(SS/OC1B)
PC3(ADC3)
PB1(OC1A)
PC4(ADC4/SDA)
PB0(ICP)
PC5(ADC5/SCL)
PD7(AIN1)
4
11
12
ATmega8L
PD2(INT0)
PD0(RXD)
PD6(AIN0)
PD1(TXD)
XTAL1
8
JP1
AREF
PD5(T1)
GND
S1
R2
R3
9
JP2
C4
X1
5
D3
6
23
1
24
2
25
3
26
4
27
5
28
6
13
7
8
21
2
RE1
1N4148
+VS
I1
I4
I6
I7
I8
VEE
OUT4
14
O5
OUT5
13
O6
OUT6
12
O7
+3V
OUT3
15
O4
ULN2803
OUT2
16
O3
IC2
OUT1
17
O2
I3
I5
18
O1
I2
11
O8
Reset Bluetooth
9
3
D4
22
9
R5
C5
10
11
12
13
22p
D6
10
XTAL2 AGND
10
R1
D2
220 Ω
FB1
10µ
D1
20
PC6(RESET)
ISP
FB2
22p
14
15
7,3728MHz
R6
220 Ω
La topologie du circuit sur la
carte pose quelques défis. Pour
obtenir la meilleure portée possible, il faut exclure toute surface
de masse, piste et tout composant ou autre partie métallique
du voisinage de l’antenne (8 mm).
Le mode d’emploi du module
contient des détails supplémentaires. L’interface ISP permet de
programmer le contrôleur. Il faut
bien entendu que le brochage du
connecteur soit compatible avec
1
C1
10µ
1k
K1
2
C2
100n
220 Ω
R4
C3
1k
VCC
+3V
+5V
LP2950
3V
4k7
relais, même puissants. Un régulateur de tension 3 V (LP29503V) et un connecteur de programmation ISP font aussi partie
des composants embarqués. Les
4 LED du circuit indiquent l’état
de la connexion : LED1 signale
la réception correcte des données dans le microcontrôleur,
LED2 un dépassement de délai
(timeout). Les LED du module
Bluetooth indiquent l’état de la
liaison (LED3) et le mode « Émission » (LED4).
RX
16
GND
RESET
ENV1
CTS
ENV0
RTS
LSTAT_0
TX
LSTAT_1
RX
Host_wu
ISEL2
TX_LED
ISEL1
VDD_DIGI
VCC
8
7
R7
1k
6
+3V
5
4
3
2
1
IC3
Blue Nice Com III
D5
TX
070126 - 11
qu’il puisse tourner,
installer d’abord
le Compact Framework 2.0 approprié (disponible
à partir du centre
de téléchargement
Microsoft).
• Windows
Mobile 5.0 Pocket
PC et Smartphone NETCFv2.
wm.armv4i.cab
• Pocket PC
2003 et 2003 SE
NETCFv2.ppc.
armv4.cab
• Windows XP
netcfsetupv2.msi
le programmateur ISP utilisé. On trouvera
des circuits applicables sur Internet et,
bien entendu, dans Elektor. L’entreprise
Atmel fournit aussi des conseils sur son site
Web. Les sorties de rétroaction (feedback)
peuvent être raccordées (ou non) selon ses
préférences perso.
Le matériel est assemblé. C’est au tour
du logiciel du téléphone intelligent. Pour
7-8/2007 - elektor
Copier ensuite avrblueremote.exe sur la plate-forme choisie,
par exemple la carte SD du téléphone intelligent. Puis effectuer une opération (unique)
entre les 2 appareils Bluetooth, le téléphone
intelligent et la carte de réception : le jumelage (pairing). Le moment est venu de lancer le programme et de mettre au point
le port COM par la flèche vers le haut ou
vers le bas. Le carré central ouvre l’interface de façon à établir une connexion avec
le récepteur. La croix directionnelle permet
alors de commuter les sorties de la carte
réceptrice. La sixième sortie est déclenchée
par la touche espace.
Les symboles de 6 LED d’acquittement sont
affichés au haut de l’écran. Se trouve-t-on
hors de portée du récepteur ? Les LED virtuelles s’éteignent et une barre de timeout
est affichée. C’est le moment d’agir avec
promptitude : faute de la réception d’un
signal correct, la fin du délai signifie aussi
la fermeture de l’interface.
(070126-I)
Liens Internet
Site Web de l’auteur (allemand) :
www.clipswitch.de/avrblueremote.html
Infos concernant le module Bluetooth :
www.amber-wireless.de/en/produkte/
bluetooth/default.php?fnum=115287704928
Manuel du module Bluetooth (anglais) :
www.amber-wireless.de/pdf/
OPC1601_MA.pdf
Fiche de caractéristiques du LMX9820 :
www.national.com/pf/LM/LMX9820A.html
Programmateur AVR :
www.atmel.com/dyn/products/
tools_card.asp?tool_id=2726
AVR Studio :
www.atmel.com/dyn/products/
tools_card.asp?tool_id=2725
121
Détecteur d’impulsion supprimée
1
VCC
R
10k
R1
8
7
4
R
DIS
IC1
2
6
T1
OUT
TR
3
LM555CN
THR
la figure 2.
Il faut, si l’on veut garantir un fonctionnement correct du détecteur, respecter
un certain nombre de conditions quant
à la chronologie du signal. Si l’on prend
comme référence le chronodiagramme
de la figure 3, les valeurs des composants
R et C du circuit se calculent de la façon
suivante :
τ = 1.1 R C
2
Entrée
Sortie
3
1
5
BC558
070099 - 11
Hesam Moshiri
Un détecteur signalant les impulsions manquantes est, en robotique, l’un des circuits
les plus importants qui soient. En cas d’application d’impulsions au circuit représenté
en figure 1, le signal de sortie restera de
façon continue au niveau haut (c’est-àdire pratiquement au niveau de VCC)
comme l’illustre le chronodiagramme de
N
Entrée
CV
C
070099 - 12
M
en tenant compte des restrictions
suivantes :
1kΩ < R < 1MΩ et M < τ < N
En cas d’application d’un signal correct
à l’entrée (figure 2), le circuit est déclenché par une autre impulsion avant que
n’expire la constante de temps (τ). Ceci
explique que le signal de sortie reste au
niveau Haut.
En cas d’absence d’une impulsion voire
plus, suite, par exemple, à un problème,
un coup porté à la tête du robot Mathilda
ou tout simplement suite à une mauvaise
réception au niveau de canal de télécom-
Sortie
Impulsion effacée
070099 - 13
mandée, le signal de sortie passera brièvement au niveau Bas. Le signal s’avertissement résultant peut être détecté
par une électronique additionnelle, un
microcontrôleur par exemple ou tout
autre dispositif de détection qui réagit à
une interruption du flux d’impulsions. Si
les choses devaient s’aggraver encore, il
ne serait pas mauvais de s’assurer que
George (le pilote automatique) se trouve
bien en fonction !
(070099-I)
Communication IR par UART
Dominik Tewiele
122
PC5(ADC5/SCL)
PC3(ADC3)
PC2(ADC2)
IC
PD0(RXD)
PD1(TXD)
PD2(INT0)
PD3(INT1)
PD4(XCK/TO)
PD5(T1)
PD6(AIN0)
PD7(AIN1)
ATmega8
PB0(ICP)
PB1(OC1A)
PB2(SS/OC1B)
PB3(MOSI/OC2)
PB4(MISO)
PB5(SCK)
28
26
C5
25
10µ
2
3
4
16V
R3
T2
10k
5
BC448
6
R1
11
100Ω
La lumière IR est bien moins onéreuse
que des modules radio dans le cas où des
robots communiquent entre eux ou avec
des stations de base à moyenne distance
(de 5 à 10 m). La modulation nécessaire
pour supprimer la partie IR présente dans
la lumière du jour et le protocole reposent
sur des composants et des normes éprouvés. La majorité des contrôleurs modernes
disposent d’une ou de plusieurs interfaces sérielles asynchrones (UART). Cellesci semblent destinées à être munies d’un
émetteur et d’un récepteur IR.
Le TSOP17xx, par exemple, constitue un
récepteur adéquat. Les 2 caractères xx indiquent la fréquence de modulation en kHz.
On peut raccorder directement sa sortie à
la broche RxD du contrôleur. La sortie à
collecteur ouvert permet de raccorder plusieurs modules de réception en parallèle
pour étendre la zone de réception.
L’émetteur ne comporte qu’une diode
IR et quelques composants discrets.
La modulation fait appel à un tempori-
VCC
12
13
D1
14
15
16
17
R4
T1
10k
BC447
18
19
070170 - 11
sateur du contrôleur – ou à un NE555.
Dans l’ATmega8 de l’exemple, Timer1 est
piloté de sorte que PB2 permette d’ajuster
la fréquence et la largeur des impulsions
en faisant appel aux registres de comparaison de sortie OCR1A et OCR1B. La
modulation basée sur la fréquence choisie est effectuée par le transistor NPN.
Ici aussi, plusieurs LED IR raccordées en
parallèle permettent d’étendre la zone
d’émission et l’angle de rayonnement. La
portée et le courant maximum admissible des LED IR en régime impulsionnel
déterminent la valeur de leur résistance
de protection. Un coup d’œil à la fiche
technique de la diode s’impose. On en
déduira aussi la largeur d’impulsion ajustable par logiciel.
Le nombre maximum de bauds de l’UART
dépend du récepteur choisi. Un TSOP17xx
permet d’atteindre environ 1 200 bauds.
Cela devrait largement suffire pour des
commandes simples. Besoin d’une liaison
bidirectionnelle ? Il suffit d’équiper les
2 côtés de circuits émission/réception. Gardons toutefois la tête froide. Des réflexions
peuvent partiellement entraver l’établissement d’une liaison en duplex intégral.
(070170-I)
elektor - 7-8/2007
Télécommande IR à R8C
G. van Zeijts
+5V
R8C/13
max. 15mA
1
2
3
4 5 6 7 8
1
K2
RXD1
2
RESET
4
1. Le bit 7 du port P0 indique s’il s’agit
d’impulsions RC5 ou Sony. Bit 7 au niveau
« Haut » = RC5 et bit+7 au niveau « Bas »
= Sony.
2. On trouve, sur le port 0 (sortie) le code
de la dernière touche enfoncée. On utilise
à cet effet les bits 0 à 6, le bit 7 servant,
nous le disions à dire s’il s’agit de RC5 ou
de Sony.
3. Le port P1 (sortie) est utilisé pour une
mise directe des 8 bits au niveau haut ou
bas par le biais des touches 2 à 9 de la
télécommande. Une première action sur
l’une de ces touches fait passer la sortie au
niveau haut. Une nouvelle action sur cette
touche fait passer la sortie au niveau bas.
Ces 8 touches permet donc une commande
directe (à distance) de 8 processus différents. L’état des différents bits du port P1
n’est pas influencé par une action sur les
autres touches de la télécommande.
La touche « 1 » permet de mettre au
niveau haut tous les 8 bits de P1. Les touches « 0 » et « Arrêt » permettent de met-
7-8/2007 - elektor
30
P0.2
29
P0.3
5
VSS
6
28
MODE
27
P0.4
7
8
9
10
VCC
P0.5
P1.7
P0.6
P1.6
P0.7
26
25
24
23
P1.5
11
P1.4
12
P1.2
14
21
20
P3.1
19
P1.1
15
16
P1.0
P3.2
P4.5
P3.3
TSOP1736
22
P3.0
P1.3
13
18
17
1k
T1
8x 1k
BC638
1k
+5V
10k
Le montage a été conçu de manière à
pouvoir être utilisé tant avec une télécommande de Philips (RC5) que de Sont.
Le système fournit sur l’un des ports de
sortie d’un code à 7 bits, permettant
d’« informer » un ordinateur ou un autre
microcontrôleur de la touche activée sur
la télécommande.
Il est possible de piloter les 8 bits d’un
autre port de sortie à l’aide des touches
2 à 9 de la télécommande. On peut ainsi
commander/activer directement à distance
un maximum de 8 processus.
Le programme, écrit en C sous HEW, remplit les fonctions décrites ci-après.
Un cavalier, JP1, permet le choix entre
l’analyse d’impulsions Philips (RC5) lorsqu’il est ouvert (non implanté) ou de SOny
(cavalier implanté).
31
P0.1
3
K1
8x 1k
32
P0.0
JP1
2k2
Elektor a publié, ces dernières années, différents articles dans lesquels des microcontrôleurs captaient et analysaient les impulsions émises par une télécommande IR.
Cette possibilité n’existait malheureusement pas, jusqu’à présent, pour l’un des
microcontrôleurs auquel Elektor a consacré le plus grand nombre d’articles ces
dernières années, à savoir le R8C, ce qui
a amené l’auteur à s’y mettre et, après
avoir trouvé une solution, à la proposer à
d’autres lecteurs intéressés.
2
3
vert
1
rouge
TSOP1736
070191 - 11
tre ces mêmes bits au niveau bas.
8 LED rendent l’état momentané des
8 bits; elles drainent de l’ordre de 3 mA du
port P1. Il faut donc limiter, pour des fonctions plus « lourdes », à 17 mA au maximum le courant drainé par le biais de l’embase K2 (pour des raisons de sécurité, on
limitera cette valeur à 15 mA seulement).
4. Si l’on a paramétré le système (JP1
ouvert) pour la réception d’impulsions
RC5, mais que le microcontrôleur reçoit
des impulsions en provenance d’une télécommande « non-RC5 » (et inversement),
il fournit un bref signal d’alarme :
• La LED rouge prise sur le port P3 0 clignote brièvement
• Les sorties 0 à 6 du port P0 passent à
« 0 » (= le code n’est pas standard)
• Le bit 7 du port P0 donne un signal
clignotant
• On a un bref signal acoustique sur la
broche 16 (bit P4 5)
Le schéma ne requiert qu’une description
succincte :
Le détecteur IR (infrarouge), le TSOP1736,
est connecté directement à l’entrée, la sor-
tie étant forcée au niveau haut par le biais
d’une résistance de 2kΩ2.
Une seconde entrée sert à l’interrogation
du cavalier JP1 (choix entre RC5 et Sony).
La sortie P0 sert à reproduire sous forme
hexadécimale le code RC5/Sony. Cette
sortie peut de ce fait attaquer directement,
au travers d’une résistance de 1 kΩ, des
entrées d’un autre ordinateur ou microcontrôleur, le but de l’opération étant que le
dit ordinateur/microcontrôleur réagisse au
code qu’il reçoit.
L’utilisateur pourra mettre la sortie P1 à
contribution pour piloter un « dispositif » numérique quelconque par le biais
d’un circuit d’interfaçage de son cru (K2
peut être chargé à concurrence de 15 mA
environ).
Des LED à faible consommation visualisent
l’état actuel des 8 bits du port P1.
La LED verte prise à la broche 20 sert d’indicateur « marche/arrêt » du circuit.
Rien n’interdit, en ce qui concerne l’alarme
acoustique reliée au port P4 5, d’utiliser un
résonateur piézo-électrique (zoomer), (ce
port pouvant être chargé à concurrence de
8 mA).
(070191-I)
123
Buggy Formule Flowcode
Un robot pas cher pour aller plus loin… que l’école
Bart Huyskens,
Institut St Joseph (Schoten, Belgique)
Venu d’une école belge, ce buggy robot de 125 €
a pour vocation d’inverser la tendance actuelle,
de rendre le goût de l’étude de l’électronique et de
la technique en Europe et qui sait, plus loin aussi.
Parmi bien d’autres, dans la fraternité des professeurs d’ingénierie,
l’auteur s’aperçoit de plus en plus que l’électronique, comme la
plupart des activités orientées vers la science et la technologie,
n’a plus la cote auprès des jeunes. Pour des gens qui ont grandi
dans la fascination envers la technique, le constat est douloureux
et combien paradoxal quand on voit tous ces jeunes séduits par
quantité d’ustensiles électroniques comme les i-pods, les caméras
numériques ou les téléphones mobiles. On ne sait trop pour quelles raisons l’école rate l’occasion de déployer les efforts voulus
pour surfer sur cet intérêt et attirer les jeunes vers les carrières
techniques.
De longues et intenses réflexions ont été consacrées à trouver des
remèdes et d’abord à identifier les difficultés réelles, sans perdre
de vue le fait que l’électronique a des aspects mathématiques, que
certaines matières sont difficiles à comprendre et peuvent présenter une image ennuyeuse. On a essayé toutes sortes d’idées,
certaines ont fourni de bons résultats, mais pas suffisamment. Il
y a une exception qui sort du lot : Lego. Le robot NXT de Lego a
l’air cool, il l’est réellement et amusant à utiliser. Mais il coûte cher,
n’apprend pas vraiment grand-chose sur l’électronique, on ne peut
pas aller lui jeter un oeil « sous le capot » ni l’utiliser comme plateforme pour étudier plus que des programmes simples.
Il y a environ six mois, lors d’une conversation avec des ingénieurs de Matrix Multimedia en Angleterre, a surgi une inspiration
qui pouvait évoluer pour résoudre la question : un robot buggy
à programmer soi-même qui offrirait davantage de fonctions que
celui de Lego, qui présenterait une architecture ouverte et servirait à toute une gamme d’activités dans l’enseignement et l’étude
de l’électronique et de la technique. Depuis, nous avons travaillé
ferme pour donner vie à cette idée et nous avons baptisé le projet
« Formula Flowcode ».
Formule Flowcode est une solution robotique complète, tant maté-
19
2
5
4
17
Bouton de remise à zéro
4. LED d’indication de
16
Connecteur de l’alimentation
externe 5V
13
6
7
Connecteur USB
3. 5. 1
8
µC PIC18F4455
2. programmation
18
3
1. 6.
Interrupteur de mise sous tension
7. Châssis plastique avec
compartiment à piles, moteurs,
réducteurs et deux roues
8. 12
14
Circuit intégré de commande du
moteur : un L293D
9. Microphone et amplificateur BF
10. Bouton poussoir configurable
9
11. Capteur de proximité - droite
10
12. Capteur de proximité - centre
11
13. Capteur de proximité - gauche
14. Capteur de lumière
15
15. Module de suivi de ligne
16. 8 LEDs configurables
17. Volume
18. HP
19. Connecteur pour E-blocks
Figure 1. Les différentes parties de Formule Flowcode.
124
elektor - 7-8/2007
Figure 2. Le schéma du PIC18F4455 a ici été simplifié, il ne montre que
les fonctions réellement utilisées des broches du PIC. D indique les E/S
numériques, A les analogiques.
rielle que logicielle, pour l’étude de l’électronique et de la programmation. Cet article va s’efforcer de décrire ce que Formule
Flowcode fait, comment ça marche et comment, nous l’espérons,
elle servira à apprendre tout ce qui concerne la robotique…
Nous y voilà
Figure 3. Le L293D est un circuit de pilotage de moteur
avec pont en double H.
La figure 1 donne une représentation de Formule Flowcode avec
une liste des composants et les caractéristiques du buggy. Comment tout cela fonctionne-t-il ? Commençons par le commencement. Le buggy tout entier est conçu au départ d’un nouveau
microcontrôleur très puissant, le PIC18F4455 de Microchip. Cette
puce à 40 pattes travaille à 24 MHz et exécute des programmes
à la vitesse impressionnante de 6 MIPS (méga-instructions pas
seconde). Un schéma de présentation de cette unité centrale se
trouve à la figure 2. L’appareil se branche sans intermédiaire à
votre port USB et contient une amorce de chargement qui vous
permet de le programmer à l’aide d’une version de Flowcode 3
livrée gratuitement avec le buggy. Le PIC18F4455 dispose de deux
sorties matérielles PWM, un UART, un bus I²C, des entrées analogiques, des interruptions par broche, par port et par temporisateur
ainsi qu’un tas d’E/S numériques.
En commande de moteurs à CC
Les deux moteurs à courant continu avec boîtes de vitesse séparées
sont alimentés par une classique puce L293D avec deux ponts en
H complets comme le montre la figure 3. Le sens et la vitesse de
chaque moteur peuvent se programmer séparément en Flowcode,
ce qui permet au buggy d’effectuer les déplacements les plus extravagants qui se puissent imaginer. Comme vous pouvez le voir sur
le schéma, le L293 utilise quatre sorties du PIC pour la commande.
Deux sorties (RE0 et RE1) déterminent la direction et deux signaux
PWM (fabriqués par le matériel) à RC1 et RC2 régissent la vitesse
de chaque roue.
Figure 4. Deux interrupteurs, huit LED et le connecteur de type D
pour E-blocks.
Possibilités d’extension des LED,
commutateurs et E-blocks
Le schéma du matériel pour les E/S est représenté à la figure 4. Les
huit LED et les deux interrupteurs en avant du buggy vous seront
très pratiques dans vos premiers pas en Flowcode et se montreront
encore plus utiles quand il s’agira de déboguer des logiciels plus
7-8/2007 - elektor
Figure 5. Les circuits du microphone, du haut-parleur et du
photocapteur.
125
dispose aussi d’un haut-parleur simple à haute impédance auquel
on peut faire reproduire des fréquences entre 100 Hz et 17 kHz.
Sur la face avant du buggy, il y a un petit capteur photosensible
qui fournit au véhicule la mesure de l’intensité lumineuse dans le
sens de progression.
Circuit infrarouge de mesure de distance
Le buggy est aussi équipé de trois capteurs de distance vers l’avant,
la gauche et la droite de la platine principale. La figure 6 en montre le schéma.
Chaque capteur est la combinaison d’une LED IR qui émet des
infrarouges et d’un phototransistor correspondant qui produit une
tension analogique inversement proportionnelle à l’énergie IR
réfléchie.
Figure 6. Le circuit de télémétrie à bord du buggy Formule Flowcode.
Circuit suiveur de ligne
Toujours à l’avant du buggy, il y a une petite carte fille porteuse de
deux transcepteurs infrarouges I²C intelligents capables de déceler
les surfaces noires et blanches à des distances comprises entre 1 et
6 mm sans la moindre erreur. Le circuit est représenté à la figure 7.
Ces capteurs permettent au buggy de pister des lignes sur une table
ou une moquette.
Alimentation
La source d’énergie est dévoilée à la figure 8, sous forme d’une
combinaison de pictogrammes avec le schéma, bien sûr. Le petit
châssis est alimenté par quatre accumulateurs NiMH AA qui fournissent entre 4 et 6,2 V. La platine dispose d’espace libre pour
des composants supplémentaire, vous pouvez y brancher une plus
grosse batterie et utiliser un régulateur de 5 V.
Figure 7. Le circuit suiveur de ligne.
Circuiterie additionnelle
complexes sur ce microcontrôleur PIC à 8 bits. En parallèle sur les
huit LED, Formule Flowcode est équipée d’un connecteur pour
E-blocks. Rien de plus simple, dès lors, de développer le buggy
en lui adjoignant des blocs standard tels que LCD, Bluetooth et
encore bien d’autres.
E/S sonore et capteur de lumière
Le buggy peut réagir au son (battement de mains) grâce à un microphone amplifié connecté à RB2. Comme le montre la figure 5, ce
capteur de sons peut s’utiliser comme entrée numérique, comme
interruption externe ou même comme entrée analogique. Le buggy
Outre ce qui vient d’être décrit, le châssis est aussi équipé d’un bon
nombre de connecteurs d’extension. On peut citer le bus I²C, des
entrées à roues codeuses, des entrées de servo et bien d’autres.
Pour utiliser Formule Flowcode
À présent, vous devriez vous faire une bonne idée de la manière
dont fonctionne le matériel et ce qui l’anime. Mais comment le
programmer, comment s’en servir, comment les étudiants saurontils ce qu’il faut faire ?
Le buggy de Formule Flowcode est livré avec une copie gratuite
(à fonctionnalités réduites) de Flowcode, un langage graphique de
programmation des microcontrôleurs. Avec Flowcode, l’utilisateur
peut charger directement le logiciel par un câble USB. Après quoi,
il n’y a plus qu’à débrancher le câble USB, à pousser sur le bouton
de mise à zéro et le buggy exécute le programme.
Des cours pour une course
Figure 8. Simple mais incontournable, l’alimentation en énergie.
126
La nouvelle version de Flowcode contient un composant à modulation en largeur d’impulsion (PWM) pour la commande de moteurs.
Comme Flowcode est à présent disponible en une dizaine de langues, en ce compris le chinois, il pourra servir à des enfants à partir
de 12 ans virtuellement partout dans le monde.
Le robot buggy s’appelle officiellement « Formula Flowcode »,
d’après la Formule Ford dans laquelle toutes les voitures sont identiques, pour gagner, il faut être le meilleur pilote. Dans notre cas,
ce sont les talents de programmation du concurrent qui sont mis
à l’honneur. Comme vous l’avez deviné, il y a un certain nombre
de « leçons » à étudier pour améliorer son niveau de compétence.
Ces cours commencent par l’allumage d’une simple LED et vont
jusqu’à être capable de retrouver son chemin dans un labyrinthe
elektor - 7-8/2007
en utilisant un châssis sur mesure, des roues codeuses
et tout ce que vous voulez. C’est bien là l’idée ingénieuse de Formule Flowcode, parce qu’elle convient à
des débutants en robotique comme en électronique,
mais propose un défi considérable à ceux qui ont déjà
acquis les connaissances voulues en électronique et en
science informatique.
On trouve dans ces cours des sujets tels que :
• allumer une seule LED ;
• réaliser un effet de « NightRider » sur la face de Formule Flowcode ;
• développer un programme qui utilise le photocapteur
embarqué pour suivre le faisceau d’une lampe torche ;
• développer un programme pour faire danser Formule
Flowcode sur la musique. À chaque battement de mains,
elle tourne de 90 degrés ;
• développer un programme pour lui faire suivre une
ligne de deux mètres de long en toile isolante noire ;
temps à battre, 30 secondes ;
• développer un programme qui permet à Formule
Flowcode de sortir d’un labyrinthe à 64 cellules en utilisant la technique du mur de gauche.
Ces cours sont présentés aux étudiants sous la forme
de tableaux basés sur les tâches à accomplir. Certai-
Figure 9. Exercice typique de suivi de ligne.
Arrêt au stand ! Comment participer ?
Le robot buggy Formule Flowcode a été développé dans le but de motiver les gens qui veulent en savoir davantage sur la robotique
et l’électronique, dès l’âge de 12 ans pour les jeunes curieux de s’instruire et jusqu’aux retraités tout heureux d’avoir enfin l’occasion de
connaître le sujet et de se maintenir intellectuellement dans le mouvement. Aux États-Unis, le First Robotics programme (www.usfirst.org) a
remporté un vif succès dans l’industrie auprès des ingénieurs, les stimulant à collaborer avec des jeunes pour s’aventurer dans des compétitions entre robots. Nous avons l’espoir de réaliser quelque chose de comparable ici, en proposant matériel et logiciel d’un robot à bon
compte, un soutien en ligne et un plan d’apprentissage de qualité. L’organisation d’ateliers et de compétitions devrait attirer du monde à
s’intéresser aux choses de l’électronique. Si vous estimez que pareil objectif est valable et a des chances de réussir, si vous souhaitez participer à ce programme ou si vous êtes intéressé par les concours et les ateliers, faites-le nous savoir. Si le niveau d’enthousiasme est élevé,
nous écrirons d’autres articles sur le sujet et nous publierons une édition spéciale pour les lecteurs d’Elektor. Vous pouvez contacter l’auteur
et ses collègues par courriel adressé à [email protected] ou par l’intermédiaire d’Elektor.
Vous pouvez vous procurer un buggy Formula Flowcode auprès de l’e-choppe d’Elektor au prix de 125 € TVA incluse.
nes proposent la compétition, en termes de durée ou
de fonction, et peuvent constituer la base de concours
régionaux, en espérant qu’Elektor et les pouvoirs animateurs de l’enseignement les organisent à travers
l’Europe. D’autres cours visent l’amusement ou l’exploration détaillée de caractéristiques techniques et de
programmation.
Le forum sur le site Internet de Matrix Multimedia, accessible via www.matrixmultimedia.com se tient à la disposition de chacun pour se poser des questions les uns
aux autres et échanger des programmes. Nous avons
le projet d’organiser des ateliers pour jeunes, qui les
aideraient à démarrer et aiguiseraient leur intérêt pour
la technique.
En complément à cela, Elektor va publier un livre qui
conduira l’utilisateur à travers les arcanes de la conception de programmes et de circuits additionnels pour
le buggy. On disposera alors d’une suite complète de
tutoriels pour apprendre aux jeunes enthousiastes jusqu’à seize ans tout ce qu’il faut savoir pour construire
des appareils électroniques en se familiarisant avec la
technologie.
(070323-I)
7-8/2007 - elektor
Figure 10. Résoudre par la gauche un problème de labyrinthe.
127
Commande de volume automatisé
Raj K. Gorkhali
+5V
IC2.A
1
14
2
IC2
2
10
+
10k
3
IC1
C1
10µ
CT
T1
4040
11
12V
1
4
5
6
7
8
CT=0
9
BC547
10
MIC1
11
S1
3
5
R2
7
6
5
3
2
4
IC2.C
11
12
R3
1k
0
CTR12
9
1k
16
P1
100k
R5
IC2.B
4
13
12
14
15
10
IC2.D
9
6
R4
1k
7
R6
R1
1k
13
10k
De la musique, des sirènes ou de la parole
à un niveau plus élevé en réponse à des
niveaux de bruit ambiant plus importants ?
Ce simple circuit est l’une des solutions
possibles et pourrait permettre à votre
robot d’être au moins aussi bruyant ou
loquace que tous les autres personnages
présents dans le secteur.
Les sous-ensembles constitutifs de cette
électronique : un microphone, un détecteur de niveau, un compteur 4 états et un
quarteron de commutateurs analogiques
reliés à un réseau résistif en échelle.
Un coup d’oeil au schéma nous apprend
que le signal fourni par le microphone
électret Mic1 est amplifié par le transistor
T1 dont on retrouve la tension de collecteur aux bornes d’un potentiomètre. Mic1
reçoit sa tension de polarisation (bias) par
le biais de R6. En fonction de la position
de P1, le compteur 4040 se voit appliquer
une impulsion d’horloge en cas de dépassement d’un niveau sonore donné (seuil).
L’état du compteur (son contenu) détermine la configuration des 4 commutateurs
électroniques intégrés dans le 4066 et du
même coup la résistance série intercalée
dans la ligne qu’emprunte le signal audio.
L’alimentation du circuit se fera à l’aide
doit d’une alimentation de 5 à 9 V régulée
soit par une pile compacte sachant qu’il ne
consomme que quelques milliampères.
1
8
8
RESET
IC2 = 4066
070034 - 11
Le bouton S1 permet de réinitialiser le
compteur, ouvrant tous les commutateurs
du 4066, ce qui se traduit par l’application
de l’atténuation maximale dans le trajet du
signal audio vu que dans ces conditions,
aucune des résistances de 1 kΩ ne se
trouve court-circuitée.
Il vous faudra, en vue de calibrer l’électronique, déconnecter l’entrée d’horloge
du 4040 (broche 10) du curseur de P1,
la mettre momentanément à la masse au
travers d’une résistance de 100 kΩ. Appliquez maintenant une impulsion à l’entrée
d’horloge en connectant cette broche brièvement à la ligne positive de l’alimentation; vous verrez les sorties du compteur
changer d’état ce qui se traduit par le changement d’état des commutateurs double
position intégrés dans le 4066.
(070034-I)
Un robot
avec une mémoire d’éléphant
B. Broussas
Si les applications robotiques ludiques
peuvent généralement se satisfaire des
quelques octets à quelques centaines
d’octets de mémoire Flash dont dispose
aujourd’hui la majorité des microcontrôleurs ; certaines applications plus « sérieuses » ou plus complexes ont besoin de
capacités mémoire beaucoup plus importantes. Un robot mobile peut ainsi avoir
en mémoire la cartographie complète d’un
lieu sous forme de coordonnées telles que
128
celles fournies par un GPS par exemple.
Ou bien alors il peut être chargé de collecter une grande quantité d’informations
délivrées par ses capteurs.
En présence d’une telle situation, il est
bien sûr possible de réaliser une ou des
cartes mémoires spécifiques en utilisant les
boîtiers EEPROM Flash de forte capacité
existant aujourd’hui sur le marché. Cette
approche se heurte toutefois assez vite à
de nombreux problèmes. Le premier est
celui de la réalisation des circuits imprimés nécessaires. En effet, la majorité des
mémoires de ce type n’est disponible
qu’en boîtier CMS dont la densité des pattes rend la réalisation d’un circuit imprimé
par l’amateur délicate, sans parler de la
difficulté qu’il y a ensuite à souder correctement de tels circuits. Le deuxième problème est que ces mémoires étant surtout
destinées au marché professionnel, il est
parfois très difficile de se les procurer sur
le marché amateur.
Nous vous proposons donc, avec cet article, une solution originale à ce problème
pour peu que votre robot soit équipé d’au
elektor - 7-8/2007
7-8/2007 - elektor
2k2
2k2
2k2
3k3
3k3
3k3
moins un microcontrôleur PIC et que vous
répond. Divers registres internes aux signifiNous n’allons pas détailler ici les seize insacceptiez de le programmer en Basic. Il
cations bien précises sont également à notre
tructions disponibles pour manipuler les
s’agit là de contraintes relativement légères
disposition. Enfin, le positionnement des
cartes SD et ce d’autant que vous pouvez
vous en conviendrez, surtout lorsque vous
données dans la carte ne se fait pas « n’imtélécharger gratuitement le manuel de ce
saurez qu’en procédant de la sorte vous
porte comment » mais respecte un principe
compilateur (en langue anglaise uniquepourrez doter votre robot d’un giga-octet
similaire à celui que l’on rencontre sur les
ment) sur le site de son éditeur. Sachez
de mémoire, voire plus, pour seulement
disquettes et disques durs avec, notamment,
seulement que le recours à ce produit faciquelques dizaines d’euros !
une FAT (File Allocation Table) qui indique
lite énormément, et encore le mot n’est pas
La mémoire que nous avons retenue est
où sont rangées les données contenues de
assez fort, la gestion de telles cartes.
tout simplement de la mémoire vendue
ce fait dans des fichiers.
Ainsi par exemple, si vous avez rempli une
sous forme de cartes SD (Secure Digital
Même s’il est possible de gérer toutes ces
zone de mémoire tampon (un buffer pour
Card), initialement destinées aux appainformations en écrivant soi-même les
parler comme nos amis Anglais) et que
reils photos numériques et autres balasous-programmes nécessaires en langage
vous souhaitiez la stocker dans la carte
deurs. Cette mémoire est en effet très peu
machine, c’est là une tâche longue, fastiSD, il vous suffira d’écrire :
dieuse et source d’erreurs.
coûteuse aujourd’hui (environ 10 € pour
Fort heureusement, si l’utilisation d’une telle
status = Mmc _ Write _ Sector
1 giga-octet au moment où ces lignes sont
écrites), très compacte et d’une fiabilité à
carte mémoire dans votre robot vous inté(numero, buffer) où :
toute épreuve dès
lors que vous ne
• status est une
dépassez pas le
variable qui contient
nombre maximum
un code numérique
11
32
de cycles d’écrirenvoyé par la com+5V
3V3
1
40
ture, qui se chifmande indiquant le
MCLR/VPP
RB7/PGD
39
RB6/PGC
fre en centaine de
résultat de son exé2
38
RA0/AN0
RB5
C2
C3
C1
milliers, voir en
cution (0 pour un
3
37
RA1/AN1
RB4
millions selon l’opsuccès, 1 pour une
4
36
10µ
220n
10µ
RA2/AN2
RB3
5
35
timisme des fabrierreur lors de l’envoi
RA3/AN3
RB2
6
34
RA4/T0CKI
RB1
cants ...
de la commande, 2
7
33
RA5/AN4/SS
RB0
L’interfaçage matépour une erreur lors
8
RE0/RD/AN5
riel d ’une telle
de l’écriture propre9
15
RE1/WR/AN6
RC0/T1CKI
10
16
mémoire avec un
ment dite).
RE2/CS/AN7
RC1/CCP2
17
microcontrôleur
• nu m ero est le
RC2/CCP1
13
18
OSC1/CLKIN
RC3/SCK/SCL
PIC est relativenuméro du secteur
14
23
OSC2/CLKOUT
RC4/SDI
ment facile car les
de la mémoire SD
PIC18Fxxx
mémoires de type
dans lequel on sou19
24
RD0/PSP0
RC5/SDO
R6
R4
R3
20
25
SD disposent d’un
haite écrire (nous
RD1/PSP1
RC6/TXD
8
21
26
7
RD2/PSP2
RC7/RXD
DOUT
mode de fonctionvous avons indiqué
22
6
RD3/PSP3
GND
nement compatible
ci-dessus que le ranCarte
SD
27
29
5
RD4/PSP4
RD6/PSP6
SCK
en mode SPI
de l’interface série
gement des données
28
30
4
RD5/PSP5
RD7/PSP7
+3V3
Vue côté contacts
3
synchrone de type
ressemblait à ce que
GND
2
SPI présente sur ces
l’on trouvait sur un
DIN
12
31
1
CS
microcontrôleurs.
disque dur ; en voici
R5
R2
R1
9
La seule précaution
la matérialisation).
à prendre concerne
• buffer est l’étiles niveaux électriquette repérant le
070318 - 11
ques car ces cartes
début d’une zone
mémoire travaillent
de mémoire tampon pouvant conteen 3,3 volts alors
que, le plus souvent, les PIC de nos robots
resse, sachez qu’il existe un compilateur
nir jusqu’à 512 octets puisque c’est la taille
Basic (pour microcontrôleurs PIC seuledes secteurs de la carte SD.
sont alimentés en 5 volts. La figure ci-jointe
propose un schéma utilisable avec tous les
ment au moment où ces lignes sont écrites)
microcontrôleurs PIC de la famille PIC18
disposant d’une bibliothèque de gestion
La lecture des informations stockées sur
de Microchip.
complète de cartes mémoires de type SD
la carte SD et leur transfert en mémoire
Par contre, le problème est nettement
câblées comme indiqué sur notre figure.
vive du processeur du robot est tout aussi
plus délicat pour ce qui est du logiciel de
Il s’agit du compilateur MikroBasic de
simple et se résume à une seule ligne de
gestion de ces cartes mémoires. En effet,
Mikroelektronika que vous pouvez découcode :
contrairement à ce que l’on pourrait croire
vrir sur le site Internet de son éditeur
de prime abord. Il ne s’agit pas de simples
(www.mikroelektronika.co.yu) et dont il
status = Mmc _ Read _ Sector
mémoires EEPROM Flash à accès série
existe une version de démonstration fonc(numero, buffer) où :
mais de modules dotés d’une intelligence
tionnelle permettant de le tester avant
locale. Il n’est donc pas possible de lire
tout achat. Outre les fonctions classiques
• status est une variable qui contient
ou d’écrire directement dans ces mémoires
présentes sur tous les compilateurs Basic
un code numérique indiquant le résultat
comme vous le feriez par exemple avec
pour PIC dignes de ce nom que l’on trouve
de l’exécution de la commande (0 pour un
une banale EEPROM à accès série telle
aujourd’hui sur le marché, il dispose d’une
succès, 1 pour un échec).
qu’une 24C16 par exemple.
bibliothèque de gestion complète de car• numero est le numéro du secteur de la
Le dialogue doit respecter un protocole
tes mémoires de type SD (et également de
mémoire SD que l’on souhaite lire.
précis car la carte ne comprend qu’un certype Compact Flash mais ce n’est pas le
• buffer est l’étiquette repérant le début
tain nombre de commandes auxquelles elle
propos de cet article).
d’une zone de mémoire tampon dont la
129
taille doit être au moins de 512 octets ;
zone qui va recevoir les données lues dans
le secteur sélectionné sur la carte.
Comme vous pouvez le constater, il est
difficile de faire plus simple même si, dans
le cadre de cet article nécessairement syn-
thétique, nous avons passé sous silence les
instructions de gestion de la FAT de carte.
Ces dernières sont toutefois d’usage beaucoup moins courant une fois que la structure de la carte est définie et un exemple
commenté et détaillé est fourni à leur sujet
dans le manuel du compilateur.
Alors, si votre robot a besoin de beaucoup
de mémoire, prêtez-lui la carte SD de votre
appareil photo et faites un tour du côté de
chez Mikroelektronika (www.mikroelektronika.co.yu).
(070318-I)
Lucioles chaotiques à LED
Jonathan Hare
1
+9V
Coupler des oscillateurs à LED permet de
produire des effets intéressants pour donner à votre robot un look spectaculaire et
exclusif.
Comme on le voit dans le schéma de la
figure 1, au lieu d’utiliser la broche de
décharge du 555, le condensateur se charger et se décharger par la sortie, en intercalant une résistance d’ajustement P1. Si nous
supposons que la résistance de sortie du
555 est très basse (ce sera le cas avec un
555 bipolaire plutôt qu’un CMOS), il produira un rapport cyclique de 50 % à une
fréquence indépendante de la charge. Mais
si nous augmentons délibérément la résistance de sortie par le biais d’une résistance
en série (R1), le tempo devient dépendant
du courant consommé par la charge, parce
que R1 va effectivement faire tomber la
tension de charge disponible pour le circuit de temporisation P1/C3.
Imaginons à présent un certain nombre
de ces oscillateurs dont les sorties sont
connectées les unes aux autres par des
résistances de limitation et des LED bicolores (figure 2).
Il est possible de réaliser avec des oscillateurs et de LED des figures 1 et 2, chacun
avec son propre symbole, une constellation
telle que sur la figure 3, par exemple. La
cadence de chaque oscillateur dépendra
alors des autres oscillateurs, parce qu’ils
vont déterminer le courant qui circule dans
les LED. Supposons que toutes les sorties
soient hautes (ou basses), il n’y a aucune
différence de potentiel et donc aucun courant qui circule dans les circuits des LED.
Alors, tous les oscillateurs seront à la fréquence maximale. D’autres combinaisons
de sorties feront s’allumer certaines LED
et leurs courants affecteront le tempo de
chaque oscillateur. C’est la loi du chaos !
Les résistances R1 couplent les oscillateurs
entre eux dans ce but. Un interrupteur aux
bornes de chaque R1 permet de commander le couplage.
Régler la fréquence d’oscillation aux alen-
130
P1
C1
10µ
100k
7
4
8
S1
R
DIS
IC1
2
6
OUT
TR
3
R1
220 Ω
OSC(n)
555
THR
CV
5
C3
C2
10µ
100n
1
070141 - 11
2
680 Ω
LED bicolore
070141 - 12
3
OSC1
OSC3
OSC2
OSC4
070141 - 13
tours de 2 Hz à l’aide des P1 révèle la
complexité du clignotement des LED qui
passent du rouge au vert avec des extinc-
tions. Parfois, les LED semblent se mettre
d’accord et pulser de concert. On dirait
un peu une version électronique de ce qui
elektor - 7-8/2007
se passe dans la nature quand un groupe
de lucioles se rassemble dans un buisson :
leurs fluctuations se synchronisent et peutêtre notre petit circuit est-il une version
simplifiée de ce système de rétroaction
naturel nettement plus complexe.
En remontant la fréquence dans le voisi-
nage de 100 Hz, on peut varier le mélange
(le battement) des couleurs scintillantes
rouges et vertes pour obtenir une « vague »
de modification des couleurs à travers le
réseau de LED.
Ajouter des résistances sensibles à la
lumière (LDR) en série avec R1 pourrait
aider nos lucioles électroluminescentes
à se « voir » entre elles. Mais même sans
LDR, avec trois oscillateurs couplés ou
davantage, on peut déjà s’étonner à l’observation du comportement chaotique des
oscillateurs.
(070141-I)
Boîtes de construction EE de Philips
Luc Lemmens
Nombre de nos lecteurs, ceux de la génération précédente plus particulièrement,
ne manqueront pas de se souvenir de
ces légendaires boîtes d’expérimentation
EE (Electronic Engineer). Philips les a eu,
des années durant, de 1963 au milieu des
années 80, à son programme. Combien
d’électroniciens ne doiventils pas leur intérêt pour le
domaine d’activité qui est
devenu le leur à ces kits ?
Le but (non avoué) des premiers kits était bien entendu
de faire de la pub pour
les composants électroniques de Philips auprès des
amateurs, mais les années
passant, la complexité des
ensembles proposés n’a
cessé de croître, les désignant pour une utilisation
dans l’enseignement.
En fin des années 80, Philips a vendu ses kits d’expérimentation électroniques à
la société allemande Schuco
7-8/2007 - elektor
qui a continué de les proposer jusqu’au
milieu des années 90.
Moins connus sont les coffrets d’expérimentation ME (Mechanical Engineer) de
Philips, mais cela s’explique par le fait qu’ils
n’ont été sur le marché que pendant près
d’un lustre au cours des années soixante.
On ne sera guère surpris de pouvoir en
déduire que la série ME a connu un succès
moindre que celui des coffrets EE ce qui
explique que leur vie commerciale ait été
relativement courte. Et si vous faites partie,
tout comme le soussigné, de ceux qui s’y
sont frotté, vous aurez sans doute compris
la raison de leur échec commercial.
Les coffrets ME n’étaient pas en mesure
de concurrencer les autres systèmes de
construction mécanique tels que les très
populaires, à l’époque, Meccano
et Fischer Technik. De nombreuses pièces étaient bien trop fragiles
pour de petites mains enfantines et
maladroites et les montages proposés étaient, pour certains d’entre
eux, même funeste pour les pièces concernées. En particulier les
pivots utilisés avec les engrenages
servant à réaliser toutes sortes d’interconnexions avec les axes souffraient beaucoup dans certaines
applications et pouvaient, après un
projet déjà, être mis à la poubelle.
Heureusement qu’il était possible,
à l’époque, d’obtenir ces pièces
séparément.
Quelque soit la beauté sur papier de
certains des projets, ils ne pouvaient
131
guère prétendre à une palme
quelconque tant au niveau de la
solidité que de celui de la finition. De ce fait, de nombreuses
heures de montage donnaient
naissance à des constructions
mécaniques parfaitement capables de se « démonter » d’elles-mêmes. Les coffrets ME ne
connaissaient que les fixations
par pince, approche qui n’était
pas en mesure, dans bien des
cas, de supporter toutes les forces mécaniques mises en jeu.
L’aspect intéressant de la technique ME
était l’énorme diversité de constructions
qu’elle permettait de réaliser, d’horloges
mécaniques à des installations de pompage d’eau. Il y avait même des projets
de construction qui utilisaient aussi des
pièces de la série EE, une combinaison de
mécanique et d’électronique, à l’image du
véhicule de la photo. Il s’arrêtait automatiquement dès qu’il arrivait au-dessus d’une
surface sombre. De nos jours, il s’agit
d’une application on ne peut plus simple
ne requérant qu’un minimum de technologie, mais à l’époque, cela tenait, pour un
gamin, presque de la magie !
Philips a encore tenté d’intéresser les
enfants d’âge tendre à la mécanique en
vue d’en faire des clients pour leurs coffrets ME. En 1968, on lança sur le marché
Philiform, une technique de construction
très proche de celle de Lego Technic et qui
pouvait être utilisée en association avec les
pièces ME. L’année 1970 sonna
cependant le glas de ces matériaux de construction mécanique produits à Eindhoven, la
Ville Lumière des Pays-Bas.
Il nous faut cependant signaler
un point fort, sous l’aspect mécanique, du premier coffret ME, le
ME1200. Il était fourni dans un
coffret de bois à couvercle coulissant. Ceci a sans doute permis
une bonne conservation de ces
produits, ce qui explique que
l’on puisse en trouver, complet
ou presque, sur Ebay ou d’autres sites Web
de vente de particuliers. Il faut compter de
l’ordre de trente à quarante euros, en fonction de l’état de conservation bien entendu.
Comme c’est le cas pour tout ce qui a un
certain âge, il existe des collectionneurs
pour ce genre d’objets et on trouve de nombreux sites y faisant référence et donnant de
plus amples informations à leur sujet.
(070277-I)
Nouvelle brique moteur
Lego MINDSTORMS® NXT
Antoine Authier
En 2006, les briques Lego MINDSTORMS®
RCX se sont métamorphosées en briques
NXT. Elles surprennent par leurs formes
avant-gardistes. Au traditionnel pavé compact RCX, les ingénieurs Lego ont préféré
un profil « pistolet » pour le moteur NeXT
génération.
rotation lente sera perçue comme inconvénient dans les applications de vitesse.
Les données fournies par l’encodeur
rotatif optique permettent au logiciel
du boîtier NXT de déterminer l’angle de
rotation au degré près. Faute d’avoir disséqué la brique, nous ignorons comment
cette précision est obtenue alors que le
disque codeur ne présente que douze
crans. Deux ensembles électroniques
sont présents dans la brique : d’une part
le module de conditionnement du signal
provenant du capteur optique, d’autre
part le module de protection contre
les surcharges éventuelles. Celui-ci est
Cette brique comprend à la fois un
moteur, un encodeur rotatif et un réducteur de vitesse à engrenages. Son poids
atteint les 80 g !
Le moteur à courant continu semble de
type standard. Il se situe sous le logo Lego,
dans le cylindre gris clair de plus grand
diamètre. Il est alimenté par une tension
de 9 V et consomme 60 mA à vide pour
une vitesse de 170 tours/minute (360 t/mn
et quelque 3,5 mA pour un moteur RCX).
Le réducteur de vitesse interne permet
d’augmenter le couple disponible sur le
disque de sortie, ce qui est intéressant pour
les applications de force. En revanche, la
132
elektor - 7-8/2007
constitué d’un fusible Polyswitch ® réarmable contre les courants trop forts, et
d’un limiteur de surtensions à 15 V.
À une extrémité de la brique, se trouve le
disque d’entraînement, de couleur orange.
À l’autre extrémité se trouve le connecteur
pour l’alimentation et la sortie de données.
Il est de type RJ11 et détrompé afin d’éviter
Liens Internet
la confusion avec un cordon téléphonique
standard.
[1] Philo’s NXT® motor internals :
www.philohome.com/nxtmotor/
nxtmotor.htm
Les lecteurs intéressés trouveront les caractéristiques et les vues des entrailles de la
brique sur les pages de Philo [1], [2].
[2] Lego ® 9 V Technic Motors compared
characteristics :
www.philohome.com/motors/
motorcomp.htm
(070371-I)
Dompteur de couleurs
U+
T4
Nivard van de Boogaard
Pour éviter de charger excessivement les
sorties du circuit intégré IC1, nous avons
ajouté les transistors T1 à T3. Dès qu’une
sortie du compteur passe à l’état actif
(haut), le transistor devient passant et un
5
1
2
R4
3
CKB
T1
QA
CKA
IC1
QB
(HCT)
7493
QC
R0(1)
QD
R0(2)
12
T2
9
T3
8
11
R3
150 Ω
14
10
R2
R1
150 Ω
S1
1k
Ce circuit simple permet d’utiliser
facilement trois LED ou une LED
RVB (rouge-vert-bleu). Le commutateur S1 fait avancer continuellement la valeur de sortie (numérique) du compteur IC1, de type
HCT7493. Ainsi une nouvelle LED
ou combinaison de plusieurs LED
s’allume constamment ou bien,
dans le cas d’un LED tricolore,
la couleur change constamment.
Après avoir atteint la valeur maximale, le compteur recommence
par la plus petite. Toutes les combinaisons possibles se présentent
sans qu’il soit nécessaire de prévoir un système de remise à zéro.
Intéressant pour agrémenter un
robot, mais l’effet est également heureux
dans un PC personnalisé.
150 Ω
Réglage de
LED RVB
D1
LED RVB
070025 - 11
courant traverse la LED. Ce courant est
limité par les résistances R1 à R3.
Le type de transistor utilisé pour T1 à T3
n’est pas critique. Les LED ordinaires ne
consomment guère qu’une vingtaine de
milliampères. Un BC337 convient parfaitement, un BC547 aussi. Le transistor T4
permet de couper l’alimentation des LED.
C’est pratique par exemple dans
le cas du montage dans un coffret
de PC. Tant que le circuit IC1 est
alimenté, l’état du compteur est
conservé et avec lui la composition correspondante de la lumière
des LED ou de la LED RVB. Ainsi
il n’est pas nécessaire de redéfinir
la couleur chaque fois que le PC
est redémarré. Il est évident que
T4 doit supporter un courant supérieur à celui de T1 à T3, mais un
BC547, avec un courant de collecteur maximal de 100 mA, n’est pas
encore à sa limite.
Nous utilisons R4 pour fixer au
niveau bas l’entrée d’horloge
quand l’interrupteur est ouvert.
Le compteur HCT7493 est un
compteur binaire à quatre bits
constitué de quatre bascules maître-esclave qui constituent un diviseur par deux et un diviseur par
quatre. Les entrées RO(1) et RO(2)
permettent la remise à zéro des deux sections. Comme cette fonction est inutilisée
dans notre application, RO(1) et RO(2) sont
reliées à la masse pour éviter les parasites. De même, on peut éviter les parasites
sur l’entrée d’horloge CKA en la reliant au
pôle positif de l’alimentation.
(070025-I)
De battre, mes mains l’ont arrêté
Raj. K. Gorkhali
Applaudissez, vous ferez obéir vos appareils électriques ! Qu’ils s’agisse de la télé,
d’un ventilateur, de l’éclairage ou d’accessoires quelconques, ce circuit vous permet
d’en allumer ou éteindre quatre à l’aide de
relais à bascule.
7-8/2007 - elektor
Dans le schéma, on voit le microphone à
condensateur (électret) M1 branché à l’entrée du préamplificateur T5. Le signal capté
par le micro y est amplifié avant de l’appliquer à l’entrée (broche 2) du temporisateur
555 en configuration de monostable dont
la sortie est employée comme horloge du
compteur 7490.
Chaque fois qu’une impulsion arrive à
l’entrée d’horloge (broche 14) de IC2,
elle produit un code à quatre bits sur
les quatre sorties de la puce. Par exemple, quand la première impulsion arrive à
l’entrée TRIG du 555, le code binaire en
133
+5V
D1
+5V
1N4148
R1
R8
RE1
+5V
T1
1k
10k
R7
3k3
R6
100k
10k
sortie du 7490 devient 0001, la
deuxième impulsion y formera
0010 et ainsi de suite. Lors de la
15e impulsion, la sortie affichera
1111. Encore une impulsion et
IC2 reviendra alors automatiquement à l’état originel 0000.
R5
Les quatre sorties du compteur
commandent chacune un transistor, T1 à T4, lesquels pilotent
à leur tour les quatre relais RE1 à
RE4 dont les contacts commandent les appareils. Quatre diodes de redressement D1 à D4
sont branchées en parallèle sur
les bornes des bobines de relais
C1
pour éviter que les extra-cou100n
rants de rupture ne dérangent le
MIC1
fonctionnement du circuit.
On peut mettre à l’épreuve le
montage de façon très simple.
On l’alimente en 5 ou 6 V régulé.
Momentanément, on débranche
l’entrée CLKA du 7490 de la sortie du 555. Brancher alors un fil
à l’entrée CLKA permet de toucher la ligne positive de l’alimentation. À chaque impulsion d’horloge ainsi
créée, RE1, RE2, RE3 et RE4 vont alors s’exciter ou retomber dans l’une des 16 configurations différentes.
Il faut alors rétablir la connexion entre IC1
et IC2. Frappez dans les mains à proximité
du microphone, les relais doivent répéter
BC547
5
8
7
C2
100n
T5
2
6
4
R
DIS
B
14
OUT
TR
LM555C
THR
CV
3
2
3
6
7
1N4148
QA
IC2
A
IC1
1
BC547
1
74LS90
QB
R0(1)
R0(2)
QC
R9(1)
R9(2)
QD
R2
12
C3
10n
10n
RE2
T2
1k
+5V
9
8
D3
BC547
RE3
11
1N4148
5
C4
D2
10
R3
+5V
T3
1k
BC547
D4
1N4148
R4
RE4
T4
1k
070092 - 11
le cycle de la même manière. Enfin, il vous
reste à brancher les appareils voulus aux
contacts des relais.
Il est recommandé d’utiliser une tension régulée de 5 V pour ce circuit. Les
contacts des relais doivent être prévus
pour une tension alternative de 230 V et
BC547
pouvoir supporter le courant demandé par
les appareils.
Il y a lieu de prendre toutes les précautions requises quand on travaille sur des
appareils alimentés par le secteur, en particulier ici les contacts des relais.
(070092-I)
Robot marcheur hexapode
Joseph Kopff
Cette réalisation n’a pas d’autre but que
de vous amener à expérimenter et à
vous amuser de voir comment les choses
évoluent.
Ce robot « à moustaches » présente un
comportement tout à fait classique en robotique : il avance en ligne droite. En l’absence
d’obstacle il poursuit son petit bonhomme
de chemin. Lorsque sa moustache gauche
détecte un obstacle, il recule un peu, tourne
à droite et reprend sa marche en avant. Si
c’est la moustache droite qui détecte un
obstacle, il recule un peu, tourne à gauche
et reprend sa marche en avant.
Son originalité se situe au niveau de la
mécanique.
Le châssis repose en effet sur un lecteur de
disquette (floppy 3,5») débarrassé de tous
ses composants électroniques et mécaniques. On a fixé, sur chacun de ses côtés,
une plaquette de plexiglas qui sert de support aux pattes. Cette plaquette que l’on
134
elektor - 7-8/2007
retrouve sur le croquis de la figure 1, est
translucide ce qui explique qu’on ne puisse
pas bien l’identifier sur la photo.
1
Le groupe propulseur est constitué de
2 servomoteurs modifiés. Par suppression
de la liaison mécanique entre le potentiomètre interne et le pignon moteur, on
obtient des moteurs à vitesse variable commandés par largeur d’impulsion.
Si vous voulez en savoir plus sur la modification des servos pour en faire un moteur
commandé par impulsion, nous vous renvoyons au site :
Tube 1
Châssis
G
E
A
Patte 1
F
C
Patte 2
D
B
Patte 3
Sol
http://fribotte.free.fr/bdtech/pic/
servoCC.html (en français).
‘------------------------------------‘ Ces lignes correspondent au fichier «PIC16F84.
INC»
‘ définissant la valeur des registres du µp
(Microprocesseur)
‘ Elles devront être présentes dans tous les
programmes
‘
define INDIR 0H
define OPTION_REG
81H
define PCL 2H
define STATUS 3h
define FSR 4h
define PORTA
5h
define PORTB
6h
define _EEDATA
9Ah
define EEADR
9Bh
define PCLATH
0AH
‘
symbol btn1 “PORTA 0”
symbol btn2 “PORTA 1”
symbol btn3 “PORTA 2”
symbol btn4 “PORTA 3”
‘ Zone des variables
‘-------------------dim a,i
‘ début du programme
‘-------------------------‘ Mettre tous les pins du port B en sortie
‘
et
tous les pins du port A en entrée
start:
Init portb=00000000
Init porta=11111111
‘désactiver les comparateurs
CMCON=0x07
PORTB=0x00
boucle:
delayus(10)
a=INPORTA
ifnbit btn1 goto detectgauche
delayus(10)
a=INPORTA
ifnbit btn2 goto detectdroite
gosub avance
goto boucle
detectgauche:
for i=1 to 40
gosub recule
next i
for i=1 to 80
7-8/2007 - elektor
070333 - 12
gosub droite
next i
goto boucle
detectdroite:
for i=1 to 40
gosub recule
next i
for i=1 to 80
gosub gauche
next i
goto boucle
avance:
‘génère une impulsion de 2 ms sur moteur droite et
1 ms sur moteur gauche
PORTB=0x03
delayms(1)
PORTB=0x02
delayms(1)
PORTB=0x00
delayms(18)
return
recule:
‘génère une impulsion de 1 ms sur moteur droite et
2 ms sur moteur gauche
PORTB=0x03
delayms(1)
PORTB=0x01
delayms(1)
PORTB=0x00
delayms(18)
return
gauche:
‘génère une impulsion de 2 ms sur moteurs droite
et gauche
PORTB=0x03
delayms(2)
PORTB=0x00
delayms(18)
return
droite:
‘génère une impulsion de 1 ms sur moteurs droite
et gauche
PORTB=0x03
delayms(1)
PORTB=0x00
delayms(19)
return
end
‘ fin physique du prog.
135
Examinons les pattes d’un
côté du robot : ce sont les
mêmes de l’autre côté.
Les 3 pattes sont formées
d’un barreau de laiton de
6x2 mm.
Les pattes 1 et 3 pivotent
sur les axes A et B. Ces
axes sont solidaires du
châssis.
2
0Ω1
136
R2
10k
R1
servomoteur droit
+V
E
14
4
MCLR
C1
17
18
100µ
1
2
3
S2
GND
RB0
RB1
IC1
Les points E et F des patS1
tes sont reliées par une
contact
biellette, constituée d’une
gauche
tige de laiton de 3 mm,
sur laquelle on a soudé
en bout un écrou M3 en
laiton. Les trous E et F des
pattes sont taraudés, une vis de 3 mm y est
vissée à fond, l’écrou soudé sur la biellette
est mobile sur cette vis.
Une 2ème bielle (D-F) découpée dans un
morceau de tôle de fer transmet le mouvement du moteur aux pattes 1 et 3.
La patte 2 a un mouvement inversé par
rapport aux pattes 1 et 3. Elle se lève et va
en avant quand les pattes 1 et 3 descendent et vont en arrière.
La patte 2 est mise en mouvement par le
moteur au point C et guidée en translation
par le Tube 1. Elle est prolongée vers le
haut (soudure à l’étain) par un tube de laiton de 3 mm qui coulisse dans un tube de
laiton de 4 mm (noté Tube 1).
Le Tube 1 pivote librement sur l’axe G, qui est
solidaire du châssis.
Détail des points de rotation E, F et G :
L’axe de rotation du
point E (idem pour F) est
une vis de 3 mm vissée à
fond dans un trou taraudé
des pattes 1 et 3. La partie mobile est un écrou
M3, non bloqué sur cette
vis.
Ainsi la bielle EF soudée
à l’écrou peut tourner,
sans quitter la liaison aux
pattes. De même l’axe
de rotation du point G
est une vis fixée par
2 écrous au châssis. Le
point mobile est l’écrou
soudé au Tube 1.
Avantage de ce
système :
Toute la mécanique est
+5V
R3
10k
Sur la figure ci-dessus,
l’axe moteur est en C et
la transmission des mouvements se fait à partir
du point D excentré de
5 mm par rapport à l’axe
du moteur.
RB2
RA0
RB3
RA1
RB4
RA2
PIC16F628
RB5
RA3
RB6
RA4
RB7
6
7
servomoteur gauche
8
9
+V
10
E
11
GND
12
13
sés de façon symétrique
sur le châssis.
Donc, pour un mouvement en AVANT du
robot, il faut que l’un
des moteurs tourne dans
le sens horaire et l’autre
dans le sens antihoraire.
Les moteurs sont commandés de façon extrêmement simple : une
impulsion de 1 ms toutes
les 20 ms fait avancer le
moteur, une impulsion de
2 ms toutes les 20 ms fait
reculer le moteur.
Une impulsion de 1,5 ms
arrêterait le moteur, mais
l’absence d’impulsion
contact
produit le même effet.
droit
L’auteur n’a pas exploité
la vitesse variable dans
070333 - 11
cette expérimentation.
Le programme du PIC
en plastique et laiton, facile à usiner.
(disponible au téléchargement) a été écrit
Pas besoin d’outillage complexe : persous Win Pic Basic.
ceuse, scie et lime suffisent.
Le laiton peut être soudé avec un fer à souLes routines «delayms» et «delayus» produider d’électronicien (assez puissant tout de
sent, comme leur nom le suggère, un délai
même).
d’attente en ms ou en µs. Elles préexistent
dans ce langage de programmation.
OSC1
OSC2
16
15
5
L’électronique
La partie électronique du robot est basée
(cf. figure 2) sur un PIC 16F628, et 2 servomoteurs modifiés en moteurs à vitesse
variable, commandé en modulation à largeur d’impulsions.
Notez que les 2 servomoteurs sont dispo-
Possibilités
à suivre ...
Le circuit est réalisé sur une plaque à bandes cuivrées (genre Veroboard).
Tout est modulaire pour permettre d’autres
expérimentations : capteurs de proximité
à ultra-sons, capteurs de
lumière, etc. Pour cette
même raison, les capteurs
de contact ont été montés
sur une prise DB25 visible
à l’avant du robot.
En principe ce genre de
robot devrait toujours
reposer sur 3 pat tes,
soit 2 d’un côté et une
de l’autre côté. Mais il
n’a pas été prévu ici de
synchronisation entre les
mouvements des pattes gauches et droites,
ce qui provoque parfois
une marche bancale du
robot (il arrive qu’il soit
en équilibre instable sur
les pattes du milieu). Toutefois sa démarche reste
amusante et il ne peut
pas se renverser sur un
terrain plat.
(070333-I)
elektor - 7-8/2007
Robots footballeurs
Dans ce numéro Hors-Gabarit consacré à
la robotique, nous ne pouvons pas passer
à côté de la Robot-Coupe. Vous n’y couperez pas ! La RoboCup est un projet collectif international destiné à promouvoir la
recherche en intelligence artificielle, en
robotique et dans les domaines connexes. La base choisie est le football et
l’objectif final s’énonce comme suit.
En 2050, une équipe de robots humanoïdes complètement autonomes doit
être en mesure de battre les champions
du monde de football.
On peut apporter sa contribution dans
une ligue parmi quatre : la ligue de
simulation, la ligue des tailles petite et
moyenne, la ligue des quadripodes et
celle des humanoïdes. Dans la ligue
des tailles petite et moyenne (MSL),
Philips apporte sa contribution avec
une équipe.
Les robots MSL doivent être complètement autonomes. Toute l’intelligence
doit donc être située à bord et personne ne doit piloter le robot depuis
la ligne de touche. Pour jouer au football les robots Philips emportent à leur
bord les organes suivants :
• deux caméras Vision (une fixe vers
l’avant et une « omnicamera» ;
• un PC ;
• un automate programmable (PLC,
Programmable Logic Controller) ;
• un réseau sans fil ;
• quatre roues ;
• quatre capteurs pour la détection des
lignes blanches ;
• un manipulateur de ballon ;
• un mécanisme de tir ;
• des accumulateurs.
7-8/2007 - elektor
Les caméras Vision sont les yeux du robot.
Le robot filtre les images capturées et utilise les couleurs pour reconnaître le ballon,
les buts, les piquets de corner et les autres
robots. La caméra de face sert à l’orienta-
tion précise. L’omnicamera, pointée vers le
haut sur un miroir spécial, surveille l’environnement du robot et lui indique où il se
trouve et ce qui se passe autour de lui.
L’automate programmable surveille l’état du
robot : les accumulateurs sont-ils encore
chargés, le mécanisme de tir fonctionnet-il correctement etc. ? Le réseau sans fil
permet aux robots de la même équipe de
communiquer entre eux, pour leur éviter
de tenter de se prendre la balle les uns aux
autres et pour marquer. Les capteurs de
ligne blanche contribuent à déterminer la
position.
Le PC embarqué pilote les quatre roues par
un module spécial. Chaque roue peut être
actionnée et orientée individuellement. Il
est donc possible de poursuivre la balle
tout en effectuant une pirouette.
Le manipulateur de ballon doit le garder
aussi près que possible du robot, sans
jamais le tenir réellement. Il n’est pas
permis de coller le ballon. Le manipulateur de ballon fait en sorte que le
robot puisse se déplacer en arrière et
latéralement sans perdre le ballon. Le
manipulateur sert aussi au tir en avant.
Il maintient le ballon devant le mécanisme de tir, capable de l’expédier à
une vitesse de 30 km/h. L’énergie du
tir est délivrée par un ressort bandé en
quelques secondes pour être relâché à
l’instant choisi par le logiciel.
Le match met en jeu huit robots en
deux équipes de quatre. Ils jouent sur
un terrain de 12 m par 8 m ; le match
commence, au signal de l’arbitre, par
la recherche du ballon. L’art consiste
en suite à rouler vers le but adverse
avec le ballon pour marquer, en évitant bien sûr de se laisser prendre le
ballon. Dans le camp opposé, naturellement, le jeu consiste à prendre le
ballon à l’adversaire avant qu’il marque
un coup au but.
Comme les robots sont entièrement
autonomes, leur comportement doit
être programmé à l’avance. Les collisions sont sanctionnées par un carton
jaune, la récidive par un carton rouge
et l’exclusion. Dès que la fenêtre de tir est
suffisante, le robot tire au but. Il ne suffit
pas de tirer fort, la vitesse et la tactique
sont au moins aussi importantes.
(070359-I)
137
Et pourtant il marche !
Batteries
4V8
Piles
6V
24
Piles (6V)
Batteries (4V8)
22
5
6
+V
E
GND
7
8
9
10
Servo
11
+V
E
GND
12
1
6
21
VIN
2
SOUT
SIN
RES
ATN
IC1
P0
P15
P1
P14
P2
P13
P3
P12
P4
P11
P5
K1
* voir texte
CB220
P10
P6
P9
P7
P8
4
1
7
2
3
20
19
18
17
16
3
*
C1
100n
C2
8
4
9
5
*
100n
SUB D9
15
14
13
23
Servo
070353 - 11
C.Tavernier
Si la majorité des robots réalisée par les amateurs se
déplace au moyen de roues
ou de chenilles, deux catégories occupent une place
à part en raison de l’aspect
spectaculaire de leurs mouvements : le robot hexapode, appelé aussi robot
araignée (même si cette
dernière a en réalité huit
pattes !), et le robot marcheur. En effet, s’il peut
sembler relativement
facile de faire tourner
des roues au moyen de
moteurs, puisque c’est
là le seul besoin d’un
robot mobile classique,
reproduire la marche,
que ce soit celle d’un
insecte avec l’hexapode ou celle d’un
humain ave c
le robot marcheur, peut
paraître
nettement
plus
difficile.
Nous
allons
voir, avec cet article, comment y parvenir dans le cas d’un robot
marcheur que nous avons choisi d’acquérir
138
en kit pour ce qui est de sa partie mécanique. En effet, si tout bon bricoleur peut
aujourd’hui réaliser une base de robot
mobile « classique », c’est à dire à roues
ou à chenilles, la réalisation mécanique
d’un robot marcheur est beaucoup plus
délicate, principalement en raison de la
particularité de sa marche que nous décrirons dans un instant.
À notre connaissance il n’existe aujourd’hui
que 2 kits de mécaniques de robots marcheurs vendus à un prix abordable : le
célèbre Toddler de Parallax (www.parallax.com) et, plus près de chez nous, le Yeti
d’Arexx Engineering (www.arexx.com).
Comme ces deux robots fonctionnent quasiment de la même façon pour ce qui est
du principe de leur marche, nous avons
jeté notre dévolu sur le kit Yeti, distribué
en France par Lextronic (www.lextronic.fr),
car il est un peu moins coûteux que son
frère de chez Parallax. Mais sachez que
tout ce que nous allons écrire pour l’un
sera vrai, à des variantes mineures près,
pour l’autre.
Ces robots marcheurs se composent donc
tous deux de deux jambes rigides, en
ce sens qu’elles n’ont pas d’articulation
médiane sensée reproduire notre genou.
Elles sont constituées par deux bras (c’est
un comble pour des jambes !) formant un
parallélogramme, et sont munies de pieds
articulés de part et d’autre du plan formé
par ce dernier.
elektor - 7-8/2007
Bien que cela puisse sembler étonnamment
peu, il suffit de deux servos de radiocommande normaux, c’est à dire non modifiés,
pour faire marcher un tel robot. La première servo, clairement visible à l’avant du
robot, commande les pieds au moyen de
deux longues biellettes, tandis que l’autre,
placé sous le ventre du robot, agit sur le
bras arrière du parallélogramme de chaque
jambe. Le décor étant planté, voyons comment un tel personnage peut marcher.
Pour faciliter la compréhension de l’explication qui va suivre, nous allons utiliser
les appellations droite et gauche mais cela
n’est évidemment que tout relatif. Lorsque le robot est au repos, ses deux pieds
sont à plat sur le sol, l’un à côté de l’autre.
La servo des pieds tourne alors dans un
sens de façon à faire basculer le corps du
robot au dessus du pied gauche, ce qui
a évidemment pour effet de faire décoller
le pied droit du sol. La servo des jambes
tourne alors à son tour, ce qui fait avancer
la jambe droite qui est libre de se mouvoir
puisque son pied est décollé du sol. La
servo des pieds tourne ensuite dans l’autre
sens ce qui fait basculer le corps du robot
sur le pied droit et fait donc décoller maintenant du sol le pied gauche. Une nouvelle
rotation de la servo des jambes fait alors
avancer la jambe gauche qui est maintenant libre de se mouvoir, et le premier pas
est ainsi terminé.
Les condensateurs C1 et C2 appellent une
remarque : C1 et C2 ne sont à mettre en
place qu’en cas d’utilisation d’un BS II.
En cas d’utilisation d’un CB 220, C1 sera
remplacé par un strap et C2 ne sera pas
implanté, ses 2 plots restant ouverts.
Tout le reste n’est qu’affaire de programmation ; programmation reposant essentiellement sur l’instruction PWM dans le
cas du Cubloc et sur PULSOUT dans le cas
du Basic Stamp.
Pour faire marcher notre robot, et comme
vous l’avez compris à la lecture des explications qui précèdent, il suffit en effet de
faire tourner les servos alternativement
dans un sens ou dans l’autre et dans un
ordre bien défini.
Comme vous pouvez le constater à la lecture de ce texte, ou bien si vous avez déjà
regardé les vidéos disponibles tant sur le
site de Parallax pour son Toddler que sur
le site de Lextronic pour le Yeti, le robot
est en fait à la limite du déséquilibre permanent pendant sa marche, et celle-ci ne
peut fonctionner correctement que si les
masses qui le composent sont parfaitement
bien réparties et ... si les mouvements des
servos ne sont ni trop brusques, ni d’amplitude trop importante.
Même si ces deux kits de robots marcheurs peuvent être vendus avec des platines électroniques, parfois très élaborées
comme dans le cas du Yeti avec un processeur ATMega8 d’Atmel et son compilateur C ; un simple Basic Stamp II ou un
Cubloc CB 220 suffit pour faire ses premiers pas (au propre comme au figuré !).
Comme le montre la figure, valable pour
ces deux microcontrôleurs qui sont, rappelons-le, compatibles broche à broche, il
ne faut aucun composant actif autre que le
microcontrôleur lui-même pour faire marcher notre robot.
Elle génère, sur le port correspondant (0
pour P5 et 1 pour P6) un signal PWM dont
le rapport cyclique est défini conjointement par rapport et période. L’avantage du
Cubloc est que cette instruction permet la
génération permanente du signal correspondant, dès lors qu’elle a été appelée au
moins une fois.
Dans le cas du Basic Stamp, l’instruction
PULSOUT s’utilise de la façon suivante :
Les entrées de commande des servos sont
reliées à deux ports parallèles qui peuvent
être quelconques dans le cas du Basic
Stamp mais qui doivent impérativement
être P5 et P6 dans le cas du Cubloc CB 220
car ses instructions PWM ne peuvent fonctionner que sur ces deux là.
7-8/2007 - elektor
Nous vous proposons, en téléchargement
sur le site d’Elektor ou bien encore sur le
site de l’auteur (www.tavernier-c.com),
deux listings sources complets : un pour
Basic Stamp II et un pour Cubloc, destinés à faire marcher notre robot, mais voici
quelques commentaires afin que vous
soyez persuadés de leur simplicité et que
vous puissiez les adapter à vos besoins
sans difficulté.
Rappelons tout d’abord que, dans le cas
du Cubloc, l’instruction PWM s’utilise de
la façon suivante :
PWM port, rapport, période
PULSOUT port, durée
Elle génère une impulsion sur le port correspondant pendant un laps de temps égal
à 2 µs que multiplie la valeur du paramètre durée. L’inconvénient de PULSOUT par
rapport à PWM est que cette génération
n’est pas répétitive. Il faut donc nécessairement faire appel à des boucles si l’on
souhaite générer des impulsions répétitives, ce qui complique un peu la version
Basic Stamp du programme par rapport à
la version Cubloc.
Rappelons enfin qu’une servo se place
en position de repos lorsqu’il reçoit des
impulsions de 1,5 ms et qu’il se déplace
vers ses positions extrêmes dans un sens
ou dans l’autre pour des impulsions de,
respectivement, 1,0 ms ou 2,0 ms.
Dès lors, la compréhension de l’un ou
l’autre des listings proposés est évidente.
Ainsi, pour mettre les pieds du robot au
repos on écrit pour le Cubloc :
PWM 0, 3150, 32768
PWM 1, 3150, 32768
Et pour le Basic Stamp II :
FOR Pulses = 1 TO 100 STEP 5
PULSOUT TiltServo, 750
PULSOUT StrideServo, 750
PAUSE 25
NEXT
Ce qui fait générer, dans les deux cas, des
impulsions de 1,5 ms à destination des
deux servos et les place donc en position de repos. Notez que, dans le cas du
Cubloc, il convient d’ajuster les paramètres
3150 afin qu’ils amènent bien les servos
dans leurs positions de repos tandis que,
pour le Basic Stamp, il faut agir sur les deux
paramètres 750 pour la même raison.
Pour faire lever un pied, on écrira donc
en Cubloc :
FOR Position = 3150 TO 2850 STEP
-1
PWM 0, Position, 32768
DELAY 1
NEXT
Et en Basic Stamp :
FOR Pulses = 750 TO 620 STEP -5
PULSOUT TiltServo, Pulses
PULSOUT StrideServo, 750
NEXT
Remarquez le surcroît de « complexité »
induit par le fait que, contrairement à
PWM, PULSOUT ne fonctionne pas en
continu. Il faut en effet ajouter dans la
boucle de « levé de pied » du Basic Stamp
la génération des impulsions qui maintiennent au repos le servo des jambes. Dans le
cas du Cubloc cette génération est assurée
automatiquement par l’instruction PWM
qui l’a initiée lors de la mise en position
de repos des servos.
Nous vous laissons le soin d’analyser la
suite de ces deux listings vous-mêmes car,
comme vous pouvez le constater, ils ne
sont en fait que la succession des groupes d’instructions que nous venons de
voir avec, à chaque fois, des paramètres
numériques adaptés aux impulsions qu’il
faut générer pour amener les servos dans
les positions requises.
Précisons avant de conclure que ces deux
listings sont extraits : pour celui de Parallax
du site Internet de Parallax (www.parallax.
com) sur lequel nous vous incitons vivement à télécharger le document intitulé
« Advanced Robotics with the Toddler
Robot » (disponible en anglais au format
pdf) qui contient une très bonne étude sur
les différentes méthodes de programmation de la marche ; et pour le Cubloc du
site Internet de Lextronic (www.lextronic.
fr) que nous remercions tous deux pour
leur collaboration.
(070353-I)
139
La structure des fichiers HEX
Comment ça marchait donc ?
Luc Lemmens
Ce mois-ci, une histoire qui n’aurait en fait aucune raison d’être.
Lorsque l’on développe du logiciel pour un microcontrôleur, le compilateur ou l’assembleur devrait, en fin de processus, générer un
fichier pouvant être programmé dans la mémoire de programme.
Bien souvent, ce fichier aura un format connu sous le nom de IntelHEX (Intellec), un fichier qui comporte, outre le code-machine, également les adresses auxquelles ce code doit être placé. Il intègre
également des sommes de vérification (checksum) servant à s’assurer de la validité du code. En fait, la structure exacte de ce fichier
ne devrait pas présenter le moindre intérêt pour le programmeur, il
devrait lui suffire de programmer la mémoire pour être arrivé à ses
fins et en avoir terminé. Mais les choses se compliquent lorsque le
produit généré par l’assembleur ou le compilateur paraît différer de
ce à quoi on s’attendait. On se trouve, dans bien des cas, forcé de
mettre le nez dans le fichier .HEX pour voir ce qui sera vraiment
transféré dans la mémoire de programme. On découvre souvent
dans ce fichier les bits de configuration du contrôleur pour le paramétrage de l’oscillateur, du chien de garde, de la protection anticopie et autres paramètres similaires.
Les occasions d’examiner un fichier .HEX sont rares, ce qui explique
qu’il faille à chaque fois se creuser les méninges pour « y retrouver
ses petits ».
Un fichier .HEX est constitué d’enregistrements (records). Chacun
d’entre eux comporte son type, sa longueur, l’adresse à laquelle
doivent être placées les données et une somme de vérification. Il
existe 6 types d’enregistrements différents qui, au demeurant, ne
sont pas toujours tous utilisés :
• Data record (avec tous les formats)
• End of File record (avec tous les formats)
• Extended Segment Address record (pas pour les formats 8 bits)
• Start Segment Address record (pas pour les formats 8 bits)
• Extended Linear Address record (uniquement pour formats 32
bits)
• Start Linear Address record (uniquement pour formats 32 bits)
Chaque enregistrement présente la structure représentée en figure
1.
RECORD
MARK
’:’
1-byte
RECLEN
LOAD
OFFSET
RECTYP
1-byte
2-bytes
1-byte
INFO
or
DATA
n-bytes
CHKSUM
1-byte
Le champ INFO/DATA est constitué d’un certain nombre d’octets (cf.
RECLEN) dont l’interprétation dépend du type de l’enregistrement.
La somme de vérification est calculée à partir du complément à
deux de la somme des octets des champs allant de RECLEN au
dernier octet de INFO/DATA. L’addition de la somme des octets à
la somme de vérification a pour résultat « 0 ».
Extended Linear Address Record
(uniquement pour formats 32 bits)
RECORD
MARK
’:’
1-byte
RECLEN
‘02’
1-byte
LOAD
OFFSET
‘0000’
2-bytes
RECTYP
‘04’
1-byte
ULBA
CHKSUM
2-bytes
1-byte
Dans le cas de fichiers .HEX 8 bits on disposait de 2 octets (LOAD
OFFSET) pour indiquer l’adresse. Avec ce type d’enregistrement sont
définis, dans ULBA (Upper Linear Base Address), les bits 16 à 31
d’une adresse, le LOAD OFFET des enregistrements de données qui
suivent indiquant les bits 0 `a 15 de l’adresse absolue définitive.
Extended Segment Address record
(pour formats 16 et 32 bits)
RECORD
MARK
’:’
1-byte
RECLEN
‘02’
1-byte
LOAD
OFFSET
‘0000’
2-bytes
RECTYP
‘02’
1-byte
USBA
CHKSUM
2-bytes
1-byte
L’enregistrement à 16 bits Extended Segment Address spécifie les bits
4 à 19 de la SBA (Segment Base Address), les bits 0 à 3 de la SBA
sont à « 0 ». Le LOAD OFFET des enregistrements de données qui
suivent donne l’adresse finale.
Data record (pour tous les formats)
RECORD
MARK
’:’
1-byte
RECLEN
LOAD
OFFSET
1-byte
2-bytes
RECTYP
‘00’
1-byte
DATA
CHKSUM
n-bytes
1-byte
Ce dernier comporte au maximum 256 (RECLEN) octets de données,
LOAD OFFSET déterminant (en combinaison ou non avec ULBA
ou SBA) l’endroit de la mémoire où sera placé le premier octet de
données de l’enregistrement. Les octets suivants sont placés, incrémentalement, à l’adresse qui suit.
Les Start Linear Address record et Start Segment Address record
ne sont pas utilisés par les microcontrôleurs, de sorte que nous n’en
parlons pas dans le cadre de cet article.
Le début est identifié par un « : ». RECLEN indique le nombre d’octets de données de l’information. LOAD OFFSET indique avec un
offset à 16 bits où doivent être placées les octets de données et n’a
de sens qu’avec des enregistrements de données, les autres enregistrements comportant tous un « 0000 » à cet endroit.
End of File record (pour tous les formats)
RECTYP indique le type d’enregistrement :
« 00 » = Data record
« 01 » = End of File record
« 02 » = Extended Segment Address record
« 03 » = Start Segment Address record
« 04 » = Extended Linear Address record
« 05 » = Start Linear Address record
Comme on peut l’imaginer, cet enregistrement donne la fin du fichier
de programmation.
Il ne nous reste plus qu’à souhaiter que vous n’ayez jamais besoin
de ces connaissances ! Il existe bien entendu bien d’autres formats que le format Intel qui est cependant le plus répandu; les
techniciens adorent les standards ce qui ne les empêche pas d’en
imaginer toujours d’autres...
RECORD
MARK
’:’
1-byte
RECLEN
‘00’
1-byte
LOAD
OFFSET
‘0000’
2-bytes
RECTYP
‘01’
1-byte
CHKSUM
‘FF’
1-byte
(075034)
140
elektor - 7-8/2007
Racer à hydrogène
Modèle réduit à pile
à combustible
Ludwig Retzbach
La fabrication en série de voitures à piles
à combustible est encore loin. On peut
toutefois se procurer les premières piles à
combustible à prix abordable pour réaliser ses propres expériences ou trouver des
objets de démonstration. C’est un objet de
ce genre, le H-Racer, que propose Horizon, une entreprise chinoise de Shanghai,
dans une sorte de boîte de construction
pédagogique. Le coffret comprend, avec
le racer à hydrogène, une station service
d’hydrogène alimentée par ces cellules
solaires.
Le châssis du modèle réduit (16 cm de
long sur 7,5 cm de large), en plexiglas,
est équipé de quatre roues, pneus caoutchouc, d’un moteur à courant continu,
d’une boîte à deux vitesses. Cette partie
est montée et câblée, avec les interrupteurs nécessaires. La mini-pile à combustible (53 x 32 x 15 mm) ainsi que le petit
réservoir d’hydrogène ne sont pas longs
à encliqueter. Le réservoir se compose
d’un ballon gonflable contenu par un
petit cylindre. La déformation du ballon
donne une certaine idée du combustible
restant. Le bolide à hydrogène est prêt à
fonctionner dès que sa valve de recharge
est engagée et que les petits tuyaux sont
enfilés. Une fois posée la carrosserie de
plexiglas, fixée par quatre vis au châssis, l’ensemble a une allure d’enfer et des
plus futuristes.
Reste à faire le plein du réservoir d’hy-
7-8/2007 - elektor
drogène. Cette étape illustre bien qu’il est
nécessaire de produire l’hydrogène avec
du courant électrique (par électrolyse de
l’eau) avant qu’il puisse à son tour produire
du courant dans la pile à combustible. De
jour et, de préférence au soleil, le module
solaire fourni délivre le courant nécessaire
à la cellule d’électrolyse. Les jours de pluie
ou la nuit, deux piles mignon serviront
d’alimentation de secours à la cellule. Des
bulles de gaz dans la cellule remplie d’eau
distillée et purgée d’air à l’aide de la seringue fournie signalent le début de la production d’hydrogène. Le clignotement de
deux LED bleues sur le réservoir confirme
que la station fonctionne. Le ballon commence également à se remplir. Le fabricant recommande de limiter l’électrolyse
à 20 minutes, la vessie bleue bien gonflée
devrait alors coller aux parois du cylindre
de plexiglas.
Son plein ainsi fait, la H-Racer à traction
avant file ensuite sur le plancher et se préCaractéristiques techniques
Caractéristiques annoncées
Pile à combustible de la H-Racer
Dimensions [mm] : 32 x 32 x 10
Masse : 27,3 g
Tension de sortie continue : 0,6 V
Courant de sortie : 0,4 A
cipite à fond de train contre le premier obstacle venu – si l’on ne l’a pas arrêté avant.
Une direction et une (télé-)commande lui
font malheureusement défaut.
La faible capacité du réservoir d’hydrogène
limite sa portée à quelque 100 m. Selon
son fabricant, le petit bolide devrait rouler
plus de 300 m (3 minutes à 7 km/h environ). Nous n’avons toutefois pas atteint ces
trois minutes de course lors de ce premier
essai.
Caractéristiques, adresses
Quelques caractéristiques techniques
sont rassemblées dans le tableau où vous
retrouverez, entre parenthèses, les mesures
ou les commentaires de l’auteur.
En France, la H-Racer est commercialisée
par la CETH (prix non disponible). On peut
également la commander en Allemagne
(99 €, port inclus) sur le site [1]. Pour en
savoir plus sur les produits « éducatifs »
de Horizon [2], vous pouvez consulter
le magasin en ligne [3] du fabricant. Il y
en a pour presque toutes les bourses, de
la voiture à hydrogène prête-à-monter à
59 $US, à la pile à combustible de 300 W
pour 2 999 $US.
Nous pouvons en déduire que le prix d’une
voiture à hydrogène ne serait pas encore
très abordable…
Puissance de sortie : 240 mW
(070116-I)
Module solaire de la station de H2
[1] www.techgalerie.de (allemand)
Mesure: force électromotrice 3 V,
courant de court-circuit 0,3 A
[2] www.horizonfuelcell.com (anglais)
[3] http://store.horizonfuelcell.com (anglais)
141
info & marché
avant première
EXTRA!
Avec chaque magazine :
PLATINE DE COMMANDE DE LED
Dotée de tous les composants !
Essayez-vous aux LED blanches !
Banc d’essai : modules ampli audio
Réaliser son (ses) propre(s) amplificateur(s) audio est (et reste) un violon d’Ingres très pratiqué, car énormément
apprécié, par nombre d’électroniciens audiophiles. Ceux-ci ont la possibilité, outre d’utiliser l’un des projets décrits
régulièrement dans Elektor, d’opter pour des modules ampli audio de sortie (tout montés ou encore en kits) proposés
par différents fabricants.
Il ne reste plus qu’à les monter, épaulés par une alimentation, dans un coffret de caractéristiques convenables. Nous
avons, pour le numéro à venir, rassemblé un certain nombre de modules ampli de puissance et leur avons fait subir des
tests sévères dans nos laboratoires. Dans le numéro de septembre nous vous proposerons une description exhaustive
des modules testés et des résultats de mesure.
Traceur GPS
Si, il y a à peine deux lustres, connaître sa position avec précision était réservé aux militaires (systèmes à centrale inertielle), il n’y a rien de plus commun aujourd’hui que de savoir, grâce au GPS (Global Positioning System),
presque au mètre près, où l’on se trouve exactement. Il est également envisageable cependant d’utiliser un
récepteur GPS non pas pour connaître sa propre position mais celle d’un objet (un véhicule par exemple). C’est à
cet effet que nous avons développé, dans le laboratoire d’Elektor, ce Traceur GPS (bien mieux qu’un simple positionneur GPS). Il s’agit d’un montage très compact constitué d’un modem GSM intelligent et d’un récepteur GPS
à antenne active. En cas d’envoi d’un message SMS vers le modem GSM, le récepteur répond en envoyant ses
coordonnées. Il est possible ainsi de toujours savoir où se trouve l’objet doté de ce Traceur GPS.
Des raisons rédactionnelles impératives peuvent se traduire par un non-respect à la lettre de cette avant-première du prochain numéro.
Attention le numéro de septembre 2007 devrait être en kiosque à partir du 22 août 2007.
Le site Elektor - du sang neuf !
De par l’approche adoptée « Projet par Projet » lors de la construction, le visiteur de cette nouvelle mouture du site trouvera sur la
même page, tout ce qui a trait à un projet donné : téléchargement de l’article au format .pdf, du logiciel, commande (platine et composants), mais aussi informations additionnelles et mises à jour.
Magazine : fait apparaître le sommaire du numéro le plus récent. Un clic sur le titre concerné
permet de lire le début de l’article concerné.
Collection : Permet de remonter le temps grâce
aux archives. Pour le moment, tous les articles depuis l’année 2000 sont téléchargeables, un moteur
de recherche permettant de travailler par année
et/ou par mot-clé.
Quoi de neuf sinon sur
www.elektor.fr :
• Un Forum lecteur
• Petites Annonces Gratuites
• Nouvelles vous concernant
• Courriel Hebdomadaire Gratuit
• FAQ
• e-CHOPPE, pour tous vos achats
148
elektor - 7-8/2007

Documents pareils