~ Schéma électronique ~

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.


Exploitation de la sortie S1 et/ou S2 :


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


Dernière mise à jour : le 26-06-2001.