(Resolved) Troubles with max31865 (overvoltage/undervoltage)

I’m struggling with getting a max31865 sensor working and hoping someone can help out. I have confirmed that a direct arduino example sketch works on this hardware:

/*************************************************** 
  This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(25, 23, 19, 18);
// 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);
}

Here’s my esphome code:

esphome:
  name: brewery-controller
  friendly_name: Brewery Controller
  on_boot:
    priority: 600
    then:



esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:



# Enable Home Assistant API
api:
  encryption:
    key: "###################"

ota:
  password: "##############"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Brewery-Controller"
    password: "###########"


captive_portal:

    
spi:
  clk_pin: 18
  mosi_pin: 23 #SDI on peripheral
  miso_pin: 19 #SDO on peripheral
  force_sw: True


sensor:
  - platform: max31865
    name: "HLT Temp"
    id: hlt_temp
    cs_pin: 25
    reference_resistance: "430 Ω"
    rtd_nominal_resistance: "100 Ω"
    update_interval: 5s
    unit_of_measurement: "°C"
    rtd_wires: 3
  

The output I see from the esphome log is:

[13:23:58][E][max31865:109]: Overvoltage/undervoltage fault
[13:23:58][E][max31865:112]: RTDIN- < 0.85 x V_BIAS (FORCE- open)
[13:23:58][E][max31865:118]: REFIN- > 0.85 x V_BIAS
[13:23:58][D][sensor:094]: 'HLT Temp': Sending state nan °C with 2 decimals of accuracy

Is there anybody that can help me troubleshoot this? I’m really not sure where to go from here. It works in arduino but not in esphome.

Update: this had to do with how I powered the ESP32. For some reason, powering via the dev board it’s plugged into caused this issue, but powering via USB worked fine.

Hey, i got the same issue trying to run it on an ESP8266 D1_mini. Tried everything and gave up. I want to test it with an ESP32 Wroom before i throw them into the trash, so i installed it the same way like on the D1_mini (of course changed the GPIO pins). And have a look: first try it works.

I have 3 Max31865 Sensors and all three had the same problems/solutions. So Maybe try an other ESP