        <style>
            #donation_buttons td{
                border:medium none;
                background: inherit !important;
            }
            #donation_buttons table{               
                border:medium none;
                margin: auto;
                width: auto;
            }
        </style>
        {"id":7816,"date":"2024-10-24T01:47:26","date_gmt":"2024-10-24T01:47:26","guid":{"rendered":"https:\/\/rogerbit.com\/wprb\/?p=7816"},"modified":"2024-10-24T01:47:26","modified_gmt":"2024-10-24T01:47:26","slug":"termometro-hw069-ds18b20","status":"publish","type":"post","link":"https:\/\/rogerbit.com\/wprb\/2024\/10\/termometro-hw069-ds18b20\/","title":{"rendered":"Term\u00f3metro digital con display hw-069 y sensor ds18b20"},"content":{"rendered":"<p><iframe loading=\"lazy\" title=\"Term\u00f3metro digital con display hw-069 y sensor ds18b20 para  heladeras - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/172C35vkKks?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<h3><strong>Introducci\u00f3n<\/strong><\/h3>\n<p>En este proyecto, aprender\u00e1s a crear un medidor de temperatura utilizando un sensor <strong>DS18B20<\/strong> y un display de 7 segmentos <strong>TM1637<\/strong>, controlados por una placa <strong>Arduino<\/strong>. El display mostrar\u00e1 la temperatura en grados Celsius, incluyendo la precisi\u00f3n decimal y el signo negativo si la temperatura baja de cero.<\/p>\n<h3><strong>Materiales Necesarios<\/strong><\/h3>\n<ul>\n<li>1x <strong>Arduino mini pro<\/strong>\u00a0(o cualquier placa compatible)<\/li>\n<li>1x <strong>Sensor de temperatura DS18B20<\/strong><\/li>\n<li>1x <strong>Display TM1637<\/strong><\/li>\n<li>1x <strong>Resistencia de 4.7k\u03a9<\/strong> (para el sensor DS18B20)<\/li>\n<li>Cables jumper<\/li>\n<li>Protoboard<\/li>\n<\/ul>\n<h3><strong>Componentes electr\u00f3nicos<\/strong><\/h3>\n<h3>Arduino mini pro<\/h3>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2019\/09\/arduino_mini_pro.jpg\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-4993\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2019\/09\/arduino_mini_pro.jpg\" sizes=\"(max-width: 600px) 100vw, 600px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2019\/09\/arduino_mini_pro.jpg 600w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2019\/09\/arduino_mini_pro-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2019\/09\/arduino_mini_pro-300x300.jpg 300w\" alt=\"\" width=\"600\" height=\"600\" \/><\/a><\/p>\n<p>El\u00a0<strong>Arduino Pro Mini<\/strong>\u00a0es una placa de microcontrolador basada en el\u00a0\u00a0<a href=\"http:\/\/www.atmel.com\/Images\/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf\" target=\"_blank\" rel=\"noopener\">ATmega328<\/a>\u00a0.<br \/>\nTiene 14 pines de entrada \/ salida digital (de los cuales 6 se pueden usar como salidas PWM), 6 entradas anal\u00f3gicas, un resonador integrado, un bot\u00f3n de reinicio y orificios para montar encabezados de pines.\u00a0Se puede conectar un encabezado de seis pines a un cable FTDI o una placa de conexi\u00f3n Sparkfun para proporcionar alimentaci\u00f3n USB y comunicaci\u00f3n a la placa.<br \/>\nEl Arduino Pro Mini est\u00e1 dise\u00f1ado para su instalaci\u00f3n semipermanente en objetos o exposiciones. La placa viene sin encabezados pre montados, lo que permite el uso de varios tipos de conectores o la soldadura directa de cables. El dise\u00f1o del pin es compatible con el Arduino Mini.<br \/>\nHay dos versiones del Pro Mini.\u00a0Uno corre a 3.3V y 8 MHz, el otro a 5V y 16 MHz.<\/p>\n<table>\n<tbody>\n<tr>\n<td>Microcontrolador<\/td>\n<td>ATmega328 *<\/td>\n<\/tr>\n<tr>\n<td>Fuente de alimentaci\u00f3n de la placa<\/td>\n<td>3,35-12 V (modelo de 3,3 V) o 5-12 V (modelo de 5 V)<\/td>\n<\/tr>\n<tr>\n<td>Voltaje de funcionamiento del circuito<\/td>\n<td>3.3V o 5V (dependiendo del modelo)<\/td>\n<\/tr>\n<tr>\n<td>Pines de E \/ S digitales<\/td>\n<td>14<\/td>\n<\/tr>\n<tr>\n<td>Pines PWM<\/td>\n<td>6 6<\/td>\n<\/tr>\n<tr>\n<td>UART<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>SPI<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>I2C<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>Pines de entrada anal\u00f3gica<\/td>\n<td>6 6<\/td>\n<\/tr>\n<tr>\n<td>Interrupciones externas<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>Corriente CC por pin de E \/ S<\/td>\n<td>40 mA<\/td>\n<\/tr>\n<tr>\n<td>Memoria flash<\/td>\n<td>32 KB de los cuales 2 KB utilizados por el gestor de arranque *<\/td>\n<\/tr>\n<tr>\n<td>SRAM<\/td>\n<td>2 KB *<\/td>\n<\/tr>\n<tr>\n<td>EEPROM<\/td>\n<td>1 KB *<\/td>\n<\/tr>\n<tr>\n<td>Velocidad de reloj<\/td>\n<td>8 MHz (versiones de 3.3V) o 16 MHz (versiones de 5V)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Pines hembra<\/h4>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-6689\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hembrapin.jpg\" sizes=\"(max-width: 225px) 100vw, 225px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hembrapin.jpg 225w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/12\/hembrapin-150x150.jpg 150w\" alt=\"\" width=\"225\" height=\"225\" \/><\/p>\n<hr \/>\n<p><strong>Z\u00f3calo para arduino nano<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-6895\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/06\/zocalo.jpg\" sizes=\"(max-width: 320px) 100vw, 320px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/06\/zocalo.jpg 320w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/06\/zocalo-300x225.jpg 300w\" alt=\"\" width=\"320\" height=\"240\" \/><\/p>\n<hr \/>\n<h4>Sensor ds18b20<\/h4>\n<p><img loading=\"lazy\" class=\"\" src=\"https:\/\/electronilab.co\/wp-content\/uploads\/2015\/04\/ds18b20-waterproof.jpg\" alt=\"Resultado de imagen para ds18B20\" width=\"233\" height=\"288\" \/><\/p>\n<p>El <strong>sensor DS18B20<\/strong> es un sensor de temperatura digital muy popular, que ofrece una alta precisi\u00f3n y una sencilla interfaz de comunicaci\u00f3n. A continuaci\u00f3n te detallo sus caracter\u00edsticas m\u00e1s importantes:<\/p>\n<h3><strong>Caracter\u00edsticas del Sensor DS18B20<\/strong><\/h3>\n<ol>\n<li><strong>Rango de Temperatura<\/strong>:\n<ul>\n<li>Puede medir temperaturas en un rango amplio:\n<ul>\n<li><strong>-55\u00b0C a +125\u00b0C<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li>Precisi\u00f3n:\n<ul>\n<li><strong>\u00b10.5\u00b0C<\/strong> en el rango de <strong>-10\u00b0C a +85\u00b0C<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Resoluci\u00f3n Programable<\/strong>:\n<ul>\n<li>La resoluci\u00f3n de la temperatura es ajustable y puede configurarse en:\n<ul>\n<li><strong>9, 10, 11 o 12 bits<\/strong>, siendo la m\u00e1s com\u00fan <strong>12 bits<\/strong>, que ofrece una precisi\u00f3n de 0.0625\u00b0C por paso.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Interfaz OneWire<\/strong>:\n<ul>\n<li>Se comunica con el microcontrolador mediante el <strong>bus OneWire<\/strong>, lo que significa que solo requiere un pin de datos para la comunicaci\u00f3n (adem\u00e1s de VCC y GND).<\/li>\n<li>Permite conectar m\u00faltiples sensores en el mismo bus, cada uno con una direcci\u00f3n \u00fanica de 64 bits.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Alimentaci\u00f3n<\/strong>:\n<ul>\n<li>Puede alimentarse de dos maneras:\n<ul>\n<li><strong>Modo parasitario<\/strong>: Solo requiere dos cables (GND y Data) para operar, tomando energ\u00eda directamente del pin de datos.<\/li>\n<li><strong>Modo est\u00e1ndar<\/strong>: Requiere tres cables (VCC, GND y Data).<\/li>\n<\/ul>\n<\/li>\n<li>Voltaje de operaci\u00f3n:\n<ul>\n<li><strong>3.0V a 5.5V<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Tiempos de Conversi\u00f3n<\/strong>:\n<ul>\n<li>El tiempo de conversi\u00f3n de la temperatura depende de la resoluci\u00f3n seleccionada:\n<ul>\n<li><strong>9 bits<\/strong>: 93.75 ms.<\/li>\n<li><strong>10 bits<\/strong>: 187.5 ms.<\/li>\n<li><strong>11 bits<\/strong>: 375 ms.<\/li>\n<li><strong>12 bits<\/strong>: 750 ms.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Calibraci\u00f3n Interna<\/strong>:\n<ul>\n<li>El sensor <strong>no necesita ser calibrado<\/strong>, ya que viene pre-calibrado de f\u00e1brica.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Encapsulado<\/strong>:\n<ul>\n<li>Est\u00e1 disponible en diferentes formatos, incluyendo:\n<ul>\n<li><strong>TO-92<\/strong> (similar a un transistor).<\/li>\n<li>Versi\u00f3n impermeable para aplicaciones en l\u00edquidos.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>ID \u00danico<\/strong>:\n<ul>\n<li>Cada sensor tiene una direcci\u00f3n de 64 bits \u00fanica que lo identifica en el bus OneWire, lo que permite la conexi\u00f3n de varios sensores en paralelo.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Consumo de Energ\u00eda<\/strong>:\n<ul>\n<li><strong>Bajo consumo de energ\u00eda<\/strong> en modo inactivo, ideal para proyectos con bater\u00edas.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Uso Com\u00fan<\/strong>:\n<ul>\n<li>Aplicaciones comunes incluyen sistemas de monitoreo ambiental, control de temperatura en HVAC, y medici\u00f3n de temperatura en sistemas embebidos.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3><strong>Ventajas del DS18B20<\/strong><\/h3>\n<ul>\n<li><strong>F\u00e1cil de usar<\/strong>: Solo requiere un pin para comunicaci\u00f3n.<\/li>\n<li><strong>Alta precisi\u00f3n<\/strong>: Resoluci\u00f3n de hasta <strong>12 bits<\/strong> con pasos de 0.0625\u00b0C.<\/li>\n<li><strong>Amplitud de medici\u00f3n<\/strong>: Ideal para una variedad de entornos con rangos de temperatura amplios.<\/li>\n<li><strong>ID \u00fanico<\/strong>: Puedes conectar m\u00faltiples sensores en un mismo bus de datos.<\/li>\n<li><strong>No requiere calibraci\u00f3n<\/strong>.<\/li>\n<\/ul>\n<h3><strong>Limitaciones<\/strong><\/h3>\n<ul>\n<li><strong>Velocidad de conversi\u00f3n<\/strong>: Para la m\u00e1xima resoluci\u00f3n de 12 bits, el tiempo de conversi\u00f3n es de 750 ms, lo que puede ser lento para algunas aplicaciones.<\/li>\n<li><strong>Rango de precisi\u00f3n<\/strong>: Fuera del rango de -10\u00b0C a 85\u00b0C, la precisi\u00f3n puede verse reducida.<\/li>\n<\/ul>\n<p>Estas caracter\u00edsticas hacen del <strong>DS18B20<\/strong> una excelente opci\u00f3n para proyectos de medici\u00f3n de temperatura, ya sea en aplicaciones dom\u00e9sticas, industriales o experimentales.<\/p>\n<hr \/>\n<p>Display TM1637<\/p>\n<p><img loading=\"lazy\" class=\"alignnone  wp-image-7817\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/hw-069.jpg\" alt=\"\" width=\"329\" height=\"329\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/hw-069.jpg 900w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/hw-069-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/hw-069-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/hw-069-768x768.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/hw-069-820x820.jpg 820w\" sizes=\"(max-width: 329px) 100vw, 329px\" \/><\/p>\n<p>El <strong>TM1637<\/strong> es un controlador de display de 7 segmentos de uso com\u00fan, que permite controlar hasta <strong>4 d\u00edgitos<\/strong> con facilidad utilizando solo <strong>2 pines<\/strong> de un microcontrolador (comunicaci\u00f3n tipo I2C-like). Est\u00e1 integrado en muchos m\u00f3dulos de displays de 7 segmentos y es ideal para proyectos de Arduino y otras plataformas. A continuaci\u00f3n te doy una lista de sus caracter\u00edsticas principales:<\/p>\n<h3><strong>Caracter\u00edsticas del Display TM1637<\/strong><\/h3>\n<ol>\n<li><strong>Controlador de 4 d\u00edgitos<\/strong>:\n<ul>\n<li>El chip <strong>TM1637<\/strong> puede controlar hasta <strong>4 d\u00edgitos<\/strong> en un display de 7 segmentos.<\/li>\n<li>Cada d\u00edgito puede mostrar n\u00fameros del <strong>0 al 9<\/strong> y algunas letras y s\u00edmbolos (como <strong>A, b, C, d, E, F<\/strong>).<\/li>\n<\/ul>\n<\/li>\n<li><strong>Conexi\u00f3n simplificada<\/strong>:\n<ul>\n<li>Utiliza solo <strong>2 pines<\/strong> para la comunicaci\u00f3n con el microcontrolador:\n<ul>\n<li><strong>CLK (Reloj)<\/strong>.<\/li>\n<li><strong>DIO (Datos)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li>Aunque no usa el protocolo I2C est\u00e1ndar, sigue un patr\u00f3n similar.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Brillo ajustable<\/strong>:\n<ul>\n<li>El brillo del display es <strong>programable<\/strong> en 8 niveles diferentes, lo que permite ajustarlo seg\u00fan las condiciones de iluminaci\u00f3n.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Voltaje de operaci\u00f3n<\/strong>:\n<ul>\n<li>Funciona con un voltaje de <strong>3.3V a 5V<\/strong>, lo que lo hace compatible con la mayor\u00eda de microcontroladores como Arduino, ESP32, y Raspberry Pi.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Bajo consumo de energ\u00eda<\/strong>:\n<ul>\n<li>El controlador <strong>TM1637<\/strong> tiene un bajo consumo de energ\u00eda, lo que lo hace adecuado para proyectos alimentados por bater\u00edas.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Pantalla de punto decimal<\/strong>:\n<ul>\n<li>Cada d\u00edgito tiene un <strong>punto decimal<\/strong> (DP) que puede ser encendido o apagado de manera independiente, lo que permite la visualizaci\u00f3n de n\u00fameros decimales o para indicar alg\u00fan estado.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Facilidad de uso<\/strong>:\n<ul>\n<li>Existe una amplia gama de librer\u00edas disponibles para controlar el <strong>TM1637<\/strong> en diferentes plataformas de hardware, lo que simplifica su programaci\u00f3n.<\/li>\n<li>En Arduino, la librer\u00eda <strong>TM1637Display<\/strong> proporciona m\u00e9todos sencillos para mostrar n\u00fameros, encender\/apagar puntos decimales, ajustar el brillo, etc.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Multiplexado interno<\/strong>:\n<ul>\n<li>El chip <strong>TM1637<\/strong> se encarga del <strong>multiplexado<\/strong> de los d\u00edgitos, por lo que no es necesario que el microcontrolador gestione el refresco de la pantalla.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Almacenamiento en buffer<\/strong>:\n<ul>\n<li>El controlador tiene un <strong>buffer de datos<\/strong> interno para almacenar los d\u00edgitos y s\u00edmbolos que se mostrar\u00e1n, permitiendo que el microcontrolador env\u00ede los datos y luego se dedique a otras tareas.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Comunicaci\u00f3n r\u00e1pida<\/strong>:\n<ul>\n<li>El protocolo de comunicaci\u00f3n pseudo-I2C es r\u00e1pido y eficiente, permitiendo la actualizaci\u00f3n de la pantalla en tiempo real.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3><strong>Ventajas del TM1637<\/strong><\/h3>\n<ul>\n<li><strong>Simplicidad en la conexi\u00f3n<\/strong>: Solo requiere 2 pines para controlar hasta 4 d\u00edgitos, liberando pines en el microcontrolador.<\/li>\n<li><strong>F\u00e1cil control<\/strong>: Existen librer\u00edas que simplifican el uso del controlador, especialmente en Arduino.<\/li>\n<li><strong>Brillo ajustable<\/strong>: Puedes modificar la intensidad de la pantalla para adaptarse a diferentes condiciones de iluminaci\u00f3n.<\/li>\n<li><strong>Punto decimal<\/strong>: Ideal para mostrar valores con decimales.<\/li>\n<\/ul>\n<h3><strong>Aplicaciones comunes<\/strong>:<\/h3>\n<ul>\n<li>Relojes digitales.<\/li>\n<li>Term\u00f3metros digitales.<\/li>\n<li>Contadores de tiempo o eventos.<\/li>\n<li>Visualizaci\u00f3n de estados o lecturas de sensores.<\/li>\n<\/ul>\n<h3><strong>Limitaciones<\/strong><\/h3>\n<ul>\n<li><strong>Capacidad limitada<\/strong>: Solo controla 4 d\u00edgitos, lo que puede no ser suficiente para proyectos que requieren la visualizaci\u00f3n de m\u00e1s datos.<\/li>\n<li><strong>Simbolismo limitado<\/strong>: Los displays de 7 segmentos tienen una capacidad limitada para mostrar caracteres alfanum\u00e9ricos m\u00e1s complejos.<\/li>\n<\/ul>\n<p>El <strong>TM1637<\/strong> es una soluci\u00f3n de bajo costo, f\u00e1cil de usar y eficiente para agregar pantallas de 7 segmentos a tus proyectos de electr\u00f3nica.<\/p>\n<hr \/>\n<p><strong>Un resistor de 4.7 Kohm<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6758 size-thumbnail\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm-150x150.jpeg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm-150x150.jpeg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm-300x300.jpeg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm-1024x1024.jpeg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm-768x768.jpeg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm-820x820.jpeg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/02\/4.7kohm.jpeg 1200w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/p>\n<hr \/>\n<div class=\"google-auto-placed ap_container\">\n<p><strong>PCB<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-7078\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/10\/pcb.png\" sizes=\"(max-width: 387px) 100vw, 387px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/10\/pcb.png 387w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/10\/pcb-244x300.png 244w\" alt=\"\" width=\"387\" height=\"475\" \/><\/p>\n<p>Descargar archivo gerber \u2013&gt;\u00a0<a href=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2023\/04\/pcb-alarma-ir.zip\">pcb alarma ir<\/a><\/p>\n<\/div>\n<hr \/>\n<p><strong>Circuito<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-7818\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-1024x712.jpg\" alt=\"\" width=\"1024\" height=\"712\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-1024x712.jpg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-300x209.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-768x534.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-1536x1069.jpg 1536w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-2048x1425.jpg 2048w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/10\/circuito-820x570.jpg 820w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<hr \/>\n<h3><strong>Diagrama de Conexi\u00f3n<\/strong><\/h3>\n<ol>\n<li><strong>Conexi\u00f3n del Display TM1637<\/strong>:\n<ul>\n<li><strong>CLK (Clock)<\/strong> \u2192 Pin <strong>3<\/strong> de Arduino.<\/li>\n<li><strong>DIO (Data)<\/strong> \u2192 Pin <strong>4<\/strong> de Arduino.<\/li>\n<li><strong>VCC<\/strong> \u2192 5V.<\/li>\n<li><strong>GND<\/strong> \u2192 GND.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Conexi\u00f3n del Sensor DS18B20<\/strong>:\n<ul>\n<li><strong>VCC<\/strong> \u2192 5V.<\/li>\n<li><strong>GND<\/strong> \u2192 GND.<\/li>\n<li><strong>DQ (Data)<\/strong> \u2192 Pin <strong>2<\/strong> de Arduino, con una <strong>resistencia de 4.7k\u03a9<\/strong> entre DQ y VCC.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3><strong>C\u00f3digo Fuente<\/strong><\/h3>\n<p>A continuaci\u00f3n, te dejo el c\u00f3digo completo para este proyecto. El c\u00f3digo lee la temperatura del sensor DS18B20, la muestra en el display TM1637 y maneja el signo negativo.<\/p>\n<pre class=\"lang:arduino decode:true \" title=\"C\u00f3digo Fuente\">#include &lt;TM1637Display.h&gt;\r\n#include &lt;OneWire.h&gt;\r\n#include &lt;DallasTemperature.h&gt;\r\n\/\/ Pines de conexi\u00f3n del TM1637\r\n#define RELOJ 3  \/\/ Pin de reloj del display TM1637(CLK)\r\n#define DATOS 4  \/\/ Pin de datos del display TM1637(DIO)\r\nTM1637Display pantalla(RELOJ, DATOS);\r\n\/\/ Configuraci\u00f3n del DS18B20\r\n#define BUS_UNICO 2  \/\/ Pin de datos del DS18B20\r\nOneWire unAlambre(BUS_UNICO);\r\nDallasTemperature sensores(&amp;unAlambre);\r\nvoid setup() {\r\n  pantalla.setBrightness(0x0a);  \/\/ Ajusta el brillo de la pantalla (0x0a = brillo medio)\r\n  pantalla.showNumberDec(0);     \/\/ Muestra 0 al iniciar\r\n  sensores.begin();  \/\/ Inicializa el sensor de temperatura  \r\n  Serial.begin(9600); \/\/ Para monitorear por terminal\r\n}\r\nvoid loop() {\r\n  sensores.requestTemperatures();  \/\/ Solicita la temperatura\r\n  float temperaturaC = sensores.getTempCByIndex(0);  \/\/ Obtiene la temperatura en grados Celsius  \r\n  \/\/ Verifica si hay error en la lectura\r\n  if (temperaturaC == -127) {\r\n    Serial.println(\"Error: Sensor no encontrado o mal conectado.\");\r\n    pantalla.showNumberDec(-99);  \/\/ Muestra -99 en la pantalla como error\r\n  } else {\r\n    int temperaturaMostrar = (int)temperaturaC;\r\n    pantalla.showNumberDec(temperaturaMostrar);  \/\/ Muestra la temperatura en la pantalla\r\n    Serial.print(\"Temperatura: \");\r\n    Serial.print(temperaturaC);\r\n    Serial.println(\" \u00b0C\");\r\n  }  \r\n  delay(1000);  \/\/ Actualiza cada segundo\r\n}<\/pre>\n<p>Este c\u00f3digo fuente es un programa en <strong>Arduino<\/strong> que utiliza un <strong>sensor de temperatura DS18B20<\/strong> para leer la temperatura ambiente y luego la muestra en un <strong>display de 7 segmentos TM1637<\/strong>. A continuaci\u00f3n te explico el c\u00f3digo en detalle:<\/p>\n<p><strong>Librer\u00edas<\/strong><\/p>\n<pre class=\"lang:default decode:true \">#include &lt;TM1637Display.h&gt; \/\/ Librer\u00eda para controlar el display TM1637\r\n#include &lt;OneWire.h&gt;        \/\/ Librer\u00eda para comunicarse con el sensor DS18B20 a trav\u00e9s de un solo pin (OneWire)\r\n#include &lt;DallasTemperature.h&gt; \/\/ Librer\u00eda para manejar sensores de temperatura como el DS18B20\r\n<\/pre>\n<ul>\n<li><strong>TM1637Display.h<\/strong>: Proporciona las funciones necesarias para controlar el display de 7 segmentos TM1637.<\/li>\n<li><strong>OneWire.h<\/strong>: Permite la comunicaci\u00f3n con dispositivos que usan el protocolo OneWire, como el DS18B20.<\/li>\n<li><strong>DallasTemperature.h<\/strong>: Facilita la interacci\u00f3n con sensores de temperatura como el DS18B20.<\/li>\n<\/ul>\n<h3><strong>Definici\u00f3n de pines<\/strong><\/h3>\n<pre class=\"lang:default decode:true \">#define RELOJ 3  \/\/ Pin de reloj del display TM1637 (CLK)\r\n#define DATOS 4  \/\/ Pin de datos del display TM1637 (DIO)\r\nTM1637Display pantalla(RELOJ, DATOS);  \/\/ Instancia de la pantalla TM1637\r\n\r\n#define BUS_UNICO 2  \/\/ Pin de datos del DS18B20\r\nOneWire unAlambre(BUS_UNICO);  \/\/ Instancia para comunicaci\u00f3n OneWire\r\nDallasTemperature sensores(&amp;unAlambre);  \/\/ Instancia de la librer\u00eda para manejar el sensor DS18B20\r\n<\/pre>\n<ul>\n<li><strong>RELOJ (pin 3)<\/strong> y <strong>DATOS (pin 4)<\/strong>: Estos son los pines a los que conectas el display <strong>TM1637<\/strong>.<\/li>\n<li><strong>BUS_UNICO (pin 2)<\/strong>: Este es el pin donde se conecta el sensor de temperatura <strong>DS18B20<\/strong> para transmitir los datos.<\/li>\n<li>Las instancias <strong><code>pantalla<\/code><\/strong>, <strong><code>unAlambre<\/code><\/strong> y <strong><code>sensores<\/code><\/strong> permiten el control del display y la comunicaci\u00f3n con el sensor DS18B20.<\/li>\n<\/ul>\n<h3><strong>Funci\u00f3n <code>setup()<\/code><\/strong><\/h3>\n<pre class=\"lang:default decode:true \">void setup() {\r\n  pantalla.setBrightness(0x0a);  \/\/ Ajusta el brillo del display (0x0a = brillo medio)\r\n  pantalla.showNumberDec(0);     \/\/ Muestra 0 al iniciar en el display\r\n  sensores.begin();  \/\/ Inicializa el sensor DS18B20\r\n  Serial.begin(9600); \/\/ Inicia la comunicaci\u00f3n serial para monitorear la temperatura por el puerto serial\r\n}\r\n<\/pre>\n<ul>\n<li><strong><code>pantalla.setBrightness(0x0a)<\/code><\/strong>: Ajusta el brillo del display <strong>TM1637<\/strong>. El valor <strong>0x0a<\/strong> establece un brillo medio.<\/li>\n<li><strong><code>pantalla.showNumberDec(0)<\/code><\/strong>: Muestra el n\u00famero <strong>0<\/strong> en el display al iniciar.<\/li>\n<li><strong><code>sensores.begin()<\/code><\/strong>: Inicializa la comunicaci\u00f3n con el sensor de temperatura <strong>DS18B20<\/strong>.<\/li>\n<li><strong><code>Serial.begin(9600)<\/code><\/strong>: Configura la velocidad de transmisi\u00f3n de datos por el puerto serial a <strong>9600 baudios<\/strong>, lo que permite monitorear las lecturas de temperatura en el <strong>Monitor Serial<\/strong> de Arduino.<\/li>\n<\/ul>\n<h3><strong>Funci\u00f3n <code>loop()<\/code><\/strong><\/h3>\n<pre class=\"lang:default decode:true \">void loop() {\r\n  sensores.requestTemperatures();  \/\/ Solicita al sensor que mida la temperatura\r\n  float temperaturaC = sensores.getTempCByIndex(0);  \/\/ Obtiene la temperatura en grados Celsius\r\n  \r\n  \/\/ Verifica si hay un error en la lectura\r\n  if (temperaturaC == -127) {\r\n    Serial.println(\"Error: Sensor no encontrado o mal conectado.\");\r\n    pantalla.showNumberDec(-99);  \/\/ Muestra -99 en el display como indicaci\u00f3n de error\r\n  } else {\r\n    int temperaturaMostrar = (int)temperaturaC;  \/\/ Convierte la temperatura a entero para mostrarla\r\n    pantalla.showNumberDec(temperaturaMostrar);  \/\/ Muestra la temperatura en la pantalla TM1637\r\n    Serial.print(\"Temperatura: \");\r\n    Serial.print(temperaturaC);\r\n    Serial.println(\" \u00b0C\");\r\n  }\r\n  \r\n  delay(1000);  \/\/ Espera un segundo antes de volver a medir\r\n}\r\n<\/pre>\n<h4><strong><code>sensores.requestTemperatures()<\/code><\/strong><\/h4>\n<ul>\n<li>Esta funci\u00f3n le pide al sensor que realice una lectura de temperatura.<\/li>\n<\/ul>\n<h4><strong><code>float temperaturaC = sensores.getTempCByIndex(0)<\/code><\/strong><\/h4>\n<ul>\n<li>Esta l\u00ednea obtiene la temperatura en grados Celsius desde el sensor <strong>DS18B20<\/strong>. La funci\u00f3n <code>getTempCByIndex(0)<\/code> obtiene la temperatura del sensor que est\u00e1 conectado en la posici\u00f3n <strong>0<\/strong> (si hay varios sensores en el bus OneWire).<\/li>\n<\/ul>\n<h4><strong>Error de lectura (-127)<\/strong><\/h4>\n<pre class=\"lang:default decode:true \">if (temperaturaC == -127) {\r\n  Serial.println(\"Error: Sensor no encontrado o mal conectado.\");\r\n  pantalla.showNumberDec(-99);  \/\/ Muestra -99 en el display si hay un error\r\n}\r\n<\/pre>\n<ul>\n<li>Si la lectura de la temperatura es <strong>-127<\/strong>, significa que hay un error (el sensor no est\u00e1 conectado correctamente o est\u00e1 da\u00f1ado).<\/li>\n<li>Si esto ocurre, se muestra <strong>-99<\/strong> en el display y se imprime un mensaje de error en el <strong>Monitor Serial<\/strong>.<\/li>\n<\/ul>\n<h4><strong>Mostrar la temperatura<\/strong><\/h4>\n<pre class=\"lang:default decode:true \">int temperaturaMostrar = (int)temperaturaC;  \/\/ Convierte la temperatura a un n\u00famero entero\r\npantalla.showNumberDec(temperaturaMostrar);  \/\/ Muestra la temperatura en la pantalla TM1637\r\nSerial.print(\"Temperatura: \");\r\nSerial.print(temperaturaC);\r\nSerial.println(\" \u00b0C\");\r\n<\/pre>\n<ul>\n<li>Si no hay error, el valor de la temperatura se convierte en un n\u00famero entero y se muestra en el display.<\/li>\n<li>La temperatura tambi\u00e9n se imprime en el <strong>Monitor Serial<\/strong>, permitiendo visualizarla en grados Celsius con una precisi\u00f3n decimal.<\/li>\n<\/ul>\n<h4><strong>delay(1000)<\/strong><\/h4>\n<ul>\n<li>Esta l\u00ednea inserta una pausa de <strong>1 segundo<\/strong> entre las lecturas de temperatura.<\/li>\n<\/ul>\n<p>Este c\u00f3digo permite leer la temperatura ambiente utilizando el sensor <strong>DS18B20<\/strong> y mostrarla en un <strong>display TM1637<\/strong>. Adem\u00e1s, se verifican errores en la conexi\u00f3n del sensor y se maneja ese error mostrando <strong>-99<\/strong> en el display. La temperatura tambi\u00e9n se puede monitorear a trav\u00e9s del <strong>Monitor Serial<\/strong>.<\/p>\n<hr \/>\n<p>No te pierdas ning\u00fan video m\u00e1s suscr\u00edbete a nuestro canal de telegram\u00a0<a href=\"https:\/\/t.me\/carlosvolt_electronica_robotica\">https:\/\/t.me\/carlosvolt_electronica_robotica<\/a><\/p>\n<hr \/>\n<div class=\"page-sidebar widget\" id=\"donation_buttons\"><form action=\"https:\/\/www.paypal.com\/cgi-bin\/webscr\" method=\"post\" target=\"_blank\" ><input type=\"hidden\" name=\"business\" value=\"donacion@rogerbit.com\"><input type=\"hidden\" name=\"bn\" value=\"mbjtechnolabs_SP\"><input type=\"hidden\" name=\"cmd\" value=\"_donations\"><input type=\"hidden\" name=\"item_name\" value=\"Ayuda a RogerBit.com\"><input type=\"hidden\" name=\"item_number\" value=\"www.rogerbit.com\"><input type=\"hidden\" class=\"set_donation_button_amount\" name=\"amount\" value=\"1\"><table ><tbody><tr><td><label for=\"rogerBit necesita de tu ayuda para seguir existiendo :-)\">rogerBit necesita de tu ayuda para seguir existiendo :-)<\/label><\/td><\/tr><\/tbody><\/table><table ><tbody><tr><td><input style=\"margin-top:10px;\" type=\"image\" name=\"submit\" border=\"0\" src=\"https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif\" alt=\"PayPal - The safer, easier way to pay online\"><\/td><\/tr><\/tbody><\/table><input type=\"hidden\" name=\"currency_code\" value=\"USD\"><input type=\"hidden\" name=\"notify_url\" value=\"https:\/\/rogerbit.com\/wprb\/?Donation_Button&#038;action=ipn_handler\"><\/form><\/div>\n<hr \/>\n<p><strong>PROYECTO RECOMENDADO<\/strong><\/p>\n<p><iframe loading=\"lazy\" title=\"Alarma laser con m\u00f3dulo RFID  - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/g5atneBc-To?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n En este proyecto, aprender\u00e1s a crear un medidor de temperatura utilizando un sensor DS18B20 y un display de 7 segmentos TM1637, controlados por una placa Arduino. El display mostrar\u00e1 la temperatura en grados Celsius, incluyendo la precisi\u00f3n decimal y el signo negativo si la temperatura baja de cero. Materiales Necesarios 1x Arduino mini pro\u00a0(o [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":7819,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[45,2037,29,1354,1308,624,2038,2034,917,457,2035,2036,2033,2017],"_links":{"self":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7816"}],"collection":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/comments?post=7816"}],"version-history":[{"count":1,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7816\/revisions"}],"predecessor-version":[{"id":7820,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7816\/revisions\/7820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media\/7819"}],"wp:attachment":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media?parent=7816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/categories?post=7816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/tags?post=7816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}