- Composants requis
- Module ADC / DAC PCF8591
- Broches I2C dans Raspberry Pi
- Interfaçage du module ADC / DAC PCF8591 avec Raspberry Pi
- Programme Python pour la conversion analogique-numérique (ADC)
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 apprendre à interfacer le module ADC / DAC PCF8591 avec Raspberry Pi.
Composants requis
- Tarte aux framboises
- Module ADC PCF8591
- Pot 100K
- Câbles de démarrage
Il est supposé que vous avez Raspberry Pi avec le dernier système d'exploitation Raspbian installé et que vous savez comment SSH dans le Pi à l'aide d'un logiciel de terminal comme putty. Si vous êtes nouveau sur Raspberry Pi, suivez cet article pour démarrer avec Raspberry Pi. Pourtant, si vous rencontrez un problème, il existe des tonnes de tutoriels Raspberry Pi qui peuvent vous aider.
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ésistanceet J6 est connecté pour sélectionner le circuit d'accès à tension réglable. 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.
Broches I2C dans Raspberry Pi
Pour utiliser PCF8591 avec Raspberry Pi, la première chose à faire est de connaître les broches du port I2C du Raspberry Pi et de configurer le port I2C dans le Raspberry pi.
Vous trouverez ci-dessous le diagramme des broches du Raspberry Pi 3 modèle B +, et les broches I2C GPIO2 (SDA) et GPIO3 (SCL) sont utilisées dans ce didacticiel.
Configurer I2C dans Raspberry Pi
Par défaut, I2C est désactivé dans Raspberry Pi. Donc d'abord, il doit être activé. Pour activer l'I2C dans Raspberry Pi
1. Accédez au terminal et tapez sudo raspi-config.
2. Maintenant, l'outil de configuration du logiciel Raspberry Pi apparaît.
3. Sélectionnez les options d'interfaçage, puis activez l'I2C.
4. Après avoir activé le I2C, redémarrez le Pi.
Analyse de l'adresse I2C du PCF8591 à l'aide de Raspberry Pi
Maintenant, pour commencer la communication avec le PCF8591 IC, le Raspberry Pi doit connaître son adresse I2C. Pour trouver l'adresse, connectez d'abord les broches SDA et SCL du PCF8591 aux broches SDA et SCL de Raspberry Pi. Connectez également les broches + 5V et GND.
Ouvrez maintenant le terminal et tapez la commande ci-dessous pour connaître l'adresse de l'appareil I2C connecté, sudo i2cdetect –y 1 ou sudo i2cdetect –y 0
Après avoir trouvé l'adresse I2C, il est maintenant temps de créer le circuit et d'installer les bibliothèques nécessaires pour utiliser PCF8591 avec Raspberry Pi.
Interfaçage du module ADC / DAC PCF8591 avec Raspberry Pi
Le schéma de circuit pour l' interfaçage de PCF8591 avec Raspberry Pi est simple. Dans cet exemple d'interfaçage, nous lirons les valeurs analogiques de l'une des broches analogiques et les afficherons sur le terminal Raspberry Pi. Nous pouvons changer les valeurs en utilisant un pot de 100K.
Connectez le VCC et GND à GPIO2 et GPIO de Raspberry Pi. Ensuite, connectez le SDA et le SCL aux GPIO3 et GPIO5 respectivement. Enfin, connectez un pot de 100K avec AIN0. Vous pouvez également ajouter un écran LCD 16x2 pour afficher les valeurs ADC au lieu de l'afficher sur le terminal. En savoir plus sur l'interfaçage d'un écran LCD 16x2 avec Raspberry Pi ici.
Programme Python pour la conversion analogique-numérique (ADC)
Le programme complet et la vidéo de travail sont donnés à la fin de ce tutoriel.
Tout d'abord, importez la bibliothèque smbus pour la communication du bus I 2 C et la bibliothèque de temps pour donner un temps de repos entre l'impression de la valeur.
d'importation temps d'importation
Définissez maintenant quelques variables. La première variable contient l'adresse du bus I 2 C et la seconde variable contient l'adresse de la première broche d'entrée analogique.
adresse = 0x48 A0 = 0x40
Ensuite, nous avons créé un objet de la fonction SMBus (1) de la bibliothèque smbus
bus = smbus.SMBus (1)
Or, alors que la première ligne indique au circuit intégré pour effectuer la mesure analogique à la première broche d'entrée analogique. La deuxième ligne stocke l'adresse lue sur la broche analogique dans une valeur variable. Imprimez enfin la valeur.
while True: bus.write_byte (adresse, A0) valeur = bus.read_byte (adresse) print (valeur) time.sleep (0,1)
Maintenant, enregistrez enfin le code python dans un fichier avec.py entension et exécutez le code dans le terminal raspberry Pi en utilisant la commande ci-dessous "
python filename.py
Avant d'exécuter le code, assurez-vous que vous avez activé la communication I 2 C et que toutes les broches sont connectées comme indiqué sur le schéma, sinon il affichera des erreurs. Les valeurs analogiques doivent commencer à apparaître sur le terminal comme ci-dessous. Réglez le bouton du potentiomètre et vous verrez le changement progressif des valeurs. En savoir plus sur l'exécution du programme dans
Le code Python complet et la vidéo sont donnés ci-dessous.