- ADC0804 et Raspberry Pi:
- Capteur de température LM35:
- Composants requis:
- Circuit et explication de fonctionnement:
- Explication de la programmation:
Nous avons principalement couvert tous les composants de base s'interfaçant avec Raspberry Pi dans notre série de tutoriels Raspberry Pi. Nous avons couvert tous les tutoriels de manière simple et détaillée, afin que quiconque, qu'il ait travaillé avec Raspberry Pi ou non, puisse facilement apprendre de cette série. Et après avoir parcouru tous les didacticiels, vous pourrez créer des projets de haut niveau en utilisant Raspberry Pi.
Nous concevons donc ici la première application basée sur les tutoriels précédents. La première application de base est une température de salle de lecture de Raspberry Pi. Et vous pouvez surveiller les lectures sur ordinateur.
Comme indiqué dans les tutoriels précédents, il n'y a pas de canaux ADC fournis en interne dans Raspberry Pi. Donc, si nous voulons interfacer des capteurs analogiques, nous avons besoin d'une unité de conversion ADC. Et dans l'un de nos tutoriels, nous avons interfacé la puce ADC0804 avec Raspberry Pi pour lire une valeur analogique. Alors parcourez-le avant de construire ce thermomètre à température ambiante.
ADC0804 et 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. La résolution de cette puce change en fonction de la tension de référence que nous choisissons, nous en reparlerons plus tard. 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.
Capteur de température LM35:
Maintenant, pour lire la température de la pièce, nous avons besoin d'un capteur. Ici, nous allons utiliser le capteur de température LM35. La température est généralement mesurée en «centigrades» ou «Fahrenheit». Le capteur «LM35» fournit une sortie en degrés centigrades.
Comme le montre la figure, LM35 est un dispositif de type transistor à trois broches. Les broches sont numérotées comme suit:
PIN1 = Vcc - Alimentation (connecté à + 5V)
PIN2 = Signal ou sortie (connecté à la puce ADC)
PIN3 = Terre (connecté à la terre)
Ce capteur fournit une tension variable en sortie, en fonction de la température. Pour chaque augmentation de température de +1 centigrade, il y aura une tension plus élevée de + 10 mV à la broche de sortie. Donc, si la température est de 0 ° C, la sortie du capteur sera de 0 V, si la température est de 10 ° C, la sortie du capteur sera de + 100 mV, si la température est de 25 ° C, la sortie du capteur sera de + 250 mV.
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
- 1KΩrésistance (17 pièces)
- Pot 10K
- Condensateur 0,1µF
- Condensateur 100µF
- Condensateur 1000µF
- ADC0804 IC
- Capteur de température LM35
- Planche à pain
Circuit et explication de fonctionnement:
Les connexions qui sont effectuées pour connecter Raspberry à ADC0804 et LM35, sont indiquées dans le schéma de circuit ci-dessous.
La sortie LM35 a beaucoup de fluctuations de tension; un condensateur de 100 uF est donc utilisé pour lisser la sortie, comme indiqué sur la figure.
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é à 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.
Comme indiqué précédemment, le LM35 fournit + 10mV pour chaque centigrade. La température maximale qui peut être mesurée par le LM35 est de 150 ° C. Nous aurons donc un maximum de 1,5V à la borne de sortie LM35. Mais la tension de référence par défaut de l'ADC0804 est + 5V. Donc, si nous utilisons cette valeur de référence, la résolution de la sortie sera faible car nous utiliserions un maximum de (5 / 1,5) 34% de la plage de sortie numérique.
Heureusement, l'ADC0804 a une broche Vref réglable (PIN9) comme le montre son diagramme de broches ci-dessus. Nous allons donc régler le Vref de la puce à + 2V. Pour régler Vref + 2V, nous devons fournir une tension de + 1V (VREF / 2) à PIN9. Ici, nous utilisons un potentiomètre 10K pour ajuster la tension de PIN9 à + 1V. Utilisez le voltmètre pour obtenir la tension précise.
Nous avons précédemment utilisé le capteur de température LM35 pour lire la température ambiante avec Arduino et avec le microcontrôleur AVR. Vérifiez également la mesure de l'humidité et de la température à l'aide d'Arduino
Explication de la programmation:
Une fois que tout est connecté selon le schéma de circuit, nous pouvons activer 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 supplémentaire du code est donnée dans la section Code ci-dessous.
Après avoir écrit le programme, il est temps de l'exécuter. Avant d'exécuter le programme, parlons de ce qui se passe dans le circuit sous forme de résumé. Le premier capteur LM35 détecte la température ambiante et fournit une tension analogique à sa sortie. Cette tension variable représente la température linéairement avec + 10mV par ºC. Ce signal est envoyé à la puce ADC0804, cette puce convertit la valeur analogique en valeur numérique avec 255/200 = 1,275 compte par 10 mv ou 1,275 compte pour 1 degré. Ce décompte est pris en compte par le PI GPIO. Le programme convertit le comptage en valeur de température et l'affiche à l'écran. La température typique lue par PI est indiquée ci-dessous, D'où ce moniteur de température Raspberry Pi.