La conversion analogique-numérique est une tâche très importante dans l'électronique embarquée, car la plupart des capteurs fournissent une sortie sous forme de valeurs analogiques et pour les alimenter dans un microcontrôleur qui ne comprend que les valeurs binaires, nous devons les convertir en valeurs numériques. Donc, pour pouvoir traiter les données analogiques, les microcontrôleurs ont besoin d'un convertisseur analogique-numérique.
Certains microcontrôleurs ont un ADC intégré comme Arduino, MSP430, PIC16F877A mais certains microcontrôleurs ne l'ont pas comme 8051, Raspberry Pi, etc. et nous devons utiliser des circuits intégrés de conversion analogique-numérique externes comme ADC0804, ADC0808. Vous trouverez ci-dessous divers exemples d'ADC avec différents microcontrôleurs:
- Comment utiliser ADC dans Arduino Uno?
- Tutoriel ADC Raspberry Pi
- Interfaçage ADC0808 avec microcontrôleur 8051
- Voltmètre numérique 0-25V utilisant un microcontrôleur AVR
- Comment utiliser ADC dans STM32F103C8
- Comment utiliser ADC dans MSP430G2
- Comment utiliser ADC dans ARM7 LPC2148
- Utilisation du module ADC du microcontrôleur PIC avec MPLAB et XC8
Dans ce tutoriel, nous allons vérifier comment interfacer le module ADC / DAC PCF8591 avec Arduino.
Composants requis
- Arduino UNO
- Module ADC PCF8591
- Pot 100K
- Câbles de démarrage
Module ADC / DAC PCF8591
PCF8591 est un module convertisseur analogique-numérique 8 bits ou numérique-analogique 8 bits, ce qui signifie que chaque broche peut lire des valeurs analogiques jusqu'à 256. Il dispose également d'un circuit LDR et de thermistance fournis sur la carte. Ce module a quatre entrées analogiques et une sortie analogique. Il fonctionne sur la communication I 2 C, il y a donc des broches SCL et SDA pour l'horloge série et l'adresse de données série. Il nécessite une tension d'alimentation de 2,5 à 6 V et un faible courant de veille. On peut également manipuler la tension d'entrée en ajustant le bouton du potentiomètre sur le module. Il y a aussi trois cavaliers sur la carte. J4 est connecté pour sélectionner le circuit d'accès de la thermistance, J5 est connecté pour sélectionner le circuit d'accès LDR / photo-résistance et J6 est connecté pour sélectionner le circuit d'accès à tension réglable. Pour accéder à ces circuits, vous devez utiliser les adresses de ces cavaliers: 0x50 pour J6, 0x60 pour J5 et 0x70 pour J4. Il y a deux LED sur la carte D1 et D2-D1 indique l'intensité de la tension de sortie et D2 indique l'intensité de la tension d'alimentation. Plus la tension de sortie ou d'alimentation est élevée, plus l'intensité de la LED D1 ou D2 est élevée. Vous pouvez également tester ces LED en utilisant un potentiomètre sur VCC ou sur la broche AOUT.
Interfaçage du module ADC / DAC PCF8591 avec Arduino
Le programme complet et la vidéo de travail sont donnés à la fin de ce tutoriel.
Tout d'abord, nous devons définir la bibliothèque pour la communication I 2 C et l'affichage LCD.
#comprendre
Définissez ensuite quelques macros. La première macro sert à définir l'adresse du bus de données pour IC et la seconde macro sert à définir l'adresse de la première broche d'entrée du module, où l'entrée du pot est donnée.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Ensuite, définissez les connexions des broches de l'écran LCD avec Arduino et initialisez la valeur que nous obtenons à la broche analogique.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal LCD (rs, en, d4, d5, d6, d7); valeur int = 0;
Maintenant, arrivons à la fonction de configuration . Ici, en première ligne, nous avons initialisé la communication I 2 C. Et dans la deuxième ligne, nous avons initialisé l'écran LCD sur lequel nous imprimons les valeurs analogiques. En savoir plus sur l'interfaçage LCD 16x2 avec Arduino ici.
void setup () { Wire.begin (); lcd.begin (16,2); }
En fonction de boucle , la première ligne est de commencer la transmission, c'est à dire qu'elle démarre le PCF8591. La deuxième ligne indique au CI d'effectuer la mesure analogique sur la première broche d'entrée analogique. La troisième ligne termine la transmission et la quatrième ligne obtient les données mesurées à partir de la broche analogique.
boucle vide () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Dans la partie suivante, placez la valeur lue à partir de la broche analogique dans la variable Valeur définie précédemment. Et dans les lignes suivantes, imprimez cette valeur sur l'écran LCD.
Valeur = Wire.read (); lcd.print ("Valeur ADC ="); lcd.print (valeur); retard (500); lcd.clear ();}
Enfin, téléchargez le code dans Arduino et exécutez-le. Les valeurs analogiques commenceront à s'afficher sur l'écran LCD. Ajustez le bouton du potentiomètre, et vous verrez le changement progressif des valeurs.