{"id":7784,"date":"2018-05-12T16:06:38","date_gmt":"2018-05-12T15:06:38","guid":{"rendered":"http:\/\/blog.whatsbee.net\/?p=7784"},"modified":"2018-05-12T16:08:02","modified_gmt":"2018-05-12T15:08:02","slug":"octavo-paso-midiendo-distancias-y-temperaturas","status":"publish","type":"post","link":"https:\/\/blog.whatsbee.net\/?p=7784","title":{"rendered":"Octavo paso: midiendo distancias y temperaturas"},"content":{"rendered":"<p>Como ahora si que tenemos todo el circuito montado vamos a empezar a probar los sensores.<\/p>\n<h3>El sensor de temperatura tiene un problema de tiempo<\/h3>\n<p>El sensor de temperatura es un DS18B20 de Dallas, funciona con un bus onewire y no voy a profundizar mucho m\u00e1s, se carga la librer\u00eda (hay un mont\u00f3n y se lee con el resto de los sensores. Como siempre me concentrar\u00e9 en el punto en el que nos podemos atascar. Desde que pides la lectura hasta que puedes leerla hay que dejar pasar un tiempo. Por defecto el sensor viene configurado a 12 bits y ese tiempo es de 750 milisegundos aprox. Esto es una barbaridad, para leer la temperatura del sensor de ultrasonidos (tres lecturas diferentes en las que hacemos un median) leer y guardar las lectras en la memoria RTC y hacer todo lo que tenemos que hacer en un ciclo de medida estamos empleando unos 200 ms. Recordemos que es un nodo de bajo consumo y que queremos tenerlo activo el m\u00ednimo tiempo posible, no podemos esperar con el nodo encendido 750 ms adem\u00e1s de lo que ya tardamos en el resto. Tampoco podemos solicitar la lectura en un ciclo y leerla en el siguiente porque estamos desconectando la alimentaci\u00f3n. La soluci\u00f3n es configurarlo a 9 bits, con lo que el tiempo de lectura baja a unos 97ms, solicitamos la lectura al principio del ciclo, mientras la hace leemos el sensor de ultrasonidos y despu\u00e9s obtenemos el valor.\u00a0 A cambio\u00a0 el valor estar\u00e1 redondeado a 0,5 grados en un term\u00f3metro que tiene una precisi\u00f3n de +- 5 grados, no parece un gran problema.<\/p>\n<h3>El sensor de ultrasonidos tiene un problema de precisi\u00f3n<\/h3>\n<p>El sensor de ultrasonidos funciona emitiendo una onda, esperando que rebote en una superficie y escuchando. Midiendo los milisegundos que ha tardado el eco y dicidiendo por dos tendremos los milisegundos que tarda la onda en llegar al objetivo, la otra parte de la ecuaci\u00f3n es la velocidad del sonido.<\/p>\n<p>La velocidad del sonido\u00a0en un gas sigue la siguiente formula:<\/p>\n<p><img class=\"aligncenter\" src=\"https:\/\/wikimedia.org\/api\/rest_v1\/media\/math\/render\/svg\/784d65738b374e69944d8c604e2fde85392eafe8\" alt=\"{\\displaystyle v={\\sqrt {\\frac {\\gamma {R}{T}}{M}}}}\" \/><\/p>\n<p>Siendo gamma el coeficiente de dilataci\u00f3n adiab\u00e1tica, R la constante universal de los gases, T la temperatura en kelvin y M la masa molar del gas. Los valores t\u00edpicos para la atm\u00f3sfera est\u00e1ndar a nivel del mar son los siguientes:<\/p>\n<p>gamma = 1,4 para el aire<br \/>\nR = 8,314 J\/mol\u00b7K = 8,314 kg\u00b7m2\/mol\u00b7K\u00b7s2<br \/>\nT = 293,15 K (20 \u00b0C)<br \/>\nM = 0,029 kg\/mol para el aire<\/p>\n<p>la fuente de esto es\u00a0<a href=\"https:\/\/es.wikipedia.org\/wiki\/Velocidad_del_sonido\">Wikipedia<\/a>, no pretendo hacer un estudio tan profundo, pero se ve claro que es dependiente de la temperatura ambiente y de la \u00abdensidad\u00bb, que tiene que ver con la presi\u00f3n atmosf\u00e9rica.<\/p>\n<p>Para no liarnos despreciamos la influencia de la presi\u00f3n atmosf\u00e9rica y consideramos aproximadamente lineal la velocidad de sonido en el aire con respecto a la temperatura, es una buena aproximaci\u00f3n.<\/p>\n<p><code>Velocidad del sonido\u00a0= 331.3 + 0.606 *\u00a0temperatura<\/code><br \/>\nHe puesto esto en un Excel para ver que error estamos corrigiendo por el hecho de compensar la temperatura. El resultagdo es el siguiente:<\/p>\n<table width=\"404\">\n<tbody>\n<tr>\n<td width=\"80\"><strong>Temp<\/strong><\/td>\n<td width=\"80\"><strong>Vel sonido<\/strong><\/td>\n<td width=\"80\"><strong>Distancia sin compensar<\/strong><\/td>\n<td width=\"84\"><strong>Distancia compensada<\/strong><\/td>\n<td width=\"80\"><strong>% error<\/strong><\/td>\n<\/tr>\n<tr>\n<td>-10<\/td>\n<td>325,24<\/td>\n<td>0,500<\/td>\n<td>0,469<\/td>\n<td>6,52%<\/td>\n<\/tr>\n<tr>\n<td>-5<\/td>\n<td>328,27<\/td>\n<td>0,500<\/td>\n<td>0,474<\/td>\n<td>5,54%<\/td>\n<\/tr>\n<tr>\n<td>0<\/td>\n<td>331,3<\/td>\n<td>0,500<\/td>\n<td>0,478<\/td>\n<td>4,57%<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>334,33<\/td>\n<td>0,500<\/td>\n<td>0,482<\/td>\n<td>3,63%<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>337,36<\/td>\n<td>0,500<\/td>\n<td>0,487<\/td>\n<td>2,69%<\/td>\n<\/tr>\n<tr>\n<td>15<\/td>\n<td>340,39<\/td>\n<td>0,500<\/td>\n<td>0,491<\/td>\n<td>1,78%<\/td>\n<\/tr>\n<tr>\n<td>20<\/td>\n<td>343,42<\/td>\n<td>0,500<\/td>\n<td>0,495<\/td>\n<td>0,88%<\/td>\n<\/tr>\n<tr>\n<td>25<\/td>\n<td>346,45<\/td>\n<td>0,500<\/td>\n<td>0,500<\/td>\n<td>0,00%<\/td>\n<\/tr>\n<tr>\n<td>30<\/td>\n<td>349,48<\/td>\n<td>0,500<\/td>\n<td>0,504<\/td>\n<td>0,87%<\/td>\n<\/tr>\n<tr>\n<td>35<\/td>\n<td>352,51<\/td>\n<td>0,500<\/td>\n<td>0,508<\/td>\n<td>1,72%<\/td>\n<\/tr>\n<tr>\n<td>40<\/td>\n<td>355,54<\/td>\n<td>0,500<\/td>\n<td>0,513<\/td>\n<td>2,56%<\/td>\n<\/tr>\n<tr>\n<td>45<\/td>\n<td>358,57<\/td>\n<td>0,500<\/td>\n<td>0,517<\/td>\n<td>3,38%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Una vez m\u00e1s quiero recordar que no pretendemos crear un dispositivo de medida de precisi\u00f3n, pero esto corrige un efecto est\u00e9tico, en un tanque sin consumo, si baja la temperatura se incrementa el nivel de combustible medido.\u00a0\u00a0Supongo que estamos acostumbrados a ver como va bajando el volumen del tanque pero no como sube, lo cual suele llamar la atenci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como ahora si que tenemos todo el circuito montado vamos a empezar a probar los sensores. El sensor de temperatura tiene un problema de tiempo El sensor de temperatura es un DS18B20 de Dallas, funciona con un bus onewire y&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/blog.whatsbee.net\/?p=7784\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":7777,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"categories":[208,2,1],"tags":[231,230,229,219,209,228,216],"_links":{"self":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/7784"}],"collection":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7784"}],"version-history":[{"count":1,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/7784\/revisions"}],"predecessor-version":[{"id":7785,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/posts\/7784\/revisions\/7785"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=\/wp\/v2\/media\/7777"}],"wp:attachment":[{"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.whatsbee.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}