- Composants requis et configuration matérielle
- Schéma de circuit du Nuvoton N76E003 pour lire la tension analogique
- Informations sur les broches GPIO et analogiques dans N76E003
- Informations sur le périphérique ADC dans N76E003
- Programmation N76E003 pour ADC
- Flasher le code et la sortie
Le convertisseur analogique-numérique (ADC) est la fonction matérielle la plus utilisée sur un microcontrôleur. Il prend une tension analogique et la convertit en une valeur numérique. Les microcontrôleurs étant des appareils numériques et fonctionnant avec les chiffres binaires 1 et 0, ils ne pouvaient pas traiter directement les données analogiques. Ainsi, un ADC est utilisé pour prendre la tension analogique et la convertir en sa valeur numérique équivalente qu'un microcontrôleur peut comprendre. Si vous voulez plus d'informations sur le convertisseur analogique-numérique (ADC), vous pouvez consulter l'article lié.
Il existe différents capteurs disponibles en électronique qui fournissent une sortie analogique, comme les capteurs de gaz MQ, le capteur d'accéléromètre ADXL335, etc. Ainsi, en utilisant un convertisseur analogique-numérique, ces capteurs peuvent être interfacés avec une unité de microcontrôleur. Vous pouvez également consulter les autres didacticiels répertoriés ci-dessous, pour utiliser ADC avec d'autres microcontrôleurs.
- Comment utiliser ADC dans Arduino Uno?
- Interfaçage ADC0808 avec microcontrôleur 8051
- Utilisation du module ADC du microcontrôleur PIC
- Tutoriel ADC Raspberry Pi
- Comment utiliser ADC dans MSP430G2 - Mesure de tension analogique
- Comment utiliser ADC dans STM32F103C8
Dans ce tutoriel, nous utiliserons le périphérique ADC intégré de l' unité de microcontrôleur N76E003, nous allons donc évaluer le type de configuration matérielle dont nous avons besoin pour cette application.
Composants requis et configuration matérielle
Pour utiliser ADC sur N76E003, nous utiliserons un diviseur de tension à l'aide d'un potentiomètre et lirons la tension comprise entre 0 V et 5,0 V. La tension sera affichée sur l'écran LCD 16x2 caractères, si vous êtes nouveau avec LCD et N76E003, vous pouvez vérifier comment interfacer l'écran LCD avec Nuvoton N76E003. Ainsi, le composant principal requis pour ce projet est un écran LCD 16x2 caractères. Pour ce projet, nous utiliserons les composants ci-dessous:
- LCD à caractères 16x2
- Résistance 1k
- Potentiomètre ou potentiomètre 50k
- Quelques fils de Berg
- Peu de fils de raccordement
- Planche à pain
Sans oublier, outre les composants ci-dessus, nous avons besoin de la carte de développement basée sur le microcontrôleur N76E003 ainsi que du programmeur Nu-Link. Une unité d'alimentation supplémentaire de 5 V est également nécessaire car l'écran LCD consomme suffisamment de courant que le programmeur ne peut pas fournir.
Schéma de circuit du Nuvoton N76E003 pour lire la tension analogique
Comme nous pouvons le voir sur le schéma, le port P0 est utilisé pour la connexion liée à l'écran LCD. À l'extrême gauche, la connexion de l'interface de programmation est affichée. Le potentiomètre agit comme un diviseur de tension et qui est détecté par l'entrée analogique 0 (AN0).
Informations sur les broches GPIO et analogiques dans N76E003
L'image ci-dessous illustre les broches GPIO disponibles sur l'unité de microcontrôleur N76E003AT20. Cependant, sur les 20 broches, pour la connexion liée à l'écran LCD, le port P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 et P0.7) est utilisé. Les broches analogiques sont surlignées en rouge.
Comme nous pouvons le voir, le port P0 a un maximum de broches analogiques mais celles-ci sont utilisées pour la communication liée à l'écran LCD. Ainsi, P3.0 et P1.7 sont disponibles en tant que broches d'entrée analogiques AIN1 et AIN0. Comme ce projet ne nécessite qu'une seule broche analogique, P1.7 qui est la voie d'entrée analogique 0, est utilisée pour ce projet.
Informations sur le périphérique ADC dans N76E003
N76E003 fournit un ADC SAR 12 bits. C'est une très bonne caractéristique du N76E003 qu'il a une très bonne résolution d'ADC. L'ADC dispose d' entrées à 8 canaux en mode single-end. L'interfaçage de l'ADC est assez simple et direct.
La première étape consiste à sélectionner l' entrée du canal ADC. Des entrées 8 canaux sont disponibles dans les microcontrôleurs N76E003. Après avoir sélectionné les entrées ADC ou les broches d'E / S, toutes les broches doivent être définies pour la direction dans le code. Toutes les broches utilisées pour l'entrée analogique sont des broches d'entrée du microcontrôleur, donc toutes les broches doivent être définies en mode d'entrée uniquement (haute impédance). Ceux-ci peuvent être définis à l'aide des registres PxM1 et PxM2. Ces deux registres définissent les modes d'E / S où le x représente le numéro de port (par exemple, Port P1.0, le registre sera P1M1 et P1M2, pour P3.0 ce sera P3M1 et P3M2, etc.) La configuration peut être vu dans l'image ci-dessous-
La configuration de l'ADC se fait par deux registres ADCCON0 et ADCCON1. La description du registre ADCCON0 est indiquée ci-dessous.
Les 4 premiers bits du registre du bit 0 au bit 3 sont utilisés pour définir la sélection du canal ADC. Puisque nous utilisons le canal AIN0, la sélection sera 0000 pour ces quatre bits.
Les 6ème et 7ème bits sont les plus importants. ADCS doit définir 1 pour démarrer la conversion ADC et l' ADCF fournira des informations sur la conversion ADC réussie. Il doit être mis à 0 par le micrologiciel pour démarrer la conversion ADC. Le registre suivant est l'ADCCON1-
Le registre ADCCON1 est principalement utilisé pour la conversion ADC déclenchée par des sources externes. Cependant, pour les opérations liées à l'interrogation normale, le premier bit ADCEN doit mettre 1 pour activer le circuit ADC.
Ensuite, l'entrée du canal ADC doit être contrôlée dans le registre AINDIDS où les entrées numériques peuvent être déconnectées.
Le n représente le bit de canal (par exemple, le canal AIN0 devra être contrôlé en utilisant le premier bit P17DIDS du registre AINDIDS). L'entrée numérique doit être activée, sinon elle indiquera 0. Ce sont tous les paramètres de base de l'ADC. Maintenant, en effaçant l'ADCF et en définissant l'ADCS, la conversion ADC peut être lancée. La valeur convertie sera disponible dans les registres ci-dessous.
Et
Les deux registres sont de 8 bits. Comme l'ADC fournit des données 12 bits, l'ADCRH est utilisé comme plein (8 bits) et l'ADCRL est utilisé comme moitié (4 bits).
Programmation N76E003 pour ADC
Le codage pour un module spécifique à chaque fois est un travail mouvementé, donc une bibliothèque LCD simple mais puissante est fournie qui sera très utile pour l'interfaçage LCD 16x2 caractères avec N76E003. La bibliothèque LCD 16x2 est disponible dans notre référentiel Github, qui peut être téléchargé à partir du lien ci-dessous.
Télécharger la bibliothèque LCD 16x2 pour Nuvoton N76E003
Veuillez avoir la bibliothèque (par clonage ou téléchargement) et inclure simplement les fichiers lcd.c et LCD.h dans votre projet Keil N76E003 pour une intégration facile de l'écran LCD 16x2 dans l'application ou le projet souhaité. La bibliothèque fournira les fonctions d'affichage utiles suivantes:
- Initialisez l'écran LCD.
- Envoyez la commande à l'écran LCD.
- Écrivez sur l'écran LCD.
- Mettez une chaîne dans l'écran LCD (16 caractères).
- Imprimer le caractère en envoyant une valeur hexadécimale.
- Faites défiler les messages longs de plus de 16 caractères.
- Imprimez des nombres entiers directement sur l'écran LCD.
Le codage pour ADC est simple. Dans la fonction de configuration Enable_ADC_AIN0; est utilisé pour configurer l' ADC pour l' entrée AIN0 . Ceci est défini dans le fichier.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Ainsi, la ligne ci-dessus définit la broche comme une entrée et configure également le registre ADCCON0, ADCCON1 ainsi que le registre AINDIDS . La fonction ci-dessous lira l'ADC à partir du registre ADCRH et ADCRL mais avec une résolution de 12 bits.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; tandis que (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; return adc_value; }
Le bit est décalé à gauche 4 fois puis ajouté à la variable de données. Dans la fonction principale, l'ADC lit les données et s'imprime directement sur l'écran. Cependant, la tension est également convertie en utilisant un rapport ou la relation entre la tension divisée par la valeur de bit.
Un ADC 12 bits fournira 4095 bits sur une entrée 5.0V. Divisant ainsi le 5.0V / 4095 = 0.0012210012210012V
Ainsi, 1 chiffre des changements de bits sera égal aux changements de 0,001 V (environ). Cela se fait dans la fonction principale illustrée ci-dessous.
void main (void) { int adc_data; installer(); lcd_com (0x01); while (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Données ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); voltage = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0,2fV", tension); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Les données sont converties de la valeur de bit en tension et en utilisant une fonction sprintf , la sortie est convertie en chaîne et envoyée à l'écran LCD.
Flasher le code et la sortie
Le code a renvoyé 0 avertissement et 0 erreurs et a été flashé en utilisant la méthode de clignotement par défaut par le Keil, vous pouvez voir le message clignotant ci-dessous. Si vous êtes nouveau sur Keil ou Nuvoton, consultez la mise en route du microcontrôleur Nuvoton pour comprendre les bases et comment télécharger le code.
La reconstruction a commencé: Projet: minuterie Reconstruire la cible 'Target 1' assemblage STARTUP.A51… compilation main.c… compilation lcd.c… compilation Delay.c… liaison… Taille du programme: data = 101.3 xdata = 0 code = 4162 création d'un fichier hexadécimal à partir de ". \ Objects \ timer"… ". \ Objects \ timer" - 0 Erreur (s), 0 Avertissement (s). Temps de construction écoulé: 00:00:02 Charger "G: \\ n76E003 \\ Affichage \\ Objets \\ timer" Effacement flash terminé. Flash Write Done: 4162 octets programmés. Vérification Flash terminée: 4162 octets vérifiés. Flash Load terminé à 11:56:04
L'image ci-dessous montre le matériel connecté à la source d'alimentation à l'aide d'un adaptateur CC et l'écran affiche la sortie de tension définie par le potentiomètre sur la droite.
Si nous tournons le potentiomètre, la tension donnée à la broche ADC changera également et nous pouvons remarquer la valeur ADC et la tension analogique affichées sur l'écran LCD. Vous pouvez consulter la vidéo ci-dessous pour une démonstration de fonctionnement complète de ce didacticiel.
J'espère que vous avez apprécié l'article et appris quelque chose d'utile, si vous avez des questions, laissez-les dans la section commentaires ci-dessous, ou vous pouvez utiliser nos forums pour publier d'autres questions techniques.