{"id":778,"date":"2013-06-18T22:24:04","date_gmt":"2013-06-19T02:24:04","guid":{"rendered":"http:\/\/nagashur.com\/blog\/?p=778"},"modified":"2015-08-17T21:17:23","modified_gmt":"2015-08-18T01:17:23","slug":"lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino","status":"publish","type":"post","link":"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/","title":{"rendered":"Lecture d&#8217;une sonde de temp\u00e9rature TMP36 sur un Arduino"},"content":{"rendered":"<div style=\"width: 310px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" class=\" \" title=\"TMP36\" src=\"http:\/\/learn.adafruit.com\/system\/assets\/assets\/000\/000\/471\/medium800\/tmp36pinout.gif?1340740328\" alt=\"Broches du TMP36\" width=\"300\" height=\"283\" \/><p class=\"wp-caption-text\">Broches du TMP36<\/p><\/div>\n<p>Aujourd&#8217;hui, nous nous pencherons sur l&#8217;utilisation d&#8217;une sode de temp\u00e9rature TMP36 sur un Arduino.<\/p>\n<p>Pour le <a href=\"?p=770\">projet de station m\u00e9t\u00e9o &#8220;home made&#8221;<\/a>, il nous faut des capteurs. Nous allons commencer par un capteur tr\u00e8s simple, \u00e9conomique, et facile \u00e0 utiliser avec le TMP36.<\/p>\n<h2>Branchement<\/h2>\n<p>En fait, ce capteur est tellement simple, que ce billet risque d&#8217;\u00eatre tr\u00e8s court! L&#8217;image de gauche donne m\u00eame toutes les informations\u00a0n\u00e9cessaires.<br \/>\nPour lire ce capteur, il faut une entr\u00e9e analogique. Sur un Arduino, ce seront les broches A0 \u00e0 A5. Sur un Raspberry Pi, il faudra <a href=\"?p=584\">utiliser un MCP3008<\/a> ou un autre convertisseur analogique vers\u00a0num\u00e9rique.<\/p>\n<p>Ce capteur donne la temp\u00e9rature de -50 \u00e0 125\u00b0C, et est aliment\u00e9 via du courant continu entre 2.7V et 5.5V pour une consommation de 0.05mA. Ce n&#8217;est donc pas ce capteur qui videra les batteries de votre montage.<\/p>\n<p>Dans la forme que j&#8217;ai utilis\u00e9e, il y a un cot\u00e9 arrondi, et un cot\u00e9 plat. Si le cot\u00e9 plat est vers vous, alors la broche de gauche ira sur le +5V de votre\u00a0Arduino, ou sur le +3.3V du Raspberry Pi. La broche centrale ira sur votre entr\u00e9e analogique, par exemple le A0 du Arduino, ou une broche d&#8217;entr\u00e9e du MCP3008 connect\u00e9 \u00e0 votre Raspberry Pi. Enfin, la broche de droite sera connect\u00e9e \u00e0 la masse (0V) de votre circuit.<\/p>\n<p>Et voila! Le branchement est fini!<\/p>\n<p><!--more--><\/p>\n<h2>Programme<\/h2>\n<p>Quand au code, c&#8217;est tr\u00e8s simple : il suffit de lire la tension \u00a0retourn\u00e9e par la broche centrale, et de calculer la correspondance en \u00b0C. Voici un exemple de code Arduino permettant de lire la temp\u00e9rature, et de l&#8217;afficher dans le moniteur s\u00e9rie: <a href=\"https:\/\/github.com\/sarinkhan\/Milapli\/blob\/master\/TMP36_test.ino\">voici un premier programme lisant une valeur toutes les 100ms, puis affichant cette valeur<\/a>.<\/p>\n<p>Ici, nous afficherons la temp\u00e9rature toutes les 100ms. Si vous essayez cet exemple, vous vous rendrez compte qu&#8217;il y a des variations sur la valeur retourn\u00e9e. Et celles ci peuvent \u00eatre assez importantes. Pour r\u00e9soudre ce probl\u00e8me, <a href=\"https:\/\/github.com\/sarinkhan\/Milapli\/blob\/master\/TMP36_test2.ino\">nous allons lisser les valeurs en faisant la moyenne de plusieurs mesures (cliquez ici pour voir la source)<\/a>. Pour cela, il suffira d&#8217;utiliser la fonction\u00a0<em>readAvgTemp(int pin, int waitDelay, int count)<\/em> que je vous fournis dans le code. Le premier param\u00e8tre est la broche analogique sur laquelle vous avez branch\u00e9 le TMP36, le second est le d\u00e9lai entre deux mesures successives, et le troisi\u00e8me le nombre de mesures. Par exemple,\u00a0readAvgTemp(A0, 1,100) retournera la moyenne de 100 mesures faites \u00e0 1ms d&#8217;\u00e9cart. L&#8217;ex\u00e9cution prendra donc logiquement 100ms au total. Plus le nombre de mesures sera \u00e9lev\u00e9, plus la valeur sera stable. Bien sur, si vous prenez des mesures sur 5 minutes, vous ne saisirez pas les variations rapides de temp\u00e9rature. En g\u00e9n\u00e9ral les variations de temp\u00e9ratures prennent au moins quelques secondes pour faire effet.<\/p>\n<p>Tous les codes sources sont sur\u00a0<a href=\"https:\/\/github.com\/sarinkhan\/Milapli\/\">le GitHub du projet Milapli<\/a>.<\/p>\n<p>Si le Github est inaccessible, voici le premier code :<\/p>\n<blockquote><p>int tempPin=A0;<\/p>\n<p>float readTemp(int pin)<\/p>\n<p>{<\/p>\n<p>float bv=analogRead(pin);<\/p>\n<p>float mv=bv*5\/1024.0;<\/p>\n<p>float temperatureC = (mv &#8211; 0.5) * 100 ;<\/p>\n<p>return temperatureC;<\/p>\n<p>}<\/p>\n<p>float readAvgTemp(int pin, int waitDelay, int count)<\/p>\n<p>{<\/p>\n<p>int k=0;<\/p>\n<p>float sum=0.0;<\/p>\n<p>for(k=0;k&lt;count;k++)<\/p>\n<p>{<\/p>\n<p>sum=sum + readTemp(pin);<\/p>\n<p>delay(waitDelay);<\/p>\n<p>}<\/p>\n<p>float avg=sum\/(float)count;<\/p>\n<p>return avg;<\/p>\n<p>}<\/p>\n<p>void setup()<\/p>\n<p>{<\/p>\n<p>Serial.begin(9600);<\/p>\n<p>}<\/p>\n<p>void loop()<\/p>\n<p>{<\/p>\n<p>Serial.print(&#8220;Temperature : &#8220;);<\/p>\n<p>Serial.println(readTemp(tempPin));<\/p>\n<p>delay(100);<\/p>\n<p>}<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Si le cot\u00e9 plat est vers vous, alors la broche de gauche ira sur le +5V de votre Arduino, ou sur le +3.3V du Raspberry Pi. La broche centrale ira sur votre entr\u00e9e analogique, par exemple le A0 du Arduino, ou une broche d&#8217;entr\u00e9e du MCP3008 connect\u00e9 \u00e0 votre Raspberry Pi. Enfin, la broche de droite sera connect\u00e9e \u00e0 la masse (0V) de votre circuit. Tous les codes sources sont sur le GitHub du projet Milapli:https:\/\/github.com\/sarinkhan\/Milapli<\/p>\n","protected":false},"author":2,"featured_media":1118,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":""},"categories":[222,11,140],"tags":[181,182,174,108,96,156,104,106,223],"jetpack_featured_media_url":"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2013\/06\/TMP36.jpg","jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TMP36 sur un arduino : tutoriel d&#039;utilisation<\/title>\n<meta name=\"description\" content=\"TMP36 sur un arduino\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TMP36 sur un arduino : tutoriel d&#039;utilisation\" \/>\n<meta property=\"og:description\" content=\"TMP36 sur un arduino\" \/>\n<meta property=\"og:url\" content=\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/\" \/>\n<meta property=\"og:site_name\" content=\"Nagashur\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-19T02:24:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-08-18T01:17:23+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2013\/06\/TMP36.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@audreyrobinel\" \/>\n<meta name=\"twitter:site\" content=\"@audreyrobinel\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/nagashur.com\/blog\/#website\",\"url\":\"http:\/\/nagashur.com\/blog\/\",\"name\":\"Nagashur\",\"description\":\"raspi et arduino FTW :)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/nagashur.com\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/#primaryimage\",\"inLanguage\":\"fr-FR\",\"url\":\"http:\/\/nagashur.com\/blog\/wp-content\/uploads\/2013\/06\/TMP36.jpg\",\"width\":600,\"height\":200,\"caption\":\"sonde TMP36 (cr\\u00e9dits Adafruit)\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/#webpage\",\"url\":\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/\",\"name\":\"TMP36 sur un arduino : tutoriel d'utilisation\",\"isPartOf\":{\"@id\":\"http:\/\/nagashur.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/#primaryimage\"},\"datePublished\":\"2013-06-19T02:24:04+00:00\",\"dateModified\":\"2015-08-18T01:17:23+00:00\",\"author\":{\"@id\":\"http:\/\/nagashur.com\/blog\/#\/schema\/person\/11a329fa33df4e94444716624beb8186\"},\"description\":\"TMP36 sur un arduino\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lecture-dune-sonde-de-temperature-tmp36-sur-un-arduino\/\"]}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/nagashur.com\/blog\/#\/schema\/person\/11a329fa33df4e94444716624beb8186\",\"name\":\"sky99\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6yqc2-cy","jetpack-related-posts":[{"id":604,"url":"http:\/\/nagashur.com\/blog\/2013\/01\/15\/mesurer-la-luminosite-avec-une-photo-resistance\/","url_meta":{"origin":778,"position":0},"title":"Mesurer la luminosit\u00e9 avec une photo r\u00e9sistance","date":"15 janvier 2013","format":false,"excerpt":"Une photo-r\u00e9sistance est un composant dont la r\u00e9sistance varie en fonction de l'intensit\u00e9 lumineuse s'appliquant sur sa surface. On peut s'en servir pour d\u00e9tecter s'il fait jour ou nuit, mais aussi, en utilisant une paire de photo r\u00e9sistances, d\u00e9terminer la direction d'une source lumineuse. Ce composant pourra par exemple servir\u2026","rel":"","context":"Dans &quot;\u00e9lectronique&quot;","img":{"alt_text":"photor\u00e9sistances diverses","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/01\/800px-Photoresistors_-_three_sizes_-_mm_scale.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":584,"url":"http:\/\/nagashur.com\/blog\/2013\/01\/13\/lire-des-entrees-analogiques-sur-un-raspberry-avec-un-circuit-adc-le-mcp3008\/","url_meta":{"origin":778,"position":1},"title":"Lire des entr\u00e9es analogiques sur un Raspberry avec un circuit ADC : le MCP3008","date":"13 janvier 2013","format":false,"excerpt":"Nous connectons un circuit MCP3008 \u00e0 4 ports GPIO du Raspberry pi, et nous pouvons alors connecter divers capteurs \u00e0 l'une des 8 broches libres du MCP3008 pour lire les valeurs de divers capteurs analogiques. Un exemple de code python r\u00e9alisant cela est fourni, et les sch\u00e9mas de c\u00e2blage de\u2026","rel":"","context":"Dans &quot;capteurs&quot;","img":{"alt_text":"Convertisseur analogique-num\u00e9rique MCP3008","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/01\/MCP3008-01.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":770,"url":"http:\/\/nagashur.com\/blog\/2013\/06\/18\/creation-dune-station-meteo-maison\/","url_meta":{"origin":778,"position":2},"title":"Creation d'une station m\u00e9t\u00e9o \"maison\" : projet Milapli","date":"18 juin 2013","format":false,"excerpt":"Bonjour \u00e0 tous! Aujourd'hui, je vais vous pr\u00e9senter mon nouveau projet : la cr\u00e9ation d'une station m\u00e9t\u00e9o de toutes pi\u00e8ces. Je poss\u00e8de d\u00e9ja une station m\u00e9t\u00e9o du commerce, mais je suis sur qu'on peut faire\u00a0quelque chose\u00a0de proche pour moins cher. D'autre part, avec une station m\u00e9t\u00e9o faite soi m\u00eame, on\u2026","rel":"","context":"Dans &quot;bricolo&quot;","img":{"alt_text":"Une version de test de Milapli, une station m\u00e9t\u00e9o bas\u00e9e sur un","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/06\/milapli_lcd.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":805,"url":"http:\/\/nagashur.com\/blog\/2013\/06\/21\/mesurer-leclairement-lumineux-lux-avec-un-arduino\/","url_meta":{"origin":778,"position":3},"title":"Mesurer la luminosit\u00e9 (\u00e9clairement lumineux,lux) avec un Arduino","date":"21 juin 2013","format":false,"excerpt":"L'\u00e9clairement lumineux mesure la sensation d'\u00e9clairement qu'on per\u00e7oit dans une situation donn\u00e9e. Nous allons voir comment le mesurer avec le GA1A12S202 de chez Adafruit. On branche VCC au 5 ou 3.3V, out \u00e0 une entr\u00e9e analogique, et GND \u00e0 la masse. On mesure la tension de sortie, et on calcule\u2026","rel":"","context":"Dans &quot;Arduino&quot;","img":{"alt_text":"Capteur de lumi\u00e8re analogique GA1A12S202","src":"https:\/\/i2.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/06\/GA1A12S202-Log-scale-Analog-Light-Sensor-1384_LRG.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":870,"url":"http:\/\/nagashur.com\/blog\/2014\/03\/24\/controleur-daquarium-circuit-de-base\/","url_meta":{"origin":778,"position":4},"title":"Contr\u00f4leur d'aquarium : circuit de base","date":"24 mars 2014","format":false,"excerpt":"Aujourd'hui, je vais vous pr\u00e9senter rapidement le circuit de base de mon contr\u00f4leur d'aquarium. Pour l'instant, il y a juste un \u00e9cran LCD, une sonde waterproof immerg\u00e9e dans l'aquarium, et une sonde prenant la temp\u00e9rature de l'air. Cette base est amen\u00e9e \u00e0 \u00e9voluer, mais je poste d\u00e9j\u00e0 les sch\u00e9mas simples\u2026","rel":"","context":"Dans &quot;aquariophilie&quot;","img":{"alt_text":"Aquascape dans un aquarium de 50l","src":"https:\/\/i1.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2014\/03\/aquarium_rlieh292363_800px.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":784,"url":"http:\/\/nagashur.com\/blog\/2013\/06\/18\/lire-la-valeur-dune-sonde-de-temperature-et-d%e2%80%99hygrometrie-dht11\/","url_meta":{"origin":778,"position":5},"title":"Lire la valeur d'une sonde de temp\u00e9rature et d\u2019hygrom\u00e9trie DHT11\/DHT22\/AM2301","date":"18 juin 2013","format":false,"excerpt":"Les DHT11\/DHT22\/AM2302 sont des sondes de temp\u00e9rature et d'humidit\u00e9 dans l'air assez simples \u00e0 utiliser. Le DHT11 est moins pr\u00e9cis, et le DHT11\/AM2302 est plus cher.","rel":"","context":"Dans &quot;Arduino&quot;","img":{"alt_text":"montage DHT22 sur arduino avec LCD","src":"https:\/\/i0.wp.com\/nagashur.com\/blog\/wp-content\/uploads\/2013\/06\/dht22Arduino_cropped_4632_800px.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts\/778"}],"collection":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/comments?post=778"}],"version-history":[{"count":0,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/posts\/778\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/media\/1118"}],"wp:attachment":[{"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/media?parent=778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/categories?post=778"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nagashur.com\/blog\/wp-json\/wp\/v2\/tags?post=778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}