Bibliothèque technique gratuite ENCYCLOPÉDIE DE LA RADIOÉLECTRONIQUE ET DU GÉNIE ÉLECTRIQUE Comment connecter un microcontrôleur et un ordinateur via RS-232. Encyclopédie de l'électronique radio et de l'électrotechnique Encyclopédie de l'électronique radio et de l'électrotechnique / microcontrôleurs Cet article se voulait un exemple de mise en œuvre du développement d'un dispositif à microcontrôleur contrôlé par un ordinateur personnel via un canal série. Il est destiné à ceux qui n'ont pas encore d'expérience dans de tels développements. Une fois que vous avez compris comment le PC contrôle le microcontrôleur, affiche, traite et stocke les informations qu'il reçoit, vous pouvez appliquer ces connaissances à vos propres développements. De plus, l'appareil décrit a aussi sa propre valeur : il s'agit d'un voltmètre numérique contrôlé dont les résultats de mesure, avant d'être affichés, peuvent être traités par un ordinateur selon un algorithme prédéterminé, et également enregistrés dans un fichier sur le disque dur. lecteur de votre PC, visualisé et imprimé. Tout cela fait du dispositif décrit la base d'un système simple de collecte, de traitement et de documentation des données, utile pour les ingénieurs électroniciens qui n'ont pas un niveau de connaissance de la technologie des microcontrôleurs pour un développement indépendant. introduction Le but de ce travail était de développer et de créer un appareil de mesure simple basé sur un microcontrôleur, encore le plus répandu aujourd'hui, de la famille x51, capable d'échanger des informations avec un ordinateur personnel. L'appareil était censé mettre en œuvre un voltmètre, qui pourrait ensuite être complété par divers accessoires convertissant d'autres grandeurs physiques directement mesurées en tension. Un tel dispositif permettrait d'effectuer facilement une série de mesures, en étant contrôlé par un ordinateur, ainsi que d'accumuler les résultats et d'effectuer leur traitement informatique. Soumis à des changements non fondamentaux, il pourrait facilement se transformer en un système de surveillance et de contrôle à distance d'équipements ou d'autres instruments et dispositifs. Description générale de l'appareil. Partie électrique de l'appareil L'appareil (Fig. 1) est essentiellement un voltmètre numérique. A l'entrée du voltmètre se trouve un amplificateur opérationnel (DA1), qui a une impédance d'entrée élevée. L'amplificateur opérationnel est suivi d'un CAN (DD2), qui nous permet de numériser la tension d'intérêt pour une transmission ultérieure au microcontrôleur. Le microcontrôleur DD3 est l'élément de contrôle principal de l'appareil, car il lit les informations de l'ADC et communique avec un ordinateur personnel via un canal série. L'appareil comprend également des convertisseurs de puissance pour générer du +5 V pour la partie numérique et pour générer +/-10 V pour l'amplificateur opérationnel, ainsi qu'une puce de conversion de niveau (<0> et <1> logiques vers -15 : +15 V et vice versa) pour échanger des informations via un canal série comme RS232.
La valeur envoyée à l'ordinateur se situe dans la plage 0...4095 (qui correspond à la profondeur de bits de l'ADC), 0 correspond au niveau d'entrée 0V, 4095 - niveau 5V, la relation est linéaire. Le taux d'échange d'informations peut être sélectionné soit inférieur à 9600 115 bauds, soit supérieur - jusqu'à 200 386 bauds. Sur des ordinateurs assez anciens, tels que 19200 et versions antérieures, la limite supérieure est bien inférieure - XNUMX XNUMX bauds. En effet, les puces de port série présentes dans ces ordinateurs n'ont pas été conçues pour des vitesses plus élevées. Description des puces Convertisseur d'alimentation MAX680 Les amplis opérationnels nécessitent généralement une alimentation bipolaire (par exemple, +10 V et -10 V par rapport à la terre). Pour obtenir une telle tension, les radioamateurs peu familiers avec la base des éléments modernes utilisent généralement un transformateur avec deux enroulements secondaires (ou un, mais avec une prise au milieu), deux condensateurs de filtrage, deux stabilisateurs, etc. ayez à votre disposition la tension stabilisée est de 5V, et l'amplificateur opérationnel utilisé, qui nécessite une alimentation bipolaire, ne peut coûter que +7:10 V, tout en consommant 1:2 mA, alors les deux enroulements et deux stabilisateurs mentionnés ne seront pas nécessaires . Il suffit d'utiliser le microcircuit MAX680 de Maxim (à noter que des microcircuits similaires sont produits par Linear Technology et un certain nombre d'autres sociétés bien connues). Une tension Uin de 3:5 à 6:10 V (selon le type) est appliquée à l'entrée du microcircuit ; des tensions égales à environ +2Uin sont générées à ses sorties. Ce qui est remarquable, c'est que, d'une part, pour générer ces tensions, en plus du MAX8 ou LT680 à 1026 broches, seuls 4 petits condensateurs électrolytiques sont nécessaires (voir Fig. 1), et d'autre part, lorsque la tension d'entrée change, doublez les sorties. changement de phase, ce qui n'a pratiquement aucun effet sur le signal de sortie de l'ampli-op. Pour des informations plus détaillées sur de tels microcircuits, l'auteur vous recommande de vous référer aux descriptions propriétaires correspondantes. CAN MAX1241 Ces dernières années, les microcircuits contrôlés via un canal série ont connu un développement généralisé dans la technologie des microcontrôleurs. L'une de ces puces est l'ADC 12 bits MAX1241. Comme dans le cas du MAX680, le MAX1241 possède de nombreux analogues exacts et approximatifs (MAX187 de Maxim, LTC1286, LTC1298 de Linear Technology, AD7894 d'Analog Devices et plusieurs autres). Le MAX1241 est conditionné dans un boîtier à 8 broches, est alimenté par une tension de 2,7 à 5 V et consomme un courant d'environ 5 mA. Il nécessite l'utilisation d'une source de tension de référence externe (dans ce cas, une diode Zener de précision KR142EN19 est utilisée, générant une tension de 2,50 V) et n'utilise que 3 lignes pour communiquer avec le microcontrôleur. Le fonctionnement du MAX1241 est illustré par les chronogrammes présentés sur la Fig. 2. Avant le début de la conversion et de l'échange, l'entrée CS# MAX1241 doit être maintenue par le microcontrôleur dans un seul état. Pour démarrer la conversion, un niveau zéro logique doit être appliqué à cette entrée. Le processus de conversion vers MAX1241 prend un peu moins de 8 µs. Pendant tout le temps de conversion, MAX1241 maintient un niveau logique de 0 à sa sortie DOUT. Une fois la conversion terminée, MAX1241 fait passer la sortie DOUT à un état unique.
Avant de démarrer la conversion, le microcontrôleur à l'entrée SCLK du MAX1241 doit définir le niveau logique zéro. Lorsque le processus de conversion à l'intérieur de l'ADC est terminé, le microcontrôleur doit générer une séquence d'au moins 12 impulsions positives à l'entrée SCLK (Fig. 2). Le front de la première impulsion prépare le MAX1241 à la transmission de données. Lorsque l'impulsion tombe sur DOUT, le 12ème bit le plus significatif apparaît comme un zéro ou un un logique. Le microcontrôleur lit ce bit, forme le front de la deuxième impulsion sur SCLK et, après un certain temps, sa chute. Lorsque la deuxième impulsion tombe, le 11ème bit apparaît sur DOUT, qui est ensuite lu par le microcontrôleur, etc. A la chute de la 12ème impulsion, le 1er bit le moins significatif est défini à la sortie DOUT. La chute de la 13ème impulsion amène DOUT à l'état zéro, où il se trouvait avant que l'entrée CS# ne soit réglée sur 1. En transférant CS# à l'état unique, le microcontrôleur informe le MAX1241 que le processus de lecture du résultat de la conversion est terminé. Le MAX1241 peut effectuer la conversion suivante environ 1 µs après avoir défini CS# sur 1. Les algorithmes de fonctionnement des LTC1286, LTC1298 de Linear Technology et AD7894 d'Analog Devices diffèrent légèrement de ceux décrits pour le MAX1241. Vous pouvez les connaître plus en détail en vous référant aux descriptions des entreprises correspondantes. Convertisseur de niveau MAX202E Ce n'est un secret pour personne que dans la logique standard, un est représenté par un niveau de tension de 2,4 à 5 V et zéro - de 0 à 0,8 V. Cependant, les débutants ne savent peut-être pas que lors de la transmission sur un canal RS-232, zéro et l'un est codé avec des signaux de même valeur (de 5 à 12 V), mais de signe différent. Dans le cadre de cet article, il n'est pas prévu d'expliquer pourquoi il est d'usage de faire cela et pas autrement - nous nous limiterons à simplement énoncer ce fait. Etant donné que les signaux logiques standards doivent être convertis en signaux d'un autre niveau pour être transmis via RS-232, il est nécessaire de prévoir des moyens de conversion appropriés dans le circuit. Il y a environ 10 ans, des cascades spécialement conçues de trois ou quatre transistors, une paire de diodes et près d'une douzaine de résistances étaient utilisées à cet effet. Aujourd'hui, la situation a considérablement changé : les principaux fabricants de puces produisent des convertisseurs entièrement complets qui nécessitent un nombre minimum d'éléments supplémentaires. Il s'agit notamment du MAX202E de MAXIM et de l'AD232 d'Analog Devices, qui lui est complètement identique, jusqu'au brochage. A l'intérieur, les deux microcircuits contiennent un convertisseur de tension de +5 V à +10 V, identique au MAX680 décrit ci-dessus, et des cascades qui convertissent les signaux logiques de niveau standard en signaux de niveau selon la norme RS-232. Chacun des microcircuits mentionnés contient des convertisseurs de niveau logique pour deux récepteurs et deux émetteurs. Nous n'utiliserons qu'un seul canal émetteur-récepteur. Mode de fonctionnement MK avec un canal série Comme on le sait (voir par exemple les numéros 10 et 11 du magazine Radio de 1994), les microcontrôleurs de la famille x51 disposent de quatre modes de fonctionnement de l'émetteur-récepteur. Nous nous intéresserons au mode 1 comme le plus simple et le plus acceptable. Le mode 1 est caractérisé par les paramètres suivants :
Il s'agit d'un mode pratique pour la programmation : très peu de code de programmation est nécessaire pour configurer et faire fonctionner l'émetteur-récepteur. Cependant, si vous le souhaitez, vous pouvez utiliser d'autres modes de fonctionnement. Le but de cet article est de décrire un certain appareil capable de communiquer avec un ordinateur personnel. Nous ne décrirons pas ici exactement le fonctionnement de l'émetteur-récepteur. Ces informations peuvent être tirées des magazines radiophoniques mentionnés ou d’autres publications. Routines de base pour MK Les principales routines du microcontrôleur seront : la lecture des données de l'ADC, l'initialisation de l'UART, la réception d'un octet et l'envoi d'un octet. Lecture des données de l'ADC Configuration d'un PC pour échanger des informations via un canal série. Afin de configurer votre PC pour échanger des informations via un canal série, vous devez procéder comme suit :
Un exemple de code conçu pour un taux d'échange de 9600 bps pour un résonateur à quartz avec une fréquence de résonance de 11,059 MHz :
GET_VOLT : SETB DOUT ; ENTRÉE DE DONNÉES AUTORISÉE À PARTIR DE L'ADC SETB CS ; DÉFINIR L'ÉTAT INITIAL ADC CLR SCLK ; DÉFINIR L'ÉTAT INITIAL ADC CLR CS ; SIGNALÉ POUR LIRE LES DONNÉES MUL AB ; 4 MKS À 12 MHZ \ MUL AB ; 4 SSI | MUL AB ; 4 ISS} ATTENDEZ LA FIN ; | NUMÉRISATIONS MUL AB ; 4 MKS / MOV R0,#12 ; LIRE GET_VC 12 BITS : SETB SCLK ; \ NOP ; | NON ; | CLRSCLK ; }ONT GÉNÉRÉ UNE IMPULSION POUR LIRE LE BIT NOP ; | NON ; / MOV C, DOUT ; LIRE BIT MOV A, R2 ; \ RLC A ; | MOV R2,A ; | MOV A, R3 ; } PUSH BIT INTO WORD ; | RÉSULTAT - R3R2 RLC A ; | MOV R3,A ; / DJNZ R0,GET_VC ; BOUCLE ANL A,#0FH MOV R3,A ; BITS HAUTS EFFACÉS R3R2 SETB CS ; NE VOULEZ PAS LIRE ; (BITS RESTANTS = 0) MUL AB ; 4 MKS À 12 MHZ \ MUL AB ; 4 SSI | MUL AB ; 4 SSI | MUL AB ; 4 µs }RETARD MIN ; | AVANT SUIVANT MUL AB ; 4 SSI | MUL AB ; 4 ISS / RET Ce sous-programme est appelé en premier dans le programme principal du micro-ordinateur. En principe, il n’est même pas nécessaire de le formaliser en tant que sous-programme. Recevoir et envoyer un octet Les routines de réception et d'envoi d'octets sur un canal série sont très simples.
SERINITE : MOV IE, #0 ; Désactive toutes les interruptions MOV TMOD, #20H ; Réglez le mode 2 pour la minuterie 1 MOV TH1, #REL96 ; Valeur du compteur de rechargement automatique MOV TL1, #REL96 ; valeur initiale du compteur pour 9600 bps ; avec SMOD = 0 ANL PCON, #7FH ; Effacé SMOD MOV SCON, #50H ; Mode pour 8 bits de données et débit en bauds, ; dépendant de la minuterie SETB TR1 ; Start timer/setter 1 RET où REL96 est une constante égale à 0FDh Vous pouvez lire un octet sur le port d'E/S SBUF uniquement lorsque le bit RI du registre de contrôle/état SCON est activé, indiquant la présence d'un octet dans le tampon de réception. Après avoir lu cet octet, le bit RI doit être réinitialisé. Après avoir écrit un octet sur le port E/S, vous devez attendre que le bit TI soit activé, ce qui signalera la fin de l'envoi de l'octet à la ligne. Ensuite, le bit TI devra également être réinitialisé. Sous-programme de réception d'un octet dans l'accumulateur :
GETCH : JNB RI, GETCH MOV A, SBUF CLR RI RET Sous-programme pour envoyer un octet depuis l'accumulateur :
PUTCH : MOV SBUF, A SEND : JNB TI, SEND CLR TI RET Il convient également de noter que le micro-ordinateur ne dispose d'aucun moyen pour détecter les erreurs d'entrée/sortie. Afin d'organiser le contrôle de manière logicielle et matérielle, vous pouvez augmenter le nombre de lignes d'entrée/sortie à travers lesquelles des signaux supplémentaires seront transmis, et à partir d'elles, il sera possible de déterminer les états dans lesquels se trouvent les participants au dialogue, ainsi que d'identifier les erreurs. Vous pouvez augmenter la fiabilité de la réception/transmission des informations d'une autre manière : transmettre un autre bit avec huit bits de données - le bit de parité, calculé de la même manière que l'indicateur de parité dans le mot d'état du programme (bit 0 PSW). Il ne doit être calculé que pour un octet transmis ou reçu. Après avoir reçu l'octet et le bit de parité, vous devez les comparer pour voir s'ils correspondent. S'ils ne correspondent pas, une erreur d'E/S s'est produite. Pour transmettre le 9ème bit d'information supplémentaire, vous devez utiliser le mode 2 ou 3 du temporisateur/compteur. Programme général pour MK. Diagramme d'état de l'appareil Le programme général du micro-ordinateur est basé sur l'algorithme décrit ci-dessous. L'algorithme est assez compliqué, car... Néanmoins, vous devez d'une manière ou d'une autre, au moins par programmation, identifier les erreurs d'entrée/sortie et réagir à leur apparition. Pour plus de clarté, un dessin est joint à l'algorithme décrit en termes ordinaires - le soi-disant diagramme d'état de l'appareil (Fig. 3), qui montre les quatre états principaux de l'appareil du point de vue de l'échange d'informations avec l'ordinateur.
Précisons à l'avance que notre micro-ordinateur est l'esclave et que l'ordinateur personnel est le maître lors de l'échange de données. En d’autres termes, l’appareil seul, sans ordre du PC, ne devrait rien faire. Il est entièrement subordonné à l'ordinateur de contrôle. Un ordinateur personnel a été choisi comme hôte pour la simple raison qu'il dispose de plus de puissance et est capable de contrôler l'appareil sans aucun problème. De plus, il peut fournir à l'utilisateur davantage de fonctions de service. État un - Attendez L'appareil se trouve dans cet état immédiatement après la mise sous tension. Ici, il attend une demande d'initialisation de l'ordinateur, qui est exprimée par l'ordinateur envoyant le caractère NUL. L'appareil, à son tour, doit, en réponse à la demande reçue, activer et configurer, si nécessaire, des modules et des ressources supplémentaires, puis, si tout s'est bien passé, envoyer le symbole ACK à l'ordinateur. En cas d'erreur, il doit envoyer NAK. Ainsi se produit la première « communication » des deux « interlocuteurs ». Si vous le souhaitez, ils devraient « échanger des salutations » ou « se serrer la main ». Si l'appareil est initialisé avec succès et envoie ensuite le caractère ACK, il passe automatiquement à l'état suivant. Cette transition est indiquée par la flèche 1 dans le diagramme. État prêt Dans cet état, notre micro-ordinateur attend une requête du PC pour envoyer la valeur mesurée lue depuis l'ADC. La requête est le caractère XON. Dès l'acceptation de ce symbole, l'appareil entre dans un nouvel état : Envoi. La transition correspond à la flèche 2. État d'envoi En arrivant ici, le microcontrôleur lit un nombre binaire de douze bits à partir de l'ADC en utilisant la méthode spécifiée précédemment et l'envoie en plusieurs parties à l'ordinateur. Cette implémentation convertit le nombre binaire en un équivalent hexadécimal à trois caractères, tel que <1FF> pour le nombre décimal 511. <1> est envoyé en premier, puis Une fois la valeur transférée à l'ordinateur, le micro-ordinateur passe à l'état suivant selon la flèche 4. État envoyé Cet état est le dernier et, pour ainsi dire, ferme le cercle d'un acte unique de communication entre l'appareil et l'ordinateur. Ici, l'ordinateur est censé confirmer qu'il a correctement accepté la valeur qui lui a été adressée. Il existe plusieurs options possibles pour la réponse du PC au numéro envoyé : il peut répondre avec une réception réussie avec le symbole XOFF, ce qui signifie qu'aucune autre valeur n'est requise pour l'instant, ou il peut répondre avec le symbole XON, ce qui signifie qu'une valeur supplémentaire est nécessaire. Si XOFF est accepté, l'appareil revient à l'état Prêt (transition 7 dans le schéma). Si le symbole XON est reçu, l'appareil est à nouveau dans l'état d'envoi (transition 5) et répète la lecture de l'ADC avec transmission ultérieure du numéro à la ligne. Le seul cas non pris en compte était celui où le PC n'aimait pas ce qu'il recevait : par exemple, au lieu de caractères compris dans la plage <0>...<9>, Les transitions indiquées par les flèches 3 et 8 dans le diagramme sont restées non décrites. Si l'ordinateur rencontre une erreur d'E/S grave ou doit arrêter de communiquer avec l'appareil, il enverra simplement un NUL d'initialisation, qui initialisera l'appareil et le mettra à l'état Prêt. Ceux. Quel que soit l'état dans lequel se trouve notre appareil, il doit répondre à la demande d'initialisation de la même manière que lors de l'initialisation initiale (voir État d'attente de l'élément). Si le micro-ordinateur reçoit un symbole ou une demande inattendue ou incorrecte, il doit toujours y répondre avec le symbole NAK. Cette stratégie est avantageuse, car une telle organisation du programme de l'appareil permet d'effectuer plus facilement plusieurs tâches à la fois : le micro-ordinateur et le PC ne joueront pas avec un téléphone cassé, d'une part, et, d'autre part, ils pourront simplement et efficacement « communiquer » entre eux avec un ami. Passons au PC. Programme général pour PC. Diagramme d'état du PC Fondamentalement, le programme général d’un ordinateur ne différera en rien de celui utilisé dans un microcontrôleur. L'algorithme sera similaire et le diagramme d'état sera similaire. Initialisation du premier état C'est là qu'arrive l'ordinateur lorsque l'utilisateur appuie sur une touche de son clavier qui correspond à l'acceptation d'une seule valeur. Dans cet état, l'ordinateur envoie un caractère d'initialisation NUL au périphérique et attend une réponse avec un caractère ACK ou NAK. Si un ACK a été reçu, alors l'initialisation était normale et vous pouvez continuer à travailler - passez à l'état suivant le long de la flèche 2 dans le diagramme. Si un NAK est reçu, l'opération doit s'arrêter et l'ordinateur doit entrer dans l'état final Terminé à la flèche 1. État prêt Dans cet état, l'ordinateur se prépare à recevoir les caractères qui composeront la valeur demandée au micro-ordinateur. Il y a deux demandes pour envoyer une valeur. La première est une demande de valeur normale ; elle correspond au caractère XON. La deuxième demande est une demande de renvoi de la dernière valeur. Ceci est nécessaire si la valeur n'a pas été entièrement acceptée dans un délai objectif ou si des caractères incorrects ont été acceptés qui ne se situaient pas dans les plages de <0> à <9> et de à Ensuite, après s'être préparé à recevoir des symboles de valeur, l'une des deux requêtes ci-dessus adressées à notre appareil se produit, puis l'ordinateur se déplace le long de la flèche 4 jusqu'à l'état de réception de valeur. État de réception Ici, le PC lit simplement trois caractères de la valeur mesurée et convertie par l'ADC. Comme indiqué précédemment, l'ordinateur attend un caractère pendant un certain temps objectif. Si le caractère n'a pas été lu pendant ce temps, alors cette situation est interprétée comme erronée, c'est-à-dire une erreur d'E/S s'est produite. D'ailleurs, à des vitesses d'échange d'informations assez élevées (plus de 19200 XNUMX bps) ou lorsque l'on travaille sous le système d'exploitation MS-Windows (n'importe quelle version), il arrive souvent que l'ordinateur ne reçoive que deux des trois caractères qui lui sont envoyés, et parfois même moins - un . Pour éviter que l'ordinateur ne "se bloque" - en attendant indéfiniment un caractère manquant ou sauté - un certain temps est introduit pour limiter cette attente. Malheureusement, ces omissions ne sont pas détectées par le matériel. Cette implémentation définit deux types de délais d'attente qui peuvent être spécifiés par l'utilisateur via le clavier. Le premier type est le délai d'attente pour le 1er des 3 caractères. Il permet à l'appareil de mesurer sereinement, sans se précipiter nulle part, de numériser le numéro dont nous avons besoin et de le convertir en un équivalent symbolique. Et le deuxième type est un délai pour l'envoi des deuxième et troisième caractères. Passons maintenant aux transitions possibles de l’état Récepteur vers d’autres états. Si les 3 caractères de la valeur n'ont pas été reçus dans le temps imparti, alors l'ordinateur doit demander à notre appareil de lui renvoyer la valeur. Cette situation correspond à la transition selon la flèche 5, c'est-à-dire l'ordinateur fait une requête avec le symbole NAK et revient à l'état Prêt. Si, au cours du processus de réception, l'ordinateur a détecté une erreur d'entrée/sortie (et que le PC a la capacité d'analyser simplement le registre d'état du port série), il est alors préférable de restaurer à la fois l'ordinateur et le micro-ordinateur dans leur état d'origine, c'est-à-dire répéter l'initialisation. La flèche 3 est donc également présente dans le diagramme. Et enfin, si l'ordinateur a reçu les trois caractères de l'appareil, il passe alors à l'état d'analyse de la valeur reçue - à l'état Reçu le long de la flèche 8. Publication : cxem.net Voir d'autres articles section microcontrôleurs. Lire et écrire utile commentaires sur cet article. Dernières nouvelles de la science et de la technologie, nouvelle électronique : Inauguration du plus haut observatoire astronomique du monde
04.05.2024 Contrôler des objets à l'aide des courants d'air
04.05.2024 Les chiens de race pure ne tombent pas malades plus souvent que les chiens de race pure
03.05.2024
Autres nouvelles intéressantes : ▪ L'intelligence artificielle a du nez ▪ Nouveau format multimédia DataPlay ▪ TPA6211A1 - puce d'amplification audio Fil d'actualité de la science et de la technologie, nouvelle électronique
Matériaux intéressants de la bibliothèque technique gratuite : ▪ section du site Puzzles drôles. Sélection d'articles ▪ article Voile d'Isis. Expression populaire ▪ article Noms de quelles monnaies proviennent des mesures de poids ? Réponse détaillée ▪ Article Shinous. Légendes, culture, méthodes d'application
Laissez votre commentaire sur cet article : Toutes les langues de cette page Page principale | bibliothèque | Articles | Plan du site | Avis sur le site www.diagramme.com.ua |