Saltar al contenido

Termómetro digital con Arduino

julio 10, 2021
FDTET14JDUKGUM8

Como la mayoría de los amantes de los microcontroladores, también hice mi primer intento de desarrollar un termómetro simple que mida la temperatura ambiente. Generalmente, los termómetros de habitación muestran la temperatura en dos dígitos con una resolución de 1 grado Celsius. En tal diseño, se utilizan dos 7 segmentos, donde las líneas de datos para ambas pantallas de 7 segmentos son las mismas y cambiarlas rápidamente una tras otra (teóricamente, más de 16 veces por segundo) permite percibir que ambas están ENCENDIDAS simultáneamente debido a la persistencia de la visión.

Lo que hace que mi diseño sea diferente es que solo se usa una pantalla de 7 segmentos. Primero mostrará el dígito del décimo lugar y luego el dígito del lugar de la unidad. La misma información se transmite de forma rentable, compacta e inteligente. Esto puede no parecer una innovación para muchos, pero marca mi primer diseño innovador.

Paso 1: componentes necesarios

Componentes requeridosComponentes requeridosComponentes requeridosComponentes requeridos

Mi diseño requiere esencialmente los siguientes componentes:

1. Placa Arduino

2. Sensor de temperatura LM35

3. Una pantalla de 7 segmentos

4. Tabla de pan

5. Conexión de cables

6. Fuente de alimentación / batería

Paso 2: ¿Cómo funciona … ????

Como funciona...????Como funciona...????

Para medir la temperatura, estoy usando un sensor de fácil acceso, LM35. Aquí, le recordaré las ventajas de usar LM35.

La serie LM35 son dispositivos de temperatura de circuito integrado de precisión con un voltaje de salida linealmente proporcional a la temperatura en grados centígrados. El dispositivo LM35 tiene una ventaja sobre los sensores de temperatura lineales calibrados en Kelvin, porque no se requiere que el usuario reste un voltaje constante grande de la salida para obtener una escala de grados centígrados conveniente. El dispositivo LM35 no requiere ninguna calibración o recorte externo para proporcionar precisiones típicas de ± ¼ ° C a temperatura ambiente y ± ¾ ° C en un rango de temperatura completo de −55 ° C a 150 ° C. El menor costo está asegurado mediante el recorte y la calibración a nivel de oblea. La impedancia de salida baja, la salida lineal y la calibración inherente precisa del dispositivo LM35 hacen que la interfaz con los circuitos de control o lectura sea especialmente fácil. El dispositivo se utiliza con fuentes de alimentación únicas o con fuentes positivas y negativas. Como el dispositivo LM35 extrae solo 60 µA del suministro, tiene un autocalentamiento muy bajo de menos de 0,1 ° C en aire en calma. El dispositivo LM35 está clasificado para funcionar en un rango de temperatura de −55 ° C a 150 ° C, mientras que el dispositivo LM35C está clasificado para un rango de −40 ° C a 110 ° C (−10 ° con mayor precisión). Los dispositivos de la serie LM35 están disponibles empaquetados en paquetes de transistores TO herméticos, mientras que los dispositivos LM35C, LM35CA y LM35D están disponibles en paquetes de transistores TO-92 de plástico. El dispositivo LM35D está disponible en un paquete de contorno pequeño de montaje en superficie de 8 derivaciones y en un paquete de plástico TO-220.

  • Calibrado directamente en grados Celsius (centígrados)
  • Factor de escala lineal + 10 mV / ° C
  • Precisión garantizada de 0,5 ° C (a 25 ° C)
  • Clasificado para rango completo de −55 ° C a 150 ° C
  • Adecuado para aplicaciones remotas
  • Bajo costo debido al recorte a nivel de oblea
  • Opera de 4 V a 30 V
  • Drenaje de corriente inferior a 60 µA
  • Autocalentamiento bajo, 0,08 ° C en aire en calma
  • Solo no linealidad ± ¼ ° C Típico
  • Salida de baja impedancia, 0,1 Ω para carga de 1 mA

La salida de LM35 se puede conectar directamente a cualquier pin de entrada analógica de Arduino. En el ejemplo, lo he conectado al pin A2. Como se explicó anteriormente, LM35 tiene una sensibilidad de 10 mV / Celsius, por lo tanto, simplemente tengo que multiplicar 100 a la salida de LM35 para obtener la temperatura en grados Celsius.

Ahora, para leer la entrada analógica usando Arduino he usado

analogRead ()

Pero en el caso de UNO, M328p es el microcontrolador utilizado y tiene 6 canales analógicos con ADC de 10 bits.

Esto significa que mapeará voltajes de entrada entre 0 y 5 voltios en valores enteros entre 0 y 1023. Esto produce una resolución entre lecturas de: 5 voltios / 1024 unidades o 0,0049 voltios (4,9 mV) por unidad.

Entonces, la función de transferencia será así:

0 ———> 5 V

0 ———-> 1023

Matemáticamente,

5 * y = 1023 * x

El voltaje de entrada en ADC es x = (5/1023) * y Voltios (donde y es la salida de la instrucción analogRead ())

Para convertir a grados Celsius, multiplique por 100.

Mostrar la temperatura en 7 segmentos es tan fácil como arrancar una flor, pero mostrarla en un segmento de 7 requiere un pensamiento innovador. Para eso, tuve que dividir el décimo y el primer dígito como se muestra en el código a continuación:


temp = analogRead (tempPin); // Salida de lectura de TM35 conectada a A2 de Adruino
temp = temp * 0,48828125; // Conversión de la lectura a grados celsius

Serial.print (temp);

a = temp / 10; // obteniendo el décimo dígito del lugar

b = temp% 10; // obtener el dígito del lugar de uno

Num_Write_segment (a); // mostrando el dígito del décimo lugar primero

retraso (500); // retraso de 500ms

Num_Write_segment (b); // mostrando el dígito del lugar de uno

retraso (500); // retraso de 500ms

Num_Write_segment (10); // La pantalla de 7 segmentos se apaga durante 5 segundos

retraso (5000);

Paso 3: Ponerse a trabajar … 🙂

Ponerse a trabajar ... :)Ponerse a trabajar ... :)Ponerse a trabajar ... :)Ponerse a trabajar ... :)Ponerse a trabajar ... :)Ponerse a trabajar ... :)

Ahora es el momento de poner en práctica las ideas y los códigos. He adjuntado imágenes de la forma en que he dispuesto los componentes, pero puede utilizar su propia configuración. Asegúrese de que las conexiones sean según el esquema de fritzing dado en el último paso.

Paso 4: ¿Terminaste con la configuración? Tengo el CÓDIGO para ti … 🙂

Compartir me da esa felicidad interior y con la tecnología digital, lo encuentro muy fácil. Por lo tanto, estoy compartiendo el código que he creado con ustedes. Puede usar el código de la manera que desee, pero no olvide mostrar cortesía a través de las citas adecuadas.

###################################################################################################################################################################################################################################################################################################### #########################################

// By Vikas Padmanabharu
int seven_num_array[11][7] = { { 1,1,1,1,1,1,0 }, // 0 { 0,1,1,0,0,0,0 }, // 1 { 1,1,0,1,1,0,1 }, // 2 { 1,1,1,1,0,0,1 }, // 3 { 0,1,1,0,0,1,1 }, // 4 { 1,0,1,1,0,1,1 }, // 5 { 1,0,1,1,1,1,1 }, // 6 { 1,1,1,0,0,0,0 }, // 7 { 1,1,1,1,1,1,1 }, // 8 { 1,1,1,0,0,1,1 }, // 9 { 0,0,0,0,0,0,0 }, // nothing }; int a=0,b=0; int temp; int tempPin = A2; //function header void Num_Write_segment(int); void setup() { // set pin modes pinMode(A2, INPUT); // tm35 o/p is connected to this pin pinMode(2, OUTPUT); // pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); Serial.begin(9600); } void loop() { temp = analogRead(tempPin); //Reading output from TM35 connected to A2 of Adruino temp = temp * 0.48828125; //Converting the reading to Degree celsius Serial.print(temp); a=temp/10; // getting 10th place digit b=temp%10; // getting one's place digit Num_Write_segment(a); //displaying 10th place digit first delay(500); // delay of 500ms Num_Write_segment(b); // displaying one's place digit delay(500); //delay of 500msNum_Write_segment(10); //7 segment display is turned OFF for 5 secs delay(5000);}// void Num_Write_segment(int number) { int pin= 2; for (int j=0; j < 7; j++) { digitalWrite(pin, seven_num_array[number][j]); pin++; } }

###################################################################################################################################################################################################################################################################################################### ##############################################

Paso 5: ¿Por qué esperar? el código está contigo. ¡¡¡Flashear!!!

Amigos, les muestro un video de cómo funciona mi termómetro. Míralo, inspírate y pruébalo por ti mismo. Para cualquier consulta, no dude en ponerse en contacto conmigo en vikpadma@gmail.com.

Como nota final, me gustaría agregar el dicho popular de Richard Feynman:

“Lo que no puedo crear, no lo entiendo”

Sé el primero en compartir

    Comentarios

    close