Me pueden ayudar a resolver este problema por favor. Seguí muy bien esta guía y la pt100 que estoy utilizando es de 3 hilos: Overview | Adafruit MAX31865 RTD PT100 or PT1000 Amplifier | Adafruit Learning System.
Por favor edita tu post y adjunta el código de acuerdo a las Normas del Foro en Español, punto 7. También usa la opción "Autoformato" del menú "Herramientas" de la IDE antes de copiar el código así nos facilitas su lectura.
¿Has probado con algún ejemplo de la librería del MAX si funciona bien?
Agrego:
En el código que se ve en la captura falta algo, y no podemos saber si solo no salió en la captura, por eso es importante ver todo el código.
Por otro lado, ¿qué temperatura debería haberse leído (aproximadamente)?
O sea, ¿cuál era la temperatura ambiente (o lo que estuvieses midiendo) en ese momento?
¿De cuantos hilos es tu sensor?
El código que estoy utilizando es este:
#include <Adafruit_MAX31865.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_MAX31865.h>
// Configuración de los pines para SPI (CS, MOSI, MISO, SCK)
Adafruit_MAX31865 max = Adafruit_MAX31865(9, 51, 50, 52);
// Valor de la resistencia de referencia (430.0 ohms para el MAX31865)
#define RREF 430.0
#define NUM_SAMPLES 10 // Número de lecturas para promediar
// Ajuste de calibración (corrige lecturas desviadas)
#define CALIBRATION_OFFSET 0.0 // Cambia este valor según tus pruebas
void setup() {
Serial.begin(9600); // Inicializa la comunicación serial
Serial.println("Lectura de temperatura con MAX31865 y Pt100");
// Inicializa el MAX31865 en modo de hilos correctos (ajusta según tu configuración)
max.begin(MAX31865_3WIRE); // Cambia a 2WIRE, 3WIRE, o 4WIRE según el tipo de sensor
}
void loop() {
float totalTemperature = 0.0;
// Promedia múltiples lecturas para mayor estabilidad
for (int i = 0; i < NUM_SAMPLES; i++) {
float temperature = max.temperature(100, RREF); // Calcula la temperatura
totalTemperature += temperature;
delay(100); // Pequeña espera entre lecturas para estabilizar
}
float averageTemperature = totalTemperature / NUM_SAMPLES;
// Aplica el ajuste de calibración
averageTemperature += CALIBRATION_OFFSET;
// Imprime solo la temperatura en el monitor serie
Serial.print("Temperatura: ");
Serial.print(averageTemperature, 2); // Muestra la temperatura con dos decimales
Serial.println(" °C");
delay(200); // Espera 2 segundos antes de hacer el siguiente ciclo de promedio
}
El sensor o termorresistencia PT100 es de 3 hilos y estoy utilizando un MAX31865
Si ya usé la librería de MAX y tampoco funciona
Usando la librería de MAX me sale esto:
Hi,
Adjunto un link de adafruit donde explican paso por paso como alambrar el sensor de PT100 de 2,3,4 cables y el code que debes de usar.
[Overview | Adafruit MAX31865 RTD PT100 or PT1000 Amplifier | Adafruit Learning System]
Gracias, si ya seguí ese procedimiento, tomando en cuenta que el mío es de 3 hilos. este es mi cableado: [C:\Users\blanc\Downloads\Imagen de WhatsApp 2024-10-04 a las 10.14.01_10909ec6.jpg](https://C:\Users\blanc\Downloads\Imagen de WhatsApp 2024-10-04 a las 10.14.01_10909ec6.jpg)
Hi,
Modificaste los jumper para el probe de 3 cables como indican en la foto.
Instruciones pa los jumpers: Otra cosa lo alambrastes como indica la foto.
"You will have to cut the thin trace in between the 2-way jumper on the right side of the board, and then solder closed the blob on the right side."
Si, ya. Solo que las puntas de los hilos que yo tengo no tienen esas puntas de alambre. Pero si conecté el blanco al RTD- y los 2 rojos al RTD +. Después hago las conexiones directas a un Arduino Mega. Al parecer también se le incluye un condensador cerámico, eso incluye en mis resultados ? ya que yo no lo incluí en mis conexiones...
Hi,
No mencionas que hicistes con los jumpers que senalan las dos flechas amarilla.. Tienes que cortar el de la izquirda y soldar el de la derecha.
Moderador:
Por favor, lee las Normas del foro y publica/edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado/editado, lo cortas y click en (<CODE/>
)
Para la próxima, siempre postea tu código, nada de capturas como hiciste en el primer post.
Edita el post#4 como indican las normas.
No sigas respondiendo sin hacerlo, okay!!
No lo repetiré.
#include <Adafruit_MAX31865.h>
// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(9, 51, 50, 52);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);
// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF 430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL 100.0
void setup() {
Serial.begin(115200);
Serial.println("Adafruit MAX31865 PT100 Sensor Test!");
thermo.begin(MAX31865_3WIRE); // set to 2WIRE or 4WIRE as necessary
}
void loop() {
uint16_t rtd = thermo.readRTD();
Serial.print("RTD value: "); Serial.println(rtd);
float ratio = rtd;
ratio /= 32768;
Serial.print("Ratio = "); Serial.println(ratio,8);
Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
Serial.print("Temperature = "); Serial.println(thermo.temperature(RNOMINAL, RREF));
// Check and print any faults
uint8_t fault = thermo.readFault();
if (fault) {
Serial.print("Fault 0x"); Serial.println(fault, HEX);
if (fault & MAX31865_FAULT_HIGHTHRESH) {
Serial.println("RTD High Threshold");
}
if (fault & MAX31865_FAULT_LOWTHRESH) {
Serial.println("RTD Low Threshold");
}
if (fault & MAX31865_FAULT_REFINLOW) {
Serial.println("REFIN- > 0.85 x Bias");
}
if (fault & MAX31865_FAULT_REFINHIGH) {
Serial.println("REFIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_RTDINLOW) {
Serial.println("RTDIN- < 0.85 x Bias - FORCE- open");
}
if (fault & MAX31865_FAULT_OVUV) {
Serial.println("Under/Over voltage");
}
thermo.clearFault();
}
Serial.println();
delay(1000);
}
Hey there.
We two have to same problem as I can see. Try my trouble shooting steps. Maybe it works for you!
Greetings, Anabol
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.