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:

https://os.mbed.com/media/uploads/mvillamar/keypad.png

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:

https://os.mbed.com/media/uploads/mvillamar/lcd-16x2-pinout.png

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

https://os.mbed.com/media/uploads/mvillamar/termistor-ntc-100k-impresora-3d-prusa-thermistor-con-ficha-d_nq_np_731869-mla31929302945_082019-f.jpg

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.

https://os.mbed.com/media/uploads/mvillamar/conexion-termistor-ntc.jpg

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

https://os.mbed.com/media/uploads/mvillamar/discovery.jpg

Conexiones:

En la siguiente gráfica se muestran las interconexiones realizadas: https://os.mbed.com/media/uploads/mvillamar/foto_general_-_copia.jpg

Diagrama de conexiones hechas:

https://os.mbed.com/media/uploads/mvillamar/conxiones.jpg

Nota: Rvar, se usa para ajustar el valor de la Raux a exactamente 100.000[Kohm]. Imágenes:

  • Conexión del termistor

https://os.mbed.com/media/uploads/mvillamar/img_20200215_033158_-_copia.jpg

  • Conexión del lcd Temperatura medida: 29Grados C. https://os.mbed.com/media/uploads/mvillamar/temp.jpg

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

https://os.mbed.com/media/uploads/mvillamar/termistor-ntc-100k-impresora-3d-prusa-thermistor-con-ficha-d_nq_np_731869-mla31929302945_082019-f.jpg

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.

https://os.mbed.com/media/uploads/mvillamar/conexion-termistor-ntc.jpg

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

https://os.mbed.com/media/uploads/mvillamar/discovery.jpg

Conexiones:

En la siguiente gráfica se muestran las interconexiones realizadas: https://os.mbed.com/media/uploads/mvillamar/foto_general_-_copia.jpg

Diagrama de conexiones hechas:

https://os.mbed.com/media/uploads/mvillamar/conxiones.jpg

Nota: Rvar, se usa para ajustar el valor de la Raux a exactamente 100.000[Kohm]. Imágenes:

  • Conexión del termistor

https://os.mbed.com/media/uploads/mvillamar/img_20200215_033158_-_copia.jpg

  • Conexión del lcd Temperatura medida: 29Grados C. https://os.mbed.com/media/uploads/mvillamar/temp.jpg

Link: https://youtu.be/DDGYvQzlm0Y