Download - Elektor N°288 - Juin 2002 - doctsf
SCÈNE&STUDIO
8 Elektor 6/2002
Le gradateur DMX est destiné aux applica-tions semi-professionnelles. Il est commandépar un pupitre de mélange de lumière numé-rique DMX ou analogique. Il accomplit par-faitement sa tâche, qui est d’atténuer, maisse refuse aux fantaisies charmantes tellesque les traînées lumineuses ou la conversionson en lumière. Par contre, le préchauffagedes lampes dans la plage lumineuse de0 à 100 % prolonge leur vie et offre un fonc-tionnement autonome à atténuationconstante sans recours au pupitre demélange de lumière. D’autres caractéris-tiques, telles que le choix du canal par com-mutateurs à molette et la linéarisation numé-
Gradateur DMXPour applications semi-professionnelles
Projet : Andreas Kneer
Ce gradateur, qui peut être commandé par un signal DMX numérique, unetension de commande de 0 à 10 V ou manuellement, permet d’ajuster la lumi-nosité individuelle de 1 à 4 projecteurs, d’une puissance de 1 kW chacun.
Caractéristiques– Compatibilité avec les pupitres de commande de l’éclairage à signaux de com-
mande DMXD512 ou 0 à 10 V– Choix du canal grandement facilité par les commutateurs à molette– Possibilité de brancher des projecteurs d’une puissance totale de 1000 W dans
chaque canal– Gradateurs par découpage de phase à triacs pour lampes à incandescence (halo-
gène).– Commande linéaire de la lampe par correction numérique de la caractéristique
de l’angle de découpage de phase– Préchauffage réglable de 0 à 100 %– Compact, pouvant donc être monté facilement aux projecteurs, à leur mât ou
sur une traverse– Conception robuste et insensible aux parasites
SCÈNE&STUDIO
96/2002 Elektor
rique de la plage de commande,complètent élégamment le cahierdes charges.Les rangées de projecteurs (bar) à4 ou 6 projecteurs ne constituent pasune rareté dans le domaine de latechnique de l’éclairage. Pour queles dimensions du gradateur pré-senté ici restent dans des limites rai-sonnables, on a choisi un fonction-nement monophasé. En partantd’une puissance de 1 kW par projec-teur, il est possible d’en raccordertrois à une phase de 16 A. Il faut2 gradateurs à 3 canaux chacun pourune rangée de six. Pour pouvoir mon-ter le gradateur à proximité immé-diate des projecteurs, on a conçu unboîtier métallique ressemblant à unbloc multiprises triple surdimen-sionné. Le boîtier sert en mêmetemps de dissipateur thermiquepour les triacs.Comme il est de toute façon néces-saire de confier le décodage dusignal DMX à un microcontrôleur, lamajeure partie de toutes les fonc-tions d’atténuation est aussi réaliséepar logiciel. Le 68HC11F1 utilisé icicomporte, outre 1 k de mémoireRAM interne, 512 octets d’EEPROMinterne dans laquelle le logiciel a été« tassé » de façon à éviter l’utilisationd’une ROM externe. On économisetemps et argent. La périphérie inté-grée est imposante : elle comporteune interface sérielle, un convertis-seur A/D et la structure de tempori-sation du processeur, ce qui permetde réaliser un circuit et un logicieltous deux très compacts.Le schéma-bloc (figure 1) représentele fonctionnement du logiciel. Cedernier se compose de trois tâchesde priorités différentes.
Tâche DMXDMX512 évince toujours plus lesignal analogique 0 à 10 V. Le proto-cole DMX512 est électriquementidentique à RS485, ce qui permetd’utiliser toutes les commandes deligne RS485. L’appareil de commandeenvoie par la liaison bifilaire destrames de données de 8 bits utileschacune avec un débit de250 kbits/s. Le décodage des bits dedonnées dans le récepteur peut êtreeffectué par une interface UART cou-plée à un ordinateur. Une trame dedonnées DMX contient 11 bits (ci-
inclus le bit de départ et les 2 bitsd’arrêt) et nécessite donc environ44 µs pour la transmission. La normeDMX prescrit de transmettre lesoctets de données à intervalles de1 s au plus. Il n’est par contre pasfait mention d’une distance mini-male. Lorsqu’un récepteur DMX veutrecevoir de tous les émetteurs, il doittraiter toutes les trames de donnéesquel que soit le laps de temps entreelles. Si le pupitre de mélange delumière est très rapide et envoie lestrames sans discontinuer, le micro-processeur ne dispose que de ladurée d’une trame, 44 µs, pour trai-ter les octets de données. De tellesconditions requièrent un processeurpuissant et un logiciel optimisé.L’émetteur DMX commence la trans-mission par une interruption (Break,88 µs au moins dans l’état bas sur laligne DMX+). La longueur « nonconforme » de ce signal indique aurécepteur que la transmission vacommencer. Puis l’émetteur envoiel’octet de départ qui indique l’appa-reil auquel les données sont desti-nées. Les gradateurs DMX ne doi-vent réagir qu’aux données com-mençant par l’octet initial 0. L’octetinitial permet donc théoriquementde transmettre 512 canaux d’atté-nuation plus 512 canaux pour scan-ner, 512 canaux pour lumièresmobiles (Moving Lights), etc. Maiscette option est rarement utilisée.Après l’octet initial, l’émetteur com-
CANà
6 canaux
Filtreet
limiteur
EntréeDMX512
Entréeanalogique
RécepteurDMX
Indicateurs à LED
RouescodeusesSélecteurd'entrée
Potentiomètrede
préchauffage
CANà
1 canal
DécodeurDMX
512 canauxLogiquede choixde canal
Mélangeur
Alimentation
Courbede
linéarisation
Détecteurde passage
par zéro
Timerd'angle
de phase
Transfosecteur
Étage depuissance
à triac
Connexionsecteur
MélangeurCourbe
delinéarisation
Timerd'angle
de phase
Étage depuissance
à triac
MélangeurCourbe
delinéarisation
Timerd'angle
de phase
Étage depuissance
à triac
Mélangeur
010210 - 12
Courbede
linéarisation
Timerd'angle
de phase
Étage depuissance
à triac
68HC11F1
Figure 1. Schéma du gradateur DMX.
mence à transmettre successivement lescanaux. Le dernier canal à transmettre peut,mais ne doit pas nécessairement, être lecanal 512. Il est possible de provoquer un arrêtprématuré en envoyant un « Break » (pointd’arrêt). On trouvera d’autres informations surles particularités de la transmission DMX512dans le numéro de mai 2001 d’Elektor.Le programme de traitement (Handler) DMXdu logiciel est conforme à la normeDMX512/1990 ; il lit tous les 512 canaux (sil’octet initial = 0) et mémorise les valeursdans la RAM. Comme la tâche de traitementDMX ne dispose que de 44 µs pour effectuerces fonctions, sa priorité dans le système estla plus élevée. Le programme de traitementDMX est appelé dès qu’un octet est reçu dansle tampon UART.
Tâche principaleLe programme principal du logiciel évaluel’état des éléments de commande et pilote lesdiodes luminescentes. Les signaux d’entréedes gradateurs proviennent du convertisseurA/D interne qui reçoit les signaux analo-giques par une douille DIN 8 broches d’untype très répandu dans la technique del’éclairage ou directement des canaux DMX.Selon la position du sélecteur de canaux, lalogique de sélection choisit 3 des 6 canauxanalogiques ou 3 canaux DMX dont la lumi-nosité est extraite du convertisseur A/D ou dela mémoire DMX intermédiaire. Pour finir,chaque valeur est comparée à la luminositédu préchauffage des lampes et la plus élevéedes 2 valeurs comparées est convertie parune formule de linéarisation en une durée
d’excitation des triacs.N’oublions pas que la tension du réseau estsinusoïdale et non rectangulaire, donc que lapuissance appliquée aux lampes n’est pasproportionnelle à l’angle de phase spécifié(figure 2a). Il est souhaitable que la caracté-ristique de commande soit linéaire pour quele régulateur du pupitre de commanded’éclairage puisse positionner avec exacti-tude la luminosité d’un projecteur même auxfaibles valeurs. La caractéristique du grada-teur est inversée précisément dans ce but(figure 2b).La caractéristique de commande du gradateurest horizontale au début et à la fin. Ce facteurest important dans le cas de pupitres demélange analogiques : il faut éviter en effetqu’une tension résiduelle de quelques milli-volts fasse luire les lampes ou empêche d’at-teindre une luminosité de 100 %. La correction
de la caractéristique permet d’at-teindre un comportement presquelinéaire de la puissance dans la plagedes valeurs numériques (figure 2c).Les valeurs de la durée d’excitationobtenues en tenant compte de la cor-rection de la caractéristique sontécrites dans les registres de tempori-sation du contrôleur.
Tâche de temporisationL’excitation des triacs s’effectue parl’entremise des registres de compa-raison de sortie (Output compare) du68HC11. La tâche de temporisationest toujours appelée au moment dupassage par zéro de la tension duréseau. Lors de l’appel, l’angle dephase est ajouté à la valeur courantedu compteur sans fin du 68HC11(incrémenté chaque µs) mémoriséetemporairement, puis cette sommeest écrite dans les registres « Outputcompare ». La valeur est alors com-parée continuellement à la valeuractuelle du compteur sans interven-tion du logiciel. Le triac est activédès que le registre « Output com-pare » est égal au compteur. Le triacest désactivé par la tâche de tempo-risation lors du passage suivant parzéro. Un signal PWM synchronisé surla fréquence du réseau est doncengendré aux sorties du 68HC11.
Entrée analogique et entrée DMXL’alimentation de la partie basse ten-sion est représentée en haut à gauchedu schéma (figure 3). Le fusible F2constitue une protection contre le sur-échauffement. Lorsque, pour quelqueraison que ce soit, la températureinterne de l’air dépasse 95 °C, cefusible coupe de façon permanente lecircuit du gradateur. La limite de95 °C vaut aussi pour le soudage,donc attention lors du montage !La tension d’alimentation despupitres de mélange analogiques estpar ailleurs prélevée en amont durégulateur, protégée séparément parF3 (F3 est un fusible Polyswitch ouplus précisément un composantrésistant à coefficient de tempéra-ture positif) et rendue accessible àl’extérieur par la douille DIN. Celapermet de raccorder aussi despupitres de mélange très simples necomportant qu’un régulateur de ten-
sion 10 V et un potentiomètre.La tension secondaire redressée estprélevée à l’anode de D1. Comme D1« élimine » le condensateur de lissageC16, le passage par zéro de la tensionalternative nécessaire à la temporisa-tion est encore présent en ce point.Ce passage est détecté par le circuitde comparaison comportant IC4. Le comparateur lui-même, IC4.A,comporte une hystérésis produit parR21. En effet, les gradateurs souf-frent souvent d’un problème :lorsque des charges importantessont commutées à proximité du pas-sage par zéro, l’inductance et larésistance des conducteurs provo-quent un bref effondrement de latension du réseau, ce qui conduit ledétecteur à reconnaître comme pas-sage par zéro ce qui n’en est pas un.Cet effet est atténué par une hysté-résis. IC4.B tamponne et inverse lesignal de sortie destiné à l’entréed’interruption du contrôleur.Un réseau constitué par des diodesdoubles antiparallèles (D3 à D8), desdiodes de Schottky (D10, D11), lescondensateurs C9 à C14 et des résis-tances (R28 à R33, rangée R46 etR45) forme l’entrée analogique à6 canaux du gradateur. Les circuitssont identiques pour les 6 canaux.Les résistances de protection for-ment un diviseur de tension quiréduit la plage de tension d’entréede 0 à 10 V à 0 à 5 V. Le diviseur et lecondensateur forment un filtre RCqui élimine les tensions parasites HF.Les doubles diodes limitent d’éven-tuelles sous-tensions et surtensions.Une de ces diodes est raccordée à larésistance R45 de 4,7 kΩ et auxdiodes de Schottky D10/D11. Unetension (par rapport à la masse)d’environ 0,3 V et 4,7 V aux bornesde R45 est engendrée par celles desdiodes. La tension à l’entrée dumicrocontrôleur ne peut partant pasdépasser 4,7 V plus la tension deseuil d’une diode, c’est-à-dire 5,4 Vou descendre au-dessous de 0,3 V –0,6 V soit –0,4 V. Un connecteur d’en-trée à picots sur la carte permet deraccorder la douille DIN 8 brochescomme le montre la figure 4. Leconvertisseur A/D comporte aussiun filtre passe-bas RC R43/C16 quiassure l’absence de perturbationsdans la tension de référence de 5 V.L’entrée DMX512 est équipée de lacommande de ligne RS485 bidirec-
SCÈNE&STUDIO
10 Elektor 6/2002
100
80
60
40
20
00 45 90 135
Angle de phase [°]
Puissance
Pui
ssan
ce a
mpo
ules
[%
]
180
010210 - 13
180
140160
100120
80
4060
200
0 50 100 150 200
Valeur DMX
Caractéristique du gradateur
Ang
le d
e ph
ase
[°]
250
010210 - 14
90100
7080
5060
40
2030
100
0 50 100 150 200
Valeur DMX
Puissance au niveau de l'ampoule
Pui
ssan
ce [
%]
250
010210 - 15
Figure 2 a) Puissance de la lampe en fonction del’angle de phase.b) Caractéristique permettant au logiciel delinéariser la puissance.c) Résultat de la linéarisation : dépendancelinéaire comportant des parties « droites » pourles valeurs DMX basses et élevées.
a
b
c
tionnelle LTC485. La fonction d’émis-sion, qui n’est pas utilisée ici, estmise hors circuit. Les lignes d’entréesont reliées au circuit intégré par unfiltre passe-bas contre les parasites
HF. Des varistances 12 V pour véhi-cule automobile protègent les cir-cuits d’entrée des surtensions. Lasortie du récepteur est directementreliée à l’interface sérielle du
SCÈNE&STUDIO
116/2002 Elektor
K5
8x 10k1
2 3 4 5 6 7 8 9
R42
R9
4M7
X1
16MHz
C7
22p
C1
22p
+5V
C17
33n
+5V
C5
33n
C2
1µ 16V
R44
4k7
D9
LL4148
+5V
MOC3020IC7
6
4
1
2D14
R16
27
0Ω
T3
BC847
R13
4k7
R4
47
Ω
R5
1k0
R6
10
0Ω
C4
100n
TRI3
A2
A1
BTA26-600A
G
+5V
L3
1mH36A3 T
F6
K8
MOC3020IC6
6
4
1
2D13
R17
27
0Ω
T2
BC847
R14
4k7
R1
47
Ω
R2
1k0
R3
10
0Ω
C3
100n
TRI2
A2
A1
BTA26-600A
G
+5V
L2
1mH36A3 T
F5
K7
MOC3020IC5
6
4
1
2D12
R18
27
0Ω
T1
BC847
R15
4k7
R10
47
Ω
R11
1k0
R12
10
0Ω
C22
100n
TRI1
A2
A1
BTA26-600A
G
+5V
L1
1mH36A3 T
F4
K6
AC N
C21
220n
K2
R2847k
R2947k
R3047k
R3347k
R3147k
R3247k
R46 6x 47k1
2 3 4 5 6 7C9
33n
C10
33n
C11
33n
C12
33n
C13
33n
C14
33n
PE0
PE1
PE2
PE3
PE4
PE5
D8
BAV99
D7
BAV99
D6
BAV99
D5
BAV99
D4
BAV99
D3
BAV99
R45
4k7
D10
BAS40
D11
BAS40
+5V
C18
33n
R43
10
Ω
R8
4k7
+5V
K3 R26
120Ω
R27
120Ω
R34
12V
R35
12V
C19
470p
C8
470p
+5V
T6 T5
BC847
T4
R41
10k
R40
10k
R39
10k
R38
27
0Ω
R37
27
0Ω
R36
27
0Ω
LTC485
IC3
5
8
2
1R
D
3
4
7
6
C6
33n
+5V
K1 100mA T
F1
100°C
F2
15V
TR1
3VA2
B1
B40C800
R19
7k5
R20
7k5
D1
1N4004
C16
1000µ
C20
4µ716V
7805
IC2
+5V
170mA
F3D15
1N4004
6
5
7IC4.B
2
3
1IC4.A
R22
47k
R23
10k
R24
10k
R25
10k
R21
1k
D2
LL4148
K4
3x
+5V
IC4
8
4
C15
100n
+5V
AC N
TEMP
INPUT
IC4 = LM358N
DM
X IN
010210 - 11
POLYSWITCH
PE0
PE1
PE2
PE3
PE4
PE5
PE0
PE1
PE2
PE3
PE4
PE5
68HC11F1
EXTAL
VREFH
VREFL
4XOUT
RESET
XTAL
IC1
MODB
MODA
NXRQ
NIRQ
PD2
PD3
PD0
PD1
PD4
PD5
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PF0
PF1
PF2
PF3
PF4
PF5
PF6
PF7
PG0
PG1
PG2
PG3
PG4
PG5
PG6
PG7
PE0
PE1
PE2
PE3
PE4
PE5
PE6
PE7
R/W
21
66
34
17
42
41
40
39
38
37
36
35
50
49
48
47
46
45
44
43
10
11
12
13
14
15
16
28
29
30
31
32
33
18
19
58
57
56
55
54
53
52
51
27
26
25
24
23
22
20
68
67
59
61
63
65
60
62
64
6 7 1
2
3
4E
9
5
8
35V
250V
250V
250V
250V
K9
+5V
RxD
GND
TxD
MODE
+5V
4V7
0V3
BTA26-600A
A1 A2 G
BAS40
A
K
BAV99
BC847C
B E
Figure 3. Circuit avec les entrées à gauche et l’électronique de puissance à droite. Le microcontrôleur assurant la communication estplacé entre eux.
68HC11. La liaison des douilles DMX avec K3est illustrée dans la figure 5.Trois LED pilotées depuis les brochesPD3 à PD5 du port du contrôleur par un étageà transistor indiquent si l’entrée DMX ou l’en-
trée analogique est active. Les LEDsont reliées à K4 tout comme l’inver-seur DMX/analogique. L’état du com-mutateur est lu sur le port PG7. Lafigure 6 montre la liaison des LED etdu commutateur avec K4. Les commutateurs à roue codeusepermettant de choisir le canal sontreliés à K5 (figure 7). Les commu-tateurs possèdent des sortiesbinaires branchées en parallèle quisont directement découplées àl’emplacement des interrupteurspar des diodes 1N4148 externes.Lors de l’évaluation par le contrô-leur, celui-ci effectue le multi-plexage des 3 commutateurs parPG0 à PG3 et identifie la valeurchoisie au moyen des lignes duport PG4 à PG6.Les canaux analogiques sont aussiinfluencés par les commutateurs àmolette. Si le canal 1 est choisi, latension de commande sur PE0détermine la luminosité de la lampeen PA6, PE1 assure la régulation dePA5 et PE2 celle de PA4. Si le canal 2est choisi, la régulation est effectuéeentre PE1 PA6, PE2 PA5, etc.Le potentiomètre d’ajustement dupréchauffage est raccordé aux3 broches restantes de K5. La prisemédiane du potentiomètre est direc-tement reliée à l’entrée ADC ducontrôleur (PE6). Un condensateuren parallèle se charge des perturba-tions éventuelles.
SortiesLe processeur lui-même ne néces-site aucun montage externe parti-culier, hormis un oscillateur de
16 MHz et un circuit de réinitialisa-tion (R44, C2 et D9). Une résistanceR8 à MODB assure le redémarragedu processeur en mode « singlechip » après réinitialisation. Nouspouvons donc nous concentrer surles sorties de puissance.Les 3 étages finals à triacs sontreliés à PA4 à PA6. Le circuit est lemême pour tous les canaux. Les triacs utilisé sont desBTA26/600A. Ils sont conçus pourun courant maximum de 26 A. Sicela semble surdimensionné, il nefaut pas oublier que la résistance àfroid des lampes à incandescenceest très faible, donc que le courantinitial est très élevé (jusqu’à 10 foisla valeur du courant nominal). Ungrand nombre de lampes halogèneprésentent en outre la caractéris-tique déplaisante de provoquer uncourt-circuit lorsqu’elles rendentl’âme. Plus un triac est stable etplus il a de chances de survivre àla défaillance d’une lampe. Contrai-rement aux types TIC très répan-dus, les types BTA possèdentl’avantage d’avoir un boîtier isolédes sorties. Il n’est donc pas néces-saire de recourir à un montageisolé trop élaboré.Chaque triac est commandé par unsecond triac intégré dans l’opto-coupleur. Le transistor raccordécommute dès que le contrôleur posi-tionne une sortie au niveau haut. Uncourant passe par la LED de l’opto-coupleur, le triac de l’opto-coupleurest amorcé et le courant passe de laphase à la gâchette du triac depuissance. Celui-ci est alors égale-ment amorcé. L’opto-coupleur pro-voque donc la fermeture du circuitqui permet au courant destiné à lalampe de passer.L’angle de phase lors de la misesous tension peut être tel que toutela tension du réseau est appliquéesubitement à la lampe ce qui pro-voque un flanc de courant tout aussiabrupt. Mais les flancs de courantabrupts ne font aucun bien à laCEM. Une bobine en série avec lalampe limitera la montée rapide duflanc. Cette bobine est aussi le com-posant qui limite la puissance dugradateur à des lampes de 1 kW enlimitant le courant à 4,5 A.La tension qui augmente brusque-ment aux bornes d’un triac lors dela mise en marche peut causer sa
SCÈNE&STUDIO
12 Elektor 6/2002
K2
8
1
2
37
45
6
K10
GND (Masse)
Canal 1
Canal 2
Canal 3
Canal 4
Canal 5
Canal 6
+20V
010210 - 16
K11
3
51
42
K12
3
51
42
K3
010210 - 17
DM
X -
DM
X +
GN
D
DMX IN DMX OUT
K4
S4
D15
D16
D17
+5V
+5V
+5V
+5V
Analogique / DMX
DMXSignal
DMX
Analogique
010210 - 18
Figures 4 à 7. Raccordement des organes de commande à la carte.
D18
D19
D20
D21
K5
P147klin
S1
5
S2
1
S3
2
D22
D23
D24
D25
D26
D27
D28
D29
Centaines Dizaines Unités
(1)
(2)
(4)
(8)
(1)
(2)
(4)
(8)
(1)
(2)
(4)
(8)
PG0
PG1
PG2
PG3
PG4
PG5
PG6
GND
Préchauffage
+5V
010210 - 19
4
5
6
7
cer tous les autres composants, des pluspetits aux plus grands. Veillez à ne pasdéclencher le protecteur thermique en le sou-dant. La soudure SMD est un vrai trifouillagequ’il vaut mieux effectuer sous l’œil attentifd’une loupe éclairante.Les triacs (ainsi que le régulateur de tension)doivent être refroidis. Un boîtier métalliqueconstitue la solution la plus simple. Mais oncherchera en vain des boîtiers tout assemblésdans les catalogues d’électronique ; il fautmettre soi-même la main à la pâte. Les petitsboîtiers de chez Teko, fort appréciés et relati-vement faciles à plier, constituent une bonnesource d’inspiration. Une scie à chantournerpermettra de découper des trous de la bonnetaille dans le couvercle pour les prises. Il fauten outre, comme on le voit dans la photo dutitre, percer des trous pour les 3 douilles, lescommutateurs à molette, les 3 LED, l’inver-seur DMX/analogique et le potentiomètre.Percez les trous de fixation des triacs (y com-pris leurs LED) et du régulateur de tensionsur un des côtés. Contrairement aux types detriacs utilisés, le régulateur de tension ne doitpas être isolé du boîtier (par exemple par uneplaque de mica).Introduisez la platine partiellement équipéedans le boîtier terminé, vissez tout d’abord àfond les composants mentionnés en dernier auboîtier et fixez-les sur le dessus de la platineavec une gouttelette de soudure. Ils seront cor-rectement soudés plus tard. On évite ainsi l’ap-parition de tensions mécaniques. Les pistes qui passent sous les bobines doi-vent être séparées de celles-ci par un peu debande isolante. Fixer les bobines à l’aide d’at-taches de câble et d’un peu d’adhésif à chaudet les souder. Montez les prises à contact deprotection sur des entretoises de 15 mm dehaut pour qu’elles dépassent les bobines.Raccorder des fils de cuivre d’un diamètre de1,5 mm aux bornes des prises, les faire pas-ser par la carte et les souder.
SécuritéVenons-en au chapitre sur la sécurité élec-trique que vous attendiez impatiemment.Comme toujours avec de l’électronique fonc-tionnant à la tension du réseau, et particuliè-rement dans le cas d’un appareil de classe Ià boîtier métallique, la disposition sur la carteacquiert une grande importance. Il faut queles parties soumises à la tension du secteuret les pistes soient séparées les unes desautres et du boîtier par une distance mini-male (3 mm) ; en outre, toutes les partiesmétalliques du boîtier avec lesquelles onpourrait venir en contact et toutes celles,comme les boutons métalliques, qui dépas-sent vers l’extérieur, doivent être raccordées à
perte. Un élément RC monté enparallèle sur le triac réduira la pro-babilité de ce genre de surprisedéplaisante. L’élément RC protègeaussi le triac des pointes de tensionqui pourraient être engendrées parl’ouverture d’un circuit comportantdes inductances et empêche toutamorçage intempestif.Pour éviter de renvoyer au réseau lespointes de tension et de courant rési-duelles, on montera un condensateurde 220 nF en parallèle sur l’entréesecteur. Se servir de condensateursde déparasitage X agréés par unorganisme de normalisation.
MontageLe recours à des composants SMDpour la partie de commande (format0805, faute de quoi 1206) permet deréduire la taille du gradateur. Lescaractéristiques des transistors etdiodes SMD indiqués dans la listede pièces ne sont pas critiques(attention toutefois à D10 et D11) etils peuvent être remplacés sansautre par des composants similairesde même brochage. Placez de préfé-rence ces composants en premiersur la platine double face (représen-tée légèrement réduite dans lafigure 8). Vous pouvez ensuite pla-
SCÈNE&STUDIO
136/2002 Elektor
SCÈNE&STUDIO
14 Elektor 6/2002
(C) E
LEK
TOR
01
0210-1
010210-1
010210-1
B1
C1
C2
C3
C4
C7
C8
C9
C1
0C
11
C12
C1
3C
14
C16
C19
C20
C21
C22
D1
D3
D4
D5
D6
D7
D8
D10
D11
D12
D13
D14
D15
F1
F2
F3
F4
F5
F6
H3
H4
IC1
IC2
IC3
IC4
IC5
IC6
IC7
K1
K2
K3
K4
K5
K6
K7
K8
K9
L1
L2
L3
R1
R2
R3
R4
R5
R6
R8
R10
R11
R12
R16
R17
R18
R24
R25
R26
R27
R34
R35
R3
6
R37
R38
R39R40R41
R42
R45
R46
T1T2T3T4
T5T6
TR1
TR
I1T
RI2
TR
I3
X1
LN
6,3A
T6,
3AT
6,3A
T
100m
AT
010210-1
(C) E
LEK
TOR
01
0210-1 C
5
C6
C15
C17
C18
D2
D9
R9
R13
R14
R15
R19
R20
R21
R22
R23
R28R29R30R31
R32
R33
R43
R44
Figure 8. Tout sur une seule carte : schéma de montage et disposition de la carte d’atténuation à l’échelle 1 :1.5 (67 %).
dès que l’appareil est alimenté par le secteur.La luminosité des lampes peut alors êtreréglée de 0 à 100 % en tournant le potentio-mètre. Raccorder ensuite une source de ten-sion de 0 à 10 V et placer le commutateur surANALOGIQUE pour que la LED analogiqueD17 s’allume. Positionner les commutateursde codage sur 001. Si la LED clignotaitencore, elle devrait maintenant cesser. Si l’onapplique alors une tension au canal analo-gique 1, la lampe de la prise 1 s’allumera, aucanal 2, la lampe de la prise 2 etc. Les com-mutateurs de codage déterminent le canalattribué à la prise analogique 1. Positionnonsles commutateurs sur la valeur 3 ; cela signi-fie que la prise 1 est attribuée au canal 3, laprise 2 au canal 4 et la prise 3 au canal 5. LaLED clignote en signe d’erreur si la valeurchoisie dépasse 6.Appliquons enfin un signal DMX ; la LED dusignal DMX papillote au rythme de la trans-mission. Positionner le commutateur sur DMXpour commander les lampes par DMX. LaLED analogique s’éteint et la LED DMX s’al-lume. Il devrait à présent être possible decommander la lampe de la prise 1 par le canalDMX défini par les commutateurs de codageet celle de la prise 2 par le canal suivant. LaLED DMX clignote si les commutateurs decodage ont été positionnés sur une valeurDMX erronée (0 ou plus de 512).Un dernier conseil avant de se mettre au tra-vail : 1 kW est la charge la plus élevée parcanal. Le fonctionnement du gradateur DMXa été testé par le laboratoire d’Elektor avecdes spots de 100 W (approche qui ne requiertpas encore de refroidissement des triacs).Nous vous conseillons de procéder de lamême façon. Vérifiez aussi la température durégulateur de tension lors des essais. Si latempérature de ce composant devient tropélevée, il ne reste plus qu’à utiliser un modèleplus puissant ou à monter un dissipateurthermique.
(010210)
demeure au conducteur de protec-tion. La masse du circuit de la partiebasse tension doit être aussi reliéeau conducteur de protection. N’utili-sez à aucun prix des triacs non iso-lés ! Ce serait théoriquement pos-sible, mais l’isolation électriquenécessaire, composée de plaques demica et de vis de plastique, ESTILLICITE. La carte est plus solide-ment immobilisée lorsque le cadredes commutateurs à molette est fixéà la face supérieure du boîtier. N’uti-liser des vis de plastique que lorsque
la distance minimale d’isolation de3 mm est respectée. N’oubliez pasde lire attentivement la page sur lasécurité de ce fascicule et suivez sesconseils (pur égoïsme : nous avonsbesoin de lecteurs d’Elektor enbonne condition !).On peut passer à la mise en servicelorsque l’appareil est définitivementinstallé et le câble secteur déchargéde toute traction conformément à laphoto. Commençons par raccorder3 lampes à incandescence. Une LEDau moins doit s’allumer ou clignoter
SCÈNE&STUDIO
156/2002 Elektor
Liste des composants(tous CMS 0805)
Résistances :R1,R4,R10 = 47 ΩR2,R5,R11 = 1kΩ0R3,R6,R12 = 100 ΩR7 non implantéeR8,R13 à R15,R44,R45 = 4kΩ7 CMSR9 = 4MΩ7 CMSR16 à R18 = 270 Ω CMSR19,R20 = 7kΩ5 CMSR21 = 1 kΩ CMSR22,R28 à R33 = 47 kΩ CMSR23 à R25 = 10 kΩ CMSR26,R27 = 120 Ω CMSR34,R35 = varistor 12 V K14/12R36 à R38 = 270 ΩR39 à R41 = 10 kΩR42 = réseau de 8 résistances de
10 kΩR43 = 10 Ω CMSR46 = réseau de 6 résistances de
47 kΩ
Condensateurs :C1,C7 = 22 pF CMSC2 = 1 µF/16 V verticalC3,C4,C22 = 100 nF/ 250 V~ X2C5,C6,C9 à C14,C17,C18 = 33 nF
CMSC8,C19 = 470 pF CMSC15 = 100 nF CMSC16 = 1 000 µF/35 V verticalC20 = 4µF7/16 V verticalC21 = 220 nF/250 V~ X2
Semi-conducteurs :B1 = B40C800 modèle rondD1,D15 = 1N4004D2,D9 = 1N4148D10,D11 = BAS40D3 à D8 = BAV99D12 à D14 = LEDIC1 = 68HC11F1FN (Motorola pro-
grammé EPS010210-41*)IC2 = 7805IC3 = LTC485 CN8
IC4 = LM358NIC5 à IC7 = MOC3020T1 à T6 = BC847
Divers :F1 = fusible 100 mA retardé avec
porte-fusible et couvercle plastiqueF2 = fusible thermique100 °C
(Conrad 534137)F3 = Polyswitch 170 mA (Conrad
551198)F4 à F6 = fusible 6A3T avec porte-
fusible et couvercle plastiqueK1 = bornier encartable à 3 contacts
au pas de 7,5 mm (RM7,5)K3 = embase autosécable à 1 rangée
de 3 contactsK2,K4 = embase autosécable à 1 ran-
gée de 8 contactsK5 = embase autosécable à 1 rangée
de 10 contactsK6 à K8 = prise secteur encastrable
(Conrad 620297)K9= embase autosécable à 1 rangée
de 5 contactsL1 à L3 = bobine torique 1mH3,
4,5 A (Conrad 534366)TR1 = transformateur 15 V, 3VA2 (ou
autre transformateur EL30/13,6)TRI1 à TRI3 = BTA26-600A (isolé !),
600 V, 25 A, 100 mAX1 = quartz 16 MHzSupport PLCC à 68 contacts* = cf. site Elektor à www.elektor.fr
Périphérie :K10 = embase BIN à 8 contacts pour
montage châssisK11 = embase XLR mâle à 5 contacts
pour montage châssisK12 = embase XLR femelle à
5 contacts pour montage châssisD15 à D17 = LED verteS1 à S3 = roue codeuse BCDD18 à D29 = 1N4148 (à souder
directement sur S1 à S3)P1 = potentiomètre 47 kΩ linéaireS4 = interrupteur unipolaire
Canal 4Le circuit du gradateur a été conçu de façonà permettre la réalisation d’une version à4 canaux pour des rangées de 4 luminaires.Le signal pour un éventuel quatrième étagefinal à triac est disponible à la broche PA3(broche 39) du processeur. L’auteur peutfournir un circuit et la topologie de la cartepour la version 4 canaux. Prière de s’adres-ser à l’auteur (allemand) à l’adresse E-mail :
[email protected] de plus amples renseignements.
Tout ce que l’on demandait aux premièrescartes graphiques était de convertir les infor-mations devant constituer l’image à l’écran
en un format vidéo que le moniteurpuisse utiliser. Mais cette époque estrévolue depuis belle lurette. De nos
jours, toutes les cartes graphiquescomportent cette fameuse GPU (Gra-phics Processing Unit = unité de trai-tement de graphiques) dont la struc-ture est encore plus complexe quecelle du processeur présent sur lacarte-mère. La GPU remplit de nom-breuses tâches et procède plus spé-cifiquement directement à nombred’opérations graphiques sans l’in-
ÉLECTRONIQUEEN LIGNE
16 Elektor 6/2002
Surcadençage descartes graphiquesGains de vitesse par logicielLes amateurs de jeux sur ordinateur l’ont toujours constaté : tant le pro-cesseur que la carte graphique de leur système ne sont jamais assezrapides. Les jeux les plus récents en particulier mettent à rude épreuvele processeur graphique, la GPU, présent sur la carte. L’apparition sur lemarché du nouveau monstre de vitesse de nVidia, le GeForce 4, n’a faitqu’accentuer l’intérêt dans le surcadençage des cartes graphiques.
micro-ordinateur auront partant dans leursystème une carte graphique dotée d’un pro-cesseur de nVidia (Geforce 2, 3 of 4) ou de ATI(Rage, Radeon, 7500, 8500). Dans ces condi-tions, notre quête à la recherche d’outils de« tuning » de la carte graphique recouvrira lapart la plus importante du marché même sinous nous limitons à ces 2 fabricants. Il n’enreste pas moins qu’il existe certains pro-grammes pour les marques moins représen-tées sur le marché comme nous le verrons unpeu plus loin.Nous commençons notre liste d’utilitaires desurcadençage par le fameux Powerstrip [1]de la firme taiwanaise EnTech. Ce pro-gramme offre à son utilisateur de nombrespossibilités de modifications des paramètresde la carte graphique. Il supporte nombre demoniteurs et reconnaît les caractéristiques dela plupart des cartes graphiques, de laMatrox Millennium I aux toutes dernièresRadeon 8500 et GeForce 4.Une paire de régleurs à glissière permettentde jouer indépendamment sur la fréquencede la GPU et de la mémoire. Le programmeoffre la possibilité de créer des profils spéci-fiques aux applications, moniteur(s), correc-tion de couleur et de réglage de vitesse. Il estmême utilisable par le débutant qui n’a(encore ?) que peu d’expérience dans ledomaine du surcadençage.Les cartes GeForce extrêmement populairesont des défenseurs fervents sur Internet,témoins les nombreux site consacrés spécia-lement à cette famille de cartes. La plupart deces sites comportent une section de téléchar-gement de programmes de « tweaking ». Noussommes, dans le cadre de cet article, limité àun site sachant que les programmes proposéspartout sont pratiquement les mêmes.On trouve, sur GeForce Zone [2], une page depeaufinage comportant une dizaine de pro-gramme de surcadençage (tels que NVMax,
tervention de la CPU (l’unité cen-trale). Il est possible ainsi de créerdes formes complètes, des ombres,et autres impacts de lumière à unevitesse telle que l’utilisateur ait, surson écran, des mouvements de per-sonnage et autres paysages parfai-tement souples. Ceci est plus parti-culièrement important dans le casdes jeux et c’est bien là le domaineoù la puissance de calcul des pro-cesseurs graphiques modernes estutilisée la plus efficacement.Dans le cas d’une carte graphique, ilest certains facteurs plus importantsque d’autres pour la puissance detraitement : la vitesse du processeur(de la carte graphique), la vitesse dela mémoire et les fonctions addition-nelles intégrées matériellement dansle noyau du processeur (le nombrede pipelines pour le calcul desformes géométriques par exemple).Il est impossible de modifier quoique ce soit à ce niveau, ces caracté-ristiques matérielles étant fixées unefois pour toutes. Il est partant illu-soire d’imaginer atteindre, avec uneGeForce 2 voire 3, la puissance decalcul et les possibilités offertes parune GeForce 4. Il n’en reste pasmoins qu’il existe des possibilités depeaufinage de certains facteurs, opé-ration connue chez les spécialistessous le terme de « tweak ». Il est eneffet possible, relativement facile-ment, de jouer sur les fréquences detravail de la GPU et de la mémoire
(ces fréquences sont en effet indé-pendantes l’une de l’autre) et celapar le biais de l’un ou l’autre registre;d’un point de vue matériel (hard-ware), cela n’implique pas de modi-fication. Il est en effet possible, àl’aide de programmes sophistiqués,de faire passer, par exemple, lavitesse du processeur graphique de220 à 250 MHz. En fonction du sys-tème de refroidissement dont estdoté la carte et la qualité de sescomposants, il y a toujours une cer-taine marge de performances quel’« amateur de surcadençage » peuttenter d’utiliser. On a vite fait de voirque les choses tournent au vinaigrepar l’apparition d’irrégularités dansl’image, voire la disparition totale del’image. Dans la majorité des cas onpourra revenir à un fonctionnementnormal par le choix d’une fréquenceplus faible (celle prévue avant lesmodifications), mais il faut bien êtreconscient du fait que ces tentativesde surcadençage peuvent avoir desconséquences désastreuses si l’undes composants était endommagépar surchauffe et trépasse prématu-rément. Tout le monde sait que l’oncourt des risques lors d’essais desurcadençage.Il n’y a plus, aujourd’hui, que2 grands fabricants de processeursgraphiques à fonctionnalité 3D, sui-vis, à distance respectueuse, par desjoueurs de « Deuxième Division ». Lamajorité des amateurs de jeux sur
ÉLECTRONIQUEEN LIGNE
176/2002 Elektor
Adresses Internet :[1] Powerstrip (shareware):
www.entechtaiwan.com/ps.htm[2] GeForce Zone
www.geforcezone.com/tweaks.htm[3] Rage3D:
www.rage3d.com/radeon/[4] Grafikkarten Tools:
www.grafik.overclocker-tools.de/[5] Guru3D:
www.guru3d.com/files/[6] Tweak3D: GeForce3 cooling:
www.tweak3d.net/reviews/misc/gf3cooling/
Coolbits et Rivatuner), d’édition du BIOS pré-sent sur la carte graphique et autres outilspratiques.Le site le plus intéressant (à notre avis et jus-qu’à plus ample informé) consacré aux cartesATI est Rage3D [3]. Il reprend tout ce dont onpeut avoir besoin avec les GPU modernes, de laRage à la Radeon 8500. On y trouve les pilotesles plus récents et divers utilitaires. On décou-vrira, sous le bouton Tech Support, différentsutilitaires de peaufinage tels que Rage3DTweak, UniTuner, Radeon Tweaker et RadT-weak.On se voit confronté, sur le site allemand Gra-fikkarten Tools [4] (outils pour cartes gra-phiques), à une page massive proposantnombre d’utilitaires de surcadençage. Ontrouve à cet endroit un programme au moins,voire plus, pour toutes les puces connues,telles que VooDoo, S3, nVidia, Matrox, ATI etKyro.Sur Guru3D [5] aussi on trouve nombred’auxiliaires pour les différents types de GPU,outre des utilitaires de surcadençage, égale-ment des pilotes et des programmes de test.La vitesse maximale à laquelle on peut espé-rer faire tourner une carte dépend souvent dusystème de refroidissement de la CPU et descircuits de mémoire. Si vous en avez le cou-rage, vous pouvez doter le processeur et laRAM d’un dispositif de refroidissement addi-
tionnel, ce qui vous permettra de« tordre » (ce qui est d’ailleurs lasignification première du verbeanglais tweak) quelques mégahertzsupplémentaires.Tweak3D [6] propose une descrip-tion exhaustive sur l’art et la manière
de s’y prendre.(025034)
ÉLECTRONIQUEEN LIGNE
18 Elektor 6/2002
LOISIRS
20 Elektor 6/2002
On peut faire circuler un robot dans un envi-ronnement donné de différentes manières. Luilaisser trouver son chemin tout seul. Détec-teurs de proximité et de contact permettront
au robot d’éviter les obstacles ou lescollisions et finalement de se retrou-ver dans une situation inextricable.La panoplie Mindstorms contient les
capteurs nécessaires. Une deuxièmepossibilité, c’est de fixer au robot unbut à atteindre, lui faire découvrir laroute qui conduit à un endroit défini.Pensons à une ligne guide, commesur le tapis joint à la boîte deconstruction.On peut aussi programmer d’avancele parcours dans le RCX en prédisantle temps pendant lequel les diffé-rents moteurs devront fonctionner,après avoir évalué le trajet à parcou-rir au cours de ces périodes. L’incon-vénient de cette méthode, c’est quele régime des moteurs va dépendrede la tension de batterie du RCX. Ildiminuera au fil du temps et le robots’éloignera de plus en plus du trajetprévu. Mais avec une boussole, ilserait à tout moment capable devérifier son orientation, la directionsuivie et de la modifier au besoin.Dans cet article, nous allons voircomme il est facile de doter un robotMindstorms d’une boussole.Nous avons choisi pour cette appli-
Boussolepour RCX de LegoPlus jamais fausse route
un projet de Z. Otten à la rédaction : Luc Lemmens
Mindstorms (remue-méninges), la série de robots désormais célèbre deLego, a maintes fois inspiré Elektor. En l’an 2000, nous vous avonsprésenté, en feuilleton, cinq articles sur les tenants et les aboutissants dumodule RCX, un bloc de construction à microcontrôleur avec troisentrées pour capteurs et trois sorties de commande. Ce fut ensuite letour d’une cellule photosensible, d’un capteur de proximité, d’unmultiplexeur d’entrée, sans oublier l’interface I2C. Aujourd’hui, nous allonsdéfinitivement empêcher notre robot de perdre le nord.
LOISIRS
216/2002 Elektor
Remarquons que cela ne représente qu’unepetite partie du domaine de mesure du RCX,qui est capable d’une résolution à 1 024niveaux.On aurait pu appliquer directement les résis-tances R1 à R4 aux sorties du capteur et épar-gner ainsi IC1 et R5 à R8. Mais vu le prix decette sonde et le laconisme du feuillet decaractéristiques sur sa capacité de charge ensortie, nous avons préféré jouer la sécurité.
ConstructionSi c’est la compacité qui vous intéresse aupremier chef, mieux vaut partir d’une platineperforée qui autorise les dimensions les plusfaibles. Mais si vous êtes plus à l’aise à cepoint de vue, la figure 2 vous fournira untracé adéquat. Il faut être attentif aux 4 pontsde câblage à proximité du capteur, en parti-
cation un capteur de Pewatron AG,un compas numérique du type 6945,et ce n’est pas la première fois qu’ilapparaît dans un projet Elektor. Enseptembre 1996 déjà, nous avionsprésenté une boussole électroniquebasée sur le 6945. Ce capteur dis-pose d’un rotor miniature, d’unaimant et d’un circuit intégré parti-culier, à effet Hall, pour déterminerl’orientation par rapport au champmagnétique terrestre. Les quatresorties numériques, dont seulesdeux sont actives à un momentdonné, offrent une résolution de 45degrés sur la rose des vents. Il fautque le capteur soit bien positionné àla verticale et tenu éloigné deschamps magnétiques parasites. Pourun prix tournant autour de 50 , onne peut pas dire que le 6945 soit bonmarché, aussi allons-nous le traiteravec les égards qui lui sont dus.
Le circuitLa figure 1 vous présente le schémade notre boussole pour RCX. Le cir-cuit d’interface entre capteur et RCXs’alimente au module lui-même.C’est bien connu, le RCX est capabled’alimenter une sonde et d’échangerdes données avec elle, rien que surdeux fils (cf. figure 1). La tensiond’alimentation est présente la plu-part du temps aux bornes A et B.Mais pendant de courtes périodes,elle est coupée pour procéder à la
mesure et c’est un condensateurélectrolytique, C1, qui assure l’inté-rim. Le pont de diodes D1 à D4 auto-rise l’inversion des bornes A et Bsans aucune conséquence. Au coursde la mesure, D5 et D6 jouent un rôlesimilaire pour la détermination de larésistance connectée aux entréespour capteur du RCX.Le capteur lui-même, notre 6945,serait trop gourmand (20 mA) etdevra donc puiser son énergie à lapile de 9 V Bt1. Comme les bornesdu RCX ne peuvent fournir que10 mA, tout au plus, elles seraientmises à sec. La diode D7 protège lecapteur d’une inversion de polaritédans la tension d’alimentation.Le 6945 est équipé de quatre sortiesà collecteur ouvert dont deux pas-sent simultanément au niveau bas,selon l’orientation de la sonde. Lesrésistances d’excursion haute R5 àR8 adaptent les niveaux de sortie àla tension d’alimentation de l’inter-face, prélevée, nous l’avons dit, surle RCX.Les quatre sorties du 6945 comman-dent autant d’interrupteurs analo-giques, contenus dans IC1, lesquelsorganisent des combinaisons derésistances en parallèle, avec R1 àR4, à l’entrée de sonde du RCX. Letableau 1 résume les différentesvaleurs que le RCX va pouvoir mesu-rer, en fonction de l’orientation ducapteur. Nous y trouvons les huit azi-muts magnétiques correspondants.
A
B
D1
D4
D2
D3
D5
D6
1N4148
C1
22µ 16V
V+
1N41484x 2x
R1
47k
IC1.A
13
1 2
R2
100k
IC1.B
5
4 3
R3
150k
IC1.D
12
11 10
R4
220k
IC1.C
6
8 9
R6
10
0k
R5
10
0k
R7
10
0k
R8
10
0k
V+
BT1
+9V
D7
BAT85
IC1
14
7
IC1 = 74HCT4066010111 - 11
Cap
teu
r R
CX
Broche 3:
Broche 2:
Broche 1
Signal de sortie
+ de l'alimentation
– de l'alimentation
(6 à 18 V CC)
Capteur 1
(S)
(E)
(N)
(W)
1 2 31
2
3123
1
2
3
Capteur 1:
Figure 1. On trouve sur ce schéma quatre interrupteurs analogiques, quelques composants passifs et une boussole Pewatron du type 6945.
Tableau 1. Valeurs de référence pour lesrésistances R1 à R4.
Point broches du capteur valeurcardinal 3 6 9 12 RCX
N 1 1 1 0 863NE 0 1 1 0 920E 0 1 1 1 810SE 0 0 1 1 856S 1 0 1 1 818
ZO 1 0 0 1 830O 1 1 0 1 787
NO 1 1 0 0 887
culier le plus minuscule qui lui se trouve endessous du capteur, pratiquement au milieu.Il est plus pratique de le réaliser en fil decuivre isolé et de le placer sur la face cuivrée,ceci pour permettre au capteur de reposerdirectement sur la platine.Raccorder le capteur au RCX, nous l’avons faità l’aide d’un cordon Lego standard coupé endeux. La pile, il faut la placer aussi loin quepossible de la sonde, son boîtier métalliquepourrait influencer la mesure.
Logiciel
Le programme témoin (cf. listage 1)pour notre boussole est rédigé enVisual Basic. On installe d’abord lelogiciel fourni sur CD avec l’en-semble Mindstorms, ainsi que labibliothèque SPIRIT.OCX qui permetde programmer le RCX et de le piloterà partir du langage évolué. Le codepeut aussi, sans grande difficulté,s’adapter à d’autres langages,comme Delphi ou C++.Commençons avec un formulairevierge en Visual Basic et plaçons-yun bouton Spirit control et un Com-mand. Un double clic sur ce boutonouvre une fenêtre dans laquelle nouscopions le listage 1. Lors de l’exécu-
LOISIRS
22 Elektor 6/2002
Listage 1. Exemple de progamme en Visual Basic.
Private Sub Command1_Click()Const setpoint = 5Const measure = 6Const dif = 7
With RCX.ComPortNo = 1 ‘ COM port 1.LinkType = 0 ‘ 0 = IR.PBrick = 1 ‘ 1 = RCX, 0 = CyberMaster.InitComm ‘ Initialise the COM port
.SelectPrgm SLOT3
.BeginOfTask MAIN.SetSensorType SENSOR_2, LIGHT_TYPE.SetSensorMode SENSOR_2, RAW_MODE, 0
.SetVar setpoint, CON, 1 ‘1=N,2=NE,3=E,4=SE,5=S,6=SW,7=W,8=NW
.SetVar measure, CON, 0
.SetVar dif, CON, 0
.StartTask 1.EndOfTask ‘Main
.BeginOfTask 1
.Loop CON, forever‘North
.If SENVAL, SENSOR_2, EQ, CON, 863
.SetVar measure, CON, 1
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 862
.SetVar measure, CON, 1
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 861
.SetVar measure, CON, 1
.EndIf‘North-East
.If SENVAL, SENSOR_2, EQ, CON, 920
.SetVar measure, CON, 2
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 919
.SetVar measure, CON, 2
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 918
.SetVar measure, CON, 2
.EndIf‘East
.If SENVAL, SENSOR_2, EQ, CON, 810
.SetVar measure, CON, 3
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 809
.SetVar measure, CON, 3
010111-1
C1
D1 D2
D3 D4
D5
D6
D7
IC1R1
R2R3
R4
R5R6
R7
R8
SENSOR1
B
A
+-
010111-1010111-1
Figure 2. Par souci de compacité, les résistances et diodes se montent à la verticale.N’oubliez pas le pont de câblage sous le capteur.
Liste des composants
Résistances :R1 = 47 kΩR2,R5 à R8 = 100 kΩR3 = 150 kΩR4 = 220 kΩ
Condensateurs :C1 = 22 µF/16 V radial
Semi-conducteurs :D1 à D6 = 1N4148D7 = BAT85IC1 = 74HCT4066
Divers :Capteur 1 = Pewatron 6945
(Pewatron AG,www.pewatron.com)
BT1 = pile compacte 9 V +connecteur à pression
2 câbles de connexion Lego (coupé en deux) :l’un d’une longueur de 26,6 cm (n° commande Lego 5311)l’autre d’une longueur de 9 cm (n° commande Lego 5041)
tion du logiciel en Visual Basic, l’ap-plication sera transmise par la tourau bloc RCX.L’exemple choisi est tout simple. Lelogiciel fixe une direction (normale-ment .SETVAR setpoint, CON, 1 ; cedernier chiffre pouvant être comprisentre 1 et 8, il détermine la directionchoisie). Ensuite, on lit indéfiniment,en boucle, la valeur du capteur.Lorsque l’azimut correspond à ladirection choisie au préalable, levibreur du RCX émet un signal.Les quatre lignes qui suivent l’ins-truction « With RCX » traitent de lacommunication entre PC et RCX.Elles n’ont aucune relation directeavec notre application. Après cela,on sélectionne le 3e « slot » du pro-gramme dans le RCX, puis dans latâche principale (Main), on règle ladirection voulue pour travailler avecla boussole (setpoint), le registredestiné à mémoriser la valeur mesu-rée (measure) et l’on met à zéro ladifférence (dif) entre mesure etobjectif. La dernière instruction deMain lance la tâche 1, celle quimesure en boucle sans fin.Chaque mesure de direction est exé-cutée trois fois de suite pour éviter ladispersion. Lorsque le résultat sesitue dans les aires de vent d’un dessecteurs, on transmet le numérod’ordre de ce secteur.Après les 24 comparaisons de lamesure, on vérifie si la valeur corres-pond à la direction choisie. Si c’est lecas (dif=0), le système entonne uncri de victoire, le Playsystemsound.
(010111)
Bibliographie : Lego Robotics Invention SystemElektor 4 à 9 / 2000 et 11 / 2000.
LOISIRS
236/2002 Elektor
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 808
.SetVar measure, CON, 3
.EndIf‘South-East
.If SENVAL, SENSOR_2, EQ, CON, 856
.SetVar measure, CON, 4
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 855
.SetVar measure, CON, 4
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 854
.SetVar measure, CON, 4
.EndIf‘South
.If SENVAL, SENSOR_2, EQ, CON, 818
.SetVar measure, CON, 5
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 817
.SetVar measure, CON, 5
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 816
.SetVar measure, CON, 5
.EndIf‘South-West
.If SENVAL, SENSOR_2, EQ, CON, 830
.SetVar measure, CON, 6
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 829
.SetVar measure, CON, 6
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 828
.SetVar measure, CON, 6
.EndIf‘West
.If SENVAL, SENSOR_2, EQ, CON, 787
.SetVar measure, CON, 7
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 786
.SetVar measure, CON, 7
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 785
.SetVar measure, CON, 7
.EndIf‘North-West
.If SENVAL, SENSOR_2, EQ, CON, 887
.SetVar measure, CON, 8
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 886
.SetVar measure, CON, 8
.EndIf
.If SENVAL, SENSOR_2, EQ, CON, 885
.SetVar measure, CON, 8
.EndIf
‘The sensor value is stored in register ‘measure’‘the target value in ‘setpoint’.SetVar dif, VAR, measure ‘dif=measure-setpoint.SubVar dif, VAR, setpoint.If VAR, dif, EQ, CON, 0
.PlaySystemSound 0.EndIf.EndLoop.EndOfTaskEnd With
End Sub
CAPTEUR1010111 - 12
Figure 3. Ce dessin montre commentimplanter le plus petit de ponts decâblage disposé côté « pistes » de laplatine.
MICROCONTRÔLEUR
24 Elektor 6/2002
Nous devons à Mark Alberts et à sa sociéténéerlandaise (www. mcselec.com) la nais-sance de BASCOM, un compilateur déve-loppé à l’origine pour la famille AVR d’Atmel.Plus tard, il élargit cette famille de compila-teurs par la version BASCOM-LT destinéetout particulièrement au petit contrôleur dutype 89C2051. Plus tard, il en développa unenouvelle version, BASCOM-51, destinée auxdérivés plus puissants de la famille 8051. Ilest possible de télécharger, depuis le siteInternet de MSC-Electronics une version dedémonstration de BASCOM-51, capable de
générer des programmes dont lataille est limitée à 2 Koctets, unetaille respectable dans le monde descompilateurs, sachant que le codegénéré par BASCOM est très efficace(lire compact). Nous avons testécette version de démonstration avecnotre carte 89S8252 Flash, le résultatde ce test étant plus que satisfai-sant, pourquoi ne pas dire simple-ment excellent !.Le compilateur connaît un certainnombre de paramètres importants.
Sous le point de menu « Options/Compiler/Output » on choisit le typede fichier à générer en fin d’opéra-tion. Le type le plus important est lefichier Hex, sachant que ce type defichier (hexfile) peut être transférédans le contrôleur à l’aide d’un pro-gramme tel que MicroFlash ouAtmelISP. Le fichier de type Debugest très intéressant pour travailleravec le simulateur intégré de BAS-COM. Le fichier de type Error sert àvisualiser les messages donnant leserreurs ayant eu lieu en coursd’opération.On trouve un outre paramétrageimportant sous le point de menu« Options/Compiler/Output/Misc »,paramètre où se fait le choix dufichier Registre (Register file),89s8252.dat dans le cas présent. Lecompilateur connaît dès lors tous lesregistres à fonction spéciale (SFR =Special Function Register) de cecontrôleur.La meilleure façon d’essayer ce com-pilateur est de lui faire exécuter unpetit programme pour sorties de portrapides. Le premier point qui frappeest de constater que BASCOM sepasse de numérotation de lignesd’instructions. Il s’agit partant d’unBASIC structuré. On utilise ici, aulieu du classique GOTO + numérode ligne, des Do, While et autres ins-tructions similaires.BASCOM suit une tendance en coursde généralisation : les langages de
Bascom-51Un nouveau compilateur BASIC pour la carte 89S8252 Flash
Burkhard Kainka
Il était possible, jusqu’à présent, d’utiliser la carte 89S8252 Flash d’Elektoravec, entre autres, l’interpréteur BASIC-52. Les amateurs du langage deprogrammation BASIC ont, cependant, une alternative : BASCOM-51, lanouvelle étoile au firmament des compilateurs.
Figure 1. L’environnement de programmation.
MICROCONTRÔLEUR
256/2002 Elektor
programmation tels que BASIC, C et Pascalse rapprochent de plus en plus.Seconde constatation agréable, il faut décla-rer le type de toutes les variables. Il est pos-sible, par exemple, de travailler avec desoctets (Bytes) ce qui nous rapproche trèsprès de ce que l’on pourrait faire en assem-bleur. On peut en outre indiquer si lesvariables concernées doivent se trouver enmémoire interne ou externe. BASCOM-51peut fort bien se débrouiller sans mémoireexterne, ce qui est loin d’être évident dans lecas d’un compilateur.
‘——————————-‘ BASCOM-51‘ Port outputs‘ PORT1.bas‘——————————-Dim N As ByteDo
Figure 2. Le paramétrage du compilateur.
NiliPascalL’assembleur, le BASIC et C ne sont pas les seuls langages de programma-tion utilisables pour la programmation de microcontrôleurs. Le Pascal faitégalement partie de cette famille. Nous avons testé un Pascal connu, Nili-Pascal, sur la carte 89S8252 Flash et cela avec succès. Il est important debien définir les paramètres corrects au niveau du compilateur :
Codesegment: $0000Ramsegment: $0000Ramsize: $8000MHZ: $11.0592Baud(ser.): 9600
C’est avec ce paramétrage que nous avons converti le programme enPascal donné ci-après (lecture de l’état d’un port) :
Copyright by O’Niel Annand Valentin SomProgarmme de test sous NiliPascal pour simulation sous NiliSim
program port_test;
const port1_0 = $90;
var i:integer;
begin mettre toutes les sorties à ‘1’ pour la lecture d’un port writeport ($FF,1); writeln (‘Port1=’,port(1));write (‘Bit 0 de Port 1 est à ‘,bit(port1_0)’ logique ‘);
end.
Le fichier de type .hex obtenu en sortie a été chargé dans le contrôleur, le résultat de cette opération ayant été testé avec succès par lebiais d’un programme de terminal. On peut partant affirmer que NiliPascal est utilisable lui aussi.
Sachez qu’il existe un ouvrage accompagné du logiciel NiliPascal :Compilateur croisé PASCAL, O’Neil A. V. Som, Publitronic, ISBN – 2-86661-099-7
Autre ouvrage consacré au PASCAL digne d’intérêt :Je programme en PASCAL les microcontrôleurs de la famille 8051 (80C537)Bernd vom Berg, Peter Groppe, Publitronic, ISBN – 2-86661-098-9
‘ Port input freq. devider‘ Toggle.bas‘—————————————
While 1 = 1While P1.0 = 1WendP1.1 = Not P1.1While P1.0 = 0Wend
Wend
BASCOM-51 est capable de traiternon seulement des octets de portsmais également des bits individuel-lement. L’exemple ci-après divise lafréquence disponible sur la ligne deport P1.0 et fournit la moitié de cettefréquence sur la ligne P1.1, ceci parinversion, lors de chaque flanc des-cendant, du bit P1.1. Le programmetravaille partant en diviseur binaire.La fréquence d’entrée maximale estde 50 kHz.
‘——————————-‘ BASCOM-51‘ Port outputs‘ PORT1.bas‘——————————-Dim N As ByteDoFor N = 1 To 255P1 = NNext N
LoopEnd
Il est possible, si le besoin s’en fai-sait sentir, d’intercaler des lignesd’assembleur. L’exemple ci-aprèsillustre la génération d’impulsionsrapides sur le port P1, impulsions sesuivant à intervalles de 10 ms. Latemporisation de durée plus impor-tante se fait par BASIC, les proces-sus à la chronologie critique enassembleur.
‘—————————————‘ BASCOM-51‘ Ass. example Assem.bas
‘ mixed assembler and Basic‘—————————————Print “pulses”
While 1 = 1$asm
mov A , #00mov R1,#100
L1:mov P1,Ainc adjnz R1,L1
$end AsmWaitms 10WendEnd
L’intérêt de BASCOM-51 ne se limitepas aux aspects évoqués ici. Il sup-porte ainsi différentes interfaces uti-lisables avec des périphériques plusspécifiques, affichages LCD à pilo-tage en mode d’opération ou 8 bits,bus I2C, bus monofilaire (1-Wire bus)et comme nous l’avons illustré plushaut, l’interface sérielle logicielle.Ceci simplifie très notablementnombre de processus. Nous ne pou-vons que recommander à tout utili-sateur de contrôleurs de la famille8051 ou AVR de s’intéresser à BAS-COM d’un peu plus près.
(021003)
On pourra, pour de plus amples infor-mations au sujet de BASCOM, se tour-ner vers le site de son auteur :www.mcselec.com
autres sites où décharger la version dedémonstration gratuite :www.elektronikladen.de/bascomavr.htmlwww.elektronikladen.de/bascom8051.htmlwww.ckuehnel.ch (allemand)www.ckuehnel.ch/ckskript/auswahl.htm(allemand)
L’un des endroits où commander BAS-COM est le site Internet de ElektronikLaden (RFA) :www.elektronikladen.de
MICROCONTRÔLEUR
26 Elektor 6/2002
For N = 1 To 255P1 = NNext N
LoopEnd
Avec chaque nouveau logiciel de program-mation le premier aspect auquel on s’inté-resse est bien évidemment la vitesse d’exé-cution que l’on peut espérer atteindre. Unoscilloscope branché à la ligne de port P1.1donne une réponse rapide et indéniable :30 µs et pas plus pour chaque nouvelle sor-tie. À titre de comparaison, si l’assembleurest, avec 3 µs seulement, 10 fois plus rapide,le compilateur-C READS-51 requiert lui, 125 µpour la même tâche, BASIC-52 ayant besoinlui de pas moins de 2 500 µs. On le constate,BASCOM-51 est le vainqueur indiscutabledans la catégorie des compilateurs et inter-préteurs que nous avons comparés. Autreavantage important par rapport à BASCI-52,les programmes générés sont du type à capa-cité de démarrage d’exécution automatique(auto-start).Le compilateur dispose de plusieurs inter-faces sérielles. Les instructions INPUT etPRINT transfèrent des données par le biais del’UART (Universal Asynchronous Receiver/Transmitter = Émetteur/Récepteur Asyn-chrone Universel) interne du contrôleur. Letaux de transmission (baudrate) est à para-métrer sous le point de menu « Options/Com-piler/Communication ».
‘——————————-‘ BASCOM-51‘ Port inputs and outputs‘ RS232.bas‘——————————-Dim N As Byte
While 1 = 1Input NP1 = NN = P1Print N
Wend
Il est également possible d’utiliser, outrel’UART matériel, un UART logiciel, de sorteque la carte 89S8252 Flash d’Elektor peutégalement disposer de plusieurs interfaces.Le Listage ci-après montre comment utiliserces UART, sachant que l’on utilise, pour lepremier test, les mêmes contacts que pourl’UART que possède le processeur. Auniveau de l’UART logiciel on traite des octetsindividuels par le biais des instructions GETet PUT.
‘—————————————‘ BASCOM-51
Language Taille de mémoirerequise
Durée deboucle Auto-start
Basic-52 8 K ROM, RAM 2500 µs avec EEPROMuniquement
READS51 C >4 K ROM, RAM 125 µs oui
oui
oui
Assembleur < 1 K ROM 3 µs
BASCOM-51 < 2 K ROM 30 µs
Tableau 1. Comparaison Compilateur/Assembleur
INFOCARTE 6/2002
Set d’instructions du BASCOM-51
Set d’instructions du BASCOM-51
INFOCARTE 6/2002
InstructionSignification
Syntaxe$INCLUDE
Includes an ASCII file in the program at the current position.$INCLUDE file
$BAUDInstruct the compiler to override the baud rate setting from the options menu.
$BAUD = var
$CRYSTALInstruct the compiler to override the crystal frequency options setting.
$CRYSTAL = var
$IRAMSTARTCompiler directive to specify starting internal memory location.
$IRAMSTART
= constant
$DEFAULT XRAMCompiler directive to place each dimensioned variable as XRAM.
$DEFAULT XRAM$LARGE
Instructs the compiler that LCALL statements must be used.$LARGE
$LCDInstruct the compiler to generate code for 8-bit LCD displays attached to the data bus.
$LCD = [&H] address
$NOBREAKInstruct the compiler that BREAK statements must not be compiled.
$NOBREAK$NOINIT
Instruct the compiler that no initialisation must be performed.$NOINIT
$NOSPInstruct the compiler that the stack pointer must not be set.
$NOSP$OBJ
Includes Intel objectcode.$OBJobj
$RAMSTARTSpecifies the location of the external RAM memory.
$RAMSTART =
[&H]address$RAMSIZE
Specifies the size of the external RAM memory.$RAM
SIZE = [&H] size
$ROMSTARTSpecifies the location of the ROM memory.
$ROMSTART =
[&H] address$SERIALINPUT
Specifies that serial input must be redirected.$SERIALINPUT =
label$SERIALINPUT2LCD
This compiler directive will redirect all serial input to the LCD display instead ofechoing to the serial port.
$SERIALINPUT2LCD$SERIALOUTPUT
Specifies that serial output must be redirected.$SERIALOUTPUT =
label$SIM
Generates code without waiting loops for the simulator.$SIM
ABS()Returns the absolute value of a numeric variable.
var = ABS(var2)
ALIASIndicates that the variable can be referenced with another name.
newvar ALIAS oldvarASC()
Convert a string into its ASCII value.var =
ASC(string)BCD()
Converts a variable into its BCD value.PRINT BCD( var ), LCD BCD( var )
BITWAITWait until a bit is set or reset.
BITWAIT x SET/RESET
BREAKGenerates a reserved opcode to pause the simulator.
BREAKCALL
Call and execute a subroutine.CALL Test [(var1, var-n)]
CHR()Convert a byte, Integer/Word variable or a constant to a character.
PRINT CHR(var) s = CHR(var)
CLSClear the LCD display and set the cursor home.
CLSCONST
Declares a symbolic constant.DIM symbol AS CONST
valueCONFIG TIMER0, TIMER1
Configure TIMER0 or TIMER1.CONFIG TIMERx =
COUNTER/TIMER , GATE=INTERNAL/EXTERNAL , MODE=
0/3CONFIG LCD
Configure the LCD display.CONFIG LCD =
LCDtypeCONFIG LCDBUS
Configures the LCD databus.CONFIG
LCDBUS = constant
CONFIG BAUDConfigure the uP to select the intern baud rate generator (only 80535, 80537)
CONFIG BAUD = baudrate
CONFIG 1WIRE
Configure the pin to use for 1WIRE statements.
CONFIG 1WIRE =
pinCONFIG SDA
Overrides the SDA pin assignment from the Option Settings.CONFIG SDA =
pinCONFIG SCL
Overrides the SCL pin assignment from the Option Settings.CONFIG SCL =
pin
276/2002
Elektor
InstructionSignification
SyntaxeI2CSEND
Send data to an I2C-device.I2CSEND slave, var I2CSEND slave, var , bytes
I2START,I2CSTOP,I2CRBYTE, I2CSTART generates an I2C start condition, I2CSTOP generates an I2C stop condition,
I2CWBYTE
I2CRBYTE receives one byte from an I2C-device, I2CWBYTE sends one byte to an I2C-device.
I2CSTART, I2CSTOP, I2CRBYTE var, 8/9, I2CWBYTE val
IDLEPut the processor into the idle mode.
IDLEIF
Allows conditional execution or branching, based on the evaluation of a Boolean expression.IF expression THEN, [ ELSEIF expression THEN ], [ ELSE ], END IF
INCRIncrements a variable by one.
INCR varINKEY
Returns the ASCII value of the first character in the serial input buffer.var =
INKEYINP()
Returns a byte read from a hardware port or external memory location.var =
INP(address)INPUTBIN
Read binary values from the serialport.INPUTBIN
var1 [,var2]INPUTHEX
Allows input from the keyboard during program execution.INPUTHEX
[“ prompt” ] , var [ , varn ] [ NOECHO ]INPUT
Allows input from the keyboard during program execution.INPUT [“ prompt” ] , var [ , varn ] [ NOECHO ]
LCDSend constant or variable to LCD display.
LCD xLCDHEX
Send variable in hexadecimal format to the LCD display.LCDHEX var
LEFT()Return the specified number of leftmost characters in a string.
var = Left(var1 , n )
LENReturns the length of a string.
var = LEN( string )
LOADLoad specified TIMER with a value for autoreload mode.
LOAD TIMER , valueLOCATE
Moves the LCD cursor to the specified position.LOCATE y , x
LOOKUPReturns a value from a table.
var =LOOKUP( value, label )
LOOKUPSTRReturns a string from a table.
var =LOOKUPSTR( value, label )
LOWRetrieves the least significant byte of a variable.
var = LOW
( s )LOW
ERLINEReset the LCD cursor to the lowerline.
LOWERLINE
MakeBCD()Convert a variable into its BCD value.
var1 = M
AKEBCD(var2)MAKEINT()
Compact two bytes into a word or integer.varn =
MAKEINT(LSB , MSB)
MakeDEC()Convert a BCD byte or Integer/Word variable to its DECIMAL value.
var1 = M
AKEDEC(var2)MID()
The MID function returns part of a string (a sub string). The MID statement replaces part of a string variable with another string.
var = M
ID(var1 ,st [, l] ), MID(var ,st [, l] ) =
var1MOD
Returns the remainder of a division.ret =
var1 MOD var2
NEXTEnds a FOR..NEXT structure.
NEXT [var]ON Interrupt
Execute subroutine when specified interrupt occurs.ON interrupt label [NOSAVE]
ON ValueBranch to one of several specified labels, depending on the value of a variable.
ON var [GOTO] [GOSUB] label1 [, label2 ]OPEN - CLOSE
Opens and closes a device.OPEN
“device” for MODE As #channel, CLOSE
#channel
OUTSends a byte to a hardware port or external memory address.
OUT address, valueP1,P3
P1 and P3 are special function registers that are treated as variables.Px =
var, var = Px
PEEK()Returns a byte stored in internal memory.
var = PEEK( address )
POKEWrite a byte to an internal memory location.
POKE address , valuePOW
ERDOWN
Put processor into powerdown mode.POW
ERDOWN
Set d’instructions du BASCOM-51
Set d’instructions du BASCOM-51
INFOCARTE 6/2002INFOCARTE 6/2002
28El
ekto
r6/
2002
Inst
ruct
ion
Sign
ifica
tion
Synt
axe
CONF
IG D
EBOU
NCE
Confi
gures
the d
elayti
me fo
r the
DEB
OUNC
E stat
emen
t.CO
NFIG
DEB
OUNC
E =
time
CONF
IG SP
ICo
nfigu
res th
e SPI
relate
d stat
emen
ts.CO
NFIG
SPI
= SO
FT, D
IN =
PIN,
DOU
T = PI
N , C
S = PI
N, CL
K = PI
NCO
NFIG
LCDP
INOv
erride
the L
CD-o
ption
s to s
tore t
he se
tting
s in y
our p
rogra
m.CO
NFIG
LCD
PIN
, DB4
= .1
, DB5
=P1
.2,.D
B6=
P1.3,
DB7
=P1
.4, E=
P1.5,
RS=
P1.6
CONF
IG W
ATCH
DOG
Confi
gures
the w
atchd
og ti
mer f
rom th
e AT8
9C82
52CO
NFIG
WAT
CHDO
G =
time
COUN
TERx
Set o
r retr
ieve t
he CO
UNTE
R0 or
COUN
TER1
varia
ble. F
or 80
52 TI
MER2
com
patib
le ch
ips,
COUN
TER2
can b
e used
too.
COUN
TERX
= va
r or v
ar =
COU
NTER
XCP
EEK(
)Re
turns
a by
te sto
red in
code
mem
ory.
var =
CPE
EK( a
ddres
s )CU
RSOR
Set t
he LC
D Cu
rsor S
tate.
CURS
OR O
N / O
FF B
LINK
/ NO
BLIN
KDA
TASp
ecifie
s valu
es to
be re
ad by
subs
eque
nt RE
AD st
ateme
nts.
DATA
var [
, var
n]DE
BOUN
CEDe
boun
ce a p
ort pi
n con
necte
d to a
switc
h.DE
BOUN
CE P
x.y , s
tate ,
labe
l [ , S
UB]
DECR
Decre
ments
a va
riable
by on
e.DE
CR va
rDE
CLAR
E SUB
Decla
res a
subr
outin
e.DE
CLAR
E SU
B TE
ST[(v
ar as
type
)]DE
FINT,
DEFB
IT, D
EFBY
TE, D
EFW
ORD
Decla
res al
l var
iables
that
are n
ot dim
ensio
ned o
f the
DefX
XX ty
pe.
DEFB
ITb,
DEFB
YTE
c, DE
FINT
I, DE
FWOR
Dx
DEFL
CDCH
ARDe
fine a
custo
m LC
D ch
arac
ter.
DEFL
CDCH
AR c
har,r
1,r2,
r3,r4
,r5,r6
,r7,r8
DELA
YDe
lay pr
ogra
m ex
ecutio
n for
a sho
rt tim
e.DE
LAY
DIM
Dime
nsion
a va
riable
.DI
M va
r AS
[XRA
M/IR
AM] t
ype
DISA
BLE
Disa
ble sp
ecifie
d inte
rrupt.
DISA
BLE
interr
upt
DISP
LAY
Turn
LCD
displa
y on o
r off.
DISP
LAY
ON /
OFF
DO ..
LOOP
Repe
at a b
lock o
f stat
emen
ts un
til co
nditi
on is
true
.DO
state
ments
LOOP
[ UN
TIL
expr
ession
]EL
SEEx
ecuted
if the
IF-TH
EN ex
press
ion is
false
.EL
SEEN
ABLE
Enab
le sp
ecifie
d inte
rrupt.
ENAB
LE in
terru
ptEN
DTer
mina
te pr
ogra
m ex
ecutio
n.EN
DEN
D IF
End a
n IF .
. THE
N str
uctur
e.EN
D IF
or E
NDIF
ERAS
EEr
ases
a var
iable
so me
mory
will b
e rele
ased
.ER
ASE
var
EXIT
Exit
a FOR
..NEX
T, DO
..LOO
P , W
HILE
..WEN
D or
SUB..
END
SUB.
EXIT
[FOR
] [DO
] [W
HILE
] [SU
B]FO
REx
ecute
a bloc
k of s
tatem
ents
a num
ber o
f tim
es.FO
R va
r = st
art T
O/DO
WNT
O en
d [ST
EP va
lue]
FOUR
THLIN
ERe
set LC
D cu
rsor t
o the
four
th lin
e.FO
URTH
LINE
FUSIN
GFo
rmats
a flo
ating
-poin
t valu
e.va
r = F
usin
g( so
urce,
mas
k)GE
TRC
Retri
eves
the va
lue of
a res
istor
or a c
apac
itor.
var =
GET
RC( p
in )
GETR
C5Re
triev
es a R
C5 in
frared
code
and s
ubad
dress
.GE
TRC5
(add
ress ,
comm
and)
GOSU
BBr
anch
to an
d exe
cute
subr
outin
e.GO
SUB
label
GOTO
Jump t
o the
speci
fied l
abel.
GOTO
labe
lHE
X()
Retur
ns a
string
repr
esenta
tion o
f a he
xade
cimal
numb
er.va
r = H
ex( x
)HE
XVAL
()Co
nvert
strin
g rep
resen
ting a
hexa
decim
al nu
mber
into a
nume
ric va
riable
.va
r = H
EXVA
L( x
)HI
GHRe
triev
es the
most
sign
ifican
t byte
of a
varia
ble.
var =
HIG
H( s
)HO
MEPla
ce the
curso
r at t
he sp
ecifie
d line
at lo
catio
n 1.
HOM
E UP
PER
/ LOW
ER /T
HIRD
/ FO
URTH
I2CRE
CEIVE
Recei
ves d
ata fr
om an
I2C s
erial
devic
e.I2
CREC
EIVE
slav
e, va
r I2C
RECE
IVE
slave
, var
,b2W
, b2R
Inst
ruct
ion
Sign
ifica
tion
Synt
axe
PRIN
TSe
nd ou
tput t
o the
RS-2
32 po
rt.PR
INT
var ;
“ co
nstan
t”PR
INTB
INPr
int bi
nary
conte
nt of
a var
iable
to the
seria
l port
.PR
INTB
INva
r [,va
rn]
PRIN
THEX
Send
s a va
riable
in he
xade
cimal
forma
t to t
he se
rial p
ort.
PRIN
THEX
var
PRIO
RITY
Sets
the pr
iority
leve
l of t
he in
terru
pts.
PRIO
RITY
SET /
RESE
T inte
rrupt
READ
Read
s tho
se va
lues a
nd as
signs
them
to va
riable
s.RE
AD va
rRE
MIns
truct
the co
mpile
r tha
t com
ment
will f
ollow
.RE
M or
‘RE
SET
Reset
a bit
of a
PORT
(P1.x
, P3.x
) or a
n inte
rnal
bit/b
yte/in
teger/
word
varia
ble.
RESE
T bit
, RES
ET va
r.xRE
STOR
EAll
ows R
EAD
to rer
ead v
alues
in sp
ecifie
d DAT
A stat
emen
ts.RE
STOR
E lab
elRE
TURN
Retur
n from
a su
brou
tine.
RETU
RNRIG
HT()
Retur
n a sp
ecifie
d num
ber o
f righ
tmost
char
acter
s in a
strin
g.va
r = R
IGHT
(var
1 ,st
)RO
TATE
Shift
s all b
its on
e plac
e to t
he le
ft or
right.
ROTA
TE va
r , L
EFT/
RIGH
T [ ,
shift
s]SE
LECT
Execu
tes on
e of s
evera
l stat
emen
t bloc
ks de
pend
ing
SELE
CT C
ASE
var, C
ASE
test1
: stat
emen
ts, [C
ASE
test2
: stat
emen
ts ],
on th
e valu
e of a
n exp
ressio
n.CA
SE E
LSE
: stat
emen
ts, E
ND S
ELEC
TSE
TSe
t a bi
t of a
PORT
(P1.x
,P3.x)
or a
bit/b
yte/in
teger/
word
varia
ble.
SET
bit, S
ET va
r.xSH
IFTCU
RSOR
Shift
the c
ursor
of th
e LCD
disp
lay le
ft or
right
by on
e posi
tion.
SHIF
TCUR
SOR
LEFT
/ RI
GHT
SHIFT
IN, S
HIFT
OUT
Shift
s a bi
tstrea
m in
or ou
t a va
riable
.SH
IFTI
Npin
, pclo
ck , v
ar , o
ption
, SHI
FTOU
Tpin
, pclo
ck , v
ar , o
ption
SHIFT
LCD
Shift
the L
CD di
splay
left
or rig
ht by
one p
ositio
n.SH
IFTL
CD L
EFT
/ RIG
HTSO
UND
Send
s puls
es to
a port
pin.
SOUN
D pin
, dur
ation
, freq
uenc
ySP
ACE(
)Re
turns
a str
ing th
at co
nsist
s of s
paces
.va
r = S
PACE
(x )
SPIIN
Read
s a va
lue fr
om th
e SPI-
bus.
SPIIN
var, b
ytes
SPIO
UTSe
nds a
value
of a
varia
ble to
the S
PI-bu
s.SP
IOUT
var ,
bytes
STAR
TSta
rt the
speci
fied t
imer/
coun
ter.
STAR
T tim
erST
OPSto
p prog
ram
execu
tion.
STOP
STOP
TIME
RxSto
p the
speci
fied t
imer/
coun
ter.
STOP
time
rST
R()
Retur
ns a
string
repr
esenta
tion o
f a nu
mber.
var =
Str
( x )
STRIN
G()
Retur
ns a
string
cons
isting
of m
repe
tition
s of t
he ch
arac
ter w
ith AS
CI Co
de n
var =
STR
ING(
m ,n
)SU
BDe
fines
a Sub
proc
edur
e.SU
B Na
me[
(var1)
]SW
APEx
chan
ge tw
o var
iables
of th
e sam
e typ
e.SW
AP va
r1, va
r2TH
IRDLIN
ERe
set LC
D cu
rsor t
o the
third
line.
THIR
DLIN
EUP
PERL
INE
Reset
LCD
curso
r to t
he up
perli
ne.
UPPE
RLIN
EVA
L()
Conv
erts a
strin
g rep
resen
tation
of a
numb
er int
o a nu
mber.
var =
Val
( s )
VARP
TR()
Retri
eves
the m
emor
y-add
ress o
f a va
riable
.va
r = V
ARPT
R( va
r2 )
WAIT
Susp
ends
prog
ram
execu
tion f
or a g
iven t
ime.
WAI
Tsec
onds
WAITK
EYWa
it un
til a
char
acter
is re
ceive
d in t
he se
rial b
uffer.
var =
WAI
TKEY
WAITM
SSu
spen
ds pr
ogra
m ex
ecutio
n for
a give
n tim
e in m
S.W
AITM
SmS
WHI
LE ..
WEN
DEx
ecutes
a ser
ies of
state
ments
in a
loop,
as lo
ng as
a giv
en co
nditi
on is
true
.W
HILE
cond
ition
state
ments
WEN
D
MICROPROCESSEUR
30 Elektor 6/2002
La mise en oeuvre d’un affichage LCD intelli-gent, donc doté de son propre contrôleur d’af-fichage, en association avec une mono-carte àmicrocontrôleur n’a rien de bien sorcier. Cetype de contrôleurs embarqué sur l’affichageintègrent en effet un générateur de caractèreset se laissent facilement piloter de manière àfournir, en sortie, des caractères ASCII.La grande majorité des affichages LCD intel-ligents respectent aujourd’hui un standardcommun. Nous allons utiliser ici un affichageLCD standard à 2 lignes de 16 caractères. Letableau ci-dessous en donne le brochage :
Le transfert de données se fait selon un pro-tocole de bus tel que le connaissait le 6800,l’un des premiers processeurs du siècle der-nier : il faut commencer par définir, par lebiais de la ligne R/W, le sens de déplacementdes données, la saisie proprement dite se fai-sant ensuite par le biais d’une impulsion àflanc montant (positive) sur la ligne de vali-dation (Enable). Dans le cas d’un processeurdu type 8051 il faut de ce fait opérer une inter-
connexion des signaux RD et WR. Lebasculement du sens de déplace-ment des données peut se faire parl’intermédiaire d’une ligne d’adresse.On a besoin d’une autre ligned’adresse pour effectuer la sélectionde registre du contrôleur d’affichagepar le biais de la ligne RS (RegisterSelect). On a, à ce niveau, différentia-
tion entre données et instructions. Laconnexion de l’affichage au contrôleurse fait selon le graphique de lafigure 1, le pilotage étant extrême-ment simplifié et ne requérant pas dedécodeur d’adresse. Les adresses del’affichage se manifestent à compterde l’adresse 8000HEX et sont répétéesà plusieurs endroits de la cartographie
Cours« Microcontrôleurs »6ème partie : pilotage de l’affichage LCDBurkhard Kainka
La sortie des données en provenance de la mono-carte Flash se fait dansla plupart des cas par le biais du terminal connecté au système, le PC. Ona par contre souvent besoin, pour des applications autonomes (hors-PCpartant) d’un système d’affichage quelconque.
1 14
+5V
10k
Contraste
1k
1/4 74HC00&
D0
D1
D2
D3
D4
D5
D6
D7
D0
D1
D2
D3
D4
D5
D6
VS
S
VD
D
Vo RS
R/W
E D7
A1 A0A15
W/R RD 010208 - 7 - 11
AFFICHAGE LCD
Figure 1. Connexion de l’affichage LCD.
Broche Signal
1 VSS, 0 V2 VDD, +5 V3 V0, réglage du contraste 0 à 2 V4 RS, 1= données, 0 = instructions5 R/W, 0 = écriture, 1 = lecture6 E, signal de validation (Enable),
actif au niveau haut7 à14 Bus de données, D0 à D7
MICROPROCESSEUR
316/2002 Elektor
d’une position lors de l’écriture d’un carac-tère, mais il est possible, par la saisie d’uneadresse donnée, de le mettre à une positionchoisie.Le petit programme écrit en BASIC-52 listé ci-après constitue un premier exemple de pilo-tage rudimentaire. Le programme ne procèdepas à une interrogation de l’indicateur BF.Cela ne pose pas de problème tant que le
pilotage se fait depuis un programme pure-ment BASIC en raison de la relative lenteurde ce langage.
Pilote de LCD pour BASIC-52En BASIC-52, l’affichage de caractères indi-viduels n’est guère confortable. L’interpréteurprévoit cependant une extension prenant laforme d’un pilote (driver) propre permettantde contourner les instructions PRINT. L’utili-sateur devra à cet effet créer une routine desortie chargée de lire les caractères depuis leregistre R5 (banc 0) et de les transmettre à lasortie, l’affichage LCD dans le cas présent. Ilest possible, par l’instruction de sortie utili-sateur (User Output) UO 1, de détourner lasortie vers un pilote de son cru. Lors de l’exé-cution d’une instruction PRINT, le systèmesaute, pour chacun des caractères, à l’adresse4030HEX, adresse à laquelle doit se trouverune instruction de saut vers le programme-pilote de sortie.L’instruction PRINT@ offre une autre possibi-lité d’utiliser un pilote-maison. Dans ce cas-là on saute à l’adresse 403CHEX, adresse àlaquelle on doit trouver, comme dans le casprécédent, une instruction de saut vers laroutine de sortie.Le pilote-maison ne sera activé que lorsquele bit 39 de la RAM interne (bit 7 à l’adresse24HEX) se trouve positionné (mis à « 1 »). Cecipourra se faire, par exemple, après la routined’initialisation de l’affichage qui est elle indis-pensable de toutes façons.L’extension décrite plus loin intègre le pilotede LCD ainsi que les autres extensions d’ins-truction décrite ci-après. BASIC-52 met déjàà disposition de nombreuses aides pour pou-voir se doter d’extensions externes. Les sous-programmes en langage machine doiventcomporter les lignes suivantes : Tous lesregistres, exception faite des 8 registres du
(on parle d’adresses-miroir). Cettecaractéristique interdit malheureuse-ment l’utilisation, simultanément, dumême domaine par une EEPROM.Les accès en écriture ne sont autori-sés que pour A0=0, sachant qu’àA0=1, l’affichage met ses donnéessur le bus. Comme on a procédé àl’interconnexion en fonction logiqueNON-ET (NAND) des lignes RD etWR (ce qui se traduit, en raison del’inversion, par une fonction WR OURD), une instruction d’écriture versune adresse de lecture se traduiraitpar un conflit de bus. On disposeainsi, pour la commande, desadresses suivantes :
8000HEX : Écriture d’instruction8001HEX : Lecture d’instruction8002HEX : Écriture de données8003HEX : Lecture de données
On a un miroir de ce domaine jus-qu’à FFFFHEX. On pourrait partantfort bien utiliser également, parexemple, le domaine allant deF000HEX à F003HEX. L’affichageconnaît un nombre important d’ins-tructions. Il est fait une différence auniveau du type d’instruction, quipossèdent un nombre caractéris-tique de bits mis à zéro dans lespositions de poids fort.
Il est possible de procéder à relec-ture du registre d’instruction de l’af-fichage. Il fournit alors comme infor-mation l’état de son indicateur d’oc-cupation, BF (Busy Flag) et laposition du curseur à cet instant.Il faut impérativement, avant tout
accès pour une opération d’écriture,vérifier l’état de l’indicateur BF. Cen’est qu’à condition que BF soit auniveau bas que l’on pourra écrire uneinstruction ou un octet de donnéedans l’affichage, sachant que l’oncourt sinon le risque de destructiondu circuit du contrôleur de l’affi-chage.
Il faut commencer, après mise soustension, par écrire quelques octetsd’initialisation dans le registre d’ins-truction. À titre d’exemple :
L’affichage comporte un indicateurde donnée interne auquel sont attri-buées les différentes positions decaractères. Dans le cas d’un affi-chage à 2 lignes de 16 caractèrescela se traduit par la cartographiesuivante :
Ligne 1 : Adresse 00HEX à 0FHEXLigne 2 : Adresse 40HEX à 4FHEX
Une instruction de positionnementdu curseur se compose du bit 7 posi-tionné (80HEX = 128) et d’uneadresse; on aura ainsi par exemple80HEX + 40HEX = C0HEX = 192 pourle début de la seconde ligne.Le curseur avance automatiquement
Fonction 7 6 5 4 3 2 1 0
Effacer l’affichage 0 0 0 0 0 0 0 1
Curseur en position « home » 0 0 0 0 0 0 1 x
Décaler0 0 0 0 0 1 ID S
(ID=1/0: droite/gauche, S=1/0: sans/avec texte)
Affichage, curseur0 0 0 0 1 D C B
(D,C,B=1/0: Affichage, curseur, clignotement On/Off)
Décaler0 0 0 1 SC RL x x
(SC=1/0: curseur texte vers G/D = 1/0: gauche/droite)
Initialisation0 0 1 DL N x x x
(DL=1/0: bus 8/4 bits, N=1/0: une ligne ou les deux)
Générateur de caractères 0 1 Caractère
Position du curseur 1 Adresse de mémoire
Colonne
Système paré ? BF Adresse mémoire (=position du curseur)
Initialisation avec bus de données à 8 bits et 2 lignes 0011 1000 = 38h = 56
Activer affichage, éteindre curseur 0000 1100 = 0Ch = 12
Effacer l’affichage 0000 0001 = 01h = 1
banc 3 (18HEX à 1FHEX) et l’accu et le pointeurde données doivent rester inchangés. L’utili-sateur a le droit d’utiliser à ses propres fins latotalité du banc 3.Le pilote de LCD sauvegarde l’accu et le poin-teur de données sur la pile de manière à lesrestaurer avant le saut de retour (en fin deroutine). Le registre 4 du banc 3 contient laposition actuelle du curseur. Lors d’un carac-tère retour chariot (CR = Carriage Return) lecurseur est positionné au début de la ligne encours. Dans le cas d’un affichage à 2 lignesl’utilisateur pourra faire en sorte que le cur-seur vienne se positionner au début de laseconde ligne (position 64 = 40HEX). On s’as-sure, lors de chaque accès de donnée sur l’af-fichage, par le biais de la routine Busy, que lesystème est paré.Il faut, avant la première mise en oeuvre dupilote, préparer l’affichage par un appel à laroutine d’initialisation (CALL 4250h). BASIC-52 permet à l’utilisateur de prévoir de tellesextensions de fonctions par le biais d’ins-tructions d’appel spéciales, CALL 00,CALL 01, CALL 03 et ainsi de suite jusqu’àCALL 127, instructions qui sont dérivéesautomatiquement vers les adresses 4100HEX,4102HEX, 4104HEX jusqu’à 41FEHEX. Les ins-tructions de saut correspondantes envoyantaux adresses effectives permettent un appelsimplifié de l’initialisation du LCD (CALL 00)et de la routine du curseur. Le curseur doitêtre positionné par le biais d’un paramètresupplémentaire :
CALL 427FH 0ou, en raccouriCALL 01 0
La routine du curseur traite une expressionplacée derrière l’adresse de CALL, expressionqui pourra même comporter une opérationmathématique telle que CALL 01(64+4*N).
Le pilote d’affichage doit se trouver en RAMà partir de l’adresse 4030HEX. Il n’y a pas deproblème à ce niveau sachant que la totalitéde la RAM de la mono-carte à 89S8252 Flashsert également de mémoire de programme. Ilfaudra cependant, par l’instructionMTOP=8191, limiter quelque peu le domainede la RAM BASIC pour éviter tout conflit avecla gestion de mémoire propre au système. Leprogramme BASIC LCD2.BAS met le piloteLCD à poste en RAM.
Un RUN se traduit par le chargement dupilote en RAM et son initialisation. On pourraensuite supprimer le programme de charge-
MICROPROCESSEUR
32 Elektor 6/2002
Listage 1. Commande de l’affichage en Basic-521 REM LCD data output (LCD.BAS)2 REM data 8002h, commands 8000h10 STRING 80,1620 GOSUB 100030 $(0)=”Elektor 89S8252 “40 GOSUB 130050 $(1)=”LCD 2 * 16 “60 GOSUB 140070 END 1000 REM LCD-Reset1010 XBY(8000H)=561020 XBY(8000H)=121030 XBY(8000H)=11040 RETURN 1100 REM cursor position 01110 XBY(8000H)=1281120 RETURN 1200 REM output1210 XBY(8002H)=A1220 RETURN 1300 REM line 11310 XBY(8000H)=1281320 FOR I=1 TO 16 : XBY(8002H)=ASC($(0),I) : NEXT 1330 RETURN 1400 REM line 21410 XBY(8000H)=1921420 FOR I=1 TO 16 : XBY(8002H)=ASC($(1),I) : NEXT 1430 RETURN
Listage 2. Le pilote d’affichage;Basic 52 extension LCD driver (Basic52_LCD.asm)
4030 .org 4030H4030 02 42 00 ljmp LCD ;UO 1403C .org 403CH403C 02 42 00 ljmp LCD ;PRINT@4100 .org 4100H4100 41 50 ajmp LCDInit ;CALL 04102 41 7F ajmp CURSOR ; CALL 1
4200 .org 4200H4200 C0 83 LCD push DPH4202 C0 82 push DPL4204 C0 E0 push ACC42064206 51 2E acall Busy4208 E5 1C mov A,28 ;Cusor position420A 44 80 orl A,#128420C 90 80 00 mov DPTR,#8000H420F F0 movx @DPTR,A ;set Cursor 4210 51 2E acall Busy4212 E5 05 mov A,05 ;get char4214 B4 0D 02 cjne A,#0DH,J1 ;= CR?4217 80 1D sjmp CR4219 B4 0A 02 J1 cjne A,#0AH,J2 ;= LF?421C 80 09 sjmp End421E 90 80 02 J2 mov DPTR,#8002H4221 F0 movx @DPTR,A ;output char4222 E5 1C mov A,28 ;bank 3, R4, cursorpos.4224 04 inc A4225 F5 1C mov 28,A ;inc cursor 4227 D0 E0 End pop ACC4229 D0 82 pop DPL422B D0 83 pop DPH422D 22 ret422E422E 90 80 01 Busy mov DPTR,#8001H4231 E0 movx A,@DPTR4232 20 E7 F9 jb ACC.7,Busy4235 22 ret42364236 51 2E CR acall Busy
ment voire y ajouter le programme utilisateur.La mise en oeuvre du pilote de LCD n’a riende difficile. Dans le cas normal on a détour-nement de la sortie par l’instruction UO 1.Dès lors, toutes les instructions PRINT ontrait à l’affichage. Il est en outre possible,avec CALL 01, de modifier la position du cur-seur. Le programme LCDDEMO.BAS donnéen exemple visualise l’état du port P1 à l’affi-chage. On a ensuite affichage d’un texte. Àchaque fin de ligne l’instruction PRINT faitrepasser le curseur en début de la ligne encours.
Le programme visualise, en temps réel, l’étatdu port 1 à l’affichage :
PORT P1 = 255
Le pilote LCD, une fois chargé, reste en RAM,même si, après un NEW, on charge un nou-veau programme. On pourra continuer d’uti-liser l’affichage. Le transfert d’opérationsd’impression (Print) vers l’affichage en parti-culier constitue une simplification notable.
Pilotage de LCD en CUn pilotage par le biais de Reads51 requiertdes fonctions en assembleur vu qu’il fautaccéder à de la mémoire externe.Heureusement que du code assembleur enligne (Assembler-Inline-Code) ne pose pas deproblème. Le listage 5 met à disposition lesfonctions décisives LCDinit, LCDcursor etLCDwrite. Le code assembleur tout ce qu’ily a de plus orinaire, prend tout simplementplace entre les repères #asm et #endasm. Ilest également possible, de ce fait, d’utiliserle compilateur pour des exercices d’assem-bleur pur. Il faudra se rappeler que, par rap-port à TASM, l’écriture des nombres hexadé-cimaux se fait différemment (0x8000 au lieude 8000h).La construction de fonctions en assembleurest exactement la même que pour les fonc-tions en C; il est possible, depuis des fonc-tions en C, de les appeler sous leur dénomi-nation propre. Le bloc assembleur ne se ter-mine pas par une instruction de saut retsachant que le compilateur C se charge decette opération lors de la conversion de lafonction.Dans les cas requérant le transfert d’unevariable vers la fonction, il faut s’attendre àun peu plus de complexité sachant qu’il faut latransférer vers l’accumulateur. Reads51connaît les variables systèmes spéciales, BPLet BPH, pour la gestion d’une pile logicielleinterne, qui permet également un transfert deparamètres. Un paramètre transmis à une
MICROPROCESSEUR
336/2002 Elektor
4238 74 20 mov a,#32423A 90 80 02 mov DPTR,#8002h423D F0 movx @DPTR,a423E E5 1C mov A,284240 04 inc A4241 F5 1C mov 28,a4243 54 3F anl A,#634245 B4 28 EE cjne A,#40,CR4248 E5 1C J3 mov a,28424A 54 C0 anl a,#192424C F5 1C mov 28,a424E 80 D7 sjmp End425042504250 C0 83 LCDInit push DPH4252 C0 82 push DPL4254 C0 E0 push ACC42564256 51 2E acall Busy4258 90 80 00 mov DPTR,#8000H425B 74 38 mov A,#38H425D F0 movx @DPTR,A425E 51 2E acall Busy4260 90 80 00 mov DPTR,#8000H4263 74 06 mov A,#06H4265 F0 movx @DPTR,A4266 51 2E acall Busy4268 90 80 00 mov DPTR,#8000H426B 74 0C mov A,#0CH426D F0 movx @DPTR,A426E 51 2E acall Busy4270 90 80 00 mov DPTR,#8000H4273 74 01 mov A,#01H4275 F0 movx @DPTR,A4276 D2 27 setb 027H ;PRINT@ enable42784278 D0 E0 pop ACC427A D0 82 pop DPL427C D0 83 pop DPH427E 22 ret427F427F C0 E0 CURSOR push ACC 4281 74 39 Mov A,#574283 12 00 30 lcall 030h 4286 74 01 Mov A,#14288 12 00 30 lcall 030h 428B E9 mov A,R1 428C F5 1C mov 28,A428E D0 E0 pop ACC 4290 22 ret
Listage 3. Programme de chargement du pilote d’affichage3999 REM LCD driver (LCD2.bas) 4000 MTOP=81914029 REM output jumps4030 DATA 002H,042H,000H,000H,000H,000H,000H,000H4038 DATA 000H,000H,000H,000H,000H,000H,000H,000H4039 FOR N=0 TO 15 : READ D : XBY(04030H+N)=D : NEXT N4099 REM CALL jumps4100 DATA 041H,050H,041H,07FH,061H,000H,000H,000H4101 FOR N=0 TO 7 : READ D : XBY(04100H+N)=D : NEXT N4199 REM LCD4200 DATA 0C0H,083H,0C0H,082H,0C0H,0E0H,051H,02EH4208 DATA 0E5H,01CH,044H,080H,090H,080H,000H,0F0H4210 DATA 051H,02EH,0E5H,005H,0B4H,00DH,002H,080H4218 DATA 01DH,0B4H,00AH,002H,080H,009H,090H,080H4220 DATA 002H,0F0H,0E5H,01CH,004H,0F5H,01CH,0D0H4228 DATA0E0H,0D0H,082H,0D0H,083H,022H,090H,080H4230 DATA 001H,0E0H,020H,0E7H,0F9H,022H,051H,02EH4238 DATA 074H,020H,090H,080H,002H,0F0H,0E5H,01CH4240 DATA 004H,0F5H,01CH,054H,03FH,0B4H,028H,0EEH4248 DATA 0E5H,01CH,054H,0C0H,0F5H,01CH,080H,0D7H4250 DATA 0C0H,083H,0C0H,082H,0C0H,0E0H,051H,02EH
MICROPROCESSEUR
34 Elektor 6/2002
4258 DATA 090H,080H,000H,074H,038H,0F0H,051H,02EH4260 DATA 090H,080H,000H,074H,006H,0F0H,051H,02EH4268 DATA 090H,080H,000H,074H,00CH,0F0H,051H,02EH4270 DATA 090H,080H,000H,074H,001H,0F0H,0D2H,027H4278 DATA 0D0H,0E0H,0D0H,082H,0D0H,083H,022H,0C0H4280 DATA 0E0H,074H,039H,012H,000H,030H,074H,001H4288 DATA 012H,000H,030H,0E9H,0F5H,01CH,0D0H,0E0H4290 DATA 022H4291 FOR N=0 TO 144 : READ D : XBY(04200H+N)=D : NEXT N4292 CALL 00
Listage 4. Test du pilote de LCD
100 REM driver use (LCDDEMO.BAS)110 UO 1 : REM User Output enable120 CALL 01H 0 : REM Cursor to
line 1130 PRINT “ PORT P1 = “140 CALL 01H 64 : REM Cursor to
line 2150 PRINT PORT1160 GOTO 150
Listage 5. Le module LCD.C// ——————- READS51 generated header ——————— // module : C:\Rigel\Reads51\Work\LCD\LCD.c// created : 10:46:46, Tuesday, March 05, 2002// ——————————————————————————-
#define data_write 0x8002;#define data_read 0x8003;#define cmd_write 0x8000;#define cmd_read 0x8001;
#include <Sio51.h>
void LCDinit(void)// // #asmlcall Busymov DPTR,#cmd_writemov A,#56movx @DPTR,Alcall Busymov DPTR,#cmd_writemov A,#12movx @DPTR,Alcall Busymov DPTR,#cmd_writemov A,#0x0C;movx @DPTR,Alcall Busymov DPTR,#cmd_writemov A,#1movx @DPTR,A
#endasm
#asmBusy:mov dptr, #cmd_read movx A, @dptrjb ACC.7,Busyret
#endasm
void LCDwrite(unsigned char dat)// // #asmlcall Busy
mov a, BPL ;load dat to aadd a, #0xFAmov dpl, amov a, BPHaddc a, #0xFFmov dph, amovx a, @dptr
mov dptr, #data_write
movx @dptr, a
#endasm
void LCDcursor (unsigned char pos)#asmlcall Busy
mov a, BPL ;load pos to aadd a, #0xFAmov dpl, amov a, BPHaddc a, #0xFFmov dph, amovx a, @dptr
mov dptr, #cmd_writeorl a, #0x80movx @dptr, a
#endasm
main()char dat;unsigned char pos;unsigned char n;
InitSerialPort0(DEF_SIO_MODE); LCDinit();while (1)pos=0;LCDcursor(pos);for(n=0; n<16; n++)LCDwrite (32); LCDcursor(pos);while (pos < 16)dat=getc();if (dat == 13) pos=16;else LCDwrite(dat);pos=pos+1;
pos=64;LCDcursor(pos);for(n=0; n<16; n++)LCDwrite (32); LCDcursor(pos);while (pos < 80)dat=getc();if (dat == 13) pos=80;else LCDwrite(dat);pos=pos+1;
while (1);
avons eu des réactions de lecteurs dont cer-taines se sont même traduites par uneréorientation du contenu prévu à l’origine.Nous les en remercions. Il n’est pas possible,bien entendu, d’aborder tous les aspects duthème « Microcontrôleurs ». Le nombre d’ap-plications et d’idées restant ouvertes necesse de croître.Il est dans nos intentions de vous proposer, àintervalle plus ou moins régulier, l’une oul’autre application reposant sur la carte89S8252 Flash. Cette mono-carte est devenue,en quelques mois, une plate-forme permettantde réaliser des développements très divers. Sivous avez effectué une application ou envisa-gez dans les prochaines semaines de réaliserun montage basé sur cette carte, vous pourrezparticiper à un concours Elektor dont nousdonnerons le règlement dans le numéro doublede Juillet/Août.
fonction se trouve à une adressedont la position se situe 6 points en-dessous de l’adresse de pile aumoment de l’appel de la fonction. Ilest possible, depuis cet endroit, detransférer (charger) dans l’accumu-lateur un octet y ayant été transféré.Contrairement à ce qui est le cassous BASIC-52, le langage C est tel-lement rapide qu’il faut impérative-ment se demander si l’affichage LCDest prêt à recevoir une nouvelle ins-truction. C’est là la fonction du sous-programme écrit en assembleurBusy. IL y est fait appel avantchaque nouvelle instruction et avanttoute opération d’écriture.
Le programme C principal crée unaffichage sur lequel il est possible
d’écrire par l’intermédiaire de l’inter-face sérielle. Un terminal quelconquesert au transfert du texte qui appa-raît ensuite sur l’affichage. On tra-vaille avec 2 lignes qui sont écritessuccessivement. À chaque fois que lecurseur arrive à la fin d’une ligne,l’autre ligne est effacée complète-ment, pour recevoir la suite du texte àpartir de la position la plus à gauchede la ligne.
(010208-7)
En guise de conclusionCe dernier article termine notrecours « Microcontrôleurs ». Nous yavons décrit les éléments les plusimportants tant matériels que logi-ciels. Tout au long du cours nous
MICROPROCESSEUR
356/2002 Elektor
MODÉLISME
38 Elektor 6/2002
EDiTS ProUpgrade du ESDLAvec upgrade du répondeur
Henk Prince
Après annonce d’une nouvelle version du logiciel tournant sous PC et ducontrôleur du système de pilotage de réseaux ferroviaires EDiTS Pro (Elek-tor Digital Train System) il fallait bien évidemment s’attendre à voir arriverune option de réactualisation (upgrade) de l’ESDL (le super-décodeur delocomotive). Cela fait près de 3 ans (cf. [1] de la bibliographie) que nousavons présenté le super-décodeur de locomotive dans l’un de nos numé-ros. La nouvelle version décrite ici pourra, dès à présent, remplacer l’an-cienne sachant qu’elle offre un certain nombre de possibilités nouvellestelles qu’une option de programmation du tableau de vitesse.
MODÉLISME
396/2002 Elektor
possible est de 32 soit 9. 7 d’entre elles sontdéjà utilisées pour les paramètres standard(tableau 1). Il nous en reste partant 2 de dis-ponibles pour la programmation du tableau devitesse. Vu que nous utilisons le format Moto-rola standard cette opération pourra se faire àl’aide du programmateur manuel décrit dansl’article cité en référence [1].Nous sommes parfaitement conscients dufait que la programmation de la totalité dutableau est une opération de longuehaleine. Pour cette raison, nous avons crééun petit programme auxiliaire disponibletant sur le site de EDiTS-Pro (cf. la réfé-rence [4] en fin d’article) que sur le nôtre(www.elektor.fr, domaine de télécharge-ment, juin 2002, nr 020094-11).
La programmationNous allons voir d’un peu plus près la procé-dure de programmation du tableau (mais éga-lement du reste des paramètres) pour donneraux amateurs la possibilité de programmer ledécodeur par le biais d’un programmateurqu’ils auraient en leur possession. Comme,nous supposons que vous le savez, l’informa-tion véhiculée par les rails prend la formed’un train de trits successif, de 4 tritsd’adresse de locomotive suivis par 1 trit pourl’éclairage avant et de 4 bits constituant lesdonnées de vitesse.Nous avons donné, dans les différents articlesde 1999 consacrés au sujet, les détails du pro-tocole Motorola. Notons que vous pouvezégalement les trouver dans l’ouvrage de che-
Sur la nouvelle version du Edits ProSuper-Décodeur de Locomotive(ESDL pour les intimes), l’auteur nes’est pas contenté d’ajouter de nou-velles fonctionnalités de supportpour la nouvelle version du logicielpour PC. Il a remis sur le métier uncertain nombre des aspects de base.Il devient possible maintenant detenir compte du type de moteuréquipant la locomotive. Comme vousn’êtes pas sans le savoir, il existe destracteurs à moteur à courant alter-natif et à courant continu.Les caractéristiques d’un moteurcontinu ne sont pas celles d’unmoteur alternatif, de sorte quequ’une locomotive à moteur continu,ira, à une position faible du régleur,plus vite que ne le ferait son homo-logue à courant alternatif. Le nombred’amateurs de moteurs à courantcontinu ne cessant de croître, nousavons fait en sorte qu’il soit possibled’adapter le tableau de vitesse quecomporte le décodeur aux caracté-ristiques du moteur.
Le tableau de vitesseLa vitesse du moteur se laisse régleren 16 pas. Chaque position durégleur correspond à un emplace-ment du tableau se trouvant dansl’EEPROM du décodeur. Ce tableaucomporte des valeurs qui servent àdéterminer la vitesse de déplace-ment de la locomotive. On a, en prin-cipe, la valeur 0 dans l’emplace-ment 0 (position la plus basse durégleur) et à l’emplacement 15 lavaleur la plus élevée, 0FFHEX.À l’origine, le décodeur a été conçu
pour des moteurs à courant alternatifde Märklin et le tableau d’origine ducomposant a été paramétré demanière à ce que lorsque le régleurse trouve en position basse la ten-sion appliquée au moteur soit dès ledépart un peu plus importante.Les locomotives de marques utili-sant un moteur continu comportentdans la plupart des cas un aimantpermanent et d’une combinaisond’engrenages donnant un rapport deconversion plus élevé. Ceci expliqueque leur couple de démarrage soitmeilleur et qu’elles se mettent,lorsque le régleur se trouve à uneposition basse, à rouler trop vite(pour la position de régleur concer-née). Il est possible de compenserpartiellement cette dérive en abais-sant la vitesse maximale, cetteapproche étant cependant loin d’êtreidéale. Ceci explique notre décisiond’une modification du progiciel (firm-ware) qui permette de changer lecontenu du tableau.Nous avons tiré parti du fait, qu’envue de programmer les paramètres dudécodeur, que cela était possible àl’aide de moyens simples. L’inconvé-nient de cette approche est que l’onne peut utiliser que les « trits » du for-mat Motorola (sur lequel le protocoleest basé). Si l’on sait que l’on utilise2 trits par instruction, on en déduitque le nombre maximal d’instructions
Figure 1. La fenêtre du programme permettant la programmation de cette nouvelle versionsuper-décodeur de locomotive.
Figure 2. Régleur de vitesse pour unelocomotive et un bouton de répon-deur se trouvant à l’adresse 139.
vet de nombreux amateurs d’EDiTS, dont lescoordonnées sont donnée en référence [2].Le paramétrage du ESDL s’est vu réserverune adresse fixe, 79, adresse qui occupe bienévidemment 4 trits. Les 5 trits restants ser-vent à l’envoi de l’information de paramé-trage avec, par exemple, l’adresse de loco-motive, la vitesse maximale, l’inertie dedémarrage et de freinage, etc. Le décodeurdoit avoir reçu chaque instruction correcte-ment au minimum 10 fois avant qu’elle ne soitacceptée comme valide. Dans la pratique celasignifie que si l’on place une instruction pen-dant 2 secondes sur les rails les données se
trouvent bien écrites dans lamémoire.Le tableau 1 récapitule toutes lespossibilités de paramétrage.La procédure de programmation dutableau n’a rien de bien sorcier : oncommence par programmer l’adressede l’emplacement où nous désironsmodifier une valeur. Ensuite, nousprogrammons la valeur requise audit emplacement. Il est possible decette manière de paramétrer un à unles différents emplacements.
Le programmeL’auteur a bien évidemment fait deson mieux pour se simplifier la vie,raison pour laquelle il a écrit un pro-gramme permettant de paramétrerle ESDL. Ce logiciel, qui ne peut mal-heureusement être utilisé qu’en com-binaison avec le contrôleur d’EDiTSPro, simplifiera la vie à nombred’amateurs de ce modèle de réseauferroviaire. Les possesseurs d’unautre type de contrôleur devrontécrire leur propre programme.Lors du démarrage nous voyonsapparaître une fenêtre qui visualisel’ensemble des éléments. Certainsde boutons sont familiers puisque cesont ceux de la fenêtre de paramé-trage de EDiTS Pro, à savoir adressede locomotive, vitesse maximale,inertie au démarrage et au freinage,intensité de l’éclairage et fréquencede clignotement. Sur la gauche deces boutons nous trouvons lesrégleurs servant à la définition deces éléments.La série de régleurs servant à la défi-nition des valeurs du tableau située
juste en-dessous saute immédiate-ment aux yeux. Chaque régleur cor-respond à un emplacement dutableau et à une position du régleurde vitesse. Il est également possiblede lire la position du régleur sur lebouton numérique placé juste en-des-sous. Dès que l’on actionne le bouton(par un souris-gauche) on aura pro-grammation de la valeur du régleurcorrespondant dans la mémoire dudécodeur. Il est possible, de cettemanière, de passer en revue succes-sivement tous les emplacements.Il a été prévu, en raison de l’impor-tance de la quantité d’informationsaccumulées pour chaque locomotiveet de l’impossibilité, à posteriori, derelire les données envoyées vers lecontrôleur, une option de sauvegarde(Save) des données vers le disque durainsi d’ailleurs qu’une possibilité deleur chargement (Load). Les para-mètres sont sauvegardés dans unpetit fichier dont la dénomination estcelle du numéro apparaissant dans lafenêtre du champ de saisie supérieurdoté de l’extension .stp. Tout àgauche, en-dessous des boutons Saveet Load, nous découvrons 3 boutonspour un certain nombre de valeurs detableau standard : logarithmique,linéaire et exponentiel. Elles pourronsservir de base de départ pour la créa-tion d’un tableau répondant à vossouhaits spécifiques.Le programme utilise le même fichier(com.inf) pour le paramétrage duport COM qu’EDiTS Pro et démarrerapartant avec le même portqu’EDiTS Pro, à condition que ce pro-gramme de paramétrage se trouvedans le même répertoire.Il est possible, si on le désire, d’op-ter pour un port COM différent parun double clic sur le texte. Le logicieln’existe qu’en anglais.
Attention : lors de la programmationdu décodeur, toutes les locomotivesse trouvant sur les rails se voientattribuer les nouveaux paramètres.La programmation ne tient partantpas compte de l’adresse de locomo-tive visualisée à l’écran.
On trouve, pour terminer, sur ladroite, un certain nombre d’organesde commande permettant de testerles paramètres tout juste définis.C’est la locomotive dont l’adresse estvisualisée à cet instant dans le
MODÉLISME
40 Elektor 6/2002
Tableau 1. Programmation des paramètres987654321 Trit
LLLL0 programmation de l’adresse de locomotive (LLLL = 1 à 255)MMM01 programmation de la vitesse maximale (MMM = 0 à 15)AAA0X programmation de l’inertie d’accélération et de freinage
(AAA = 0 à 15)LLLL0 programmation de l’adresse de locomotiveSSS11 programmation de l’intensité lumineuse de la fonction 0 (SSS = 0...15)KKK1X programmation de la fréquence de clignotement de la fonction 4
(KKK = 0...26)LLLL0 programmation de l’adresse de locomotiveCCCX1 nouveau : programmation de l’adresse du tableau (CCC = 0 à 15)EEEXX nouveau : programmation de la valeur de vitesse (EEE = 0 à 255)
Où : trit 0 = 00 binaire, trit X = 01 binaire, trit 1 = 11 binaire; trit 1 à 4 = adresse de locomotive 79
Tableau 2.Adresses dans le répondeur.
Adresse Bouton de bit 7de loco répondeur
sans IR vierge (00)0 (*1
1 1 1M M M
78 78 179 (*1 interdit -
80 80 181 81 182 82 183 83 1M M M
127 127 1128 (*2 interdit 0
129 129 0M M M
254 254 0255 255 0
(*1 Cette adresse est bloquée dans le ESDL(*2 La locomotive roule bien à cette
adresse, mais le bouton de répondeurn’est pas activé
seule la nouvelle version, la V1.2, met à dis-position le domaine d’adresse additionnel. Vuque seul le progiciel (le contenu du compo-sant programmé) a changé, les platines et dudécodeur et du répondeur n’ont pas a subirde modification.
(020094)
On notera que cette nouvelle mouture de PIC s’estvu attribuer une autre dénomination, EPS020094-41 pour le PIC du super-décodeur de locomotive etEPS020095-41 pour le PIC du répondeur. Notez qu’ilexiste des offres spéciales pour 5, 10 ou 20 exem-plaires (cf. site Elektor à l’adresse : www.elektor.fret la liste EPS du mois prochain).
champ de saisie de l’adresse de loco-motive qui réagira à ces impulsions.Il est possible ainsi de commander lavitesse, la direction et les 5 fonctions.Autres adaptationsAvec la dernière version du logicielde pilotage d’EDiTS Pro, le domainedes adresses de locomotive a aug-menté très sensiblement pour allerjusqu’à 255. Ceci implique commeconséquence qu’il faut que tant ledécodeur de locomotive que lerépondeur d’adresse soient prévuspour cela. Bien que le ESLD ait étéprévu à l’origine pour une plaged’adresses allant de 1 à 81, il n’en estpas moins possible, avec l’ancienneversion, d’utiliser des adresses supé-rieures à 81. Puisque nous étions enplein processus de réactualisation(update) nous avons fait en sorte quele nouveau décodeur soit utilisablesur la totalité du domaine.Il semblerait en outre qu’un certainnombre d’utilisateurs aient réussi àprogrammer une locomotive àl’adresse 79. Le résultat de cetteopération est une locomotive qui cir-cule mais qu’il est devenu impos-sible de paramétrer à une autreadresse. Ce nouveau progicielbloque cette adresse « maudite ».
RépondeurIl faut bien entendu que répondeurd’adresse de locomotive [2] soit enmesure de reconnaître également
les adresses les plus élevées. Dansla version d’origine, on a mise, dèsla réception de l’information infra-rouge (IR), des données décodéessur le bus. Ce n’est qu’après ferme-ture du rail de contact que le bit 7passe au niveau haut et qu’EDiTSPro procédera à la lecture des don-nées. Cela signifie que 129 (81HEX)correspond à l’adresse de locomo-tive 1, 130 (82HEX) à l’adresse 2 etainsi de suite. Avec la nouvelle ver-sion, les choses changent. Le répon-deur ne mettra les données sur lebus qu’après fermeture du rail decontact. Nous avons, de manière àgarder une compatibilité descen-dante avec la version précédente,laissé le domaine des adressesfaibles tel qu’il était mais en l’aug-mentant jusqu’à 127 (0FFHEX)domaine auquel nous avons ajoutéle reste (adresses de locomotive 128à 255, 0HEX à 07HEX). Le résultat decette opération est qu’EDiTS Pro voitl’adresse de locomotive 128 (80HEX)comme étant l’adresse 00 et partantcomme une locomotive ne disposantpas de dispositif de réponse (répon-deur) IR. Le tableau 2 qui indiqueégalement les exceptions devraitéclairer « votre lanterne ».Signalons, en guise de conclusion,qu’il est possible d’utiliser conjoin-tement le ESDL et le répondeur, etcela même avec l’ancienne versiond’EDiTS Pro. Sachez cependant que
MODÉLISME
416/2002 Elektor
Adresses Internet :Groupe utilisateurs EDiTS Pro sur Yahoo :
fr.groups.yahoo.com/group/editsproAdresse du site EdiTS Pro de l’auteur :
www.gironet.nl/home/editspro
Littérature[1] Elektor
[2] EDiTS Pro : répondeur d’adresse delocomotive, Elektor n° 258, décembre 1999, page 66 et suivantes
[3] EDiTS Pro, pilotage par ordinateur demodèle réduit ferroviaire, Publitronic,ISBN 2-86661-124-1
MICROCONTRÔLEUR
42 Elektor 6/2002
Il est en effet, à lamême fréquenced’horloge, 12 fois plusrapide que le 8051d’origine, ce qui luipermet de prétendre, àsa fréquence d’horlogemaximale de 33 MHz,atteindre des vitessesde traitement de33 MIPS !Dans notre numéro dedécembre de l’anpassé [1] nous vousavons proposé unemono-carte à micro-contrôleur utilisant unmicrocontrôleur Flashd’Atmel. Comme nousne faisons pas d’ostra-cisme, c’est aujour-d’hui au tour de DallasSemiconductor d’avoirl’honneur de noscolonnes. Un menuréchauffé ? Oui et non.Oui, il s’agit en effet ànouveau d’un micro-contrôleur doté de
Mono-carte«high-speed» à DS89C420Capable de vitesses de traitement jusqu’à 33 MIPS !
Projet : Luc Lemmens
Au premier coup d’oeil (superficiel), le matériel de ce projet n’a rien debien innovateur : il semble s’agir d’une mono-carte à 8051 relativementstandard où seule est notable l’absence de support pour EPROM. Mêmela mémoire de programme Flash dont est doté le microcontrôleur utiliséici n’a rien de révolutionnaire. C’est le DS89C420 de DallasSemiconductor qui constitue la nouveauté de ce projet.
MICROCONTRÔLEUR
436/2002 Elektor
mémoire Flash possédant degrandes similitudes avec son vieilancêtre qu’est le 8051. Non : par l’ap-port de modifications au noyau duprocesseur, l’augmentation trèsimportante de sa vitesse et l’adjonc-tion de nouvelles caractéristiques àun 8051 standard, Dallas vient demettre sur le marché un microcon-trôleur 8 bits capable de tenir tête,sans problème, aux microcontrôleurs16 bits plus modernes !S’il est vrai que 33 MHz est une fré-quence d’horloge plus que respec-table pour un microcontrôleur quelqu’il soit, Dallas n’a pas atteint les50 MHz dont ils rêvaient (c’était eneffet le nombre magique qui étaitvisé lors de l’annonce anticipée duDS98C420). Mais même à ces33 MHz il n’en est pas moins 12 foisplus rapide qu’un 8051 standardtournant lui aussi à 33 MHz.Signalons au passage que l’un desexemplaires de ce contrôleur dontnous disposions au laboratoire tra-vaillait bien, à température ambiante,à 50 MHz, mais comme le fabricantdoit pouvoir garantir cette fréquencemaximale sur une plage de tempéra-ture allant de 0 à 70 °C et pour tousses composants, il s’est résigné àparler de 33 MHz. Rien n’interdit par-tant aux amateurs de surcadençagede tenter leur chance...Dallas Semiconductor est loin d’être
le seul fabricant de microcontrôleursà broder sur le concept au succèsindéniable qu’est celui du 8051.Nous vous avons présenté, au coursdes ans, nombre de projets utilisantl’un ou l’autre microcontrôleur dérivéde ce contrôleur « progéniteur proli-fique ». Il s’agissait dans la plupartdes cas de contrôleurs dotés de péri-phériques additionnels tels que CAN(Convertisseur Analogique/Numé-rique), chien de garde (watchdog),unités de comparaison et capture(compare&capture), etc. LeDS89C420 (cf. le synoptique de lafigure 1) ne respecte pas totalementce moule. Même le noyau du proces-seur a été sujet à modifications, amé-liorations et autres extensions.Toutes ces modifications sont ren-dues possibles par la structure del’architecture de type 8051, en raisonen particulier de la présence, dans lemicrocontrôleur, de registres spéci-fiques dits SFR (Special FunctionRegisters = registre à fonction spé-ciale comme vous auriez pu le tra-duire sans être un expert de lalangue de Shakespeare). Le domainede RAM allant de l’adresse 80HEX à0FFHEX est réservée à ces registres,mais sur le premier 8051 seule unepartie de ces adresses était effecti-vement utilisée. Tout comme nombred’autres descendants de ce compo-sant, le DS89C420 met à contribution
Contrôle &séquenceur
internesRegistres
Décodeur
IR
Interruption
CPU
E/S série Timer/Counters 1 K x 8
RAM16 K x 8
Flash Ports d'E/S
SFRs
DPTR
DPTR1
SP
PC
AR Inc
AR
Timer Watchdog
Gestion puissance
Horloge &
ResetGestion
mémoire ROMChargeur
XT
AL
2
XT
AL
1
RS
T
PS
EN
EA
AL
E/P
RO
G P0 P1 P2 P3
d'adresses Bus
020102- 11
Bus de commande interne
&
Figure 1. Synoptique de la structure interne du DS89C420.
les adresses de registre « libres » pour gagneren fonctionnalités. Tous les extras ont étépositionnés dans cette zone de mémoire demanière à permettre d’entrer en contact avecdes périphériques additionnels ou de nou-velles fonctions par des opérations de lectureet d’écriture dans la mémoire du microcon-trôleur. Ainsi, par exemple, un port sériel sup-plémentaire possède sa propre adresse deregistre pour le tampon et un registre pour leparamétrage de ce port. Cette approche per-met d’ajouter des fonctionnalités sans avoir àétendre le set d’instructions.
Un coup d’oeil au schéma de la figure 2 nousapprend que ce nouveau rejeton de Dallasajoute pas moins de 33 (!) registres SFR aux21 que possède déjà, à l’origine, le 8051.Nous n’allons pas vous ennuyer en procédantà une énumération exhaustive de tous cesregistres additionnels dont nous laisseronségalement le fonctionnement dans le vague.Nous limiterons notre intérêt aux nouveautésméritant d’être soulignées. Signalons la pré-sence, sur le site Internet de Dallas(www.dalsemi.com) d’un User’s Guide de prèsde 200 pages et d’une fiche de caractéris-tiques de 60 pages, documents ayant trait audit microcontrôleur. Leur lecture vous révèleratous les secrets du DS89C420.Le gain de vitesse est dû principalement à lastructure totalement nouvelle du noyau (core)du contrôleur qui permet l’exécution d’ungrand nombre des instructions en un seulcycle d’horloge. Notre vieux 8051 possède un
cycle-machine comportant 12 cyclesd’horloge. Ceci suffit à expliquer quele DS89C420 soit, à fréquence d’hor-loge identique, 12 fois plus rapideque le 8051 et 4 fois plus rapide queles autres contrôleurs grande vitessede la maison Dallas. De plus, lecontrôleur intègre un certain nombrede périphériques et se targue decaractéristiques que ne possède pasle 8032 : 16 Koctets de mémoire deprogramme Flash, 1 Koctet de RAM,3 temporisateurs/compteurs(timer/counter) à 16 bits, 2 UART(Universal Asynchronous Receiver/Transmitter = Émetteur/RécepteurAsynchrone Universel), 2 pointeursde données (datapointer), un tempo-risateur chien de garde (watchdog-timer), 5 priorités d’interruption et256 octets de RAM pour la pile et lesvariables.Le DS89C420 possède également unmode de gestion de la consomma-tion (Power Management Mode) quipermet une division dynamique par1 024 de la fréquence d’horlogeinterne. Comme la consommation decourant du contrôleur est propor-tionnelle à la fréquence d’horloge àlaquelle il travaille, ce mode permetdes économies d’énergie notablesaux instants de faible activité. Unesimple interruption ou le déclenche-ment d’activités au niveau du port
sériel suffit à faire passer le contrô-leur à sa pleine vitesse.Le DS89C420 existe en 3 types deboîtier, DIP, PLCC et TQFP; il esttotalement compatible broche àbroche avec d’autres microcontrô-leurs de la famille 8051. En ce quiconcerne la programmation, cecontrôleur est totalement rétro-com-patible, mais il serait dommage,pour de nombreuses applications,de ne pas mettre à profit les nou-velles possibilités offertes par cecomposant. Dans ce premier articlenous allons, avant d’aborder lesétapes de description physique dela carte et de sa réalisation, nousintéresser aux nouvelles spécificitésdu DS89C420. Nous supposons icique l’architecture du 8051 standardvous est connue.
CompatibilitéIl est parfaitement possible d’utiliserce contrôleur en tant que remplaçantd’un 8051 monté dans une applica-tion existante, sachant qu’il en pos-sède également la totalité du setd’instructions. En règle généralecette substitution ne devrait pasavoir de conséquence néfaste sur lefonctionnement du montage, mais lavitesse d’exécution devrait être sen-siblement plus élevée. Il n’en restepas moins qu’il y a un certainnombre de points auquel il faudrafaire attention si l’on envisage unetelle substitution.
Les temporisateurs/compteursLe DS89C420 possède, nous ledisions, 3 temporisateurs (timer) à16 bits qui travaillent selon le moded’origine, à savoir 12 cycles d’hor-loge par cycle-machine, de sorte quela chronologie reste compatible aveccelle du 8051. Il est heureusementpossible, si on le désire, de les para-métrer individuellement de manièreà utiliser 1 cycle d’horloge par cycle-machine.
Set d’instructions et chronologieLes instructions remplissent exacte-ment les mêmes fonctions que leurshomologues du 8051; les effets auniveau des bits, indicateurs (flag) etétat du microcontrôleur sont restésinchangés. La chronologie des ins-tructions a elle cependant changé,fait prenant une importance capitale
MICROCONTRÔLEUR
44 Elektor 6/2002
F8
F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80
B
EIE
ACC
WDCON
PSW
T2CON
SCON1
IP0
P3
IE
P2
SCON0
P1
TCON
P0
EIP1
T2MOD
SBUF1
SADEN0
IP1
SADDR0
SBUF0
EXIF
TMOD
SP
EIP0
RCAP2L
ROMSIZE
SADEN1
SADDR1
TL0
DPL
8 OCTETS
BPA1
RCAP2H
BP2
TL1
DPH
BPA2
TL2
PMR
TH0
DPL1
FCNTL
TH2
STATUS
ACON
TH1
DPH1
FDATA
CKMOD
CKCON
DPS
BIT ADRESSABLE
TA
PCON
FF
F7
EF
E7
DF
D7
CF
C7
BF
B7
AF
A7
9F
97
8F
87
020102 - 12
Figure 2. Tableau récapitulatif des SFR intégrés dans le DS89C420.
mémoire de programme pour procéder àl’exécution de cette nouvelle partie de code.La mémoire Flash située entre 400HEX et7FFHEX est, dans ce cas-là, désactivée et« remplacée » par un bloc de taille identiquesis en RAM.Bien que cette RAM fasse, physiquement,partie de la mémoire interne, elle est adres-sée comme de la mémoire externe par le biaisd’instructions MOVX.Les domaines d’adressage de la mémoire deprogramme et de celle de donnée ont tousdeux une taille de 64 Koctets. Dès que l’on asortie du domaine d’adresses du microcon-trôleur, le système adresse automatiquementde la mémoire externe. La question que l’onvient alors à se poser est : mais où donc vais-je trouver, par exemple, de la RAM statis-tique suffisamment rapide pour pouvoirsuivre ce microcontrôleur impatient ? Il n’y apas d’inquiétude à avoir à ce sujet; lorsqu’iladresse de la mémoire externe, le DS89C420calme le jeu, d’autant plus qu’il est mêmepossible à l’utilisateur, de paramétrer la lon-gueur des signaux WR, RD, PSEN et ALE demanière de permettre à un périphérique pluslente de « dialoguer » avec le système.Notons cependant que ce point spécifique
dans le cas de processus à la chro-nologie critique.
La chronologie relative de certainesinstructions a été modifié elle aussi.Avec l’architecture d’origine, les ins-tructions « MOVX A,@DPTR » et« MOV direct,direct » duraienttoutes deux 24 cycles d’horloge, cequi revenait à 2 cycles-machine etétaient partant d’une durée iden-tique. Dans le cas du DS89C420 lapremière des instructions en ques-tion ne dure plus que 2 cycles-machine soit 2 cycles d’horloge, alorsque la seconde en dure 3. Il faudrapartant étudier le set d’instructionsavec soin lorsque la chronologie estun facteur décisif du fonctionnementcorrect d’un programme.
ProgrammablesériellementIl est très facile de programmer lecontrôleur « en circuit » c’est-à-direlorsqu’il se trouve implanté sur lemontage. IL suffit pour cela, commenous le verrons dans le schémadonné dans le second article (àpublier dans le numéro de sep-tembre), il suffit de rajouter à l’élec-tronique de base une triplette detampons 3 états destinés à mettreles signaux RESET, EA et PSENsimultanément à l’état requis. Avecce paramétrage, on adresse un sec-teur spécifique de la ROM du contrô-leur dans lequel se trouve un pro-gramme moniteur qui est lancé. Ildevient possible à partir de là, par lebiais d’une liaison sérielle vers unPC, de transférer des données vers lamémoire de programme en Flash ducontrôleur et d’y chercher des don-nées en vue de les lire. Le systèmede développement idéal en faitpuisque l’on peut y développer ettester des applications destinées,ultérieurement, à « finir » dans un8032 par exemple. Il va sans dire quedans ce cas-là il ne saurait être ques-tion de mettre à contribution les nou-velles possibilités, ô combienattrayantes, qu’offre le DS89C420 (vuque le 8032 ne serait pas en mesurede les comprendre).Signalons en passant que ce contrô-leur est également programmableparallèlement par le biais de pro-grammateurs d’EPROM ou de Flashstandards.
La cartographie mémoire
Le DS89C420 possède les 3 domainesde mémoire que l’on différentie sur le8051 (cf. figure 3) : les registres, lamémoire de programme et la mémoirede données. Tous les registres se trou-vent intégrés au microcontrôleur, les2 autres domaines pouvant être euxsoit intégrés totalement au microcon-trôleur, soit totalement externes, soitmixtes (partie en interne et partie enexterne).Le contrôleur dispose de 16 Koctetsde mémoire de programme enFlash et de 1 Koctet de mémoire dedonnées.Un aspect totalement innovant estde pouvoir basculer de la mémoirede données pour en faire de lamémoire de programme ! Cela per-met, par exemple, de saisir, en coursd’exécution d’un programme, unnouveau sous-programme par lebiais du port sériel ou depuis de lamémoire externe, de l’écrire dans lamémoire de données, basculerensuite cette partie en mode
MICROCONTRÔLEUR
456/2002 Elektor
Inutilisablesi SRAM
interne activée
Mémoirede données
externe
Mémoirede programme
externe
MEMOIREINTERNE
REGISTRESINTERNES BROUILLON
SRAM1 K x 8
Mém. de don.OU de prog.
400 à 7FF
Mémoire Flash(Programme)
8 K x 8Adressage
indirect128 octets
SFR 128 octets
03FF
Note : Les zones hachurées des mémoires interne et externe sontdésactivées lors de la mise sous tension (par défaut)
FFFF FFFF
03FF
0000020102 - 13
4000
0000
3FFFFF
807F
2F201F
00
2000
1FFF
0000
Bit adressable
Banc 3Banc 2Banc 1
Banc 0
MémoireFlash
(Programme)8 K x 8
Figure 3. La cartographie du 89C420 est identique à celle du 8051 d’origine.
est plus délicat qu’il n’y paraît à premièrevue et qu’il demande un examen soigneux dela chronologie et du DS89C420 et de lamémoire qui y est couplée. Dallas Semicon-ductor a écrit un mode d’emploi décrivantdans le détail la façon de procéder, note citéeen référence [2].Il est possible, en cours d’exécution d’uneapplication, de modifier l’adresse la plus éle-vée de la mémoire de programme interne. Ildevient possible ainsi de désactiver une par-tie de cette mémoire pour libérer (momenta-nément) ce domaine d’adresse à l’intentionde mémoire de programme externe.Il est en outre possible d’adresser la mémoireexterne en mode « pages ». Cela signifie quel’on n’utilise pas le bus d’adresses/de don-nées multiplexé du port 0, mais d’un busd’adresses multiplexé. Dans ce cas-là, l’octetd’adresse de poids fort transféré dans le ver-rou (latch). Tant que cet octet ne change pas,on ne modifie que l’octet d’adresse de poidsfaible. Il est possible de sauter le cycle de ver-rouillage ce qui permet une lecture ou écri-ture plus rapide de la mémoire externe. Il fautcependant être conscient du fait que cesmode requièrent des adaptations par rapportà la circuiterie standard.
Pointeurs de données DPTR etDPTR1Lors de l’exécution d’instructions MOVX (lec-ture/écriture de la mémoire de programme externe),le 8051 utilise un registre pointeur de données, leDPTR (Data PoinTer Register), capable de recevoirune adresse à 16 bits. Cette adresse peut concer-ner un emplacement dans la mémoire de donnéesmais peut également être une adresse de matérielexterne. Lorsque l’on a besoin de transférer desdonnées d’une adresse à une autre on aura besoind’un pointeur pour la source et d’un pointeur pour ladestination. Ceci explique que le DS89C420 soitdoté de 2 de ces pointeurs de registre, ce qui per-met un « transbordement » bien plus efficace desdonnées.Un registre à fonction spéciale, un DPS (DataPointer Select), est couplé à ces pointeurs,registre qui permet à l’utilisateur de procé-der, automatiquement, à toutes sortes demanipulations au niveau des pointeurs dedonnées.
Le bit DPS.0 (c’est-à-dire le bit de poids faibledu DPS) définit le pointeur actif. Partant, il n’apas été ajouté d’instruction au set d’instruc-tion standard du 8051 pour permettre le trai-tement à l’aide du nouveau pointeur de don-nées supplémentaire. La valeur par défaut dece bit est « 0 », ce qui signifie que l’on a sélec-tion de l’« ancien » pointeur de données. Unautre bit de ce registre (Toggle Select, DPS.5)
pourra permettre un basculementautomatique du bit DSP.0, demanière à pouvoir passer automati-quement d’un pointeur à l’autreaprès une instruction ayant trait auDPTR.Le contrôleur dispose en outre, poursimplifier et accélérer les choses,d’un mécanisme d’incrémentation etde décrémentation pour les 2 poin-teurs de données, système activépar le bit Auto Increment/DecrementEnable (bit 4 du registrer).En résumé : il est possible, à condi-tion de positionner les bits de com-mande adéquats, de ramener ledéplacement d’un bloc de donnéesà des instructions de lecture etd’écriture. L’un des pointeurs pointevers l’emplacement de mémoire dela source, l’autre vers celui de ladestination. Le microcontrôleur secharge de la sélection du pointeurcorrespondant et en modifie lecontenu à souhait. Si ce concept estconnu de ceux d’entre nos lecteursqui ont affaire à des PNS (Proces-seur Numérique de Signal), il estrelativement innovateur dans ledomaine des microcontrôleurs.
Le matériel (hardware)Le schéma de ce projet ne présenteque fort peu de surprises : on ydécouvre le microcontrôleur, le verroud’adresse, la RAM, l’interface sérielle,l’alimentation et les connecteursd’extension. Ce type de circuiterievous a été présenté à différentesreprises dans Elektor. Nous vous leprésenterons dans le numéro de sep-tembre. La seule nouveauté est uncircuit intégré disposant de tamponsà sorties 3 états qui permettent, parle biais de la ligne DTR de l’interfaceRS-232, de mettre le contrôleur dansun mode spécial. Lorsque les lignesEA et PSE du DS89C420 sont forcéesau niveau bas (actives) et RESET auniveau haut au travers de ces tam-pons, on a, nous l’évoquions plushaut, lancement d’un programmemoniteur situé sur la puce du contrô-leur. Ce moniteur se trouve dans unepartie spéciale de la ROM du compo-sant, domaine dont l’accès ne peutse faire que si les 3 lignes concernéesont été mises aux niveaux indiquésplus haut, ce qui permet de ne pasavoir à lui consacrer de mémoire deprogramme spécifique.
L’aspect « logiciel »
Le site FTP de Dallas Semiconductor(ftp://ftp.dalsemi.com/pub/micro-controller/) met à disposition 2 télé-chargements gratuits : Microcontrol-ler Toolkit (MTKbeta.ZIP) et Loa-der420 (loader420.ZIP), programmesqui permettent de faire passer lamono-carte à DS89C420 en modemoniteur et ainsi de communiqueravec le microcontrôleur. Le premierprogramme mentionné est « habillé »par Windows, mais présente en faitles mêmes fonctionnalités que lesecond. La fonction la plus impor-tante est la programmation de lamémoire Flash interne du DS89C420,de sorte qu’il est possible, sans tropde difficultés, de transférer sespropres applications dans le contrô-leur et de les adapter si nécessaire.Il est en outre possible d’examiner etde modifier les emplacements demémoire, les ports, les registres ettutti-quanti. On se trouve partantdevant un système de développe-ment complet ! La mémoire de pro-gramme est reprogrammable ce quipermet de modifier aisément soncontenu au cours du développementd’un prototype et cela même pourdes projets où l’on utilisera, lors dela production finale, un microcontrô-leur du type 8051 (ou similaire).
(000120-1)
Dans le prochain article (à paraîtredans le numéro suivant le numérodouble d’été, septembre) nous entre-rons dans le détail du schéma decette mono-carte à Ds89C420, micro-contrôleur haute vitesse.
MICROCONTRÔLEUR
46 Elektor 6/2002
Bibliographie
[1] Carte 89S8252 Flash, Elektorn° 282, décembre 2001,page 20 et suivantes
[2] Application Note 26, UltraHigh-Speed MicrocontrollerMemory Interface Timing.
MINIPROJET
48 Elektor 6/2002
Lumineuses, durables, faibles consomma-trices, voici quelques-uns des qualificatifs desLED blanches. Elles présentent cependant,comparées aux LED qui les ont précédé,qu’elles soient de couleur rouge, jaune ouverte, un petit inconvénient : il leur faut unetension de service plus élevée, à savoir del’ordre de 3,6 V. Ceci explique que les lampesde poche à LED requièrent dans la plupartdes cas, 3 cellules de pile, de manière à dis-poser de quelque 4,5 volts. Le présent mon-tage prouve que l’on peut également se tirerd’affaire à l’aide d’une seule cellule. La LEDn’est pas alimentée directement, encore qu’autravers d’une résistance de limitation de cou-rant, par la source de tension mais par un
petit convertisseur de tension. Onpeut, de ce fait, se débrouiller avecune seule pile de 1,5 V.
Avec convertisseur de tensionLe convertisseur de tension de lafigure 1 se compose d’un multivi-brateur astable, sortant quelque peude l’ordinaire, et d’une bobine.Lors de l’activation du bouton S1, letransistor T1 se voit alimenté en cou-rant de base au travers des résis-tances R2 et R3, de sorte qu’il entreen conduction, partielle du moins.
En raison de la présence de R2, latension de collecteur se voit mainte-nue à une valeur légèrement infé-rieure à la tension de base. Cettesituation permet à T2 de devenirégalement partiellement conducteur.Le bruit intrinsèque atteint alors unniveau suffisant pour faire entrer T1encore plus en conduction et bloquertotalement T2. Ce processus vautégalement dans l’autre sens, vu quel’on a, par le biais de C1, un cou-plage de ce changement d’état cequi se traduit par une entrée enoscillation de l’électronique.Nous avons remplacée la résistancede collecteur classique au niveau deT2, par une inductance fixe de470 µH. Lorsque T2 est passant il cir-cule un courant à travers L1 où l’ona accumulation d’énergie sous laforme d’un champ magnétique.Lorsque, ensuite, T2 bloque, lechamp magnétique a pour consé-quence une poursuite de la circula-tion du courant à travers L1, situationqui ne peut cependant se produirequ’à condition d’augmenter quasi-instantanément la tension de collec-teur. Le courant ne circule cependantpas à travers le transistor bloqué,mais à travers la LED. À ce niveau, laLED limite l’impulsion de tensioninductive, la tension de sortie s’adap-tant cependant automatiquement àla tension directe de quelque 3,5 V.Le seul point auquel il faudra faire
Lampe de poche à LEDLes LED blanches ont le vent en poupe
Burkhard Kainka
On les trouve partout les nouveaux dispositifs d’éclairage minuscules àLED dont l’intensité lumineuse et la faible consommation de courant sontétonnantes. S’il vous venait à l’idée de réaliser vous-même un tel mon-tage vous verrez que cela est extrêmement simple et ne requiert pas decomposant exotique.
MINIPROJET
496/2002 Elektor
l’intensité du courant traversant l’inductance.La fréquence se situe aux alentours de130 kHz. Les convertisseurs de tension « ordi-naires » comportent le plus souvent unredresseur à la sortie. Ce dispositif n’est pasnécessaire ici vu que la LED régule elle-mêmele courant qui la traverse.Le convertisseur de tension draine un courantde quelque 20 mA de la pile de 1,5 V. Dansces conditions notre lampe de poche estmoins gourmande que si elle était équipéed’une ampoule à incandescence miniature(mignonnette) classique. Si l’on table sur unecapacité de pile de 2 000 mAh dans le casd’une cellule alcaline, la durée de vie de lapile est de l’ordre de 100 heures. En effet, leconvertisseur continue de fonctionner mêmelorsque la tension fournie par la pile est tom-bée en-dessous de 1,0 V. Ainsi, contrairementà ce qui est le cas avec une lampe de pochestandard, on ne court pas le risque de se trou-ver brusquement dans le noir le plus complet,il reste largement le temps de se fouiller lespoches à la recherche d’une pile de rechange.Notons qu’il est de ce fait également possibled’utiliser des piles dont la tension serait tropfaible pour alimenter une lampe de poche àampoule à incandescence. L’environnementvous en sera reconnaissant... Il est partantégalement possible d’envisager une alimen-tation par accumulateur CdNi de 1,2 V de ten-sion. À une tension de 1,2 V, le circuit neconsomme que 17 mA. Il va sans dire que cesvaleurs sont celles que nous avons mesuréessur notre prototype mais qu’elles peuventvarier d’une réalisation à l’autre en fonctionde la qualité des composants utilisés et deleurs tolérances.
Mini-boîtierNous avons choisi, pour notre mini-lampe depoche à LED, un minuscule boîtier (utilisable
attention lors du dimensionnementdes composants est que l’oscillationdu multivibrateur soit suffisammentrapide pour éviter que l’énergie stoc-kée dans la bobine n’ait déjà « dis-paru » avant que le basculementn’ait eu lieu.
Une bobine pleine d’énergieLa courbe supérieure de l’oscillo-gramme de la figure 2 montre l’évo-lution de la tension aux bornes de laLED (1 V/div), la courbe du bas rend
T2T1
BC547
R3
1k
R2
2k2
L1
470µH
R1
1k
C1
470pC2
100µ3V
BT1
1V5
S1
D1
2x
010130 - 11
wit whiteblanc weiß
Figure 1. Le multivibrateur rehausse la tension appliquée à la LEDFigure 2. Oscillogramme de la tension auxbornes de la LED (1 V/div).
Figure 3. La platine laisse suffisamment de place pour une alimentation soit par« grosse » pile R1 soit par pile-bouton.
cathode(-) anode
(+)
D1
(C) ELEKTOR010130-1
C1
C2
D1
L1
R1
R2
R3S1
T1 T2
-
c
a010130-1
-
+
(C) ELEKTOR010130-1
Liste des composants
Résistances :R1,R3 = 1 kΩR2 = 2kΩ2
Condensateurs :C1 = 470 pFC2 = 100 µF/3 V axial
Semi-conducteurs :D1 = LED blancheT1,T2 = BC548C, BC549C, BC550C
Divers :L1 = self 470 µHS1 = bouton-poussoirPile*boîtier Box UM14Matériel de fixation pour la pile
en tant que porte-clés) et dessiné une platineaux dimensions suffisamment compactes. Lafigure 3 vous en propose le dessin des pisteset la sérigraphie de l’implantation des com-posants. Le boîtier est assez grand pour rece-voir la source d’énergie, la pile. Notons quenous vous proposons un choix entre 2 typesde cellules : si l’on utilise une « grande » pile(R1, Lady, AAA et tous les modèles de dimen-sions comparables dont le diamètre nedépasse pas 12 mm et la longueur 30 mm) ilpeut s’avérer nécessaire de devoir limer légè-
rement l’intérieur du boîtier voire ledoter d’un joint d’étanchéification encaoutchouc pris entre les 2 demi-coquilles. Mais on peut égalementutiliser une pile-bouton du type 675(pile pour accessoires auditifs four-nissant une tension de 1,4 V et pré-sentant une capacité de 500 mAh). Ilfaudra pour cela percer un orificedans la platine, souder, commel’illustre la photo en tête d’article,une languette métallique côté
« pistes » et placer, côté « compo-sants », un contact AMP (automo-bile) de manière à établir un boncontact durable.
(010130)
La réalisation ayant servi de base àce montage provient du « coin du bri-coleur » Internet de l’auteur sis àl’adresse :http://home.t- online. dethome/B. Kainka
MINIPROJET
50 Elektor 6/2002
ESSAIS&TESTS
52 Elektor 6/2002
Comme nous le disions dans l’introduction, lenom de Velleman est presque synonyme dekits de montages électroniques bien pensés
disponibles dans nombre de maga-sins proposant ce type de réalisa-tions. Depuis un certain temps déjà,
Velleman ne se limite plus unique-ment aux kits de montages, leurassortiment s’étant énormémentenrichi au point que l’on vous pro-pose pratiquement tout ce que l’onpeut trouver dans le commerce ayanttrait à l’électronique, des globes àmiroirs disco aux appareils demesure... C’est dans cette catégorieque se classent les 2 appareils quenous allons passer au peigne fin.Il s’agit d’un générateur de fonctionsbaptisé PCG10 (et K8016 dans saversion en kit) et d’un oscilloscopenumérique à mémoire CS500 (dont ilexiste une version mono-canal en kit,le K8031). Ces 2 appareils ont étéconçus en vue d’une utilisation encombinaison avec un PC. On peutpartant difficilement être étonné dese trouver en présence de coffretsrelativement plats de couleur grisedotés de quelques embases deconnexion; la commande et la lecturede ces appareils se fait à 100% par lebiais de l’écran du PC auquel sontconnectés les appareils. Dans ce but,
Oscilloscope et générateur de fonctionspour le PCAppareillage de mesure à connexion Centronics
Harry Baggen
Nombre d’entre nos lecteurs connaissent sans doute le nom de Velleman,société célèbre pour les nombreux kits de montages électroniques qu’ellepropose. La palette de produits et réalisations dont elle peut se targuerest encore plus riche : en effet, elle propose différents appareils de mesure.Nous avons examiné d’un peu plus près 2 de ces appareils : un oscilloscopenumérique à mémoire et un générateur de fonctions pour le PC.
SOUSTEST
536/2002 Elektor
1 MHz– Synthèse numérique directe (DDS = Direct
Digital Synthesis) d’onde à 32 K demémoire de forme d’onde, fréquenced’échantillonnage de 32 MHz
– Précision de la fréquence choisie : 0,01%– Amplitude de sortie : 0,1 à 10 Vcc
(impédance de sortie de 50 Ω)– Plage de réglage d’offset : de –5 à +5 V– Résolution de la forme de signal : 8 bits– Formes d’onde disponibles : sinus, carré,
triangle et forme d’onde définie parl’utilisateur
– Possibilité de mise hors-fonction du filtrede sortie
Oscilloscope numérique à mémoirePCS500 :– Base de temps : de 100 ms à 10 ns/div– Sensibilité d’entrée : 5 mV à 15 V/div– Fréquence d’échantillonnage : 50 MHz– Fréquence d’échantillonnage pour signaux
continus : 1 GHz– Nombreuses possibilités de
déclenchement (flanc, niveau, source)– Fonction d’autoset et de pré-
déclenchement– Marqueurs de chronologie, de fréquence et
de tension– Interpolation linéaire ou arrondie– Longueur d’enregistrement :
4 096 échantillons par canal– Fonctions additionnelles : analyseur de
spectre et enregistreur de transitoires.
La pratiquePour pouvoir examiner leur comportement enpratique, nous avons connecté les 2 appareilsà un PC doté d’un Pentium. Sachant que l’ap-pareil requiert un port Centronics il vous fau-dra soit connecter votre imprimante à l’inter-face USB (si elle est prévue pour cela à l’ori-gine, soit acheter un câble pour imprimanteassurant la conversion Centronics -> USB,soit encore enficher dans votre PC une carte(PCI ou ISA) de manière à le doter d’unsecond port Centronics. Dommage que cesappareils de mesure n’utilisent par l’interfaceUSB, leur mise en oeuvre aurait été bien pluspratique (une idée pour la prochaine généra-tion ?).Ceci fait, les appareils peuvent être connec-tés. On commence par brancher le générateurau PC, l’oscilloscope étant ensuite relié à sontour au générateur. Les câbles de connexionnécessaires sont fournis avec les appareils. Ilfaudra bien faire attention lors du branche-ment des adaptateurs d’alimentation. L’oscil-loscope travaille à 9 V, le générateur de fonc-tions à 12 V. Nous n’avons bien entendu pas
ces 2 appareils sont dotés d’uneinterface Centronics à isolation gal-vanique. Si l’on a l’intention d’utili-ser les 2 appareils simultanément (cequi paraît logique à première vue),on sera heureux d’apprendre que legénérateur de fonctions comporteune possibilité d’insertion dans uneboucle de sorte que l’on pourra
connecter les 2 appareils à un seulport Centronics.Commençons par passer en revueles caractéristiques techniques : lesplus marquantes de ces 2 appareils :
Générateur de fonctions pour PCPCG10 :– Plage de fréquence : 0 (CC) à
Figure 1. La fenêtre de l’oscilloscope offre toutes les possibilités de réglage que l’ontrouve sur un oscilloscope bi-canal classique.
Figure 2. L’analyseur de spectre visualise la répartition des fréquences constituant lesignal d’entrée.
essayer de voir ce qui se passe si l’on inter-vertit les adaptateurs...Il est temps ensuite d’installer le programmecorrespondant, PC-Lab 2000. Ce logicieltourne sous la majorité des versions Windowsconnues actuellement et l’installation surnotre PC-cible s’est faite sans le moindre pro-blème. Le site Internet de Velleman proposeles réactualisations les plus récentes.Après lancement du programme on voitapparaître une fenêtre dans laquelle il fautcocher l’appareillage connecté au système etl’adresse à laquelle se trouve le port impri-mante. On verra ensuite apparaître à l’écranla fenêtre de l’oscilloscope.On pourra, pour les premiers essais, utiliserles sondes de mesure fournies, mais il estpréférable, si l’on veut s’essayer à de« vraies » mesures, d’acheter de vraies sondessachant que les câbles accompagnant nesont rien de plus qu’un morceau de câbledoté à l’une de ses extrémités d’un connec-teur BNC et d’une paire de conducteurs ter-minés par des pinces crocodile à l’autre.Dès l’application d’un signal l’oscilloscopepropose, après action sur le bouton Autoset,une image parfaitement utilisable. Tant lasensibilité d’entrée que le calibre de l’échellede temps sont ajustés automatiquement parcette fonction de sorte que l’on a affichage
d’un signal parfaitement lisible et ced’une longueur de plusieurspériodes. Rien n’interdit bien évi-demment non plus d’opter pour unréglage manuel comme on le feraitsur un oscilloscope classique. Lafonction de mémoire permet l’enre-gistrement facile d’un signal uniqueet son affichage ultérieur.Les marqueurs sont d’un usage trèspratique, de même que la possibilitéd’afficher à l’écran soit la valeur effi-cace du signal soit sa valeur en dBm.Les 4 calibres de durée les pluscourts, de 200 à 20 ns/div n’ont mal-heureusement qu’un usage limité vuqu’ils font appel à une technique quiconsiste à échantillonner un signalpériodique à plusieurs moments suc-cessifs. On atteint de cette façon unpseudo-taux d’échantillonnage de1 GHz, mais cette approche n’est uti-lisable correctement qu’avec dessignaux ne variant pas dans letemps. Comment peut-on être sûrque tel sera le cas lors d’une mesure.Avec la fréquence d’échantillonnagenormale de 50 MHz, cet oscilloscopeest parfaitement utilisable pour dessignaux allant jusqu’à 5 voire 10 MHz,
cette limite étant fonction de lamesure dans laquelle on doit encorepouvoir juger de la forme d’onde.Une action sur le bouton permet depasser à la fenêtre de l’analyseur despectre grâce auquel on peut voir larépartition en fréquence du signal,ce qui permet, par exemple, d’obser-ver les produits de mélange. Il y acependant quelques détails quientravent le confort d’utilisation à lalecture. Mentionnons pour commen-cer une échelle de fréquence bizarre,à nos yeux (multiples de 3 et de 12,alors que l’on s’attendrait plutôt à 3et 10; l’écran est en effet subdiviséen 10 carrés). La structure del’échelle verticale est plus gênanteelle. Il est impossible de la faire pas-ser en un mode logarithmique, cetype d’échelle étant extrêmementutile lorsque l’on travaille avec l’affi-chage du résultat d’une FFT (trans-formée rapide de Fourier). D’autantplus qu’il est parfaitement possible,en ce qui concerne l’échelle horizon-tale, de sélecter une échelle loga-rithmique. En dépit de cela, ondécouvre un certain nombre d’op-tions fort intéressantes, le choix d’untype de fenêtre FFT donné parexemple et la présence, ici encore,de marqueurs fort pratiques (où leniveau est affiché en dB !).L’enregistreur de transitoires est uneautre fonction disponible. L’écran decette fonction ressemble beaucoup àcelui de l’oscilloscope à ceci prèsque l’échelle de temps est bien plusétalée (jusqu’à 2 000 s/div). Il estpossible ainsi de suivre des proces-sus de très longue durée (sur plusd’un an le cas échéant).Les échantillons pris à l’aide de l’os-cilloscope peuvent être stockés dansun fichier de texte pour être rappeléset être visualisés ultérieurement.L’utilisation du générateur de fonc-tions se fait par le biais de l’ouver-ture d’une nouvelle fenêtre. Cettefenêtre permet non seulementd’ajuster la taille du signal, sa formeet sa fréquence, mais en outre devisualiser la forme d’onde du signal.La présentation est très lisible desorte qu’il est facile d’ajuster la fré-quence par action sur un régleur àglissière voire par l’entrée de lavaleur exacte de la fréquence dési-rée. On dispose d’une option simi-laire pour le réglage de la tension desortie et la valeur d’offset. L’« appa-
ESSAIS&TESTS
54 Elektor 6/2002
Figure 3. Le générateur offre différents extra tels que plusieurs formes d’onde préprogram-mées, un séquenceur de train d’impulsions (wave sequencer) et un éditeur de train d’impul-sions (wave editor).
le dotant d’améliorations qui peuvent aussiavoir été exprimées sous la forme de souhaitsde ses utilisateurs.Tous comptes faits, on se trouve ici en pré-sence d’un set d’appareils de mesureattrayant. Le prix de l’oscilloscope surtout estrelativement élevé, pas tant si on le compareà celui d’autres oscilloscopes pour PC concur-rents vu que l’on trouve, pour la sommeconcernée, l’un ou l’autre oscilloscope clas-sique parfaitement fonctionnel. Nous aurions,vu le prix du PCS500, aimé le voir doté d’unepaire de vraies sondes de mesure. Si vouspouvez vous contenter d’un oscilloscope plussimple, il se pourrait que l’oscilloscope mono-canal K8031 soit exactement ce qu’il vousfaut. Il est moins cher, mais travaille égale-ment à une fréquence d’échantillonnage plusfaible. Qui sait, chers concepteurs, nousaurons peut-être l’occasion, la prochaine fois,de travailler avec une interface USB. Elle estsensiblement plus flexible et permet de gar-der le port Centronics du PC à la dispositionde l’imprimante. Prix du PCS500A 495 , lemono-canal 12 MHz à réaliser soi-même, leK8031 ne coûtant lui que 119,95 .
(020080)
reil » offre une option, outre les3 boutons de forme d’onde sinus,carré et triangle, de bouton « Morefunct. » qui permet de choisir entreune fonction sin x/x, du bruit, unbalayage voire entre différentesformes d’ondes disponibles dansune bibliothèque. Un éditeur permetmême de créer ses propres formesd’ondes.Malheureusement, la plage de fré-quences du générateur ne va pas au-delà de 1 MHz, limitation due auprincipe mis en oeuvre. La synthèsenumérique directe d’ondes utiliséeici requiert une fréquence d’échan-tillonnage relativement élevée(32 MHz dans le cas présent) et elledoit être rehaussée proportionnelle-ment lorsque l’on veut travailler àdes fréquences de sortie plus éle-vées. Les avantages de cet appareilsont, indubitablement, une précisionde la fréquence de sortie, la flexibi-lité du signal de sortie avec ses nom-breuses formes d’onde ainsi que lespossibilités de programmation.Il est un point auquel un utilisateurpotentiel devra bien faire attention :ne pas refermer la fenêtre du géné-rateur de fonctions en cours d’utili-sation sachant que si on le faitquand même, le générateur de fonc-tions est mis hors-fonction ce qui setraduit par la disparition du signalde sortie. Notre conseil : gardez laLED Ready du générateur bien àl’oeil, vu qu’elle s’allume dès que l’ona un signal en sortie.Le plotter de Bode est une possibi-lité de test très intéressante de cettecombinaison générateur de fonctions+ oscilloscope. Il est en effet extrê-mement simple de mesurer la carac-téristique de transfert d’un filtre oud’un amplificateur par la simpleconnexion de la sortie du générateursur l’entrée du montage à tester,l’entrée de l’oscilloscope étant elleconnectée à la sortie de l’électro-nique en question. Le reste va prati-quement tout seul, une fois que l’on adéfini la plage et la sensibilité. Onpeut, dans le cas présent, opter pourune échelle logarithmique tant pourl’amplitude que pour la plage de fré-quences, ce qui est très pratique !La version de logiciel la plusrécente offre une nouvelle possibi-lité fort intéressante : commander legénérateur soit par le biais d’unfichier texte de son cru soit par l’in-
termédiaire de l’interface RS-232 del’ordinateur.
ConclusionSi vous envisagez d’utiliser votre PCpour effectuer des mesures sur del’électronique, la combinaison d’ap-pareils décrite ici offre des possibili-tés très intéressantes. Cette combi-naison convient également à desmesures à faire sur le terrain pourpeu qu’on l’associe à un ordinateurportable. L’enregistreur de transi-toires en particulier peut être d’unsecours indéniable pour ce genred’utilisation. Il n’en reste pas moinsqu’il vous faudra trouver une prisesecteur dans les alentours pour l’ali-mentation des appareils de mesure.Le générateur de fonctions remplitparfaitement, sans jeu de mot, safonction et peut se targuer de nom-breuses possibilités, bien que saplage de fréquences soit quelquepeu limitée. C’est le domaine d’ap-plication qui décidera, oui ou non, s’ilfait l’affaire. Prix du PCG10, 179,95 ,la version à réaliser soi-même, leK8016, coûtant 136,22 .La bande passante de l’oscilloscopedevrait elle, au contraire, être suffi-sante pour la majorité des applica-tions, ce qui ne nous empêche pasde souhaiter quelques améliorationsau niveau du logiciel de l’analyseurde spectre. Velleman nous a fait partd’une réactualisation, à intervalleplus ou moins régulier du logiciel, en
SOUSTEST
556/2002 Elektor
Figure 4. Un traceur de Bode permet une mesure simple de la caractéristique de réponseen fréquence d’un circuit quelconque.
Pour plus d’informations, Vellemandispose d’un site Internet à l’adresse :
www.velleman.beOn trouvera, à l’adresse :www.velleman.be/company/download.asples réactualisations et une version dedémonstration du programme PC-Lab 2000.
que tout avantage est bardé de soninconvénient, ce qui ne nousempêche pas de constater que cette« résistance de limitation CA » peutconstituer, dans certains cas, uneoption de solution très pratique.L’un des derniers montages publiésdans Elektor dans lequel nous ayonsutilisé une alimentation sans transfode ce genre a été la temporisation demise en fonction du Crescendo. Lafigure 1 reproduit le schéma du ditmontage.Il n’est pas nécessaire de connaîtreet comprendre le fonctionnement decette électronique, l’important est deconstater que le relais 24 V Re1 estalimenté par le secteur et ce en l’ab-sence de transformateur. L’embaseK1 est en effet reliée à la tension dusecteur.Dans le présent circuit, c’est lecondensateur C1 qui fait office derésistance de limitation CA. Lesrésistances R1 à R3 peuvent porter àconfusion, mais, en ce qui concernece mode de fonctionnement, leurimportance est secondaire. R1 et R2permettent à C1 de se décharger lors
ÇAFONCTIONNECOMMENT?
56 Elektor 6/2002
Un condensateur enrésistance au courant alternatifAlimentation sans transformateurOn se passe, sur certains projets, que ce soit pour des raisons de placeou pour toute autre raison, de transformateur d’alimentation auquel onsubstitue une « résistance de limitation CA » qui prend la forme d’uncondensateur. Il nous arrive de recevoir, de temps à autre, une lettre d’unlecteur nous demandant comment cela fonctionne et comment encalculer la valeur.
Il arrive, lorsque l’on a besoin, pour l’alimen-tation d’un circuit (ou sous-ensemble) élec-tronique, de quelques milliampères seule-ment fournis par le secteur, que l’on opte pourune solution connue, celle du « sans tranfo »,approche faisant appel à un condensateur quiremplit une fonction de « résistance de limi-tation de courant alternatif ». Il faut recon-naître que cette méthode n’est utilisée que
très occasionnellement vu que legain d’espace se fait au détriment dela sécurité d’entrée en contact. Eneffet, l’alimentation se trouve en liai-son directe avec le secteur de sortequ’il est pour le moins délicat de par-ler de solution élégante.Quoi qu’il en soit, nous savons tousque chaque médaille a son revers et
courant est de 20 mA.Il est possible, en faisant appel à la loid’Ohm, de calculer l’impédance que doit pré-senter le condensateur en se basant sur lavaleur de la résistance équivalente auxbornes de laquelle on a, avec un courant de
de la coupure de la tension d’ali-mentation, R3 servant à limiter lecourant lors de la mise sous tension.L’abaissement de tension requise, àsavoir de 230 à 24 V, est uniquementl’affaire de C1 et de lui seul.
Comment cela fonctionne-t-il ?Il nous faut faire un rien de théoriede base. Le petit schéma de lafigure 2 sert à illustrer le principe defonctionnement d’une telle résis-tance de limitation AC. Notre élec-tronique se compose d’une pile, de2 boutons-poussoirs, d’un condensa-teur et d’un instrument à bobinemobile.Lors d’une action sur le bouton-poussoir S1 le condensateur secharge et on a circulation brève d’uncourant à travers l’instrument M. Sonaiguille accuse un débattementmomentané avant de revenir à zéro.Si l’on relâche S1 et que l’on appuieensuite sur le bouton S2, le conden-sateur se décharge ce qui se traduitpar un débattement momentané, etce dans l’autre sens, de l’aiguille del’instrument M.Poursuivons notre démonstration etremplaçons la pile par une source detension alternative. Comme on setrouve en présence d’une tension quine cesse de changer de polarité, lecondensateur se verra, en cas d’ac-tion sur S1, passer successivementen charge, en décharge, en charge àpolarité inverse, en décharge et ainsi
de suite. L’instrument à bobinemobile M ne cessera de visualiser uncourant, et ce bien que le dit courantne cesse de changer de sens de cir-culation au rythme de la fréquencede la tension alternative. Si nousremplaçons l’instrument à Bobinemobile par un ampèremètre alterna-tif (un multimètre placé en calibrecourant alternatif), l’instrument affi-chera un débattement constant. Celapermet de déduire que le condensa-teur C se comporte en fait commeune résistance. Cette résistanceapparente au courant alternatif estappelée impédance du condensa-teur. La dite impédance varie enfonction de la fréquence et se laissedéterminer à l’aide de la formule sui-vante :XC = 1 / (2πfC).Dans cette formule, C représente lacapacité du condensateur expriméeen farads (F), f étant la fréquence;elle est exprimée en hertz (Hz).
ExempleComment pouvons-nous, dans lapratique, calculer la valeur d’unetelle résistance de limitation AC ?Revenons pour cela au schéma de lafigure 1. Le point de départ de noscalculs est qu’il nous faut un relais24 V et que partant, la chute de ten-sion aux bornes du condensateur C1doit être de l’ordre de 200 V.Il nous faut en outre connaître le cou-rant qui traverse la bobine du relais;pour le type de relais concerné ce
ÇAFONCTIONNECOMMENT?
576/2002 Elektor
B1
B250C1500
C2
470µ40V
C3
470µ40V
R3
220Ω
R1
470k
R2
470k
C1
330n250V
Re1
F1
R4
10
Ω
5W
R5
10
Ω
5W
R6
10
Ω
5W
R7
10
Ω
5W
K2
K1
~
974078 - 11
Figure 1. Dans ce circuit, le relais Re1 est alimenté directement par le secteur autravers de la « résistance de limitation CA » C1.
M
CS2
S1
B
010090 - 11
Figure 2. Une électronique simple permet demettre le principe de fonctionnement àl’épreuve de la réalité.
Condensateurs X et YIl s’agit, dans le cas de ces condensateurs, decondensateurs de déparasitage (secteur)spéciaux des classes X et Y selon les normesIEC et qui se distinguent par une meilleurerésistance aux impulsions et leur robustesse.IEC ne limite pas la capacité maximale descondensateurs X, mais leur implantationn’est permise qu’aux endroits où leurendommagement (court-circuit) ne risquepas de conduire à une situation dangereuse(choc électrique).Les condensateurs d’antiparasitage de laclasse Y peuvent eux en revanche être implan-tés à des endroits où leur défectuosité pour-rait entraîner des risques de choc électrique.Ceci explique que ce type de condensateursoit lui limité à une valeur de capacité faible.Les condensateurs Y ont une tension de ser-vice de 250 Veff et peuvent se targuer d’unemeilleure sécurité électrique et mécanique.Les condensateurs X et Y sont subdivisés en3 catégories (X1 à X3 et Y1 à Y3), la catégo-rie 1 respectant les exigences les plus sévères,le cahier des charges de la catégorie 3 étant,en ce qui concerne la résistance impulsion-nelle et la durée de vie, le moins exigeant. Lescondensateurs X1 sont prévus pour un fonc-tionnement continu sans surveillance, lescondensateurs X3 étant eux utilisables surdes appareils qui ne sont reliés au secteurqu’en cours de fonctionnement tels que petitsappareils ménagers et petits outils électriques.La résistance impulsionnelle des condensa-teurs X1 est de 4 kV (4 000 V), celle descondensateurs Y1 de 8 kV.
20 mA, une chute de 200 V. Elle devra être de l’ordre de 200 V/200 mA =10 000 Ω, soit 10 kΩ.Une fois cette valeur déterminée, nous pou-vons, à l’aide de la formule donnée plus haut,XC = 1 / (2π fC)calculer la valeur du condensateur. Nousentrons 50 Hz comme valeur de la fréquencedu secteur ce qui nous donneC = 1 / XC 2π fSi l’on remplace les termes connus cela nousdonne :
C = 1 / 10 000 Ω *2 * 3,14 * 50 HzsoitC = 3,18 * 10–7 FSoit 0,318 µF.
Un coup d’oeil à la figure 1 montre que nousavons opté pour une valeur de 330 nF, valeurnormée la plus proche de la valeur théoriquecalculée.La plage de tolérance de ce type de conden-sateurs est de ±20 % de sorte que la légèredifférence de la valeur utilisée par rapport àla valeur calculée n’a rien d’inquiétant. Ceuxd’entre nos lecteurs que pourrait choquernotre manière de calculer, à savoir identifierla chute de tension aux bornes de la résis-tance capacitive XC à celle prenant place auxbornes d’une résistance ohmique, ont, enprincipe raison. Dans la pratique, cette sim-plification amène très exactement au mêmerésultat, c’est-à-dire à la même valeur pour lecondensateur de limitation de courant et à latension correcte aux bornes du relais. Si vousavez des doutes à ce sujet, rien ne vous inter-dit de recalculer les valeurs.Il faut bien entendu en outre que le conden-sateur utilisé soit en mesure de supporter destensions alternatives de 250 V, sachant deplus qu’il doit être du type X2 vu qu’il est uti-lisé dans une application travaillant avec latension du secteur.
Limitations ?Nous le disions tout en début d’article, ledomaine privilégié de l’utilisation d’une résis-tance de limitation CA est celui où le courantne dépasse pas quelques milliampères. celasignifie-t-il que, pour une raison ou une autre,ce dispositif ne peut pas être utilisé à desintensités de courant plus élevées ?En principe non. Le condensateur de limita-tion travaille tout aussi bien à des courantsimportants qu’à des courants plus faibles.Tout ce qui change en fait est la taille de plusen plus importante du condensateur de sortequ’à moment ou à un autre il devient plus rai-sonnable d’opter pour un transformateur. Cepoint de changement d’approche se trouve,
en pratique, lorsque le courantatteint de l’ordre de 100 mA. Uncondensateur X2 de 1,5 µF/250 V~ apratiquement les mêmes dimensionsqu’un transformateur secteur de2 x 9 V/100 mA. Dans le cas de cou-rants plus importants encore, uncondensateur électrochimique film
ou bipolaire haute tension risquemême d’avoir un encombrementsupérieur à celui d’un transformateurcorrespondant. Il sera préférable, neserait-ce que pour des raisons desécurité électrique, d’opter pour untransformateur.
(010090)
ÇAFONCTIONNECOMMENT?
58 Elektor 6/2002
Théorie et pratiqueLors de notre exemple de calcul pratique de la valeur du condensateur nousavons supposé que la tension aux bornes du condensateur de limitation était égaleà la tension du secteur diminuée de la tension de relais et valait partant 220 V(224 –- 24 = 200 V). Théoriquement cela est incorrect vu que la résistance capa-citive XC est une résistance apparente. De ce fait la résistance UC aux bornes ducondensateur est déphasée de 90 ° par rapport à la tension UR aux bornes de larésistance, elle traîne de 90 ° par rapport à la tension sur la résistance.Sur le diagramme, les 2 tensions partielles UR et UC se forment un triangle rec-tangle (à angle droit). La tension totale (l’hypoténuse du triangle) ne s’obtient paspar addition des 2 tensions partielles mais requiert d’utiliser le vieux théorème dePythagore pour son calcul :
U2 = UR2 + UC
2
On en dérive la tension aux bornes du condensateur
UC = √ U2 – UR2
Nous donnons à U la valeur de la tension secteur de 230 V et pour UR à nouveau24 V, ce qui nous donne pour UC :
UC = √ 2302 – 242
Et, si l’on prend la peine d’utiliser sa calculette on découvre, aux bornes ducondensateur, la valeur étonnante de 228,7 V !Si nous recalculons à partir de là la valeur du condensateur nous arrivons bien évi-demment à un résultat légèrement différent de celui fourni par la méthode « pra-tique » :
XC = UC / I = 228,7 V / 20 mA = 11 435 Ω
C = 1 / XC 2π f
Si nous entrons les valeurs :
C = 1 / 11 345 Ω *2 * 3,14 * 50 Hz
Ce qui nous donne :
C = 2,81 * 10–7 F = 281 nF
Dans la pratique, cela ne change en fait rien à la valeur du condensateur du circuit.La valeur normée la plus proche reste en effet, dans la série E6, toujours 330 nFet la tolérance par rapport à la valeur calculée est toujours inférieure à la tolé-rance du condensateur (±20%).En conclusion : si l’on veut, à l’aide d’un condensateur de limitation, produire, àpartir de la tension du secteur une tension d’alimentation faible et ce sans faireappel à un transformateur, la méthode de calcul simple proposée suffit largement.
AUDIO&VIDÉO
62 Elektor 6/2002
PAN, Processeurd’Audio Numérique...et pas seulement pour les « copybits » !
C’est sur le trajet en S/PDIF entre deux appareils audionumériques (lec-teur CD, enregistreur CD ou lecteur/enregistreur MD), que vous pour-rez intercaler ce montage, pas uniquement pour juguler le copybit, maispour modifier quantité de choses dans le signal audionumérique.
AUDIO&VIDEO
636/2002 Elektor
effet pas de correspondance avec la taille dece bloc. Nous vous renvoyons, pour plus d’in-formations sur le sujet, à la spécificationgrand-public IEC60958-3. Le bit de validitéest lui aussi présent dans chaque trame etpourra être modifié si nécessaire.
Le conceptC’est à dessein que nous avons opté pour uneapproche de concept la plus universelle pos-sible de manière à offrir, à ceux d’entre noslecteurs qui voudraient tenter leurs propresexpériences, le maximum d’ouvertures. Uncoup d’oeil au schéma complet de la figure 3montre que l’on se trouve en présence d’uneélectronique relativement complexe maisdont la majeure partie ne comporte qu’unpetit nombre de circuits intégrés. Nous pou-vons dire, si tant est que nous n’entrions pasdans les détails, que nous nous trouvons enprésence d’une combinaison constituée d’unrécepteur S/PDIF (Sony/Philips Digital Inter-face Format) intégré, IC1, et de l’émetteur cor-respondant, IC2, composants entre les sortieset entrées d’état de canal desquels (lignes CI,UI et VI de IC1 et VO, CO et UO de IC2) ontrouve un compteur binaire, IC6 et uneEPROM, IC9. C’est en fait ce dernier compo-sant qui constitue le coeur et le cerveau denotre Processeur Audio Numérique, PAN pourles intimes. L’adjonction de 4 interrupteursDIP (3 quadruples et 1 octuple) au systèmed’adressage de l’EPROM offre une possibilitéde choix entre 16 tableaux possibles. Letableau 1 donne le paramétrage par défautdes 4 interrupteurs DIP, positions de contactsqui ont pour effet de faire travailler le PAN ensuppresseur de copybit. Seuls les 3 premierstableaux ont alors encore une fonction.
Récepteur et émetteur S/PDIFIC1 et IC2 sont des circuits intégrés faisantpartie du catalogue de Crystal Semiconduc-tor (adresse Internet : www.cirrus.com) : lerécepteur CS8412-CP et l’émetteur CS8402A-CP. De par l’utilisation de ces composants, lePAN convient pour des fréquences d’échan-tillonnage allant de 32 à 48 kHz. Nous avonsdéjà, par le passé, utilisé ces 2 circuits inté-grés, raison pour laquelle nous vous ren-voyons, pour de plus amples informations àleur sujet, à leur fiche de caractéristiquesd’une part et aux montages donnés en réfé-rences [1] et [2] de la bibliographie en fin d’ar-ticle. Nous nous limiterons partant à une des-cription succincte.Le CS8412 est un circuit intégré CMOS spé-cialement conçu pour la réception et le déco-dage de données audio aux formats les pluscourants de AES/EBU, IEC958, S/PDIF et
signaux d’audio numérique, un bou-let dont ils se seraient fort bienpassé. Le présent montage àd’autres atouts dans sa manche.Ainsi par exemple la possibilité,éventuellement par recours au TNS(traitement numérique du signal,l’équivalent de DSP, Digital SignalProcessing) d’intervenir sur les don-nées audio. En outre, il peut passerdu coaxial à la fibre optique et inver-sement, petit supplément qui rendl’appareil encore plus universel.En ce qui concerne les manipula-tions des données audionumériques,ce n’est pas uniquement le copybitque l’on peut modifier, mais lecontenu quasi-complet du registred’état de canal (CS = Channel Sta-tus) dont le copybit fait partie.Seules les informations de fréquenced’échantillonnage, d’accentuation(emphasis) et de longueur de motresteront intactes. Il est même pos-sible de modifier le bit-utilisateur(user-bit) et le bit de validité (vality-bit). D’ailleurs, le bit utilisateur, onpeut penser à l’effacer purement etsimplement. Dans le format grand-public (consumer), on utilise les2 canaux, ce qui se traduit par unflux de données de bits-utilisateursde 88 200 bits/s dans le cas d’un CD.La fonction principale de ce circuitest l’adaptation du bit d’état decanal (CS). Il s’agit là d’un bit dis-tinct tant dans la sous-trame 1 (sub-frame) que dans la sous-trame 2. Enpratique cependant, les 2 blocs dedonnée concernés se retrouvent avecla même information. Nombre derécepteurs ne contrôlent souventque l’une des 2 sous-trames. Ondétermine ou modifie partant lesdonnées reçues pour les 2 sous-trames simultanément. La seule limi-tation du présent montage est quecette opération se fait au niveau dubloc d’état de canal (channel-statusblock) de 192 trames. Les donnéesdu canal-utilisateur ne présentent en
Le présent montage est destiné uniquement à l’enregistrement et autraitement d’œuvres musicales personnelles ou la copie numérique àusage privé, comme la copie protégée de DVD. La Rédaction ne désire enaucune manière favoriser un quelconque usage illégal de ce montage, parlequel les droits d’auteurs seraient bafoués. Les systèmes de protectioncontre le piratage tels que Cactus Data Shield, SafeAudio et Key2Audiofont normalement usage des propriétés du lecteur, lesquelles ne peuventêtre modifiées par le montage décrit ici.
Tableau 1. Paramétrage par défaut detous les contacts desinterrupteurs DIP et descavaliers de court-circuit.
S1 : S1-1 OFFS1-2 OFFS1-3 ONS1-4 OFF
S2 : S2-1 OFFS2-2 OFFS2-3 ONS2-4 N.C.
S3 : S3-1 OFFS3-2 OFFS3-3 OFFS3-4 OFFS3-5 OFFS3-6 OFFS3-7 ONS3-8 OFF
S4 : S4-1 ONS4-2 OFFS4-3 OFFS4-4 OFF
JP1 : coax
JP2 : 256
K2 : 5-6 cavalier7-8 cavalier9-10 cavalier11-12 cavalier
À la différence des montages simi-laires publiés jusqu’à présent dansElektor, cette nouvelle réalisation estbien plus qu’un simple « étrangleur»de copybit (copybit-killer). Il s’agitcependant de son application pri-maire, surtout depuis que nousavons constaté que, sur les DVD, lesystème SCM (Serial Copy Manage-ment = interdiction de copie ensérie) interdit même l’unique copiepermise par la législation de nom-breux pays européens. Le copybitconstitue, pour de nombreux audio-philes désireux de faire leurs proprescompilations ou de traiter des
EIAJ CP340. Ce circuit intégré dont Crystaldit qu’il est un DAIR (Digital Audio InterfaceReceiver) reçoit le signal par le biais d’uneinterface sérielle RS-422 et en dérive lessignaux d’horloge et de synchronisation. Lesystème supporte un suréchantillonnage de256x vu que le signal de sortie est doté d’unefréquence d’horloge 256 fois supérieure à lafréquence d’échantillonnage utilisée. Ce com-posant puissant se charge en outre du démul-tiplexage des informations audio et numé-rique. Le CS8412 démultiplexe directementles données de canal (channel), utilisateur(user) et de validité (validity) et les envoievers les sorties sérielles, dont certaines sontdédiées aux bits les plus importants de l’étatde canal (C, U et VERF).Les données audio sont transférées vers l’ex-térieur par le biais d’un port audio sériel quisupporte pas moins de 14 formats. Ces don-
nées sont disponibles sur lesbroches SCK, FSYNC et SDATA,sachant que 4 broches de com-mande, M0 à M3, permettent dedéfinir la configuration de cesbroches de sortie.Comme le montre un coup d’oeil auschéma, l’organe de paramétrage deces broches prend la forme d’un qua-druple interrupteur DIP, S1. Nousvous proposons, en figure 1, lesynoptique (simplifié) du CS8412.Nous en arrivons au CS8402A, leDAIT (Digital Audio Interface Trans-mitter). Comme le donne à penser sadénomination, ce circuit intégré a étéconçu spécialement pour coder etenvoyer, d’où son titre de « transmit-ter », les données audio en respec-tant les standards de l’interface évo-
quée plus haut.Ce circuit intégré offre une possibi-lité de paramétrage des bits de canald’état les plus importants par lebiais de 7 entrées. On les retrouve,en bas à gauche du synoptique duCS8402A représenté en figure 2. Sil’on revient au schéma complet dumontage en figure 3 on constate quece paramétrage se fait par le biaisd’un octuple interrupteur DIP, S3.Chacune de ces 7 entrées remplitune double fonction, l’état de labroche 2 (PRO) se chargeant de cettesélection. Cette entrée (commandéeau travers du contact 8 de S3, d’oùsa dénomination S3–8) sert en effetà faire fonctionner le circuit intégrésoit en mode « Professionnel » (pro-fessional) soit en mode « grand-public » (consumer); quel que soit lemode adopté, les données se voientcodées en respect des normes valantpour chacun d’entre eux. En mode« Professionnel », le contact S3–8 estalors ouvert, il est possible de géné-rer un code CRC (Cyclic RedundancyCheck = contrôle de redondancecyclique) (octet d’état de canal 23),situation rendue sous la forme d’unpointillé dans le schéma synoptique.L’entrée sérielle (broches 6 à 8) peuttraiter 7 formats différents et deséchantillons audio de 16 à 24 bits. Ladéfinition du format se fait par leniais des lignes M0 à M2; un coupd’oeil au schéma de la figure 3montre qu’à nouveau il est fait appel,pour ce paramétrage, à un qua-druple interrupteur DIP, S2. Lesentrées sérielles de l’état de canal,C, de donnée utilisateur, U, et devalidité, V, attaquent, au travers dequelques portes logiques, IC8 et IC9,l’EPROM IC7. Nous y reviendrons unpeu plus loin.L’examen de la figure 3 montre quela sortie symétrique TXP/TXN duCS8402A est convertie, par le biaisdu transformateur (à réaliser soi-même) Tr1, en 2 sorties S/PDIF stan-dard, K3 et K4 (0,5 Vcc / 75 Ω). L’iso-lation galvanique introduite par letransformateur présente l’avantageadditionnel d’éviter les boucles demasse. En outre, IC4 sert à créer unesortie optique.
Jongler avec les bitsLe cavalier JP1 permet de choisir lesignal d’entrée à envoyer vers le
AUDIO&VIDÉO
64 Elektor 6/2002
Registers
SerialPort
Logic
Audio
Aux
C Bits
CRC
U Bits
Validity
Preamble
Parity
BiphaseMark
Encoder
Timing
LineDriverMux
2
(H)PRO
3 24 4 1 13 14 12
FC0 FC1 C2 C3 C8 C9 C15(L)PRO C1 TRNPT C6 C7 EM1 EM0 C9
8
6
7
10
11
9
SDATA
SCK
FSYNC
C
UV
23 22 21
M2 M1 M0
20TXP
TXN17
RST16
15 5
CBL MCK
*
*
* professional mode only 960093 - 13
Figure 2. Les blocs de ce synoptique retraduisent la structure interne du CS8402A.
RS422Receiver
Clock & DataRecovery
AudioSerial Port
Registers
De-Mux
Mux Mux
VD+
7
9
DGND
RXP10
RXN
8
VA+
22
FILT
20
AGND
21
MCK
19
M3
17
M2
18
M3
24
M4
SDATA
23
26
SCK12
FSYNC11
C1
U
950098- 13
14
VERF28
CBL
15
ERF
25
Ce/F2
27
Cd/F1
2
Cc/E3
3
Cb/E2
4
Ca/E1
5
C0/E0
6
SEL
16
CS12/FCK
13
CS8412
Figure 1. Structure interne du récepteur S/PDIF du type CS8412.
l’EPROM, une porte OU et une porte EXORpermettent de créer les 4 combinaisons :D0/D1 pour le bit d’état de canal, D2/D3 pourle bit de canal utilisateur et D4/D5 pour le bitde validité.Prenons, à titre d’exemple, les combinaisonsde D0/D1 pour le bit C. Si la combinaison est0/0 (inchangé), CI passe par la porte OUIC8.A et EXOR IC9.A, sans subir de modifica-tion. Dans le cas d’un 1/0 (forcé à « 1 ») : onaura un « 1 » aux sorties de 2 portes. 0/1(inversé) : CI passe sans encombre par laporte OR mais est inversé par la porte EXOR.1/1 (forcé à « 0 ») : on trouve un « 1 » en sortiede la porte OR, niveau inversé par la porte
récepteur, coaxial ou optique. IC1 secharge du décodage, non seulementdes données audio, mais aussi desbits U, C et V. La sortie VERFconcerne le bit V (de validité) reçu,information ayant subi une fonctionOU logique (OR) avec l’indicateurd’erreur interne ERF (ERror Flag),signal activé en cas de détectiond’une erreur de parité, d’une viola-tion de codage biphase ou d’un non-verrouillage de la PLL du récepteur.Un bit V activé indique qu’il y a unproblème au niveau de l’échantillonaudio concerné, auquel cas cette
donnée peut être, au niveau duconvertisseur N/A (DAC) ou de l’en-registreur, soit éliminée soit interpo-lée (à partir des données adja-centes).Ces 3 bits attaquent un certainnombre de portes, IC8 et IC9, ce quipermet de définir 4 états par bit. Ilest partant possible, pour chacundes bits, au niveau de chaque trame(mais également de chaque sous-trame), de transmettre le bitconcerné tel quel (inchangé),inversé, voire forcé à « 1 » ou à « 0 ».Une paire de bits de données de
AUDIO&VIDEO
656/2002 Elektor
R3
4Ω
7
R5
10k
R1
75
Ω
R4 4x 10k1
2 3 4 5
S1
1234
85 6 7
C7
100µ 25V
D1
BAT85
D2
D3
D4
4x
C5
10µ63V
C8
10µ63V
C6
47n
C9
47n
+5V
C2
10n
C1
10n
K1S/PDIF
JP1
TORX173IC3
3
2 4
1
5 6
C4
100n
L2
47µH
L1
47µH
+5V
+5V +5V
C10
47µ25V
C11
100n
L3
47µH
+5V
S3
1610 11 12 13 14 15
12345678
9
8x 10k1
4 3 5 2 6 7 8 9
R11
TOTX173IC4
1
2
4
3R14
8k2
C13
100n
R15
27
0Ω
R17
27
0Ω
R13
4Ω
7
+5V
R16
75Ω
K3
K4R18
75Ω
C14
47n
C15
47n
TR1
20 : 2 : 2
1
2
3
6
4
5
+5V
R12
10k
C12
22µ40V
+5V
R10 4x 10k1
5 4 3 2
S2
1234
85 6 7
+5V
+5V
+5V
C19
100n
R19 4x 47k1
2 3 4 5
(CT=255)
74HC590
CT=0
IC6EN3
12G1
111+
10
15
14
13C2
Z4
2D
7
6
5
4
3
2
1
94
3
S4
1 2 3 4
8 567
+5V
K2
10
11 12
13 14
15 16
1 2
3 4
5 6
7 8
9
+5V
IC5.B11
C
10
S12D
13
R
9
8
R622Ω
R922Ω
R822Ω
R722Ω
IC5.A3
C
4
S2D
1
R
5
6
R22
1k
2
13
IC8.A
≥1
12
1311
IC8.D
≥1
9
108
IC8.C
≥1
4 5
6
IC8.B
≥1
45
6
IC9.B=1
1
23
IC9.A
=1
12
1311
IC9.D
=1
9
108
IC9.C
=1
JP2
C16
100p
R20
4k7
R21
1k
D5
BAT85
T1
BS170
+5V
+5V
+5V+5V
TRNPT/FC1
CS8402A
CBL/SBC
C1/FC0
EM1/C8
EM0/C9
C9/C15
SDATA
FSYNC
C7/C3
C6/C2
C/SBF
IC2
TXP
TXN
MCK
PRO
RST
SCK
18
19
20
17
24
13
14
12
16
10
11
15
M021
M122
M223
8
7
5
2
3
1
4
6
V9
U
CS8412
SDATA
FSYNC
IC1
FILT
VERF
FCK
RXP
RXN
SEL
SCK
MCK
CBL
ERF
21
22
13
10
20
16
17M3
18M2
24M1
23M0
12
19
15
14
26
11
27F2
F1
F0
E2
E1
E0
25
28
7
8
AD
D A
9
C1
U
2
3
4
5
6
C23
220µ25V
C22
100n
+5V
IC8
14
7
C20
100n
R2
47
0Ω
C3
68n
IC9
14
7
C21
100nIC5
14
7
C17
100n
+5V
IC6
16
8
C18
100n
+5V
Opt.
Coax
256 128
S/PDIF
S/PDIF
Opto
S/PDIF
S/PDIF
Coax
Coax
020091 - 11
+5V
IC5 = 74HC74
IC8 = 74HC32
IC9 = 74HC86
27C256
EPROM
IC7
A10
A11
A12
VPP
A13
A14
10A0
A1
A2
A3
A4
A5
A6
A725
A824
A921
23
1422
OE
20
CE
28
11D0
12D1
13D2
15D3
16D4
17D5
18D6
19D7
26
27
9
8
7
6
5
4
3
2
1
Figure 3. Nous avons essayé de proposer un concept aussi universel que possible. Les 4 interrupteurs DIP utilisés ici permettent de réa-liser pratiquement chaque traitement imaginable.
EXOR à la sortie de laquelle on trouvera par-tant un « 0 ».Les sorties des portes sont reliées auxentrées de même nom de l’émetteur. Il faut,pour pouvoir mettre ces bits à contribution,que l’émetteur soit paramétré en mode « Pro-fessionnel » (S3–8 ouvert, OFF) et en modetransparent (S3–7 fermé, ON). Le reste descontacts de l’interrupteur S3 ne remplit plusde fonction.L’adressage de l’EPROM fait appel à uncompteur binaire à 8 bits à registre de sortie,IC6, un 74HC590. L’horloge servant à caden-cer le compteur est dérivée, après inversion,du signal de synchronisation de trame FSYNC(Frame SYNChronisation). Le fait d’utiliser,pour le cadencement du registre de sortie, lesignal MCK (Master ClocK = horloge-maître)fait que l’adresse de la trame suivante n’estactive qu’après que l’émetteur ait déjà ver-rouillé la seconde sous-trame (droite), unepartie de décalage dû aux durées de transfertde la porte EXOR, du compteur et del’EPROM. La synchronisation du compteurpour chaque nouveau bloc d’état de compteurutilise la sortie CBL (Channel Status Block) durécepteur. On envoie une impulsion de remiseà zéro à l’entrée CC (Counter Clear) du comp-teur, impulsion obtenue à l’aide du réseau dif-férentiel R20/C16, du transistor T1 et de larésistance R21, de sorte que le redémarre à 0(ce qui se passe après 192 trames). Sachant,qu’au niveau de l’émetteur, le signal CBLpourrait, en fonction du mode adopté, aussifort bien être une sortie, cette ligne est dotéed’une résistance, R22, prise en série, de sortequ’il n’y a pas de risque de ce côté.
Les données en EPROMLe facteur le plus important de cette réalisa-tion est la définition des données à mettre enEPROM. Il nous faut pour cela connaître lacomposition du bloc d’état de canal (CSB). Letableau 2 vous en propose le contenu pour leformat « grand-public ». Le tableau 3 ajoutedes informations succinctes concernant lesdifférents bits. Le tableau 4 montre pour finirla structure du bloc d’état de canal (CS) enaval de son traitement par l’électronique(mise au paramétrage par défaut), ce qui cor-respond au second tableau de l’EPROM. Dansce dernier tableau, INP représente le bit d’ori-
AUDIO&VIDÉO
66 Elektor 6/2002
Tableau 2. Contenu des champs du bloc d’étatde canal pour le format « grand-public ».
Tableau 3. Signification succincte des différentsbits pour expliciter les informations dutableau 2.
Tableau 2
Tableau 3
griller dans l’EPROM du tableau 5 (MSB/LSB :U => 00, 1 => 01, 0 => 11).Le tableau 5 se trouve dans l’EPROM en tantque second tableau (S4–1 fermé, ON). Lepremier tableau (S4–1/2/3/4 ouverts, OFF)permet le passage sans la moindre modifi-cation de toutes les données, cas danslequel tous les bits de donnée de l’EPROMse trouvent à « 0 ». Nous avons, à titre d’ex-tra, ajouté le 3ème tableau (S4–1/3/4 ouverts,S4–2 fermé) qui force le bit de validité enpermanence à « 1 ». Nous n’avons pas testé
d’enregistreur qui décrochât dans ces condi-tions (le reste du contenu de ce tableau estidentique au second tableau de l’EPROM).Ceux d’entre nos lecteurs qui en auraient lesmoyens peuvent expérimenter avec les13 tableaux restants.
Option additionnelleComme nous le montre la figure 3, la trans-mission des données audio du récepteur versl’émetteur transite par le biais de l’em-base K2. Ceci explique qu’il faille ponter, àl’aide d’un cavalier, certaines paires debroches pour assurer le transfert de 4 dessignaux (cf. tableau 1).La présence de cette embase offre des pos-sibilités de traitement additionnel des don-nées audio, à l’aide d’un PNS (ProcesseurNumérique de Signal = DSP pour DigitalSignal Processor). Le format de donnéesdépend bien entendu du paramétrage choisiau niveau du récepteur (par défaut format 2,compatible I2S) .
À vos fers !Il est temps maintenant de passer au« Grand-Oeuvre », la réalisation. Nous avonsdessiné une platine double face à trousmétallisés pour réduire au strict indispen-sable le nombre de ponts de câblage néces-saire (le risque d’oubli est en relation directeavec leur nombre). La figure 4 vous en pro-pose le dessin des pistes et la sérigraphie del’implantation des composants. Comme vous
gine du signal d’entrée (INPUT).Nous avons opté, en ce qui concernele code de catégorie, le format DATsachant que, par le passé, c’est celuiqui nous a posé le moins de pro-blèmes. Le reste des informations
est suffisamment explicite.Si nous traduisons les bits indivi-duels du tableau 4 en combinaisonsde bits à mettre dans l’EPROM, celanous donne, en association avec lechoix des bits U et V, les données à
AUDIO&VIDEO
676/2002 Elektor
Tableau 4Le contenu du bloc d’état de canal après son passage par le ProcesseurAudio Numérique (avec le paramétrage par défaut).
LSB MSB
Octet 0 0 0 1 INP INP INP 0 0
Octet 1 1 1 0 0 0 0 0 0
Octet 2 0 0 0 0 0 0 0 0
Octet 3 INP INP INP INP 0 0 0 0
Octet 4 INP INP INP INP 0 0 0 0
Oct.5 à 23 0 0 0 0 0 0
Tableau 5 Conversion des données du tableau 4 en information binaire à mettre dans l’EPROM.
Octet 0 00000011 00000011 00000001 00000000 00000000 00000000 00000011 00000011Octet 1 00000001 00000001 00000011 00000011 00000011 00000011 00000011 00000011Octet 2 00000011 00000011 00000011 00000011 00000011 00000011 00000011 00000011Octet 3 00000000 00000000 00000000 00000000 00000011 00000011 00000011 00000011Octet 4 00000000 00000000 00000000 00000000 00000011 00000011 00000011 00000011Octet 5 à 23 00000011 00000011 00010011 00000011 00000011 00000011 00000011 00000011
(Tous les bits C à compter du quartet (nibble) de poids fort (MSB) à partir de l’octet 4 sont mis à « 0»).
(C) ELEKTOR020091-1
C1C2C3
C4
C5C6
C7C8
C9
C10
C11 C12
C13
C14C15
C16
C17 C18
C19
C20 C21
C22
C23
D1D2D3D4
D5
H1
H2 H3
H4
IC1
IC2
IC3 IC4
IC5
IC6
IC7
IC8
IC9
JP1
JP2
K1
K2
K3
K4
L1
L2
L3
OUT1 OUT2
R1
R2
R3
R4
R5
R6
R7R8R9
R10
R11
R12
R13
R14
R15R16
R17R18
R19
R20
R21
R22
S1
S2
S3
S4T1
TR1
020091-10 +5V
C15
C8
C9
C2
C3
PRO
FC1
FC0
2/3
:12
81
/2:2
56M0M1M3 M2
M2
M1
M0
Coax Opt.
1
Figure 4. La platine double face à trous métallisés est, bien que relativement com-pacte, facile à réaliser.
AUDIO&VIDÉO
68 Elektor 6/2002
(C) ELEKTOR020091-1
Liste des composants
Résistances :R1,R16,R18 = 75 ΩR2 = 470 ΩR3,R13 = 4Ω7R4,R10 = réseau de 4 résistances de 10 kΩR5,R12 = 10 kΩR6...R9 = 22 ΩR11 = réseau de 4 résistances de 10 kΩR14 = 8kΩ2R15,R17 = 270 ΩR19 = réseau de 4 résistances de 47 kΩR20 = 4kΩ7R21,R22 = 1 kΩ
Condensateurs :C1,C2 = 10 nF céramique au pas de 5 mmC3 = 68 nFC4 = 100 nF céramique au pas de 5 mmC11,C13,C17 à C22 = 100 nF céramiqueC5,C8 = 10 µF/63 V radialC6,C9 = 47 nF céramique au pas de 5 mmC7 = 100 µF/25 V radialC10 = 47 µF/25 V radialC12 = 22 µF/40 V radialC14,C15 = 47 nFC16 = 100 pFC23 = 220 µF/25 V radial
Selfs :L1 à L3 = 47 µH
Semi-conducteurs :D1 à D5 = BAT85T1 = BS170IC1 = CS8412-CP (Crystal/Cirrus Logic, RS-
components)IC2 = CS8402A-CP (Crystal/Cirrus Logic,
RS-components)IC3 = TORX173 (Toshiba)IC4 = TOTX173 (Toshiba)IC5 = 74HC74IC6 = 74HC590IC7 = EPROM 27C256 programmée
(EPS020091-21)IC8 = 74HC32IC9 = 74HC86
Divers :JP1,JP2 = embase autosécable mâle à
3 contacts + cavalierK1,K3,K4 = embase Cinch encartable telle
que, par exemple, T-709G (Monacor)K2 = embase HE-10 mâle à 2 rangées de
8 contacts + 4 cavaliersS1,S2,S4 = quadruple interrupteur DIPS3 = octuple interrupteur DIPTr1 = primaire : 20 spires, secondaire : 2 x
2 spires, le tout de fil de cuivre émaillé de0,5 mm de diamètre, sur tore de ferriteTN13/7,5/5-3E25 (Ferroxcube)
quates.La mise en place des composants nedevrait guère poser de problème vul’absence de composants CMS ouautres sujets exotiques. Les circuitsintégrés pourront prendre place dansun support. On notera l’absence decomposants côté « pistes ».Petit ouvrage « fait main », le bobi-nage du transformateur Tr1. Mais ici,il ne s’agit pas de broderie. Le noyauest un Ferroxcube (autrefois Philips)du type TN13/7,5/5-3E25. L’enroule-ment primaire se compose de
ne manquerez pas de le constater, laplatine est, bien que compacte, très« lisible ». Nous avons, pour peu quenous en ayons eu la place, indiqué àmême la platine, au niveau des inter-rupteurs DIP et des embases à cava-lier, les fonctions des organes cor-respondants. Attention à S1 où lecontact S1–4 correspond à M0. Lesembases Cinch et les connecteursoptiques se trouvent sur le mêmebord de platine, ce qui ne peut quesimplifier la mise de cette platinedans un coffret de dimensions adé-
AUDIO&VIDEO
696/2002 Elektor
20 spires et les deux secondaireschacun de 2 spires de fil de cuivreémaillé de 0,5 mm de diamètre. Lesspires du primaire doivent être régu-lièrement réparties sur le noyau, enlaissant un peu de place au milieupour y bobiner les deux secondaires,ce que la figure 5 illustre avec préci-sion.Il sera temps, une fois que l’on a ter-miné la mise en place des compo-sants et que l’on aura contrôlé sontravail en se référant à la sérigraphieet à la liste des composants, debrancher une source de tension four-nissant 5 V entre les points identifiéspar un « 0 » (masse) et « +5V » (pôlepositif de l’alimentation). On pourrautiliser à cet effet toute alimentationsi tant est qu’elle fournisse une ten-sion correctement régulée et qu’ellesoit en mesure de fournir un courantd’au moins 100 mA.Une fois l’alimentation connectée, ilest judicieux de vérifier au multi-mètre la présence aux bornes descondensateurs C5 et C10 de la ten-sion requise, à savoir +5 V. Si ce testest concluant, il est fort probable quele reste de la réalisation soit OK. Sivous deviez constater des problèmesen cours d’utilisation il est plus queprobable que ceux-ci soient dus àune erreur en cours de réalisation etqu’il faudra partant revérifierconsciencieusement l’ensemble dela platine (court-circuit par une pattede composant restée trop longue,mauvaise soudure qui a pu lâcher,etc. la liste des sources potentiellesde disfonctionnement est extensibleà volonté).Nous n’avons pas indiqué, sur leschéma, de points de mesure ou detensions de test vu qu’à l’exceptionde la ligne d’alimentation, le restedes signaux est de type numérique.Il est fort probable, pour peu que l’onait, lors de la réalisation, travailléavec le soin requis, que le montagefonctionne du premier coup, dès lamise sous tension.
(020091)
Bibliographie
[1] Vu-mètre numérique, Elektor n° 214, avril 1996, page 18 et suivantes
[2] Convertisseur de taux d’échantillonnageElektor n° 220, octobre 1996, page 20 et suivantes
Figure 5. Le coeur du transformateur Tr1 est un tore de ferrite.
Figure 6. Si vous n’avez pas fait d’erreur, votre circuit imprimé terminé devrait être un frère-jumeau de notre prototype.
INFORMATIONS
70 Elektor 6/2002
Il est cependant intéressant de noter que cesdifférentes variantes reposent toutes sur lemême principe de fonctionnement. La zonesensible est subdivisée en pixels, emplace-ments où des photons entrants peuvent pro-duire des paires électron-trou dans le silicium.On rassemble soit les trous, soit, plus cou-ramment, les électrons dans un puits decharge, les autres s’évacuant par le biais dusubstrat. La charge du puits est déplacée,amplifiée et traitée, constituant, en combi-naison avec les charges de tous les autrespixels, l’image finale.
Capteur linéaireL’une des variétés de capteurs à zone matri-ciée courants est le capteur linéaire, capteurconstitué, comme l’indique son nom, d’unebande de pixels photosensibles.Ce type de capteur est utilisé dans les appa-reils photo numériques et les scanners. Il tra-vaille, comme l’illustre la figure 1, par exposi-tion d’une bande à la fois. Sur chacune despositions, la charge est transférée (intégrée)dans les pixels correspondants, traduisantainsi l’intensité de la lumière, sa luminosité.On procède ensuite à la lecture des charges, lecapteur passant à la position suivante. Dansla pratique cela se traduit par un mouvement
continu. L’avantage de cette approcheest qu’elle permet de couvrir unezone relativement importante avec unnombre de pixels sensiblement moinsimportant que celui requis par l’ap-proche capteur à zone matriciée; l’in-convénient majeur est que l’on peutuniquement l’utiliser avec des sujets
statiques. Si l’on veut une représen-tation monochrome il suffira au cap-teur d’effectuer une seule passe; sil’on a affaire à une représentation encouleur, il faudra effectuer 3 passes,par un filtre successivement rouge,vert et bleu (RVB, RGB en anglaispour Red, Green et Blue).
Autres capteurs d’image Nouvelle définition du pixel
Reg Miles [email protected]
Bien que la grande majorité des capteurs d’image utilisés actuellement soit dutype CCD (Charge Coupled Device), dans le monde des produits grand publicen particulier et du type CMOS (Complementary Metal Oxide Semiconductor)pour les autres, certains autres types trouvent leur application dans nombre deproduits en cours de développement voire déjà utilisés. Certains d’entre euxprésentent des propriétés intéressantes qui pourraient les rendent très utili-sables pour un marché plus large. Il existe en outre des variations sur le thèmeCCD en vue de l’adapter à des rôles spécifiques.
INFORMATIONS
716/2002 Elektor
teur externe pour un post-traitement desrésultats de sortie. On pourra penser à lavision artificielle (robotic vision), à l’acquisi-tion et suivi de cible (target acquisition &tracking), la navigation automobile et à biend’autres applications qui repose sur la détec-tion de bords et autres prises en compte demouvement. Comme, en essence, chaquepixel est en fait un minuscule ordinateur, lecapteur devient un « gros » ordinateur paral-lèle, la nécessité d’un post-traitement s’envoyant considérablement réduit voire totale-ment éliminé. Le seul problème de ces cap-teurs « intelligents » est, nous le disions plushaut, un facteur de remplissage sensiblementplus faible.
Progrès dans le monde du traitement par plan focalDes chercheurs de CalTch ont conçu un sys-tème de traitement par plan focal dont larésolution est accrue par une vibration conti-nue du capteur CMOS, ce qui se traduit parun remplissage des « trous » laissés par lesparties non sensibles des pixels. Chaquepixel travaille indépendamment, captant l’in-formation visuelle lors du balayage du plan àreproduire; chaque pixel est lu indépendam-ment après traitement au niveau du pixel.Le fait de faire travailler les pixels indéniablel’un de l’autre élimine le bruit de pattern fixéde par l’absence de comparaison entre leurssorties. On a imaginé 2 méthodes pour lagénération des vibrations. Avec la première,on utilise un miroir orienté à 45° pour réfléchirl’image vers la lentille : le miroir est monté surl’axe d’un moteur décalé à moins de 1 degrépar rapport à la perpendiculaire de sorte quel’image « frétille » en suivant un mouvementcirculaire régulier. Avec la seconde techniqueon obtient une vibration irrégulière de l’imagepar la suspension de la lentille à 4 ressorts :les vibrations sont induites soit naturelle-ment, lors de la circulation sur un terrain
Il existe une alternative qui consisteà utiliser un capteur tri-linéairecomportant 3 bandes de pixels filtrésen RVB, de sorte que l’on n’auraqu’une passe à faire.Les capteurs linéaires peuvent pro-duire des images à résolution trèsélevée en raison de la zone relative-ment grande qu’ils couvrent. Il estégalement possible d’accroître larésolution des capteurs à recouvre-ment de zone par la mise en mouve-ment. On pourra obtenir ce résultatsoit par un mouvement très décom-posé (fractionnel) soit du capteursoit de l’image optique, mouvementcorrespondant à un pixel à chaquedéplacement. Dans ces 1conditionsun unique capteur doté de filtressera déplacé par 3 fois de sorte quechaque pixel filtré en rouge, vert etbleu sera exposé séquentiellement àla même position, ce qui en fait setraduit par un triplement de la réso-lution. Il est possible d’augmenterencore la résolution par l’utilisationd’un capteur monochrome et quel’on réduit les mouvements demanière à ce que la zone réellementphotosensible de chaque pixel soitexposée à une partie différente del’image –remplissant ainsi les dispa-rités (trous) présentées par la sensi-bilité. De nombreux capteurs possè-dent des pixels qui ne sont pas uni-formément sensibles à la lumière : cerapport entre la sensibilité et l’in-sensibilité, connu sous le terme defacteur de remplissage (fill factor),peut varier entre 10 et 100%. Il fau-dra, si l’on a besoin d’une image cou-leur, répéter cette opération dedéplacement par 3 fois.Une autre variété de capteur linéaireest utilisée en reproduction d’imagepar scanning en ligne, normalementpour des processus industriels par-tant. Son fonctionnement est diamé-tralement opposé à celui de la pairecapteur mobile + image statique–dans le cas présent c’est le capteurqui est immobile et l’image quibouge (des objets se déplaçant surune chaîne par exemple). On faitappel, pour obtenir la sensibilité laplus élevée possible, normalement àun processus appelé Temporisation& Intégration (TDI pour Time Delayand Integration). Cette technique abesoin d’une zone de capteur plusétendue que celle d’une matricelinéaire; on utilise des registres à
décalage pour l’intégration et letransport de charge dans le sens demouvement de l’image.Il va sans dire que ce processus doitse faire à grande vitesse. Pour uneimage en couleur, on a expositionséquentielle des sections à filtragerouge vert et bleu.Dans le cas d’une matrice de sur-faces (area array), la vitesse élevéesera obtenue par la présence de sor-ties multiples qui reçoivent chacunela charge fournie par une faible par-tie de la surface du capteur, ce qui setraduit par des taux de balayageallant de 1 000 à quelque 5 000trames (frames) par seconde, nombrequi dépend du nombre de pixelstotal. Pour peu que l’on travaille parpetits morceaux, on parle alors dewindowing, où l’on procède à la lec-ture d’une portion seulement de lasurface totale, le taux de trames peutatteindre 50 000 voire plus encore.Ces techniques sont utiliséesconjointement avec un diaphragmeélectronique qui gèle l’image en com-mençant par transférer la chargepour ne l’intégrer qu’ensuite pendantla très courte période nécessaire.Bien que les capteurs à grandevitesse soient normalement du typeCCD, l’Université de Stanford a déve-loppé un DPS (Digital Pixel Sensor) entechnologie CMOS capable d’at-teindre 10 000 trames par seconde.Ces performances sont dues à la pré-sence d’un CAN (convertisseur analo-gique/numérique) à 8 bits danschaque pixel, ce qui élimine toutrisque de goulot d’étranglement ana-logique. En DSP, une taille de pixelacceptable requiert l’utilisation d’unprocessus de fabrication CMOS de0,18 microns; ce processus connaît sesproblèmes en raison de la diminutiondes tensions d’alimentation et del’augmentation des courants de fuite.Les pixels de 9,4 microns de côté de lamatrice de 352 x 288 pixels font appelà un détecteur à photogrille (photo-gate detector, il s’agit en fait d’uncondensateur MOS exposé à lalumière), plutôt que le détecteur àphotodiode à jonction p-n plus clas-sique. Chaque pixel incorpore 37 tran-sistors, de sorte que l’on ne sera guèresurpris d’apprendre que le taux deremplissage n’est que de 15%.On utilise aussi le traitement de planfocal aux applications de capturerequérant normalement un ordina-
Capteurlinéaire
Zoneoptiqued'image
020083 - 11
Figure 1. Principe du capteur optique linéaire.
inégal etc., soit par le biais d’un composantpiézo-électrique.
Le CIDLe CID (Charge Injection Device) est un typede capteur pouvant se targuer d’un facteur deremplissage élevé. À l’image du CCD, cecomposant est en cours de développementdepuis belle lurette : son concept a étéinventé par des chercheurs travaillant pour laGEC, la fameuse General Electric Company;ceux-ci annoncèrent leur premier appareilphoto à CID en 1972, la même annéed’ailleurs que celle où fut annoncée le premierappareil photo à CCD des chercheurs de BellLaboratories.La compagnie la plus concernée par la tech-nologie CID est Thermo CIDTEC, société néed’un « management buyout » de GEC en 1987.Le CID tient plus du CMOS que du CCD,l’adressage individuel des pixels de faisantpar le biais d’électrodes de rangée et decolonne alors que dans le second cas le trans-fert des charges s’effectue en masse à l’aidede registres à décalage verticaux.Une différence cependant, chaque pixel incor-pore une paire de photo-grilles se chevau-chant. Autre différence, on n’a pas transfertde charge depuis le pixel au cours de sa lec-ture de sorte que l’intégration de la chargepourra se poursuivre –approche très utilisedans le cas d’une commande d’expositionvariable (certains pixels ou groupes de pixels
définis pourront être lus plusieursfois pour un suivi en temps réel del’exposition au cours de durées d’in-tégration importantes).Lors de la sélection d’une photo-grille par l’électrode de commande(de rangée) sa charge est transféréevers l’autre photo-grille et l’électrodede détection (de colonne) lit un cou-rant de déplacement proportionnel àla charge (cf. figure 2). Ce courantest ensuite amplifié, convertit en unetension appliquée en sortie. Le pixelne sera vidé de sa charge quelorsque les 2 électrodes de com-
mande (drive) et de détection (sense)seront mises à la masse et que lacharge sera « injectée » dans lacouche épitaxiale sous-jacente. Ceprocessus pourra se faire à un tauxde champ ou de trame normal maisaussi à toute autre vitesse.Le CID peut se taguer d’un certainnombre d’avantages par rapport auxautres composants servant à la cap-ture d’image. Le débordement, suiteà un excédent de charge, d’un pixelvers les pixels adjacents qui se tra-duit par un bourgeonnement (bloo-ming) est minimisé vu que l’excé-dent de charge est canalisé vers lacouche épitaxiale et de par l’absencede registres à décalage il n’y a pasde route indirecte permettant untransfert des excédents de charge.La structure des pixels est contiguë.Les pixels peuvent contenir unnombre important d’électrons (cettequantité étant appelée la « capacitéde puits »). Le composant possèdeen outre une réponse spectrale trèslarge en raison de l’absence deregistres à décalage absorbant lacouleur et les couches très fines uti-lisées pour la fabrication des pixels.Côté inconvénients, on a productionde bruit en raison de la connexion lacapacité faible du pixel à celle relati-vement importante de la ligne dedétection.
L’étape suivante : TFAUne autre façon de réaliser unestructure de pixels contigus consisteà opter pour une intégration verti-cale de la photodiode au-dessus destransistors du pixel, technique utili-
INFORMATIONS
72 Elektor 6/2002
Commande
020083 - 12
Intégration
DétectionV1 V2
Lecture
V3 V2
Injection
V3 V3
Figure 2. Dynamiques du pixel CID (source : Thermo CIDTEC).
Figure 3. Séquence de couche de base d’un TFA (Thick Film on ASIC)(source : Silicon Vision).
Electrode frontale
Système à couchea - Si: H fine
Electrode d'arrière-plan Dét
ecte
ur o
ptiq
ue
Couche d'isolation
ASIC
020083 - 13
Dynamiquesdes pixels CID– Inversion d’une électrode ou plus
V1 > V2 > V3 = 0
– Changement de potentiel d’uneélectrode
– Détection de transfert de charge(signal) sur l’autre électrode. Lacharge reste confinée au pixel.
– La lecture (readout) n’est pasdestructive si V1 est réappliqué àl’électrode de commande (drive).
– On a injection lorsque les poten-tiels des 2 électrodes ont chuté(/V3 / = 0). Les charges injectéesse diffusent et se recombinentdans le collecteur sous-jacent.
Lors de la lecture, les tensions de couleurintégrées sont appliquées simultanément à laligne de sortie de colonne.Le second type de capteur est le LARS, leLokal-AutoadaptiveR Sensor (non il n’y a pasd’erreur d’orthographe, la compagnie étantallemande). Comme le suggère sa dénomina-tion, dans le cas du LARS, les pixels s’adap-tent au niveau d’illumination local; le résultatde ce processus est une plage de dynamiquede 120 dB (la plage d’un CCD ou CMOS clas-sique est de l’ordre de 80 dB). Ceci le rend uti-lisable pour les systèmes de vision industrielet automobile. Cela tient au fait qu’il subdi-vise la plage de dynamique totale en2 signaux, qui ont chacun une plage de dyna-mique moins étendue. La tension d’intégra-tion du pixel est comparée, à intervalles par-faitement définis par une horloge, à une ten-sion de référence dont la valeur se situelégèrement en deçà de la moitié de la valeurde saturation; si la tension en questiondépasse ce seuil, l’intégration est stoppée, sielle est restée en deçà, la durée d’intégrationest doublée (la figure 5a illustre le chrono-diagramme d’un pixel LARD). À chaque ins-tant de comparaison on a augmentation d’unpas d’une rampe de tension, marche d’esca-lier marquant la durée de l’intégration.Lors de l’arrêt de l’intégration on a échan-tillonnage de l’information ainsi créée, lerésultat étant stocké dans le pixel sousforme d’information chronodatée (une sortede tampon horodateur), ce qu’illustre le chro-nodiagramme de la figure 5b. Lorsque tousles pixels sont arrivés en fin d’intégration ona lecture des 2 tensions –l’information d’in-tensité intégrée et l’information chronoda-tée– de chacun des pixels. On a recréationdu photo-courant d’origine par un traitementadéquat d’une combinaison de ces2 signaux. L’obtention de la couleur pourrase faire par une exposition successive à tra-vers des filtres rouge, vert et bleu. Il est éga-lement possible de désactiver la fonctiond’auto-adaptation du LARS pour l’utilisercomme un capteur normal.La 3ème approche est HIRISE, un capteur àhaute résolution. Il en existe 3 versions. LeHIRISE VGA possède une matrice de 640 x480 pixels, de 7,4 µm2. Le HIRISE HDTV estun capteur au format 16:9 comportant unematrice de 1 920 x 1 040 pixels de 6,1 µm2. Ledernier, le HIRISE MEGA est une puce dutype 3 mégapixels avec une matrice de 2 160x 1 440 pixels de 5,4 µm2.Les 3 versions utilisent un filtrage des cou-leurs et possèdent une possibilité de sélec-tion entre 2 sensibilités de pixel, qui se tra-duiront soit par une haute qualité soit par unehaute sensibilité.Une autre compagnie , Foveon, a annoncé un
sée par Silicon Vision pour leur tech-nologie TFA (Thin Film on ASIC).Cette approche combine les excel-lentes propriétés optiques du sili-cium amorphe hydrogéné (a-Si:H)aux avantages du silicium cristallin(x-Si) des circuits intégrés et permetde réaliser des capteurs d’imageintelligents. On dépose une couchede silicium amorphe très fine sur lesilicium cristallin d’un ASIC (Appli-cation Specific Integrated Circuit) enutilisant un processus de dépôt bap-tisé PECVD (Plasma Enhanced Che-mical Vapour Deposition). Le nombrede couches déposées peut aller de 4à 7, leur épaisseur ne dépassant pasle micron.La figure 3 illustre la séquence deréalisation de la couche de base d’unTFA. La couche d’isolation présenteune structure telle que l’on disposedes orifices de contact des pixelsentre le détecteur et la circuiterie; lazone de pixels est définie par sonélectrode arrière qui prend la formed’une couche métallique structurée.La couche supérieure est un oxydetransparent conducteur qui fait officed’électrode commune pour l’en-semble des pixels.Le TFA utilise un adressage de ran-gée et de colonne des pixels; cela setraduit par plusieurs possibilitésd’approche de lecture, y compris, lecas échéant, un accès aléatoire. Il estmême envisageable de connecter lespixels de façon à les faire communi-quer l’un avec l’autre ceci en vue, parexemple, de procéder à une com-pression ou à une reconnaissance de
pattern. Un autre avantage de cetteapproche est une possibilité d’opti-miser le détecteur et l’ASIC commes’ils étaient des éléments séparés.Il faut noter en outre que le proces-sus de fabrication est plus abordableque celui d’un capteur CMOS qui estlui moins onéreux à fabriquer qu’unCCD.Silicon Vision a développé 3 types decapteur d’image basés sur la tech-nologie TFA. Passons-les en revue.
COSIMA, LARS et HIRISEComme son acronyme peut donnerà le penser, COSIMA, le COlour Sen-sor à Integrated Memory Array estune puce couleur; ce qui le différen-cie de ses homologues est que letraitement des composantes rouge,vert et bleue se fait au niveau-mêmede chaque pixel. La reconnaissancede couleur se fait séquentiellementet repose sur la longueur d’onde : lalumière bleue de longueur d’ondeplus faible est absorbé à proximitéde la surface du silicium, la lumièreverte pénètre un peut plus profon-dément, le rouge allant encore unpeu plus loin. Les profondeurs depénétration sont successivement del’ordre de 50, 200 et 500 à 1 000 nm(1 µm). La détection des 3 couleursse fait par application de tensionsde polarisation différentes. Au coursdu processus d’intégration les3 charges sont appliquées à leurpropre circuit d’intégration de cou-leur et stockées au niveau dechaque pixel (cf. figure 4).
INFORMATIONS
736/2002 Elektor
Figure 4. L’élément COSIMA fait appel à une application séquentielle des couleursdans leurs circuits d’intégration respectifs (source : Silicon Vision).
Circuitde
détection
CBleu
Intégration du bleuContactfrontal
Lecture
Reset
Iph
Lecture du bleu
Lecture du vert
Lecture du rouge
Intégration du vert
Intégration du rouge
CVert
CRouge
020083 - 14
capteur d’image travaillant selon ce mêmeprincipe de détection des 3 couleurs au cœurmême de chaque pixel. Ce composant CMOSmodifié a été utilisé dans l’appareil photo-graphique numérique qui vient d’être pré-senté, le Sigma SD9. Il utilise le même prin-cipe, la détection des couleurs se faisant àdifférents niveaux dans le silicium. Foveon aégalement tiré avantage de cette approchepar la mise en œuvre de ce qu’ils ont appeléle principe VPS (Variable Pixel Size) qui uti-lise tous les pixels pour une résolution maxi-male ou combine des pixels adjacents pourune sensibilité plus grande ou un enregistre-ment vidéo flexible (il s’agit en fait d’un cap-teur tant pour les images fixes que pour lavidéo) ; il ne s’agit pas en fait d’un conceptrévolutionnaire puisqu’il a été utilisé depuisde nombreuses années sous la dénominationde « binning », mais le besoin de conserver larelation de couleur correcte entre les pixelsfiltrés en a, jusqu’à présent, limité l’utilisationà des applications spécialisées. Le capteur F7utilisé dans l’appareil photo Sigma mesure20,7 x 13,8 mm et comporte un total de 2 304x 1 536 pixels à un pas de 9,12 microns. Uti-lisé en vidéo il atteint de 2 images parseconde à résolution maximum à 25 imagespar seconde à 576 x 384 pixels. Un secondcapteur, le F10, devrait arriver sur le marchéen cours d’année. Il fera 6,4 x 4,8 mm, aura unpas de pixel de 5 microns et comportera untotal de 1 344 x 1 024 pixels. Il sera capablede 10 images par seconde à pleine résolutionet 30 trames en résolution VGA. Contraire-ment au F7 il intégrera 3 convertisseurs A/Nà 12 bits travaillant jusqu’à 20 MHz , lessignaux rouge, vert et bleu étant multiplexéssur un unique bus de données de sortie3 états à 10 bits, adjacent aux sorties analo-giques RVB. Le capteur Foveon fait l’objet dela photo d’illustration en début d’article.
FillFactory et TIIl est également possible d’améliorer la sen-sibilité des pixels CMOS actifs à transistorsinternes. FillFactory a développé ce qu’ilsappellent un pixel à puit N à haut facteur deremplissage (High Fill Factor N-Well Pixel).Outre le facteur de remplissage il a égale-ment été tenu compte du rendement quan-tique (qui est le nombre d’électrons produitsdans le pixel pour chacun des photons inci-dents, relaté à sa réponse spectrale).La perte de photons peut être due à uneréflexion sur les diélectriques ou sur leurnon-absorption; de plus il se peut que lesélectrons produits ne soient pas captés etintégrés ou que l’on ait une recombinaisonélectron-trou.Ce problème devient de plus en plus impor-
tant en raison de la réduction sanscesse croissante de la taille despixels, diminution de taille destinéeà accroître la résolution.L’approche adoptée par FillFactoryest de permettre à la photodiode dedétecter les électrons produits dansla couche épitaxiale située sous l’en-semble du pixel (y compris en des-sous des zones insensibles), élec-
trons qui auraient, normalement, étéperdus. Ces électrons sont véhicu-lés, le long de barrières électrosta-tiques qui les protègent de la circui-terie et du substrat du pixel actif,vers la jonction de la photodiode (cf.figure 6).Apparemment, la quasi-totalité desélectrons fugitifs vont être canalisésle long de cette filière, ce qui se tra-
INFORMATIONS
74 Elektor 6/2002
Circuitde
détectionIph
Vsignal
Vcomp
Vrampe
Horloge
Reset
Lecture
Tam
pon
chro
ndat
eur
Sig
nal
Vtampon cd
020083 - 15A
0
0V
2V0V
3V
4V
0V
2V
0
1
1 2 4 8 16
Durée d'intégration individuelle
Durée [relative]
Fin d'intégration
Maintien de la rampe
32
Vsi
gnal
VSat
VComp
Vra
mpe
Hor
log
eV
tam
ponc
d
020083 - 15B
Figure 5. Pixel LARS (5a) et sa chronologie (5b) (source : Silicon Vision).
a
b
020083 - 16
n++
p+
p- potentiel minimum
e- e-
e-
n++
p++ (substrat)
n
<volume photosensibles>
circuiterie non concernée photodiodejonctions non concernées jonction utile
Figure 6. Méthode de population d’électrons destinée à augmenter le facteur deremplissage (source : Fillfactory).
teurs d’image CCD standard, la multipliantpar 50. Cette technologie a en outre l’avan-tage d’accroître l’étendue du spectre de sorteque sa plage spectrale s’étend alors de200 nm (UV profond) à 1 100 nm (IR proche).
Vision robotisée ?Il existe, pour finir, une catégorie de capteursd’image qui dérive de l’oeil des vertébrés, lecapteur focalisé. Ce type de capteur est uti-lisé de plus en plus souvent dans les auto-mates dotés d’une faculté de vision, lesrobots par exemple. Plutôt que de répartir lespixels régulièrement sur l’ensemble de la sur-face, on a réalisé une zone centrale dotée depixels plus compacts ce qui se traduit par unerésolution plus élevée. Dans la pratique, lazone périphérique détecte un objet digned’intérêt et instruit la zone centrale d’y jeterun coup d’oeil plus détaillé. Le champ devision peut partant être très grand, maiscomme seule la zone centrale fournit lesdétails, le nombre total de pixels nécessairespourra être sensiblement réduit par rapportà une disposition conventionnelle, ce qui estégalement le cas du traitement par plan focalau cas où celui-ci serait utilisé. La plupart desapproches sont du type circulaires, la dispo-sition des pixels étant radiale, mais il existeégalement des versions carrées de ce type decapteur. La majorité d’entre eux sont réalisésen technologie CMOS : cette dernière al’avantage non seulement de permettre uneintégration aisée du traitement au niveau dela puce mais aussi de permettre la fabricationde prototypes à moindre coût. Cette dernièrecaractéristique semble déterminante vu quela majorité des concepts naissent dans desuniversités à des fins de recherches et demises au point.
En conclusionLes capteurs d’image à semi-conducteur(Solid State) ont fait des progrès extraordi-naires depuis qu’ils ont vu le jour dans le pre-mier appareil photographique en 1972. Lespremiers progrès furent très lents; il existe,de nos jours, des alternatives intéressantesau CCD et au CMOS plus récent, la qualité necessant de croître alors que le coût ne cessede diminuer.Les capteurs « intelligents » venant de voir lejour remplissent des fonctions qui auraientrequis, par le passé, des processus de traite-ment complexes hors-puce.
(020083-1)
duit par un facteur de remplissagede 100%, sans nécessiter de modifi-cation de la structure du pixel. Leseul inconvénient est une diaphonie(crosstalk) inter-pixel plus impor-tante sachant qu’il existe un risquede 16% de voir les électrons dériverdans un pixel adjacent (encore quel’on puisse contrer ce phénomène).Les CCD n’ont pas été en reste nonplus en ce qui concerne l’augmenta-tion de sensibilité. Texas Instru-ments a développé un capteur àtransfert de trame à intensificationd’image intégrale qu’ils ont baptiséSPD (non cela n’a rien à voir avec leparti politique de nos voisinsd’outre-Rhin, mais signifie SinglePhoton Detection). Avec ce proces-sus, on procède à une multiplicationde la charge avant qu’elle ne soittransformée en tension de sortie. Lamultiplication de porteur de charge(CCM pour Charge Carrier Multipli-cation) est réalisée par création,entre 2 grilles adjacentes, d’unerégion à champ élevé et injection dela charge dans le dit champ.Lorsque les électrons traversent larégion à champ élevé, ils gagnent del’énergie et dès le dépassement d’unseuil donné, on a une ionisation
d’impact. Ceci se fait au niveau duregistre à décalage horizontal lorsde la lecture en sortie des charges.Le registre possède une longueur2 fois plus importante que normale-ment (cf. figure 7) : la première moi-tié du registre, de structure clas-sique, est interfacée avec la zone destockage comme sur n’importe quelautre CCD à transfert de trame; laseconde moitié cependant intègre400 étages CCM.On a, à ce niveau, création, par ioni-sation d’impact, de nouvelles pairesélectron-trou; les nouveaux élec-trons sont recueillis dans des puitsde potentiels où ils s’ajoutent à lacharge d’origine, le substrat sevoyant débarrassé de ses trous. Ona répétition de ce processus danschaque étage jusqu’à ce que lacharge, devenue bien plus impor-tante, atteigne l’amplificateur desortie.Le premier CCD SPD vient d’être pro-posé; il possède une plage de dyna-mique supérieure à 90 dB. D’aprèsTexas Instruments, la technologieSPD peut être appliquée à toutearchitecture de capteur d’imageconnue actuellement en vue d’aug-menter la sensibilité de tous les cap-
INFORMATIONS
756/2002 Elektor
Figure 7. On pense que l’approche SPD (Single Photon Detection) ne devrait pastarder à trouver son application dans les CCD grand public (source : Texas Instruments).
7VO
8ADB
9CLDR
10SUB
11SAG2
12IAG2
1ODB
2IAG1
3SAG1
4SRG1
5SRG2
6CMG
Pixels de référence de noir
Zone de détection d'imageà protection anti-bourgeonnement
Zone de stockage d'image
Registre de lecture sérielle
Multiplicateur de charge
Amplificateurde sortie
020083 - 17