- ADC0804 et Raspberry Pi:
- Composants requis:
- Explication du circuit:
- Explication de la programmation:
- Travail:
Raspberry Pi est une carte basée sur un processeur d'architecture ARM conçue pour les ingénieurs en électronique et les amateurs. Le PI est l'une des plates-formes de développement de projet les plus fiables actuellement. Avec une vitesse de processeur plus élevée et 1 Go de RAM, le PI peut être utilisé pour de nombreux projets de haut niveau tels que le traitement d'image et l'Internet des objets.
Pour réaliser l'un des projets de haut niveau, il faut comprendre les fonctions de base de PI. Nous couvrirons toutes les fonctionnalités de base de Raspberry Pi dans ces tutoriels. Dans chaque tutoriel, nous aborderons l'une des fonctions de PI. À la fin de cette série de tutoriels sur Raspberry Pi, vous serez en mesure de réaliser des projets de haut niveau par vous-même. Suivez les didacticiels ci-dessous:
- Premiers pas avec Raspberry Pi
- Configuration du Raspberry Pi
- LED clignotante
- Interfaçage des boutons Raspberry Pi
- Génération PWM Raspberry Pi
- Contrôle du moteur à courant continu à l'aide de Raspberry Pi
- Contrôle du moteur pas à pas avec Raspberry Pi
- Registre à décalage d'interfaçage avec Raspberry Pi
Dans ce tutoriel, nous allons interfacer une puce ADC (Analog to Digital Conversion) avec Raspberry Pi. Nous connaissons tous les paramètres de l'analogique, c'est-à-dire qu'ils varient continuellement dans le temps. Disons que pour une température de la pièce par exemple, la température de la pièce varie en permanence avec le temps. Cette température est fournie avec des nombres décimaux. Mais dans le monde numérique, il n'y a pas de nombres décimaux, nous devons donc convertir la valeur analogique en valeur numérique. Ce processus de conversion est effectué par la technique ADC. En savoir plus sur ADC ici: Introduction à ADC0804
ADC0804 et Raspberry Pi:
Les contrôleurs normaux ont des canaux ADC, mais pour PI, aucun canal ADC n'est fourni en interne. Donc, si nous voulons interfacer des capteurs analogiques, nous avons besoin d'une unité de conversion ADC. Donc, à cette fin, nous allons l' interface ADC0804 avec Raspberry Pi.
ADC0804 est une puce conçue pour convertir un signal analogique en données numériques 8 bits. Cette puce est l'une des séries les plus populaires d'ADC. C'est une unité de conversion 8 bits, nous avons donc des valeurs ou 0 à 255 valeurs. Avec une tension de mesure de 5V maximum, nous aurons un changement tous les 19,5mV. Voici le brochage de l'ADC0804:
Maintenant, une autre chose importante ici est que l' ADC0804 fonctionne à 5V et fournit donc une sortie en signal logique 5V. En sortie à 8 broches (représentant 8 bits), chaque broche fournit une sortie + 5V pour représenter la logique «1». Le problème est donc que la logique PI est de + 3.3v, vous ne pouvez donc pas donner de logique + 5V à la broche GPIO + 3.3V de PI. Si vous donnez + 5V à une broche GPIO de PI, la carte est endommagée.
Donc, pour abaisser le niveau logique à partir de + 5V, nous utiliserons un circuit diviseur de tension. Nous avons déjà discuté du circuit diviseur de tension pour plus de précisions. Ce que nous allons faire, c'est que nous utilisons deux résistances pour diviser la logique + 5V en logique 2 * 2.5V. Donc, après la division, nous donnerons une logique + 2.5v à PI. Ainsi, chaque fois que la logique «1» est présentée par ADC0804, nous verrons + 2,5 V sur la broche PI GPIO, au lieu de + 5 V.
Apprenez-en plus sur les broches GPIO de Raspberry Pi ici et parcourez nos précédents tutoriels.
Composants requis:
Ici, nous utilisons Raspberry Pi 2 Model B avec Raspbian Jessie OS. Toutes les exigences matérielles et logicielles de base sont décrites précédemment, vous pouvez les rechercher dans l'introduction de Raspberry Pi, à part ce dont nous avons besoin:
- Broches de connexion
- Résistance 220Ω ou 1KΩ (17 pièces)
- Pot 10K
- Condensateur 0,1µF (2 pièces)
- ADC0804 IC
- Planche à pain
Explication du circuit:
Il fonctionne sur une tension d'alimentation de + 5V et peut mesurer une plage de tension variable dans la plage 0-5V.
Les connexions d'interfaçage ADC0804 avec Raspberry PI sont indiquées dans le schéma ci-dessus.
L'ADC a toujours beaucoup de bruit, ce bruit peut grandement affecter les performances, nous utilisons donc un condensateur de 0,1 uF pour la filtration du bruit. Sans cela, il y aura beaucoup de fluctuations à la sortie.
La puce fonctionne sur l'horloge de l'oscillateur RC (Resistor-Capacitor). Comme le montre le schéma de circuit, C2 et R20 forment une horloge. La chose importante à retenir ici est que le condensateur C2 peut être changé pour une valeur inférieure pour un taux plus élevé de conversion ADC. Cependant, avec une vitesse plus élevée, la précision diminuera. Donc, si l'application nécessite une précision plus élevée, choisissez le condensateur avec une valeur plus élevée et pour une vitesse plus élevée, choisissez le condensateur avec une valeur inférieure.
Explication de la programmation:
Une fois que tout est connecté selon le schéma de circuit, nous pouvons allumer le PI pour écrire le programme dans PYHTON.
Nous parlerons de quelques commandes que nous allons utiliser dans le programme PYHTON, Nous allons importer le fichier GPIO de la bibliothèque, la fonction ci-dessous nous permet de programmer les broches GPIO de PI. Nous renommons également «GPIO» en «IO», donc dans le programme chaque fois que nous voulons faire référence aux broches GPIO, nous utiliserons le mot «IO».
importer RPi.GPIO comme IO
Parfois, lorsque les broches GPIO, que nous essayons d'utiliser, peuvent remplir d'autres fonctions. Dans ce cas, nous recevrons des avertissements lors de l'exécution du programme. La commande ci-dessous indique au PI d'ignorer les avertissements et de poursuivre le programme.
IO.setwarnings (Faux)
On peut référencer les broches GPIO de PI, soit par numéro de broche à bord, soit par leur numéro de fonction. Comme «PIN 29» sur la carte est «GPIO5». Nous disons donc ici que nous allons représenter la broche ici par «29» ou «5».
IO.setmode (IO.BCM)
Nous définissons 8 broches comme broches d'entrée. Nous détecterons 8 bits de données ADC par ces broches.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Si la condition entre accolades est vraie, les instructions à l'intérieur de la boucle seront exécutées une fois. Donc, si la broche GPIO 19 devient haute, les instructions à l'intérieur de la boucle IF seront exécutées une fois. Si la broche GPIO 19 ne monte pas à l'état haut, les instructions à l'intérieur de la boucle IF ne seront pas exécutées.
if (IO.input (19) == True):
La commande ci-dessous est utilisée comme boucle permanente, avec cette commande les instructions à l'intérieur de cette boucle seront exécutées en continu.
Alors que 1:
Une explication plus détaillée du programme est donnée dans la section Code ci-dessous.
Travail:
Après avoir écrit le programme et l'avoir exécuté, vous verrez '0' sur l'écran. «0» signifie 0 volts à l'entrée.
Si nous ajustons le pot 10K connecté à la puce, nous verrons le changement des valeurs à l'écran. Les valeurs à l'écran défilent continuellement, ce sont les valeurs numériques lues par PI.
Disons que si nous obtenons le pot au milieu, nous avons + 2,5 V à l'entrée ADC0804. Nous voyons donc 128 sur l'écran comme indiqué ci-dessous.
Pour une valeur analogique + 5V, nous aurons 255.
Ainsi, en faisant varier le potentiomètre, nous faisons varier la tension de 0 à + 5V à l'entrée ADC0804. Avec cet PI, lisez les valeurs de 0 à 255. Les valeurs sont imprimées à l'écran.
Nous avons donc interfacé ADC0804 avec Raspberry Pi.