Programa de lectura de un termistor y visualizar su valor en un lcd 16x2. Mediante un teclado matricial 4x4 se ingresa un valor de 3 dígitos para su uso futuro como setpoint de temperatura.
Dependencies: mbed PID KeypadLib TextLCD
Lectura de temperatura mediante un termistor NTC y visualizacion en LCD 16X2
Objetivo general: El objetivo es medir la temperatura ambiente y visualizarla en un display de 16x2. Se usará un teclado matricial para el ingreso de un valor de 3 dígitos, este valor de 3 dígitos podrá ser usado a futuro como setpoint de temperatura objetivo.
Los periféricos que se han implementado son:
- Teclado Matricial 4x4
- Lcd 16x2
- Termistor NTC 100kOhm. >STM32T407G
Teclado Matricial: El teclado alfanumérico usado es de 4 filas x 4 columnas. Su pinout se muestra en la siguiente gráfica:
De izquierda a derecha tenemos Filas (4hilos) y columnas (los ultimos4 hilos). Es decir: F1, F2, F3, F4, C1, C2, C3, C4.
La librería usada es: _KeypadLib_.
Lcd 16x2: El display utilizado es de 16x2 con backlight el cual trabaja con la librería TextLCD.
A continuación, el pinout del lcd:
GND: se conecta a GND de la tarjeta STM32
VCC: se conectar a +5Vcc
Contraste: se conecta una resistencia de 1[Kohm] a tierra.
Rs: se conecta a un pin de la tarjeta STM32
RW: se conecta a GND de la tarjeta STM32
EN: se conecta a un pin de la tarjeta STM32
D4 a D7: se conectan a los pines de la tarjeta STM32
Backlight(+): se conectar a +5Vcc
Backlight(-): se conecta una resistencia de 330[Ohm].
_Nota:_ Mas adelante se mostrarán las conexiones de todos los dispositivos.
Termistor NTC 100kOhm: Se ha utilizado un termistor NTC para la medición de la temperatura. Este sensor decrementa la resistencia entre sus terminales a medida que la temperatura sube. Este sensor no trabaja con una librería específica, pero si es necesario incluir la librería _<math.h>_ ya que es necesario realizar cálculos logarítmicos en el código.
Para realizar la lectura del sensor, es necesario conocer previamente varios aspectos técnicos del mismo, los cuales son: Raux: resistencia en serie conectada al terminador. Típicamente, deberá ser del mismo valor del termistor.
Beta; resistencia característica del material.
To: Temperatura en grados Kelvin (25C= 298k).
Ro: Valor de resistencia en To.
Todos los parámetros provienen de la hoja de datos del sensor
El termistor es una resistencia variable en base a la temperatura, por lo tanto, se usa un divisor de voltaje para lograr la medición de la temperatura.
Nota: R100k será nuestra resistencia auxiliar Raux que se usará para el cálculo. Cálculos a realizar para obtener la temperatura en grados centígrados:
1.- Medición del voltaje que llega al canal analógico del microcontrolador. Este voltaje debe oscilar entre 0.1 y 3.3 Vcc. El uC lo interpretará como un valor desde 0.1 a 1 el cual luego se tendrá que manipular para convertirlo a milivoltios.
En el uC, se calcula mediante la declaración: vm=ain; vm*=3,3; Siendo Ain, pin analógico PC_5 y vm una variable tipo float para guardar el valor analógico y posterior convertirlo a voltaje al multiplicarlo *3,3.
2.- Calcular la resistencia del del termistor “Rntc” partiendo de la fórmula del divisor de tensión.
Vout=Vin*(Raux/(Rntc+Raux))
Despejando Rntc tendremos:
Rntc=((Raux*Vin)/Vm)-Raux
Siendo: Vm: el valor en milivoltios calculado en el punto 1. Vin: el voltaje de alimentación del divisor de tensión. Raux: la resistencia en serie con el termistor.
3.- Calcular la temperatura del termistor usando la fórmula:
TemperaturaK=(Beta/(log(Rntc/Ro)+(Beta/To) ))-273
Formula Steinhart–Hart
STM32T407G.- tarjeta de entrenamiento
Conexiones:
En la siguiente gráfica se muestran las interconexiones realizadas:
Diagrama de conexiones hechas:
Nota: Rvar, se usa para ajustar el valor de la Raux a exactamente 100.000[Kohm]. Imágenes:
- Conexión del termistor
- Conexión del lcd Temperatura medida: 29Grados C.
Link: https://youtu.be/DDGYvQzlm0Y _ ya que es necesario realizar cálculos logarítmicos en el código.
Para realizar la lectura del sensor, es necesario conocer previamente varios aspectos técnicos del mismo, los cuales son: Raux: resistencia en serie conectada al termistor. Típicamente, deberá ser del mismo valor del termistor. Beta; resistencia característica del material. To: Temperatura en grados Kelvin (25C= 298k). Ro: Valor de resistencia en To.
Todos los parámetros provienen de la hoja de datos del sensor
El termistor es una resistencia variable en base a la temperatura, por lo tanto, se usa un divisor de voltaje para lograr la medición de la temperatura.
Nota: R100k será nuestra resistencia auxiliar Raux que se usará para el cálculo. Cálculos a realizar para obtener la temperatura en grados centígrados:
1.- Medición del voltaje que llega al canal analógico del microcontrolador. Este voltaje debe oscilar entre 0.1 y 3.3 Vcc. El uC lo interpretará como un valor desde 0.1 a 1 el cual luego se tendrá que manipular para convertirlo a milivoltios.
En el uC, se calcula mediante la declaración: vm=ain; vm*=3,3; Siendo Ain, pin analógico PC_5 y vm una variable tipo float para guardar el valor analógico y posterior convertirlo a voltaje al multiplicarlo *3,3.
2.- Calcular la resistencia del del termistor “Rntc” partiendo de la fórmula del divisor de tensión.
Vout=Vin*(Raux/(Rntc+Raux))
Despejando Rntc tendremos:
Rntc=((Raux*Vin)/Vm)-Raux
Siendo: Vm: el valor en milivoltios calculado en el punto 1. Vin: el voltaje de alimentación del divisor de tensión. Raux: la resistencia en serie con el termistor.
3.- Calcular la temperatura del termistor usando la fórmula:
TemperaturaK=(Beta/(log(Rntc/Ro)+(Beta/To) ))-273
Formula Steinhart–Hart
STM32T407G.- tarjeta de entrenamiento
Conexiones:
En la siguiente gráfica se muestran las interconexiones realizadas:
Diagrama de conexiones hechas:
Nota: Rvar, se usa para ajustar el valor de la Raux a exactamente 100.000[Kohm]. Imágenes:
- Conexión del termistor
- Conexión del lcd Temperatura medida: 29Grados C.