MicroPython-Hack-TMP36
Ce que nous faisons
Quel sera le prochain phénomène que nous allons mesurer avec notre PyBoard ?
La température. Pour y arriver, nous allons utiliser un circuit intégré plutôt compliqué caché sous un conditionnement identique au transistor P2N2222AG.
Il a trois broches et il est facile à utiliser.
- la masse,
- le signal,
- +5 volts
Crédit: AdaFruit Industries www.adafruit.com
Le senseur produit 10 millivolts par degré centigrade sur la broche signal (Il y a une compensation/offset de 500mV pour permettre la mesure de températures inférieures à 0°C).
Par ex : 25° C = 750 mV, 0° C = 500mV.
Pour convertir la valeur digitale en degrés, nous allons utiliser quelque-unes des capacités mathématiques de notre PyBoard.
Ensuite, pour voir la température nous allons afficher le résultat à l'aide de la fonction print(), vous aurez donc besoin d'une connexion terminal ou REPL comme appris dans le tutoriel "L'invite REPL".
Voir l'invite REPL
Une petite note complémentaire, ce montage affiche l'information de température via connexion série disponible sur le port USB de la PyBoard.
Il sera nécessaire de maîtriser L'invite REPL pour voir le résultat de vos mesures de températures.
Comment mesurer la température
Comment calculer la température Il faut donc convertir la tension analogique en degré. Comme le TMP36 permet de mesurer des température négatives, le 0 degré Celsius est placé à une offset de 500 milliVolts. Ainsi, toute mesure inférieur à 500 mv correspondra à une température négative.
Crédit: AdaFruit Industries www.adafruit.com
La formule est la suivante pour le TMP36:
Temp en °C = ( Tension_de_sortie_en_milliVolts - 500) / 10
Donc, si la tension de sortie est de 1 Volts, la température correspondante est de
(1000 - 500)/10
Soit 50 degrés Celcius.
si vous utilisez un LM35 ou similaire, la température se calcule comme suit (utiliser la ligne 'a' sur le graphique):
Temp en °C = ( Tension_de_sortie_en_millivolts) / 10
Le montage
Le matériel nécessaire
TMP36 - senseur de température
x1
Capacité 10nF (ou 0.01µF)
x1
Tous ces éléments sont disponibles sur shop.mchobby.be.
Schéma
Capa de 10nF
Sur le schéma ci-dessus, vous pouvez constater que nous utilisons une capacité de 10 nF (0.01µF).
Cette dernière permet de déparasiter le signal produit par le senseur TMP36.
En effet, le signal peut contenir des parasites (donc des micro-surtension) qui 'altère' forcement la tension lue par le convertisseur analogique/digital du PyBoard.
Ces parasites proviennent souvent de la source d'alimentation. Par exemple, les port USB des ordinateurs sont connu pour être une grande source de parasite (de "bruit") sur l'alimentation. Si vous avez branché votre PyBoard sur le port USB de votre ordinateur alors il est fortement recommandé d'utiliser cette capacité.
Montage
Made with - réalisé avec - Fritzing fritzing.org
Le code
Le programme suivant lit la valeur retournée par le convertisseur analogique/digital (entre 0 et 4096).
Cette valeur est transformée en tension.
Puis la tension convertie en température.
tmp36 = pyb.ADC( 'X19' ) lecture = tmp36.read() tension = (lecture * 3.3) / 4095 temperature = (tension - 0.5) * 100 print( 'température = %s °C' % temperature )
Cela ne fonctionne pas?
Voici 3 choses à essayer.
Rien ne semble se passer?
Ce programme ne présente pas de signe extérieur de son fonctionnement. Pour voir les résultats, vous devez utiliser le mode REPL de votre PyBoard (voir instructions ci-dessus)
L'affichage est incohérent
Les données mesurées varient fortement... et ne sont pas stable!
C'est un cas typique de parasitage, il faut alors placer une capacité de 10nF.
Utilisez aussi des fils aussi court que possible et torsadé dès que cela est possible.
La température ne change pas
Essayez de pincer le senseur entre vos doigts pour le chauffer un peu ou essayez de le refroidir avec un sac à glaçons.
Faire encore mieux
Afficher la tension
L'affichage de la température ne concerne bien entendu que le senseur de température.
Dans le cadre d'autres projets, vous pourriez être intéressé de connaître la tension sur la broche analogique.
Voici une petite version du programme qui permet d'afficher la tension active sur une broche analogique
# déclare la broche analogique tmp36 = pyb.ADC( 'X19' ) # Lit la broche analogique adc_pin et retourne la tension actuelle def get_voltage( adc_obj ): valeur = adc_obj.read() return (valeur * 3.3) / 4095 print( 'Tension sur %s = %s volts' % (tmp36, get_voltage(tmp36) ) )
Dans cette version du programme:
- Nous créons un objet ADC sur la broche X19 que nous stockons dans la variable tmp36
- Nous avons déclaré une fonction get_voltage() qui récupère la valeur sur un objet ADC passé en référence.
- Le tout est affiché avec un instruction print() en utilisant le tuple de valeurs (tmp36, get_voltage(tmp36) . Le premier paramètre est l'objet tmp36 et le deuxième le résultat de la fonction get_voltage().
Note: Le tuple en python est une structure super pratique et très simple à employer. L'un de vos meilleurs amis dans le monde Python.
Voici un exemple de résultat obtenu avec ce code:
Tension sur <ADC on X19 channel=10> = 0.7164102 volts
Afficher la température en degré Fahrenheit
Encore une fois, cela ne requière qu'une simple modification mathématique.
Nous utilisons la formule suivante pour passer de degrés C ---> degrés Fh :
( F = C * 1.8) + 32 )
Ajouter la ligne suivante...
temperatureF= (temperature*1.8) + 32
Notre petit programme est donc légèrement adapté et ressemble maintenant à ceci:
tmp36 = pyb.ADC( 'X19' ) lecture = tmp36.read() tension = (lecture * 3.3) / 4095 # temperature Celsius temperature = (tension - 0.5) * 100 # Celsius vers Farhenheit temperatureF= (temperature*1.8) + 32 print( 'température = %s °F' % temperatureF )
Plus, plus et encore plus
Savez-vous qu'il est possible de relever la tension directement sur à l'aide d'un multimètre?
Nous avons un autre tutoriel sur le TMP36 (pour Arduino) dans lequel nous avons décris le test d'un TMP36 à l'aide d'un multimètre... cela se passe ici.
Crédit: AdaFruit Industries www.adafruit.com
Internet
Composé par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.