Autor Tema: max6675 con pic simulator ide  (Leído 1024 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado WALTER ALEJANDRO

  • PIC12
  • **
  • Mensajes: 61
max6675 con pic simulator ide
« en: 15 de Enero de 2023, 15:54:06 »
hola,quisiera saber si alguieen encuentra xq no me funciona la lectura de temperatura
este es el codigo
#define CONFIG = 0x3f50

AllDigital

TRISA = 0
TRISB = 0
TRISB.3 = 1
Define SPI_CS_REG = PORTB
Define SPI_CS_BIT = 5
Define SPI_SCK_REG = PORTB
Define SPI_SCK_BIT = 4
Define SPI_SDI_REG = PORTB
Define SPI_SDI_BIT = 3
Define SPI_SDO_REG = PORTB
Define SPI_SDO_BIT = 2
'Define SPICS_INVERT = 1
Define SPICLOCK_STRETCH = 0  '0 es maxima velocidad asi son menos de 25us cada byte enviado a 4mhz
SPIPrepare

Dim mostrar As Word
Dim salida As Byte
Dim salidabaja As Byte


Define LCD_BITS = 4
Define LCD_DREG = RA
Define LCD_DBIT = 0
Define LCD_RSREG = RA
Define LCD_RSBIT = 6
Define LCD_EREG = RA
Define LCD_EBIT = 7
Define LCD_DATAUS = 100
Define LCD_COMMANDUS = 500
Define LCD_INITMS = 100

Lcdinit 0
'WaitMs 500
inicio:
Lcdcmdout LcdLine1Home
Lcdout "  ", #mostrar, "    "
Lcdcmdout LcdLine2Home
Lcdout "    ", #salidabaja, "    ", #salida
WaitMs 250
Lcdcmdout LcdClear
SPICSOn
   
   SPIReceive salidabaja  'gurardo primero los 8 de la parte baja
   SPIReceive salida  'ysigo con lla parte alta
   SPICSOff
   salida.7 = 0  'salida.7 es el bit 15 de la palabra transmitida
   salidabaja.0 = 0  'son los primeros dos bits que son ceros
   salidabaja.1 = 0
   salidabaja.2 = 0  'este indica si la termocupla esta abierta, 1 mal, 0 bien

   mostrar.LB = salidabaja
   mostrar.HB = salida
   

      mostrar = ShiftRight(mostrar, 3)'roto tres posiciones para usar solo los 12 bits de la conversion
   Goto inicio
   End
desde ya muchas gracias

Desconectado WALTER ALEJANDRO

  • PIC12
  • **
  • Mensajes: 61
Re:max6675 con pic simulator ide
« Respuesta #1 en: 16 de Enero de 2023, 15:38:54 »
bueno, por si alguien encontro algo, estaba mal la lectura de los bytes, primero lee el alto y despues el bajo
ahora tengo el problema de como linealizar la temperatura.....algua idea?
gracias

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:max6675 con pic simulator ide
« Respuesta #2 en: 16 de Enero de 2023, 16:38:17 »
bueno, por si alguien encontro algo, estaba mal la lectura de los bytes, primero lee el alto y despues el bajo
ahora tengo el problema de como linealizar la temperatura.....algua idea?
Se corrige con una tabla.   
Aunque también hay curvas polinómicas,  el NIST tiene tablas con los coeficientes (Googleá NIST thermocouple equations).  Pero no sé que grado de coincidencia tendrán con las tablas "de toda la vida", pues éstas no están hechas partiendo de mediciones grado por grado sino con puntos bastante separados que aproximan por parábolas.

La pregunta es: ¿Necesitás hacer corrección?   
En una tipo K:
- Por debajo de 150° el error es < 1°C
- Hasta 400° el error es < 3°C
- Hasta 1200° el error es < 10°C

Además, en temperaturas altas la sonda tiene sus pegas. Pues los alambres deben tener aisladores cerámicos pues los plásticos ya no van (250°C con teflón)
« Última modificación: 16 de Enero de 2023, 16:52:34 por Eduardo2 »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:max6675 con pic simulator ide
« Respuesta #3 en: 16 de Enero de 2023, 17:28:17 »
bueno, por si alguien encontro algo, estaba mal la lectura de los bytes, primero lee el alto y despues el bajo
ahora tengo el problema de como linealizar la temperatura.....algua idea?
gracias

Lo que deberías indicar que es  lo que obtienes (Curva medida) y que es lo que deseas obtener para determinar que corrección se debe aplicar.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado WALTER ALEJANDRO

  • PIC12
  • **
  • Mensajes: 61
Re:max6675 con pic simulator ide
« Respuesta #4 en: 17 de Enero de 2023, 15:22:22 »
hice lo siguiente:trabaje sin decimales, el resultado lo multiplique por 0.25 y le reste 6 grados , esos 6 grados es el offset de la medicion segun el fabricante, hice la comprobacion con una termocupla y un termometro digital y siempre me mantuvo esos 6 grados de diferencia
por lo tanto asumi que ese era el error, ahora me queda comprobarlo con temperaturas mayores a 200 grados pero para eso tendre que esperar  que alguna maquina de las que trabajo se rompa para poder instalarlo
avisare en su momento
gracias x su dedicacion y tiempo

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:max6675 con pic simulator ide
« Respuesta #5 en: 17 de Enero de 2023, 16:27:58 »
hice lo siguiente:trabaje sin decimales, el resultado lo multiplique por 0.25 y le reste 6 grados , esos 6 grados es el offset de la medicion segun el fabricante, hice la comprobacion con una termocupla y un termometro digital y siempre me mantuvo esos 6 grados de diferencia
por lo tanto asumi que ese era el error, ahora me queda comprobarlo con temperaturas mayores a 200 grados pero para eso tendre que esperar  que alguna maquina de las que trabajo se rompa para poder instalarlo
avisare en su momento
gracias x su dedicacion y tiempo

No encuentro eso del offset que mencionas del fabricante.

Lo que muestra en las hojas de datos es que el voltaje que el ADC interno del circuito integrado mide, es proporcional a la diferencia de temperatura entre la termocupla y la temperatura ambiente:



Por lo tanto para conocer la temperatura de la unión del termopar, debes conocer la temperatura ambiente, y eso suele hacerse con otro sensor, o asumir que es constante, obviamente no lo es y no considerarlo, genera un error.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:max6675 con pic simulator ide
« Respuesta #6 en: 18 de Enero de 2023, 11:00:12 »
hice lo siguiente:trabaje sin decimales, el resultado lo multiplique por 0.25 y le reste 6 grados , esos 6 grados es el offset de la medicion segun el fabricante, hice la comprobacion con una termocupla y un termometro digital y siempre me mantuvo esos 6 grados de diferencia
por lo tanto asumi que ese era el error, ahora me queda comprobarlo con temperaturas mayores a 200 grados pero para eso tendre que esperar  que alguna maquina de las que trabajo se rompa para poder instalarlo
avisare en su momento
gracias x su dedicacion y tiempo

No encuentro eso del offset que mencionas del fabricante.

Lo que muestra en las hojas de datos es que el voltaje que el ADC interno del circuito integrado mide, es proporcional a la diferencia de temperatura entre la termocupla y la temperatura ambiente:



Por lo tanto para conocer la temperatura de la unión del termopar, debes conocer la temperatura ambiente, y eso suele hacerse con otro sensor, o asumir que es constante, obviamente no lo es y no considerarlo, genera un error.

Estaba leyendo nuevamente las hojas de datos del circuito integrado, y veo que ya tiene un sensor de temperatura interno a base de un diodo (para medir la temperatura ambiente para compensar la lectura en el termo par). Así que no es necesario otro sensor.

Ahora bien, la lectura obtenida digital del ADC indica que 0 es 0 grados centígrados y 4095 es 1023.75 grados centígrados.



Por lo tanto cada bit equivale a 1023.75/4096 = 0.2499 (ese es el 0.25 que has explicado) y ese valor se debe multiplicar por el valor leído del ADC para conocer la temperatura en la termocupla. No entiendo porque necesitas sumar un desplazamiento de 6 como mencionas.


Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32