{"id":1449,"date":"2018-12-28T10:00:54","date_gmt":"2018-12-28T15:00:54","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1449"},"modified":"2019-01-19T06:57:58","modified_gmt":"2019-01-19T11:57:58","slug":"sensor-ultrasonido-hc-sr04","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/edelros\/sensor-ultrasonido-hc-sr04\/","title":{"rendered":"1. Sensor Ultrasonico HC-SR04"},"content":{"rendered":"<p>El sensor de ultrasonido funciona como un sonar, emite un pulso de ultrasonido por un tiempo de disparo, y luego mide el tiempo de retorno del eco.<\/p>\n<p>El diagrama muestra el concepto a ser aplicado:<\/p>\n<h4><a href=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1450 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido01.png\" alt=\"\" width=\"859\" height=\"423\" srcset=\"https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido01.png 859w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido01-300x148.png 300w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido01-768x378.png 768w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/a>Conversi\u00f3n de tiempor dt_Echo a distancias<\/h4>\n<p>La velocidad del sonido en el aire es de 343.2 m\/s a 20\u00b0C y 50% de Humedad.<\/p>\n<p><em><strong>Referencia<\/strong><\/em>:\u00a0 <a href=\"https:\/\/es.wikipedia.org\/wiki\/Velocidad_del_sonido\">https:\/\/es.wikipedia.org\/wiki\/Velocidad_del_sonido<\/a><\/p>\n<p>Usando la f\u00f3rmula b\u00e1sica de velocidad se tiene que:<\/p>\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\text{velocidad del sonido} = \\frac{\\delta x}{\\delta t} = 343.2\\text{ }m\/s <\/span>\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\delta x = 343.2\\text{ }\\delta t <\/span>\n<p>Para convertir los tiempos a distancias, considere que el recorrido del pulso es de ida y vuelta, por lo que la distancia del dispositivo al objeto ser\u00e1 la mitad.<br \/>\nConsidere adem\u00e1s que la f\u00f3rmula est\u00e1 dada en convertirla a segundos y los datos estan en \u03bcs<\/p>\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\delta t = \\frac{Echo}{2} \\frac{1\\text{ }s}{1000000\\text{ }\\mu s} <\/span>\n<p>aplicando lo anterior, y convirtiendo a cm<\/p>\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> \\delta x = \\Big[ 343.2 \\frac{m}{s} \\frac{100\\text{ }cm}{1\\text{ }m} \\Big] \\Big[ \\frac{Echo}{2} \\frac{1\\text{ }s}{1000000\\text{ }\\mu s} \\Big] <\/span>\n<p>se obtiene la f\u00f3rmula a usar en cm:<\/p>\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> distancia = 0,01716 \\text{ } Echo <\/span>\n<h4>Desarrollo del concepto<\/h4>\n<p>Se desarrolla el concepto en dos partes:<\/p>\n<ul>\n<li>En arduino se realizan las lecturas de <strong><em>echo<\/em> <\/strong>del sensor de ultrasonido, los datos se envian al computador por puerto serial (USB)<\/li>\n<li>Los dados se procesa en la computadora con Python, f\u00f3rmulas, conversi\u00f3n de unidades, gr\u00e1ficas, etc.<\/li>\n<\/ul>\n<h4>\u00a0Lecturas de datos en Arduino<\/h4>\n<p>En la parte de Arduino se usan los siguientes componentes:<\/p>\n<ul>\n<li>Arduino UNO con cable USB<\/li>\n<li>Sensor de ultrasonido HC-SR04<\/li>\n<li>Cables de Conexi\u00f3n (4 hembra macho)<\/li>\n<\/ul>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1550 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido05.png\" alt=\"\" width=\"1356\" height=\"704\" srcset=\"https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido05.png 1356w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido05-300x156.png 300w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido05-768x399.png 768w, https:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/RadarUltrasonido05-1024x532.png 1024w\" sizes=\"auto, (max-width: 1356px) 100vw, 1356px\" \/><\/a><\/p>\n<p>El arduino env\u00eda al computador los tiempos de recorrido del PULSO en \u03bcs.<\/p>\n<p>La recepci\u00f3n de datos en la computadora en forma Serial se detallan las secciones con Python:<\/p>\n<p><em>Serial \u2013 Envia y Recibe texto<\/em><br \/>\n<a href=\"http:\/\/blog.espol.edu.ec\/edelros\/serial-envia-y-recibe-texto\/\">http:\/\/blog.espol.edu.ec\/edelros\/serial-envia-y-recibe-texto\/<\/a><br \/>\n<em>Serial \u2013 Lectura datos<\/em><br \/>\n<a href=\"http:\/\/blog.espol.edu.ec\/edelros\/serial-lectura-datos\/\">http:\/\/blog.espol.edu.ec\/edelros\/serial-lectura-datos\/<\/a><\/p>\n<p><strong><em>Sensor\u00a0 HC-SR04<\/em><\/strong><\/p>\n<p>El dispositivo HC-SR04 se opera como un dispositivo que requiere alimentaci\u00f3n (Vcc y GND), una se\u00f1al de disparo del pulso (Trigger) y una se\u00f1al para la lectura del eco (Echo).<\/p>\n<p>La duraci\u00f3n del pulso se controla con tpulsoON, y el tiempo de apagado con tpulsoOFF, se usa un tiempo adicional dt_apaga, para asegurarse que no exista interferencia entre el apagado del pulso y la lectula del retorno del eco.<\/p>\n<p>La conexi\u00f3n del dispositivo con el Arduino como controlador, se realiza por medio de los pines indicados en el script.<\/p>\n<pre>\/* Sensor de ultrasonido HC-SR04\r\n *  V\u00e1lido con objetos distantes entre 2 y 400 cm (aproximado)\r\nusado para medir tiempo de returno de un pulso\r\n            __________ \r\n____________| PULSO  |___\r\ntpulsoOFF   tpulsoON  dt_apaga\r\n\r\ndt_Echo e el tiempo de retorno del PULSO\r\nlos tiempos son en microsegundos\r\nLos datos se envian por Serial para procesar en Python\r\n * http:\/\/blog.espol.edu.ec\/edelros\/sensor-ultrasonido-hc-sr04\/\r\n *\/\r\n\r\n\/\/ Disparo del PULSO, Trigger\r\nint TriggerPin = 12;\r\nint tpulsoON = 15;\r\nint tpulsoOFF = 2000;\r\n\r\n\/\/ Sensor del Retorno del PULSO, Echo\r\nint EchoPin = 11;\r\nint dt_apaga = 10;\r\n\r\n\/\/ tiempo de retorno Echo\r\nfloat dt_Echo;\r\n\r\nvoid setup() {\r\n  Serial.begin(9600);\r\n  pinMode(TriggerPin, OUTPUT);\r\n  pinMode(EchoPin, INPUT);\r\n}\r\n \r\nvoid loop(){\r\n    \/\/ tiempo entre PULSOs: tpulsoOFF\r\n    digitalWrite(TriggerPin, LOW);\r\n    delayMicroseconds(tpulsoOFF);\r\n    \/\/ Dispara PULSO de duraci\u00f3n: tpulsoON  \r\n    digitalWrite(TriggerPin, HIGH);\r\n    delayMicroseconds(tpulsoON); \r\n    digitalWrite(TriggerPin, LOW); \r\n    delayMicroseconds(dt_apaga);  \r\n    \r\n    \/\/ Lectura sensor pulso: tiempo de echo \r\n    dt_Echo = pulseIn(EchoPin, HIGH);  \r\n    Serial.println(dt_Echo);\r\n    delay(10);\r\n}\r\n<\/pre>\n<p><strong><em>Referencia<\/em><\/strong><\/p>\n<p><a href=\"https:\/\/www.arduino.cc\/en\/tutorial\/ping\">https:\/\/www.arduino.cc\/en\/tutorial\/ping<\/a><\/p>\n<p><a href=\"https:\/\/create.arduino.cc\/projecthub\/FunguyPro\/how-to-use-an-hc-sr04-ultrasonic-sensor-with-arduino-8d646f\">https:\/\/create.arduino.cc\/projecthub\/FunguyPro\/how-to-use-an-hc-sr04-ultrasonic-sensor-with-arduino-8d646f<\/a><\/p>\n<hr \/>\n<h4>Procesamiento de datos en Python<\/h4>\n<p>El arduino env\u00eda al computador los tiempos de recorrido del PULSO en \u03bcs, se usa la f\u00f3rmula para encontrar la distancia en cm:<\/p>\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> distancia = 0,01716 \\text{ } dtEcho <\/span>\n<p>La lectura y aplicaci\u00f3n de f\u00f3rmula en Python tiene como resultado por ejemplo de 12 cm:<\/p>\n<pre>12.149280000000001\r\n11.72028\r\n12.13212\r\n11.806080000000001\r\n12.13212\r\n11.703120000000002\r\n11.703120000000002\r\n12.217920000000001\r\n11.788920000000001\r\n11.685960000000001\r\n11.668800000000001<\/pre>\n<p><em><strong>Nota<\/strong><\/em>: La medici\u00f3n se realiz\u00f3 sosteniendo con la mano el sensor apuntando al una superficie plana, por lo que se muestran variaciones en la lectura. Realizar sus propias mediciones al respecto en superficies fijas, y con el sensor fijo a un soporte.<\/p>\n<p>En caso de realizar una gr\u00e1fica de los datos recibidos, se crea un vector datos, con tama\u00f1o \"ventana\" para graficar los puntos.<\/p>\n<pre># Datos desde puerto Serial\r\n# generados desde arduino\r\n\r\nimport serial, time\r\n\r\n# INGRESO\r\npuerto = 'com10'\r\nbaudios = 9600\r\nventana = 20 # tama\u00f1o ventana datos\r\ndatos=[] # vector para graficar\r\n\r\n# PROCEDIMIENTO\r\narduino = serial.Serial(puerto, baudios)\r\narduino.setDTR(False)\r\ntime.sleep(0.3)\r\n\r\n# limpia buffer de datos anteriores\r\narduino.flushInput()  \r\narduino.setDTR()  \r\ntime.sleep(0.3)\r\nprint('\\nEstado del puerto: ',arduino.isOpen())\r\nprint('Nombre del dispositivo conectado: ', arduino.name)\r\nprint('Dump de la configuraci\u00f3n:\\n ',arduino)\r\nprint('\\n###############################################\\n')\r\n\r\n# Lectura de datos\r\nwhile True:\r\n    #esperar hasta recibir un dato\r\n    while (arduino.inWaiting()==0):\r\n        pass\r\n    \r\n    # leer linea desde puerto serial\r\n    lectura = arduino.readline()\r\n    # binario a texto, elimina \/r\/n\r\n    texto = lectura.decode().strip()\r\n    valor = float(texto)\r\n\r\n    # Aplica f\u00f3rmula\r\n    valor = 0.01716 *valor\r\n\r\n    datos.append(valor)\r\n    \r\n    # mantiene el tama\u00f1o \"ventana\" de datos \r\n    if (len(datos)&gt;=ventana):\r\n        datos.pop(0)\r\n    print(valor)\r\n    \r\n# Cerrar el puerto serial.\r\nserial.Serial.close\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>El sensor de ultrasonido funciona como un sonar, emite un pulso de ultrasonido por un tiempo de disparo, y luego mide el tiempo de retorno del eco. El diagrama muestra el concepto a ser aplicado: Conversi\u00f3n de tiempor dt_Echo a distancias La velocidad del sonido en el aire es de 343.2 m\/s a 20\u00b0C y &hellip; <a href=\"https:\/\/blog.espol.edu.ec\/edelros\/sensor-ultrasonido-hc-sr04\/\" class=\"more-link\">Sigue leyendo <span class=\"screen-reader-text\">1. Sensor Ultrasonico HC-SR04<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1293415],"tags":[],"class_list":["post-1449","post","type-post","status-publish","format-standard","hentry","category-radar-ultrasonido"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/comments?post=1449"}],"version-history":[{"count":17,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1449\/revisions"}],"predecessor-version":[{"id":1553,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1449\/revisions\/1553"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/media?parent=1449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/categories?post=1449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/tags?post=1449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}