Informe de Práctica 2
Medición de Temperatura usando un RTD, Sensor
Digital y un Microcontrolador
Estudiantes:
Ivan Rodrigo Encinas Mercado
Emanuel Rodrigo Quisbert Escobar
Materia: LMEC-356
Docente: Dr. Ing. Álvaro Montaño Saavedra
1. Objetivos
Comprender el funcionamiento de un sensor de temperatura RTD.
Realizar la medición de temperatura con un sensor digital y un microcontrolador.
Implementar un sistema de medición de temperatura usando un sensor PT100 y un
microcontrolador.
2. Habilidades Desarrolladas
Simular y montar sistemas de medición de temperatura.
Manejar sensores RTD y digitales con microcontroladores.
Implementar acondicionamiento de señal y calibración de sensores.
3. Desarrollo de la Práctica
Parte 1: Corriente de Norton
Se armó el circuito de la Figura 1 (convertidor V-I). Se midió la corriente de cortocircuito
conectando un amperı́metro entre los nodos de salida. Captura de circuito: ver Figura 1.
1
Práctica 2 LMEC-356
Figura 1: Circuito convertidor voltaje a corriente (Figura 1)
Tabla 1:
Parámetro Valor Medido Esperado Diferencia ( %)
Corriente de Norton (mA) 0.5 mA 1.15 mA 21.73
Voltaje máximo de operación (V) 3.739 V 3.46 V 2.34
Parte 2: Voltaje de operación
Se usó un potenciómetro para variar la carga. Se midió el voltaje cuando la corriente
empezó a desviarse del valor ideal.
Parte 3: Amplificador
Se agregó un amplificador operacional. Se midieron V1 y V2 para calcular la ganancia.
Captura de circuito: ver Figura 2.
2
Práctica 2 LMEC-356
Figura 2: Circuito amplificador (Figura 3)
Tabla 2:
V1 (V) V2 (V) Ganancia Medida Esperada Diferencia ( %)
0.147 V 3.6 V 24.989 26.733 8.39
Parte 4: RTD con uC
El PT100 fue integrado en un divisor resistivo. El voltaje fue amplificado y leı́do por el
microcontrolador.
Coeficientes Callendar-Van Dusen:
A (EU): 3,90802 × 10−3 B (EU): −5,80195 × 10−7
A (US): 3,97840 × 10−3 B (US): −5,8408 × 10−7
Parte 5: Sensor Digital DS18B20
Se conectó el sensor al uC. Se verificó la lectura con OneWire. Captura de simula-
ción/circuito fı́sico: ver Figura 9.
3
Práctica 2 LMEC-356
Figura 3: Conexión del DS18B20 al microcontrolador
Figura 4: Implementacion del DS18B20
4
Práctica 2 LMEC-356
Figura 5: Resultados de temperatura
Código En python
1 from machine import Pin
2 import onewire
3 import ds18x20
4 from time import sleep
5
6 # Pin de datos del sensor DS18B20
7 pin_ds = Pin (2)
8 ow = onewire . OneWire ( pin_ds )
9 ds = ds18x20 . DS18X20 ( ow )
10
11 # Escanear sensores conectados
12 roms = ds . scan ()
13 if not roms :
14 print ( " No ␣ se ␣ e n c o n t r ␣ n i n g n ␣ sensor ␣ DS18B20 . " )
15 else :
16 print ( " Sensor ␣ encontrado : " , roms [0])
17
18 # Bucle principal
19 while True :
20 try :
21 ds . convert_temp ()
22 sleep (0.75)
23 temp = ds . read_temp ( roms [0])
24 print ( " Temperatura : ␣ {:.2 f } ␣ C " . format ( temp ) )
25 sleep (1)
26 except Exception as e :
27 print ( " Error : " , e )
5
Práctica 2 LMEC-356
28 break
Explicación del código
Parte 6: Calibración del RTD
Se compararon lecturas del RTD frente al DS18B20. Se ajustó el código o ganancia del
circuito. Explicación: Para llenar la tabla 4 se registraron al menos tres temperaturas con
ambos sensores. Las diferencias fueron calculadas, y se aplicó un ajuste lineal a la ecuación
del RTD (ganancia o compensación). Este ajuste fue verificado en nuevas mediciones.
Tabla 4:
Temp. RTD (°C) Temp. Patrón (°C) Diferencia (°C) Error ( %) Ajuste Aplicado
18.69 19.13 1.55 2.3 3.908*e-3 ; -5.77*e-7
4.72 2.06 2.64 129.13 3.00*e-3 ; -5.00*e-7
25.06 29.05 4.01 13.79 3.700*e-3 ; -5.500*e-7
Figura 6: Simulacion pt100
6
Práctica 2 LMEC-356
Figura 7: Implementacion pt100
Figura 8: Resultados de temperatura
4. Programa Arduino y Explicación
Código Arduino
1 float corriente = 1.001; // Corriente en amperios
2 float ganancia = 10.09; // Ganancia del amplificador
3 unsigned long tiempo = 0; // Tiempo para control de muestreo
4 int muestreo = 100; // Intervalo de muestreo en
milisegundos
7
Práctica 2 LMEC-356
5 int ADC_ = 0; // Variable para el valor de ADC
6 float voltref = 5.0; // Voltaje de referencia (5 V para
Arduino )
7 float voltaje , resistencia , temperatura , temp2 , temp3 ;
8 float A = 3.9083 e -3; // Coeficiente A
9 float B = -5.775 e -7; // Coeficiente B
10
11
12
13 void setup () {
14 // I n i c i a l i z a c i n del puerto serie
15 Serial . begin (9600) ;
16 pinMode ( LED_BUILTIN , OUTPUT ) ;
17 }
18
19 void loop () {
20 if ( millis () > ( muestreo + tiempo ) ) {
21 tiempo = tiempo + muestreo ;
22
23 // Leer el valor del ADC
24 ADC_ = analogRead ( A0 ) ;
25
26 // Convertir el valor del ADC a voltaje
27 voltaje = ADC_ * voltref / 1023.0;
28
29 // Calcular la resistencia del PT100
30 resistencia = ( voltaje / ( corriente * ganancia ) ) * 1000;
31
32 // Calcular la temperatura usando la f r m u l a PT100
33 // A s e g r a t e de que la resistencia e s t en el rango adecuado
34 if ( resistencia > 0 && resistencia < 1000) {
35 // F r m u l a de temperatura ( simplificada )
36 temperatura = ( resistencia - 100.0) / ( A + B * sqrt (
resistencia ) ) /100;
37
38 temp2 = ADC_ ;
39
40
41
42 } else {
43 temperatura = -999; // Valor no v l i d o si la resistencia es
incorrecta
44 }
45 // Mostrar la temperatura calculada
46 Serial . println ( temp2 , temperatura ) ;
47
48 }
49
8
Práctica 2 LMEC-356
50 if ( temp3 < 15) {
51 digitalWrite ( LED_BUILTIN , HIGH ) ;
52 delay (50) ;
53 }
54 digitalWrite ( LED_BUILTIN , LOW ) ;
55
56 }
Explicación del código
Se mide voltaje del divisor resistivo con RTD.
Se calcula la resistencia del RTD y, con la fórmula inversa, se obtiene la temperatura.
Se imprime el valor en el monitor serial.
5. Cuestionario
a) Principio de Funcionamiento de un Sensor RTD
Un RTD (Resistance Temperature Detector) funciona basado en el principio de
que la resistencia eléctrica de ciertos metales (como platino, nı́quel o cobre) varı́a de manera
lineal y predecible con la temperatura. La relación está dada por:
R(T ) = R0 [1 + α(T − T0 )]
donde:
R(T ): Resistencia a temperatura T .
R0 : Resistencia a temperatura de referencia T0 (usualmente 0°C).
α: Coeficiente de temperatura del material (Ω/Ω/C).
b) Caracterı́sticas de Sensores PT100 y PT1000
Caracterı́stica PT100 PT1000
Resistencia a 0°C 100 Ω 1000 Ω
Sensibilidad (α) 0.00385 Ω/Ω/C 0.00385 Ω/Ω/C
Rango tı́pico -200°C a 850°C -200°C a 850°C
Precisión ±0,1C a 0°C ±0,1C a 0°C
Aplicaciones Industria, laboratorios Baja potencia, IoT
9
Práctica 2 LMEC-356
c) Uso de PT100 según Número de Hilos
2 hilos: Para aplicaciones donde la precisión no es crı́tica (error por resistencia de
cables).
Ejemplo: Termostatos residenciales.
3 hilos: Compensa la resistencia de los cables. Usado en industria.
Ejemplo: Control de motores.
4 hilos: Máxima precisión (elimina errores por resistencia de cables).
Ejemplo: Calibración de equipos médicos.
d) Cálculo de Sensibilidad y Coeficiente a 70°C
Datos:
R0 = 100 Ω, α = 0,00389 Ω/Ω/K a 0°C
1. Sensibilidad (S): Derivada de R(T ):
dR
S= = R0 α = 100 × 0,00389 = 0,389 Ω/C
dT
2. Coeficiente a 70°C: Para platino, α es constante en este rango.
⇒ α70C = 0,00389 Ω/Ω/K .
e) Programa para Graficar Temperatura con RTD
#include <Arduino.h>
#include <math.h>
#include <SD.h>
#define RTD_PIN A0
#define R0 100.0
#define ALPHA 0.00389
void setup() {
Serial.begin(9600);
pinMode(RTD_PIN, INPUT);
}
void loop() {
float Vout = analogRead(RTD_PIN) * 5.0 / 1023.0;
float R = (5.0 * 1000.0 / Vout) - 1000.0; // Puente de Wheatstone
float T = (R - R0) / (R0 * ALPHA); // Ecuación RTD
10
Práctica 2 LMEC-356
Serial.print("Temperatura: "); Serial.print(T); Serial.println(" °C");
delay(1000);
}
Salida: Gráfica T vs t en Python con matplotlib.
f ) Aplicación Práctica: Alarma por Sobretemperatura
Objetivo: Activar un ventilador si T > 50C.
Circuito:
1. RTD (PT100) conectado a puente de Wheatstone.
2. Amplificador de instrumentación para señal.
3. Microcontrolador (Arduino) compara T con umbral.
4. Relay activa ventilador si Tmedida > Tumbral .
Código:
if (T > 50) {
digitalWrite(RELAY_PIN, HIGH); // Enciende ventilador
} else {
digitalWrite(RELAY_PIN, LOW);
}
Figura 9: Implementacion de motor con pt100 y 18d20
11
Práctica 2 LMEC-356
6. Conclusiones
El RTD proporciona una medición precisa pero requiere acondicionamiento.
El DS18B20 es fácil de usar y sirve como sensor patrón.
La calibración mejora notablemente la precisión del RTD.
7. Resolución y Observaciones
Resolución de lectura: ADC de 10 bits = 4.88mV por nivel.
Se recomienda filtrar señal con promedio móvil o filtro digital.
8. Referencias
Omega Engineering, RTD Handbook, www.omega.com
Texas Instruments, Op Amp Applications Guide
Arduino.cc, Analog Read and Serial Communication
Maxim Integrated, DS18B20 Datasheet
LMEC-356 - Guı́a de Práctica 2, Dr. Ing. Álvaro Montaño Saavedra
9. Anexos
Hoja de datos firmada (adjunta escaneada en el archivo .zip)
Simulaciones de Proteus
Código .ino original
12