Elektor N°288 - Juin 2002 - doctsf

60

Transcript of Elektor N°288 - Juin 2002 - doctsf

Page 1: Elektor N°288 - Juin 2002 - doctsf
Page 2: 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

Page 3: Elektor N°288 - Juin 2002 - doctsf

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

Page 4: Elektor N°288 - Juin 2002 - doctsf

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

Page 5: Elektor N°288 - Juin 2002 - doctsf

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

T3

BC847

R13

4k7

R4

47

Ω

R5

1k0

R6

10

C4

100n

TRI3

A2

A1

BTA26-600A

G

+5V

L3

1mH36A3 T

F6

K8

MOC3020IC6

6

4

1

2D13

R17

27

T2

BC847

R14

4k7

R1

47

Ω

R2

1k0

R3

10

C3

100n

TRI2

A2

A1

BTA26-600A

G

+5V

L2

1mH36A3 T

F5

K7

MOC3020IC5

6

4

1

2D12

R18

27

T1

BC847

R15

4k7

R10

47

Ω

R11

1k0

R12

10

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

R37

27

R36

27

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-

Page 6: Elektor N°288 - Juin 2002 - doctsf

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

Page 7: Elektor N°288 - Juin 2002 - doctsf

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

Page 8: Elektor N°288 - Juin 2002 - doctsf

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 %).

Page 9: Elektor N°288 - Juin 2002 - doctsf

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.

Page 10: Elektor N°288 - Juin 2002 - doctsf

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.

Page 11: Elektor N°288 - Juin 2002 - doctsf

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/

Page 12: Elektor N°288 - Juin 2002 - doctsf

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

Page 13: Elektor N°288 - Juin 2002 - doctsf

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.

Page 14: Elektor N°288 - Juin 2002 - doctsf

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

Page 15: Elektor N°288 - Juin 2002 - doctsf

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)

Page 16: Elektor N°288 - Juin 2002 - doctsf

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.

Page 17: Elektor N°288 - Juin 2002 - doctsf

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.

Page 18: Elektor N°288 - Juin 2002 - doctsf

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

Page 19: Elektor N°288 - Juin 2002 - doctsf

‘ 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

Page 20: Elektor N°288 - Juin 2002 - doctsf

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

Page 21: Elektor N°288 - Juin 2002 - doctsf

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

Page 22: Elektor N°288 - Juin 2002 - doctsf

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

Page 23: Elektor N°288 - Juin 2002 - doctsf

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

Page 24: Elektor N°288 - Juin 2002 - doctsf

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

Page 25: Elektor N°288 - Juin 2002 - doctsf

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

Page 26: Elektor N°288 - Juin 2002 - doctsf

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);

Page 27: Elektor N°288 - Juin 2002 - doctsf

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

Page 28: Elektor N°288 - Juin 2002 - doctsf

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.

Page 29: Elektor N°288 - Juin 2002 - doctsf

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.

Page 30: Elektor N°288 - Juin 2002 - doctsf

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é

Page 31: Elektor N°288 - Juin 2002 - doctsf

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

Page 32: Elektor N°288 - Juin 2002 - doctsf

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.

Page 33: Elektor N°288 - Juin 2002 - doctsf

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.

Page 34: Elektor N°288 - Juin 2002 - doctsf

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.

Page 35: Elektor N°288 - Juin 2002 - doctsf

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.

Page 36: Elektor N°288 - Juin 2002 - doctsf

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.

Page 37: Elektor N°288 - Juin 2002 - doctsf

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.

Page 38: Elektor N°288 - Juin 2002 - doctsf

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

Page 39: Elektor N°288 - Juin 2002 - doctsf

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

Page 40: Elektor N°288 - Juin 2002 - doctsf

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.

Page 41: Elektor N°288 - Juin 2002 - doctsf

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.

Page 42: Elektor N°288 - Juin 2002 - doctsf

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).

Page 43: Elektor N°288 - Juin 2002 - doctsf

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.

Page 44: Elektor N°288 - Juin 2002 - doctsf

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

Page 45: Elektor N°288 - Juin 2002 - doctsf

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.

Page 46: Elektor N°288 - Juin 2002 - doctsf

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.

Page 47: Elektor N°288 - Juin 2002 - doctsf

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.

Page 48: Elektor N°288 - Juin 2002 - doctsf

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

Page 49: Elektor N°288 - Juin 2002 - doctsf

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.

Page 50: Elektor N°288 - Juin 2002 - doctsf

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

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

R17

27

R13

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

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.

Page 51: Elektor N°288 - Juin 2002 - doctsf

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

Page 52: Elektor N°288 - Juin 2002 - doctsf

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.

Page 53: Elektor N°288 - Juin 2002 - doctsf

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é-

Page 54: Elektor N°288 - Juin 2002 - doctsf

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.

Page 55: Elektor N°288 - Juin 2002 - doctsf

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.

Page 56: Elektor N°288 - Juin 2002 - doctsf

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.

Page 57: Elektor N°288 - Juin 2002 - doctsf

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.

Page 58: Elektor N°288 - Juin 2002 - doctsf

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

Page 59: Elektor N°288 - Juin 2002 - doctsf

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).

Page 60: Elektor N°288 - Juin 2002 - doctsf

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