Une caractéristique commune qui est utilisée dans presque toutes les applications intégrées est le module ADC (convertisseur analogique-numérique). Ces convertisseurs analogique-numérique peuvent lire la tension de capteurs analogiques tels que le capteur de température, le capteur d'inclinaison, le capteur de courant, le capteur Flex et bien plus encore. Dans ce didacticiel, nous allons donc apprendre à utiliser ADC dans MSP430G2 pour lire les tensions analogiques à l'aide de l'IDE Energia. Nous allons connecter un petit potentiomètre à la carte MSP et fournir une tension variable à une broche analogique, lire la tension et l'afficher sur le moniteur série.
Comprendre le module ADC:
Croyez-moi, cela prendrait à peine 10 minutes pour connecter et programmer le MSP430G2 pour lire la tension analogique. Mais passons un peu de temps à comprendre le module ADC de la carte MSP afin de pouvoir l'utiliser efficacement dans tous nos projets à venir.
Un microcontrôleur est un appareil numérique, ce qui signifie qu'il ne peut comprendre que les 1 et les 0. Mais dans le monde réel, presque tout comme la température, l'humidité, la vitesse du vent, etc. sont de nature analogique. Afin d'interagir avec ces changements analogiques, le microcontrôleur utilise un module appelé ADC. Il existe de nombreux types différents de modules ADC disponibles, celui utilisé dans notre MSP est l' ADC 10 bits SAR 8 canaux.
ADC à approximation successive (SAR): Le CAN SAR fonctionne à l'aide d'un comparateur et de quelques conversations logiques. Ce type d'ADC utilise une tension de référence (qui est variable) et compare la tension d'entrée avec la tension de référence à l'aide d'un comparateur et la différence, qui sera une sortie numérique, est sauvegardée à partir du bit le plus significatif (MSB). La vitesse de la comparaison dépend de la fréquence d'horloge (Fosc) sur laquelle le MSP fonctionne.
Résolution 10 bits: Cet ADC est un ADC 8 canaux 10 bits. Ici, le terme 8 canaux implique qu'il y a 8 broches ADC à l'aide desquelles nous pouvons mesurer la tension analogique. Le terme 10 bits implique la résolution de l'ADC. 10 bits signifie 2 à la puissance de dix (2 10), soit 1024. C'est le nombre de pas d'échantillonnage pour notre ADC, donc la plage de nos valeurs ADC sera de 0 à 1023. La valeur augmentera de 0 à 1023 basé sur la valeur de la tension par étape, qui peut être calculée à l'aide de la formule ci-dessous
Remarque: Par défaut dans Energia, la tension de référence sera réglée sur Vcc (~ 3v), vous pouvez faire varier la tension de référence en utilisant l' option analogReference () .
Vérifiez également comment interfacer 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
Schéma:
Dans notre tutoriel précédent, nous avons déjà appris comment interfacer l'écran LCD avec le MSP430G2, maintenant nous allons simplement ajouter un potentiomètre au MSP430 pour lui fournir une tension variable et afficher la valeur de tension sur l'écran LCD. Si vous n'êtes pas conscient de l'interfaçage de l'écran LCD, revenez au lien ci-dessus et lisez-le, car je vais sauter les informations pour éviter le repentir. Le schéma électrique complet du projet est donné ci-dessous.
Comme vous pouvez le voir, deux potentiomètres sont utilisés ici, l'un est utilisé pour régler le contraste de l'écran LCD tandis que l'autre est utilisé pour fournir une tension variable à la carte. Dans ce potentiomètre, une extrémité extrême du potentiomètre est connectée au Vcc et l'autre extrémité est connectée à la masse. La broche centrale (fil bleu) est connectée à la broche P1.7. Cette broche P1.7 fournira une tension variable de 0V (masse) à 3,5V (Vcc). Il faut donc programmer la broche P1.7 pour lire cette tension variable et l'afficher sur l'écran LCD.
Dans Energia, nous devons savoir à quel canal analogique appartient la broche P1.7? Cela peut être trouvé en se référant à l'image ci-dessous
Vous pouvez voir la broche P1.7 sur le côté droit, cette broche appartient à A7 (canal 7). De même, nous pouvons également trouver le numéro de canal respectif pour d'autres broches. Vous pouvez utiliser toutes les broches de A0 à A7 pour lire les tensions analogiques ici, j'ai sélectionné A7.
Programmation de votre MSP430 pour ADC:
La programmation de votre MSP430 pour lire la tension analogique est très simple. Dans ce programme lira l'analogue de la valeur et calculera la tension avec cette valeur, puis affichera les deux sur l'écran LCD. Le programme complet se trouve au bas de cette page, plus loin, j'explique le programme sous forme d'extraits pour vous aider à mieux comprendre.
Nous commençons par définir les broches LCD. Celles-ci définissent à quelle broche du MSP430 les broches LCD sont connectées. Vous pouvez vous référer à la connexion pour vous assurer que les broches sont connectées respectivement
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
Ensuite, nous incluons le fichier d'en-tête de l'écran LCD. Cela appelle la bibliothèque qui contient le code sur la façon dont le MSP doit communiquer avec l'écran LCD. Cette bibliothèque sera installée par défaut dans l'EDI Energia, vous n'avez donc pas besoin de l'ajouter. Assurez-vous également que la fonction Liquid Crystal est appelée avec les noms de broches que nous venons de définir ci-dessus.
#comprendre
Dans notre fonction setup () , nous donnerions simplement un message d'introduction à afficher sur l'écran LCD. Je ne vais pas trop loin car nous avons déjà appris à utiliser l'écran LCD avec le MSP430G2.
lcd.begin (16, 2); // Nous utilisons un écran LCD 16 * 2 lcd.setCursor (0,0); // Placez le curseur sur la 1ère ligne 1ère colonne lcd.print ("MSP430G2553"); // Affiche un message d'introduction lcd.setCursor (0, 1); // positionne le curseur sur la 1ère colonne 2ème ligne lcd.print ("- CircuitDigest"); // Afficher un message d'introduction
Enfin, à l'intérieur de notre fonction infinite loop () , nous commençons à lire la tension fournie à la broche A7. Comme nous l'avons déjà mentionné, le microcontrôleur est un appareil numérique et il ne peut pas lire directement le niveau de tension. En utilisant la technique SAR, le niveau de tension est mappé de 0 à 1024. Ces valeurs sont appelées les valeurs ADC, pour obtenir cette valeur ADC, utilisez simplement la ligne suivante
int val = analogRead (A7); // lire la valeur ADC de la broche A7
Ici, la fonction analogRead () est utilisée pour lire la valeur analogique de la broche, nous avons spécifié A7 à l'intérieur car nous avons connecté une tension variable à la broche P1.7. Enfin, nous sauvegardons cette valeur dans une variable appelée « val ». Le type de cette variable est entier car nous n'obtiendrons que des valeurs comprises entre 0 et 1024 à stocker dans cette variable.
L'étape suivante serait de calculer la valeur de tension à partir de la valeur ADC. Pour ce faire, nous avons les formules suivantes
Tension = (Valeur ADC / Résolution ADC) * Tension de référence
Dans notre cas, nous savons déjà que la résolution ADC de notre microcontrôleur est de 1024. La valeur ADC se trouve également dans la ligne précédente et stocke la variable appelée val. La tension de référence est égale à la tension à laquelle le microcontrôleur fonctionne. Lorsque la carte MSP430 est alimenté via un câble USB alors la tension de fonctionnement est 3.6V. Vous pouvez également mesurer la tension de fonctionnement en utilisant un multimètre sur la broche Vcc et de masse sur la carte. Ainsi, la formule ci-dessus s'inscrit dans notre cas, comme indiqué ci-dessous
tension flottante = (float (val) / 1024) * 3,6; // formules pour convertir la valeur ADC en tension
Vous pourriez être confondu avec la ligne float (val). Ceci est utilisé pour convertir la variable «val» du type de données int au type de données «float». Cette conversion est nécessaire car ce n'est que si nous obtenons le résultat de val / 1024 en float que nous pouvons le multiplier par 3,6. Si la valeur est reçue en entier, elle sera toujours 0 et le résultat sera également zéro. Une fois que nous avons calculé la valeur ADC et la tension, il ne reste plus qu'à afficher le résultat sur l'écran LCD, ce qui peut être fait en utilisant les lignes suivantes
lcd.setCursor (0, 0); // positionne le curseur sur la colonne 0, ligne 0 lcd.print ("ADC Val:"); lcd.print (val); // Afficher la valeur ADC lcd.setCursor (0, 1); // positionne le curseur sur la colonne 0, ligne 1 lcd.print ("Voltage:"); lcd.print (tension); // Affichage de la tension
Ici, nous avons affiché la valeur de l'ADC dans la première ligne et la valeur de la tension dans la deuxième ligne. Enfin, nous donnons un délai de 100 mill secondes et effaçons l'écran LCD. C'est la valeur qui sera mise à jour tous les 100 mils.
Testez votre résultat!
Enfin, nous arrivons à la partie amusante, qui consiste à tester notre programme et à jouer avec. Effectuez simplement les connexions comme indiqué sur le schéma de circuit. J'ai utilisé une petite maquette pour effectuer mes connexions et utilisé des fils de cavalier pour connecter la carte d'expérimentation à MSP430. Une fois les connexions effectuées, la mienne ressemblait à ceci ci-dessous.
Ensuite, téléchargez le programme fourni ci-dessous sur la carte MSP430 via l'IDE Energia. Vous devriez pouvoir voir le texte d'introduction sur l'écran LCD, sinon ajuster le contraste de l'écran LCD à l'aide du potentiomètre jusqu'à ce que vous voyiez des mots clairs. Essayez également d'appuyer sur le bouton de réinitialisation. Si les choses fonctionnent comme prévu, vous devriez pouvoir voir l'écran suivant.
Maintenant , faites varier le potentiomètre et vous devriez également voir la tension affichée sur l'écran LCD varier. Vérifions si nous mesurons correctement la tension pour ce faire, utilisez un multimètre pour mesurer la tension au centre du POT et au sol. La tension affichée sur le multimètre doit être proche de la valeur affichée sur l'écran LCD comme indiqué dans l'image ci-dessous.
Voilà, nous avons appris à mesurer la tension analogique à l'aide de l'ADC de la carte MSP430. Nous pouvons désormais interfacer de nombreux capteurs analogiques avec notre carte pour lire les paramètres en temps réel. J'espère que vous avez compris le didacticiel et que vous avez aimé l'apprendre, si vous rencontrez des problèmes, veuillez nous contacter via la section des commentaires ci-dessous ou via les forums. Rattrapons-nous dans un autre tutoriel de MSP430 avec un autre nouveau sujet.