Analyse du schéma électrique :
Comme déjà indiqué, l'essentiel du travail incombe au microcontrôleur AT90S1200 ; ce dernier est entouré de quelques composants "discrets" dont nous allons voir succintement les rôles...
Petite modification du 26-06-2001 : la broche Vpp de la puce est mise à Vcc et non à la masse ; c'est une condition indispensable pour permettre un fonctionnement correct avec les T1G équipées de puces Texas, qui étaient jusque là ignorées par le système.
1º) L'alimentation du système :
Elle est fournie soit par une pile 9v classique, soit par
la prise du Minitel
lorsque celui-ci est utilisé. Les deux diodes 1N4001
permettent une utilisation simultanée de ces
deux sources. La tension est alors envoyée vers
un régulateur 7805, qui délivrera une
tension fiable de 5V, destinée à alimenter
les différentes parties du montage. J'ai
volontairement omis les habituels condensateurs de
découplages avant et après le régulateur,
libre à vous de les rajouter pour vous donner bonne
conscience, mais ils ne sont en pratique pas indispensables ;
en cas d'utilisation du Minitel, privilégiez cependant
un câble court.
A titre d'information, précisons que la tension fournie
par le Minitel n'est pas régulée, elle vaut grosso
modo entre 8,5V et 14V, le courant débité ne devant
pas excéder quelques centaines de mA. Comme indiqué
dans le chapitre "Mise en service", l'alimentation et
la liaison série (E/S) sont accessibles via la fiche DIN
5 broches femelle placée à l'arrière de
l'appareil, sur laquelle viennent normalement se brancher les
périphériques (notamment l'imprimante). Apparemment,
il semblerait que certains Minitel ne fournissent pas cette
alimentation, auquel cas la pile 9v sera indispensable ; elle
ne gêne pas, de toute façon.
2º) Diverses résistances :
- Les résistances de tirage des entrées :
elles permettent à une entrée d'être
par défaut au niveau logique "1", et de
passer au niveau logique "0" en étant mise
à la masse physiquement ; ce peut être le cas
avec le triple switch DIL (choix de la mémoire active
parmi les huit), et avec les deux touches (enregistrement du
numéro de la carte, extinction de la sortie S2) ;
leur valeur a été fixée à
10k ohms ; c'est un compromis qui permet à
la fois de limiter le courant à une valeur raisonnable
lorsque l'entrée est à la masse (0,5 mA),
mais surtout d'avoir une impédance pas trop
élevée de l'entrée lorsqu'elle est
à "1", et donc une bonne immunité
aux parasites : doigts qui se promènent sur la
carte, fils de connexion des deux touches qui font antenne,
etc.
La résistance sur l'entrée D6 (sortie de la
carte à puce) a été portée
à 15k ohms afin de réduire le courant
à dériver vers la masse lorsque la sortie de
la puce doit imposer un niveau logique "0" (elle
peut avoir une structure "collecteur ouvert").
Pour être complet, signalons qu'il est possible
de sélectionner des résistances de tirage
internes au circuit, mais que d'une part leur valeur est
incertaine et assez élevée (35k à
120k selon la doc), d'autre part leur mode de
sélection me paraît peu fiable (bit de
donnée écrit à "1" lorsque
la broche est configurée en entrée). D'où
la nécessité de résistances externes.
- Les résistances de tirage sur les sorties :
elles sont présentes sur D2 (vers Minitel), D4 et D5
(vers la carte à puce) ; leur valeur est un peu
plus faible (4,7k ohms) pour permettre aux entrées
qu'elles pilotent de tirer si nécessaire un peu plus
de courant pour assurer un bon niveau logique "1" ;
les sorties du microcontrôleur peuvent être
assimilées à des "collecteurs ouverts".
- Les trois leds de contrôle :
Compte tenu de la structure "collecteur ouvert"
des sorties, les leds sont reliées entre les sorties
et le +5v, via des résistances de 470 ohms qui fixent
le courant à environ 7 mA :
I(led) = [Vcc-Vled]/Rled = [5-1,5]/470 = 7,45 mA.
3º) L'oscillateur à quartz :
Comme souvent avec les microcontrôleurs, l'oscillateur
fournissant la fréquence d'horloge, qui va rythmer le
fonctionnement interne du AT90S1200, est constitué
d'une porte inverseuse (et amplificatrice) ; celle-ci
est intégrée au circuit, et accessible via
les broches XTAL1 et XTAL2 (figure 1, ci-dessous).
Sur la figure 2, la courbe 1 (en vert) rappel la
caractéristique (approximative) de transfert
Vs=f(Ve). La porte étant inverseuse, une
tension d'entrée proche de 0v (niveau logique
"0") entraîne une valeur de l'ordre de Vcc
(niveau logique "1") sur la sortie.
Inversement, un "1" (valeur proche de Vcc)
sur l'entrée va faire basculer la sortie à
"0" (aux alentours de 0v).
Au centre de la courbe, se trouve une sorte de "no
man's land" où l'entrée n'est ni
à "1", ni à "0" :
la porte se trouve dans sa zone linéaire. Pour
polariser la porte dans cette zone, il suffit
d'introduire une contre-réaction ; une simple
résistance va réinjecter la sortie sur
l'entrée, la porte étant inverseuse, il
s'agit bien d'une réaction négative.
Du point de vue de la polarisation, le courant i
absorbé par l'entrée est quasi nul
(technologie CMOS : une entrée se comporte
comme un mini-condensateur). Vs=Ve+R.i avec i nul, on
peut donc écrire : Vs=Ve
Ceci correspond à la courbe 2 (en rouge). Le seul
point commun aux deux conditions, donc aux deux courbes,
est le point P en plein milieu de la zone linéaire
(en bleu). De petites variations imposées à
l'entrée autour de ce point provoqueront des
variations sur la sortie (amplifiées, et en
opposition de phase).
Le quartz est introduit entre l'entrée et
la sortie ; il possède deux modes de
résonance : série ou
parallèle ; ces appellations proviennent
de son schéma équivalent interne, mais
cela sort du cadre de cette description. La
résonance utilisée dans le cas qui
nous intéresse est la résonance
parallèle, car elle va introduire une opposition
de phase entre la sortie et l'entrée ; la
porte étant inverseuse, les deux oppositions de
phase conjuguées vont provoquer une réaction
positive sur l'entrée, seule condition permettant
la mise en oscillation d'un système amplificateur,
et dans une certaine mesure le maintient de ce
phénomène. La résonance série
ne le permet pas, car elle correspond à une
impédance très faible du quartz, et introduirait
une contre-réaction (comme R) qui s'opposerait
à l'oscillation, en faisant tendre le système
vers la stabilité.
Je ne suis pas un spécialiste du quartz, aussi, pour plus
d'infos sur son fonctionnement, allez consulter sur le site
suivant les quelques pages traitant du sujet :
http://polytech.ulb.ac.be/cours/elec344/8051_Intro/slide12.html.
Quelques commentaires sur la figure 4 :
Les condensateurs C2 et C3 servent à assurer
le démarrage des oscillations. À la mise
sous tension, si celle-ci est très lente et
progressive, rien n'empêche le système
de rester parfaitement stable, le quartz ayant alors
une impédance infinie, l'ensemble étant
au repos autour de son point de polarisation P. Avec
les condensateurs, il en va autrement, car ceux-ci
sont déchargés, et imposent pendant
une fraction de seconde Vs=Ve=0v, ce qui est en
contradiction avec la caractéristique de transfert
de la porte (courbe verte, fig 2) ; la sortie de
celle-ci va donc avoir tendance à basculer
brutalement ; le front montant ainsi créé
est chargé d'un spectre large de composantes
fréquentielles, le quartz va donc se réveiller
(un peu brutalement) et se placer dans le régime
d'oscillation qui lui convient si bien, le gourmand !
Les valeurs des condensateurs doivent rester faibles,
compte tenu de leur impédance à la fréquence
de 4 MHz (quelques dizaines de pF au maximun :
Z = 1/[2.pi.F.C] = 1326 ohms pour C=30pF, à 4 MHz).
L'utilisation de deux valeurs différentes (mais
pas trop !) pour C2 et C3 permet de créer une
dissymétrie qui améliore le démarrage
du système et favorise le basculement de la porte
(mais vous avez le droit de trouver cet argument un peu
faible).
La résistance R dont il est fait mention ci-dessus
est en fait intégrée au circuit, il n'est
donc pas indispensable de l'implanter physiquement ;
la présence de R1 et C1 mérite quelques
explications :
Le AT90S1200 est conçu pour fonctionner avec une
fréquence interne de 12 MHz, et donc un quartz de
12 MHz. J'ai jugé bon d'utiliser le circuit avec une
fréquence de 4 MHz, pour plusieurs raisons :
valeur de quartz facilement disponible et à bon prix,
consommation moindre du circuit (elle reste faible, de toute
façon), éviter d'avoir à ralentir par
des temporisations complèxes l'accès à
la carte à puce (économiser de l'espace
mémoire)...
J'ai donc commencé par équiper le prototype
uniquement d'un quartz 4 MHz et de ses deux condensateurs ;
le programme de test consistait à faire clignoter
la led rouge à une fréquence donnée
(1 Hz). Le montage présenta un comportement
curieux : la led clignotait, mais trop vite ;
après re-vérification du programme,
aucune erreur de temporisation ne justifiait ce
phénomène ; pire, en tapotant avec
les doigts les connexions du circuit d'horloge, le
système reprenait son rythme normal de 1 Hz
et le conservait...
L'explication est la suivante : un quartz est
taillé pour osciller sur sa fréquence
fondamentale, mais il présente aussi des
résonances sur des fréquences
harmoniques, c'est à dire des multiples
entiers (impairs ?) de cette fréquence
fondamentale. Cette propriété est
utilisée pour réaliser des quartz
pour des fréquences élevées :
par exemple tailler un quartz sur 27 MHz lui imposerait
une épaisseur qui le rendrait trop fragile, on
taille donc le quartz pour 9 MHz, en favorisant
l'harmonique 3 (d'où 3x9 = 27 MHz) ; ce
type de quartz est dit "overtone".
Dans mon cas, le système équipé
d'un quartz 4 MHz, oscillait en fait sur l'harmonique
2 ou 3 (8 ou 12 MHz) ; après tout, l'horloge
est conçue pour pouvoir fonctionner à 12
MHz !
Comme il suffisait de peu pour repasser dans un mode
de fonctionnement correct, j'ai simplement rajouté
la résistance R1 et le condensateur C1 (figure 4).
R1 (de forte valeur, 470k) augmente la contre-réaction,
et donc la tendance à la stabilité de la
porte inverseuse. C1 a une impédance deux fois
plus faible à 8 MHz qu'à 4 MHz (et trois
fois plus faible à 12 MHz), les harmoniques sont
donc atténuées par rapport au 4 MHz.
L'horloge démarre ainsi à tous les coups
dans les conditions voulues, et oscille bien sur 4 MHz.
Remarque : il est possible de retoucher trés
légèrement la fréquence de
résonance d'un quartz (en mode
"parallèle") en ajoutant un condensateur
ajustable en parallèle, mais C1 n'a pas ce
rôle, dans le cas présent.
L'adaptation du programme pour un quartz de 12 MHz
aurait été simple, mais quel dommage de
passer à côté de cet intéressant
problème !
4º) La commande de Vcc de la carte à puce :
Le rôle du transistor T2 est d'autoriser
l'alimentation de la carte à puce uniquement
pendant la lecture, afin de minimiser la consommation
et surtout de limiter les risques consécutifs
à un court-circuit des contacts en cas de
mauvaise introduction de la carte ; la
résistance de 51 ohms limite également
le courant à 100 mA (pics intermittents, donc
un modèle 1/4 W suffit).
La structure "collecteur ouvert" des
entrées / sorties protège aussi le
système contre ce problème de
court-circuit potentiel.
N'importe quel transistor PNP d'usage
général peut faire l'affaire. Lorsque
la sortie D3 est à "1", on peut la
considérer comme déconnectée
(collecteur ouvert) ; aucun courant ne peut
sortir par la base, les deux résistances de
4k7 maintiennent alors Vbe à 0v, le transistor
est donc bloqué et la puce n'est pas
alimentée. Quand D3 passe à
"0", un courant Ib sort de la basse
en direction de la masse (PNP !) :
Vbe vaut -0,7v, Ib vaut [5v-0,7v]/4700 = 0,9 mA.
Ic est, en fonctionnement normal, inférieur
à une dizaine de mA ; le gain du transistor
(Béta=Ic/Ib) est supérieur à
100 ; T2 est donc à coup sûr
saturé. On retrouve bien environ 5v sur
l'entrée Vcc de la puce (la chute de tension
due à Vcesat et à la 51 ohms est
négligeable).
Signalons pour être complet, que le contact
"fin de course" du connecteur pour
télécartes n'est volontairement pas
utilisé ; ceci permet d'avoir recours
à différent modèles de
connecteurs : ils se différencient par
la position de ce contact, et par son mode de
fonctionnement "normalement ouvert" ou
"normalement fermé". Dans le pire
des cas, il suffit de supprimer ses connexions.
En contrepartie, il a été
nécessaire de renforcer sérieusement
la partie logicielle afin de vérifier la
présence de la carte pendant la totalité
de la lecture.
Signalons enfin que la validation de l'alimentation
au début de la lecture est la seule solution
fiable que j'ai pu trouver pour assurer la remise
à zéro (Reset) des télécartes
de technologie allemande (du type "Eurochip").
5º) Le circuit de RESET :
Le AT90S1200 présente une petite
fragilité : son fonctionnement n'est
pas garanti au dessous d'une certaine valeur de
la tension d'alimentation (2,7v à 4 MHz).
Cela peut se traduire par une perte du contenu
des registres, voire par une exécution
incorrecte du code, ce qui peut provoquer un
écrasement des données stockées
dans l'EEPROM (numéros de série
des cartes !). Ce type de dysfonctionnement est
qualifié dans la documentation ATMEL du
terme anglais "Brown-Out" (c'est à
dire grosso modo "panne partielle").
Le problème se présente essentiellement
lorsque survient une baisse de tension, ou que la mise
sous tension ou l'arrêt se produisent trop
progressivement. On peut imaginer ce cas de figure
lorsque le dispositif est alimenté par le
Minitel, et que ce dernier est mis hors-tension, les
condensateurs de l'alimentation se vident
progressivement, et le montage connait alors une phase
de sous-alimentation avant l'arrêt. Cela peut
avoir pour conséquence la perte d'un numéro
de série mémorisé (j'en ai
été le témoin).
La solution est assez simple, il suffit de provoquer
un RESET lorsque la tension d'alimentation est
inférieure à un certain seuil, disons
d'environ 3,3v. C'est le rôle du transistor T1.
Considérons le schéma électrique :
En faisant abstraction du transistor T1, l'ensemble
3k3+15k constitue un pont diviseur. La tension aux
bornes de la 3k3 vaut : [Vcc.3300]/[3300+15000],
soit 18% de Vcc. Si Vcc est inférieur à
3,3v, alors Veb est inférieure à 0,6v
(= 18% de 3,3v), donc le transistor est bloqué.
L'entrée RESET est active au niveau logique
"0" (et incorpore une résistance de
tirage à Vcc de 50k à 100k ohms).
La résistance de 4k7 "tire" cette
entrée à la masse, et bloque donc le
fonctionnement du circuit. Lorsque la tension Vcc
est supérieure à 3,3v, alors la tension
Veb est (potentiellement !) supérieure à
0,6v, la jonction base-émetteur est
polarisée, et le transistor devient passant.
L'entrée RESET bascule à Vcc, et le
microcontrôleur est autorisé à
fonctionner.
Pour plus d'information, consultez la note d'application
AVR180 : "External Brown-Out Protection"
fournie par ATMEL sur son site.
Il y a toujours la possibilité de forcer le Reset
grâce à un bouton poussoir relié sur
le bornier à cinq plots, entre les entrées
RST et +5V ; l'appui sur le BP va alors court-circuiter la
base et l'emetteur, forçant le blocage du transistor,
et la mise à "0" de l'entrée RESET.
Attention, ne mettez pas par erreur l'entrée RST
à la masse via le poussoir, mais bien à Vcc
sous peine de provoquer la destruction de T1.
- Pilotage d'un dispositif 220V, avec isolation galvanique grâce à un optotriac ; attention aux manipulations avec le 220V ; utilisez un triac du genre BTA 06/400 (les BTB ne sont pas isolés !) que vous pourrez éventuellement munir d'un dissipateur (il n'est pas indispensable pour une simple ampoule de 100W) :
Le schéma est directement inspiré de la documentation du MOC3041/42/43 de Motorola ; lorsque la sortie S1 (ou S2) est active (passe à la masse), la led de l'optotriac s'allume, et celui-ci provoque la conduction du triac, qui restera conducteur jusqu'au prochain passage par 0v de la tension du secteur. D'après la documentation Motorola, la cellule RC (39 ohms / 10 nF) n'est pas indispensable, selon le type de charge connectée ; j'imagine que c'est le cas avec des charges non inductives, comme une simple ampoule 220v.
- Commande d'une charge sous 12V via un transistor MOS (quelques ampères, s'il est équipé d'un dissipateur thermique), avec isolation par optocoupleur :
Quand la sortie S1 (ou S2) est inactive, le phototransistor de l'optocoupleur est bloqué ; le courant dans la 4,7k est nul, Vgs=0, le transistor est bloqué et la charge n'est pas alimentée. Lorsque S1 (ou S2) passe à '0' (niveau logique actif), la LED du photocoupleur s'allume et actionne le phototransistor ; Vgs vaut 12V, le transistor est passant, la charge est alimentée. Vous pouvez utiliser un autre transistor MOS (tel que l'IRF530). Même avec un dissipateur, n'exagérez pas trop sur le courant : le constructeur indique sans rire un Imax de 13 A ! restons sérieux, et n'excédons pas 2 ou 3 A ; rien n'empêche après de piloter un relais de puissance.
- Activation d'un relais 5V ; c'est la solution que je vous conseille si vous n'êtes pas encore sûr du type de dispositif que vous allez piloter, car un relais rend le système très universel ; il peut commuter du 220V alternatif comme du 5V continu, toujours en assurant l'isolation galvanique :
Lorsque la sortie (S1 ou S2) est inactive, aucun courant ne circule dans les résistances ; Vbe vaut 0V, le transistor est bloqué, le relais est au repos, le contact se fait entre 'C' et 'R' (Commun et Repos). Lorsqu'elle devient active (= elle passe à '0'), la base est polarisée par le pont diviseur, Vbe vaut alors -0,6V et le transistor PNP devient passant, le relais s'actionne, et le contact s'établit entre 'C' et 'T' (Commun et Travail). La diode est une simple diode de roue libre qui sert à décharger l'énergie accumulée sous une forme électromagnétique dans la bobine du relais ; celle-ci se traduit par un pic de tension négative sur le collecteur du transistor lorsqu'il se bloque, la diode devient passante un instant, et court-circuite ce pic.