Un automate programmable rend bien des services si l'on dispose d'un langage simple et abordable rapidement. La programmation Basic est de loin la plus abordable et elle est quasiment "universelle". Certes l'exécution des programmes Basic n'est pas aussi rapide qu'en assembleur, mais leur mise au point est nettement plus facile. C'est pourquoi ce montage utilise un microcontrôleur 8052AH BASIC.
Le coeur du schéma de notre automate est bien évidemment le microcontrôleur U1 (voir le schéma de l'unité centrale). Le 8052AH BASIC ne nécessite que quelques composants supplémentaires pour former un système opérationnel, d'où son attrait malgré son "grand âge". En premier lieu, il faut un latch (U2) qui se charge de capturer le poids faible du bus des adresses, piloté par le signal ALE. Ensuite, il faut de la mémoire, associée à une logique de décodage d'adresse. Dans notre cas nous avons choisi un boîtier RAM de 32 Koctets. La mémoire utilise la moitié de l'espace RAM adressée par le microcontrôleur. Le décodage des adresses est alors très simple puisqu'il suffit d'utiliser le bit A15 pour sélectionner le boîtier U3. Vous noterez que la RAM U3 est raccordée au bus des données et au bus des adresses dans un désordre qui nous est familier. Ceci a pour but de simplifier énormément le dessin du circuit imprimé, et permet de rester en simple face. Le désordre n'a aucune incidence sur le fonctionnement du montage, puisque le microcontrôleur accédera à la RAM en lecture et en écriture par le même chemin alambiqué. Le circuit U4 ne s'apercevra de rien, et nous avons gagné un circuit imprimé simple face! Il est à noter que cette astuce peut s'employer facilement pour la RAM, tandis que pour une EPROM il faut qu'elle soit programmée d'une façon toute particulière. Pour les Entrées/Sorties qui seront raccordées via CN3, il vaudra mieux respecter l'ordre des signaux, sinon la programmation des circuits périphériques risque de devenir très complexe.
Les portes U5A et U5B combinent les signaux -PSEN et -RD pour piloter l'entrée OE de la RAM U3. Cette combinaison a pour but de rendre la RAM visible à la fois dans l'espace de programme du microcontrôleur et dans son espace de mémoire externe. Cela vous permettra de charger en RAM des routines écrites en assembleur et de les appeler grâce à l'instruction CALL supportée par le BASIC du microcontrôleur 8052AH BASIC. Le programme d'exemple qui accompagne le montage fait appel à cette possibilité très intéressante.
L'horloge interne du microcontrôleur est mise en oeuvre très simplement en connectant le quartz et les condensateurs associés aux broches XTAL1 et XTAL2. Nous avons choisi un quartz à 12 MHz pour obtenir un temps de cycle CPU de 1 µs, ce qui est très pratique pour les calculs associés aux TIMERS. En contrepartie, la variable XTAL devra être mise à jour par logiciel, après chaque initialisation du microcontrôleur, si l'horloge interne est utilisée dans vos programmes en BASIC.
Le microcontrôleur dialoguera avec une console ou un P.C. équipé d'un programme d'émulation terminal au moyen d'un port série. Les programmes HYPERTERMINAL de Windows 95 ou VT8052 proposé avec ce montage vous permettront de dialoguer facilement. Notez que les signaux sont distribués au connecteur CN4 de façon à se raccorder directement à un port série de type IBM/PC-AT. Selon l'équipement que vous voudrez raccorder, vous devrez peut-être réaliser un cordon d'adaptation. Les signaux RXD et TXD du microcontrôleur subissent l'adaptation des niveaux nécessaire grâce au circuit U4 qui n'est autre qu'un fidèle MAX232. Ce circuit intègre des convertisseurs DC-DC pour produire lui-même les tensions nécessaires pour l'interface avec les lignes RS232, de sorte que tout le montage peut être alimenté en monotension (+5VDC fourni par REG1).
Le microcontrôleur dialoguera avec une console ou un P.C. équipé d'un programme d'émulation terminal au moyen d'un port série. Les programmes HYPERTERMINAL de Windows 95 ou VT8052 proposé avec ce montage vous permettront de dialoguer facilement. Notez que les signaux sont distribués au connecteur CN4 de façon à se raccorder directement à un port série de type IBM/PC-AT. Selon l'équipement que vous voudrez raccorder, vous devrez peut-être réaliser un cordon d'adaptation. Les signaux RXD et TXD du microcontrôleur subissent l'adaptation des niveaux nécessaire grâce au circuit U4 qui n'est autre qu'un fidèle MAX232. Ce circuit intègre des convertisseurs DC-DC pour produire lui-même les tensions nécessaires pour l'interface avec les lignes RS232, de sorte que tout le montage peut être alimenté en monotension (+5VDC fourni par REG1).
L'ensemble sera alimenté par une tension de 12VDC qui n'a pas besoin d'être stabilisée. Une tension correctement filtrée fera très bien l'affaire, comme c'est le cas par exemple des petits blocs d'alimentation. La diode D1 permet de protéger le montage en cas d'inversion du connecteur d'alimentation.
Le schéma de l'interface permet de disposer de 3 ports de 8 bits. Nous avons préféré utiliser un circuit 82C55 pour augmenter les possibilités du montage, plutôt que de se contenter du port P1 du microcontrôleur. De cette façon, le port P1 pourra être utilisé pour piloter une platine de visualisation, ce qui étend les possibilités de l'automate. Le circuit U1 de l'interface doit être visible dans l'espace RAM du microcontrôleur après l'espace occupé par la RAM. La sélection du circuit 82C55 doit donc être assurée à partir de l'adresse 08000H. Il suffit d'inverser le signal A15 pour assurer la sélection souhaitée. Ceci est fait par la porte U5C de l'unité centrale.
Pour accéder aux registres du circuit U1, il est nécessaire de connecter les lignes A0, A1, WR et RD. Avec le décodage d'adresse sommaire que nous avons retenu (A15 uniquement) le circuit U1 sera visible de l'adresse 8000H à FFFFH. Nous pourrons donc accéder aux registres du circuit U1 avec plusieurs adresses. Ceci n'est pas gênant dans la mesure où il n'y aura pas d'autre circuit à raccorder aux bus du microcontrôleur.
Les ports PA, PB et PC du circuit U1 peuvent être configurés en entrée ou en sortie. Pour ne pas figer la configuration des ports, nous les avons mis directement à disposition via CN2 à CN4. Vous pourrez commander des relais, des triacs, des moteurs et relire l'état d'un clavier, de boutons poussoirs ou tout ce qui vous intéresse. Cependant vous devrez adapter vous-mêmes les signaux des ports (TTL) aux éléments que vous souhaitez commander. Vous trouverez dans les numéros précédents de la revue de nombreux schémas d'interface pour triacs, moteurs, etc.. que vous pourrez adapter facilement à notre automate. La tension d'alimentation VCC est aussi distribuée sur CN2 à CN4 pour alimenter de petits montages externes, directement par l'automate. Il ne faudra pas perdre de vue que c'est le régulateur LM7805 de la platine CPU qui alimente tout ce petit monde. Il vaudra mieux éviter de consommer plus de 100mA sur l'ensemble des connecteurs CN2 à CN4, car le dissipateur thermique associé au régulateur ne permet guère plus.
C'est le port P1 du microcontrôleur qui commande directement un afficheur LCD, visible sur le schéma de la carte de visualisation. Les boutons poussoirs pilotent directement les lignes d'interruption INT0 et INT1. Malheureusement, le 8052AH BASIC ne permet pas d'accéder aux ports 0, 2 et 3 directement à partir des instructions du BASIC. Seul le port P1 est accessible aux applications. Comme par ailleurs le signal INT0 sert à implémenter un DMA logiciel (Direct Memory Access), le bouton poussoir BP1 ne pourra pas être géré directement en BASIC. Pour combler ce manque, nous aurons recours à une routine ultra-simple écrite en assembleur. Notez que l'action sur le bouton poussoir BP2 peut également être prise en compte par interruption, directement par le BASIC du microcontrôleur grâce à l'instruction ONEX1. Si vous ne connaissez pas cette fonction reportez-vous au manuel de programmation du microcontrôleur.
Les pastilles seront percées à l'aide d'un foret de 0,8mm de diamètre, pour la plupart. En raison de la taille réduite de certaines pastilles, il vaudra mieux utiliser des forets de bonne qualité pour éviter de les emporter au moment où le foret débouche. En ce qui concerne les barrettes sécables, les connecteurs mini-kk, le régulateur et la diode, il faudra percer avec un foret de 1mm de diamètre. Pour l'ajustable de la carte d'affichage il faudra percer avec un foret de 1,3mm de diamètre. Avant de réaliser le circuit imprimé, il est préférable de vous procurer les composants pour vous assurer qu'ils s'implanteront correctement. Cette remarque concerne particulièrement les boutons poussoirs et l'afficheur LCD.
Il n'y a pas de difficulté particulière pour l'implantation. Soyez tout de même attentifs au sens des condensateurs et des circuits intégrés. N'oubliez pas les sept straps sur la carte CPU
les deux straps sur la carte d'interface . Vous noterez qu'il y a deux straps qui aboutissent sous
microcontrôleur, sur la carte CPU. Pour plus
commodité, il est préférable de débuter l'implantation par les straps. Pour le port série, veillez bien à choisir un connecteur 9 points SUB-D femelle . Car un modèle mâle s'implante également, mais les points de connexion se retrouvent inversés par symétrie par rapport à l'axe vertical. Dans ce cas il n'y a aucune chance pour que votre montage dialogue avec votre P.C.
En ce qui concerne le câble nécessaire pour relier notre montage à un P.C. de type AT il vous suffira de fabriquer un câble équipé d'un connecteur DB9 mâle d'un coté et d'un connecteur DB9 femelle de l'autre coté (liaison fil à fil de la broche 1 à la broche 9). L'utilisation de connecteurs à sertir est plus pratique, mais les liaisons nécessaires étant peu nombreuses vous pourrez utiliser des connecteurs à souder. Enfin, ajoutons que le connecteur SUB-D sera immobilisé sur le circuit imprimé par deux boulons montés dans les passages prévus à cet effet. Cette précaution ne sera pas inutile puisque le connecteur CN4 à de fortes chances de subir de nombreuses manipulations de changement de câble.
Le régulateur REG1 sera monté sur un dissipateur thermique ayant une résistance thermique inférieure à 18°C/W pour éviter d'atteindre une température de jonction trop élevée. Ceci est d'autant plus important que la tension VCC est distribuée sur les connecteurs de ports de sorties. La carte d'affichage vient prendre place au bord de la carte CPU, à 90°. Avec les barrettes sécables préconisées, l'installation de la carte d'affichage se fait toute seule. Par contre, pour relier la carte interface à la carte CPU, il faudra être très attentif . Le connecteur CN3 de la carte CPU et le connecteur CN1 de la carte d'interface semblent se superposer. Dès lors, il est très tentant de relier les fils directement. Pourtant si vous regardez bien le plan d'implantation de l'unité centrale et le plan d'implantation de l'interface, vous constaterez que les connecteurs sont montés dans des sens opposés. IL FAUDRA DONC CROISER TOUS LES FILS . Nous avons retenu cette implantation pour limiter le nombre des straps sur la carte interface. Soyez donc vigilant au moment du câblage.
Le réglage du contraste de l'afficheur LCD est vraiment très simple à effectuer. Placez le curseur à fond du côté de la masse, puis ajustez le contraste pour que le texte soit lisible correctement selon l'angle de vison que vous souhaitez. Notez qu'à la mise sous tension vous ne verrez aucun caractère sur l'afficheur LCD. Vous ne verrez que des blocs noirs, ce qui est normal. Lancez le programme de démonstration décrit plus loin dans cet article pour voir du texte apparaître sur l'afficheur.
Programmation de l'automate
La programmation de l'automate réclame bien entendu de connaître le langage BASIC, et de connaître aussi les quelques particularités du 8052AH BASIC. Nous n'allons pas vous apprendre tout cela dans ces pages, vous vous en doutez bien. Nous supposerons donc que vous possédez la notice de programmation du 8052AH BASIC (certains revendeurs la fournissent avec le microcontrôleur, moyennant un prix forfaitaire) et que vous en connaissez le contenu, bien entendu.
Rappelons que les signaux du port série (sur CN4) sont prévus pour se raccorder directement
port série de type IBM/PC-AT. Si votre P.C. n'est pas équipé de ce type de port série, ou si vous souhaitez utiliser un terminal (VT220 par exemple) consultez votre documentation pour déterminer comment réaliser un cordon d'adaptation. Si vous utilisez un P.C. pour dialoguer avec l'automate, vous aurez recours à un programme d'émulation de terminal. Avec l'environnement WINDOWS vous disposez du programme HYPERTERMINAL. Mais pour permettre des échanges de fichiers avec le microcontrôleur, vous pourrez utiliser le programme VT8052. Ce programme est une application DOS un peu ancienne, mais il convient parfaitement aux échanges avec le microcontrôleur 8052AH BASIC.
Si vous suivez nos montages depuis longtemps vous devez déjà connaître le programme VT8052. Rappelons simplement que pour déterminer les paramètres de communication du port série, le programme VT8052 recherche les informations nécessaires dans un fichier de configuration qui s'appelle "VT8052.CFG". Pour que le programme puisse traiter le fichier de configuration, il faut que ce dernier se trouve dans le répertoire courant, ou bien qu'il soit accessible dans un répertoire indiqué par la commande APPEND. La structure du fichier de configuration est très simple. Il vous suffit de modifier le paramètre voulu dans le fichier à l'aide d'un éditeur de texte. Vous verrez, c'est très simple. Si aucun fichier de configuration n'est présent, le programme VT8052 utilise les paramètres par défaut: COM1, 9600 bauds, 8 bits, 1 stop, pas de parité. Pour communiquer avec la centrale, il n'est donc pas nécessaire d'avoir recours à un fichier de configuration. C'est néanmoins utile à savoir, si vous souhaitez reprendre la main sur l'automate programmable tandis qu'une instruction BAUD a été exécutée.
Si vous découvrez le microcontrôleur 8052 AH BASIC pour la première fois, précisons que pour "prendre la main" avec l'interpréteur BASIC, il convient de respecter la procédure suivante: Après l'initialisation du microcontrôleur, l'interpréteur BASIC examine la mémoire externe à l'adresse 8000H. S'il y trouve la valeur FFH, c'est à dire s'il n'y a pas d'EPROM qui réponde à cette adresse, le microcontrôleur exécute une routine qui a pour but de déterminer la vitesse de communication du port série. Cette routine scrute le port série et compte le temps entre les fronts montants et
descendants du signal RX. Pour que la routine puisse se repérer correctement, il faut envoyer au microcontrôleur un caractère défini à l'avance. Il s'agit du caractère ESPACE. Selon le temps qui sépare les fronts de transition sur le signal RX, et à condition que le caractère envoyé soit bien le caractère ESPACE, le microcontrôleur sera capable de s'adapter à la vitesse de transmission (BAUD RATE). Si le premier caractère envoyé au microcontrôleur n'est pas le caractère ESPACE, le résultat sera imprévisible et le microcontrôleur ne pourra plus communiquer correctement avec votre terminal. Vous serez obligé d'effectuer une remise à 0 du montage.
Dans le cas d'un montage équipé du programmateur d'EPROM décrit dans la documentation du 8052AH BASIC, il est possible de rendre une application autonome en se passant de cette phase d'initialisation. Nous ne détaillerons pas cette possibilité dans la mesure où nous avons préféré garder un système simple à réaliser. En ce qui concerne la programmation du circuit 8255, nous ne pourrons malheureusement pas décrire ici toutes les possibilités du circuit. Disons simplement que les échanges avec le port PA se font en utilisant l'adresse 08000H (voir instruction XBY dans le manuel de programmation du 8052AH BASIC). Les échanges avec le port PB se font en utilisant l'adresse 08001H et enfin les échanges avec le port PC se font en utilisant l'adresse 08002H. Le registre de contrôle du circuit 8255 est accessible à l'adresse 08003H. Le tableau regroupe les valeurs à placer dans le registre de contrôle pour déterminer la configuration des ports.
Après ces quelques explications élémentaires, vous pourrez maintenant essayer le petit programme de démonstration. Il vous permettra de débuter facilement l'exploration des possibilités de l'automate, mais mérite quelques commentaires. Le but du programme est de vous montrer les possibilités des routines d'affichage et de gestion des boutons poussoirs, pendant qu'en tâche de fond tous les ports de sortie changent d'état à chaque seconde écoulée. La ligne 5 du programme réserve la zone mémoire utilisée par la routine assembleur transformée en DATA dans les lignes 60030 à 60033. Le sous programme en ligne 60000 permet de mettre en place la routine assembleur qui sera ensuite appelée par l'instruction CALL 32700. Le résultat de la routine assembleur est rangé en mémoire à l'adresse 32767. Le bit 0 de cette valeur est à 1 si la touche BP0 est inactive, et le bit 1 de cette valeur est à 1 si la touche BP1 est inactive.
Les routines qui gèrent l'afficheur LCD sont regroupées à partir de la ligne 65000. Les instructions REM vous indiquent quelles sont les actions qu'autorisent ces routines et quelles variables il faut renseigner avant d'appeler le sous-programme concerné. Notez que l'afficheur LCD est géré en mode 4 bits, ce qui oblige le programme à décomposer les octets à transmettre en deux paquets. Cela explique la relative lenteur des routines d'affichage. Notez au passage que finalement cela arrange bien nos affaires, car cela nous permet de nous passer des temporisations habituellement associées aux commandes transmises au LCD.
Enfin, l'initialisation du circuit 82C55 est effectuée à la ligne 16, tandis que le changement d'état des ports de sortie est réalisé par le sous programme de la ligne 1000, appelé une fois par seconde grâce à la mise en route du timer en ligne 15.
Vous voici maintenant à même d'exploiter ce petit outil parfaitement autonome, ce qui devrait réjouir les amateurs de programmation intensive en BASIC.
P. MORIN
Comment faire automate programmable en basic
comment fabrique
comment creer
0 Comments