<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.mchobby.be/index.php?action=history&amp;feed=atom&amp;title=Mod%C3%A8le%3AMicroPython-Hack-TMP36-core</id>
	<title>Modèle:MicroPython-Hack-TMP36-core - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mchobby.be/index.php?action=history&amp;feed=atom&amp;title=Mod%C3%A8le%3AMicroPython-Hack-TMP36-core"/>
	<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:MicroPython-Hack-TMP36-core&amp;action=history"/>
	<updated>2026-10-12T10:46:16Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:MicroPython-Hack-TMP36-core&amp;diff=17890&amp;oldid=prev</id>
		<title>Admin : Page créée avec « == Ce que nous faisons == {{bloc-etroit|text=Quel sera le prochain phénomène que nous allons mesurer avec notre PyBoard ?   La température. Pour y arriver, nous allons... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:MicroPython-Hack-TMP36-core&amp;diff=17890&amp;oldid=prev"/>
		<updated>2016-02-20T17:11:56Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « == Ce que nous faisons == {{bloc-etroit|text=Quel sera le prochain phénomène que nous allons mesurer avec notre PyBoard ?   La température. Pour y arriver, nous allons... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Ce que nous faisons ==&lt;br /&gt;
{{bloc-etroit|text=Quel sera le prochain phénomène que nous allons mesurer avec notre PyBoard ? &lt;br /&gt;
&lt;br /&gt;
La température. Pour y arriver, nous allons utiliser un circuit intégré plutôt compliqué caché sous un conditionnement identique au transistor P2N2222AG. &lt;br /&gt;
&lt;br /&gt;
Il a trois broches et il est facile à utiliser.&lt;br /&gt;
* la masse, &lt;br /&gt;
* le signal, &lt;br /&gt;
* +5 volts &lt;br /&gt;
&lt;br /&gt;
{{ADFImage|TMP36-pinout.jpg|250px}}&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Par ex : 25° C = 750 mV, 0° C = 500mV.&lt;br /&gt;
&lt;br /&gt;
Pour convertir la valeur digitale en degrés, nous allons utiliser quelque-unes des capacités mathématiques de notre PyBoard.&lt;br /&gt;
&lt;br /&gt;
Ensuite, pour voir la température nous allons afficher le résultat à l'aide de la fonction {{fname|print()}}, vous aurez donc besoin d'une connexion terminal ou REPL comme appris dans le tutoriel &amp;quot;[[MicroPython-Hack-REPL|L'invite REPL]]&amp;quot;.}}&lt;br /&gt;
&lt;br /&gt;
=== Voir l'invite REPL ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Il sera nécessaire de maîtriser [[MicroPython-Hack-REPL|L'invite REPL]] pour voir le résultat de vos mesures de températures. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:MicroPython-Hack-REPL-Python-exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Comment mesurer la température ===&lt;br /&gt;
Comment calculer la température&lt;br /&gt;
Il faut donc convertir la tension analogique en degré.&lt;br /&gt;
Comme le TMP36 permet de mesurer des température négatives, le 0 degré Celsius est placé à une offset de 500 milliVolts.&lt;br /&gt;
Ainsi, toute mesure inférieur à 500 mv correspondra à une température négative.&lt;br /&gt;
&lt;br /&gt;
{{ADFImage|TMP36-Graph.png}}&lt;br /&gt;
 &lt;br /&gt;
La formule est la suivante pour le TMP36:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Temp en °C = ( Tension_de_sortie_en_milliVolts - 500) / 10&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donc, si la tension de sortie est de 1 Volts, la température correspondante est de&amp;lt;br /&amp;gt; (1000 - 500)/10&lt;br /&gt;
&lt;br /&gt;
Soit 50 degrés Celcius.&lt;br /&gt;
&lt;br /&gt;
si vous utilisez un LM35 ou similaire, la température se calcule comme suit (utiliser la ligne 'a' sur le graphique):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Temp en °C = ( Tension_de_sortie_en_millivolts) / 10&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Le montage ==&lt;br /&gt;
=== Le matériel nécessaire ===&lt;br /&gt;
{{ARDX-composant-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ARDX-composant&lt;br /&gt;
  |label=Fils&lt;br /&gt;
  |label2=&lt;br /&gt;
  |img=PYBX-FILS.png&lt;br /&gt;
  |pl=34&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ARDX-composant&lt;br /&gt;
  |label=TMP36 - senseur de température&lt;br /&gt;
  |label2=x1&lt;br /&gt;
  |img=PYBX-TMP36.png&lt;br /&gt;
  |pl=43&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ARDX-composant&lt;br /&gt;
  |label=Capacité 10nF (ou 0.01µF)&lt;br /&gt;
  |label2=x1&lt;br /&gt;
  |img=ARDX-10nF.png&lt;br /&gt;
  |pl=456&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ARDX-composant-end}}&lt;br /&gt;
Tous ces éléments sont disponibles sur [http://shop.mchobby.be shop.mchobby.be].&lt;br /&gt;
&lt;br /&gt;
=== Schéma ===&lt;br /&gt;
[[Fichier:MicroPython-Hack-TMP36-schema.png]]&lt;br /&gt;
&lt;br /&gt;
==== Capa de 10nF ====&lt;br /&gt;
Sur le schéma ci-dessus, vous pouvez constater que nous utilisons {{pl|456|une capacité de 10 nF}} (0.01µF).&lt;br /&gt;
&lt;br /&gt;
Cette dernière permet de déparasiter le signal produit par le senseur TMP36.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;bruit&amp;quot;) 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é.&lt;br /&gt;
&lt;br /&gt;
=== Montage ===&lt;br /&gt;
{{FImage|MicroPython-Hack-TMP36-montage.jpg|800px}}&lt;br /&gt;
&lt;br /&gt;
== Le code ==&lt;br /&gt;
Le programme suivant lit la valeur retournée par le convertisseur analogique/digital (entre 0 et 4096).&lt;br /&gt;
&lt;br /&gt;
Cette valeur est transformée en tension.&lt;br /&gt;
&lt;br /&gt;
Puis la tension convertie en température.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tmp36 = pyb.ADC( 'X19' )&lt;br /&gt;
lecture = tmp36.read()&lt;br /&gt;
tension = (lecture * 3.3) / 4095&lt;br /&gt;
temperature = (tension - 0.5) * 100&lt;br /&gt;
print( 'température = %s °C' % temperature )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cela ne fonctionne pas? ==&lt;br /&gt;
Voici 3 choses à essayer.&lt;br /&gt;
&lt;br /&gt;
=== Rien ne semble se passer? ===&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
=== L'affichage est incohérent ===&lt;br /&gt;
Les données mesurées varient fortement... et ne sont pas stable!&lt;br /&gt;
&lt;br /&gt;
C'est un cas typique de parasitage, il faut alors placer une capacité de 10nF.&lt;br /&gt;
&lt;br /&gt;
Utilisez aussi des fils aussi court que possible et torsadé dès que cela est possible.&lt;br /&gt;
&lt;br /&gt;
=== La température ne change pas ===&lt;br /&gt;
Essayez de pincer le senseur entre vos doigts pour le chauffer un peu ou essayez de le refroidir avec un sac à glaçons.&lt;br /&gt;
&lt;br /&gt;
== Faire encore mieux ==&lt;br /&gt;
=== Afficher la tension ===&lt;br /&gt;
L'affichage de la température ne concerne bien entendu que le senseur de température.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre d'autres projets, vous pourriez être intéressé de connaître la tension sur la broche analogique.&lt;br /&gt;
&lt;br /&gt;
Voici une petite version du programme qui permet d'afficher la tension active sur une broche analogique&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# déclare la broche analogique&lt;br /&gt;
tmp36 = pyb.ADC( 'X19' )&lt;br /&gt;
&lt;br /&gt;
# Lit la broche analogique adc_pin et retourne la tension actuelle&lt;br /&gt;
def get_voltage( adc_obj ):&lt;br /&gt;
    valeur = adc_obj.read()&lt;br /&gt;
    return (valeur * 3.3) / 4095&lt;br /&gt;
    &lt;br /&gt;
print( 'Tension sur %s = %s volts' % (tmp36, get_voltage(tmp36) ) )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans cette version du programme:&lt;br /&gt;
* Nous créons un objet ADC sur la broche X19 que nous stockons dans la variable {{fname|tmp36}}&lt;br /&gt;
* Nous avons déclaré une fonction {{fname|get_voltage()}} qui récupère la valeur sur un objet ADC passé en référence.&lt;br /&gt;
* Le tout est affiché avec un instruction {{fname|print()}} en utilisant le {{underline|tuple}} de valeurs {{fname| (tmp36, get_voltage(tmp36) }}. Le premier paramètre est l'objet tmp36 et le deuxième le résultat de la fonction {{fname|get_voltage()}}. &lt;br /&gt;
&lt;br /&gt;
Note: Le {{underline|tuple}} en python est une ''structure'' super pratique et très simple à employer. L'un de vos meilleurs amis dans le monde Python.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de résultat obtenu avec ce code:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Tension sur &amp;lt;ADC on X19 channel=10&amp;gt; = 0.7164102 volts&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Afficher la température en degré Fahrenheit ===&lt;br /&gt;
Encore une fois, cela ne requière qu'une simple modification mathématique.&lt;br /&gt;
&lt;br /&gt;
Nous utilisons la formule suivante pour passer de degrés C ---&amp;gt; degrés Fh :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;( F = C * 1.8) + 32 )&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter la ligne suivante...&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;temperatureF= (temperature*1.8) + 32&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notre petit programme est donc légèrement adapté et ressemble maintenant à ceci:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;tmp36 = pyb.ADC( 'X19' )&lt;br /&gt;
lecture = tmp36.read()&lt;br /&gt;
tension = (lecture * 3.3) / 4095&lt;br /&gt;
# temperature Celsius&lt;br /&gt;
temperature = (tension - 0.5) * 100&lt;br /&gt;
# Celsius vers Farhenheit&lt;br /&gt;
temperatureF= (temperature*1.8) + 32&lt;br /&gt;
print( 'température = %s °F' % temperatureF )&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Plus, plus et encore plus ==&lt;br /&gt;
Savez-vous qu'il est possible de relever la tension directement sur à l'aide d'un multimètre?&lt;br /&gt;
&lt;br /&gt;
[[Senseur_Température|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... [[Senseur_Temp%C3%A9rature#Tester_le_senseur|cela se passe ici]].&lt;br /&gt;
&lt;br /&gt;
{{ADFImage|TMP36-test.jpg|450px}}&lt;br /&gt;
&lt;br /&gt;
== Internet ==&lt;br /&gt;
* [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html La fiche technique du TMP36]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>