Прошу помощи с Max31865+Pt100

Тема в разделе "Arduino & Shields", создана пользователем DLS74, 15 май 2019.

  1. DLS74

    DLS74 Гик

    Добрый день!
    Прошу помощи с Max31865+Pt100(3 провода) + Iskra Nano Pro.
    Предварительно просмотрел все что можно в интернете.... здесь на форуме Амперки....
    сделал вроде так же.... но результата нет.

    Выдает вот такую ошибку:

    RTD value: 0
    Ratio = 0.00000000
    Resistance = 0.00000000
    Temperature = -242.02
    Fault 0x40
    RTD Low Threshold

    Max31865 сконфигурировал согласно статьи https://learn.adafruit.com/adafruit-max31865-rtd-pt100-amplifier?view=all

    Скетч взял готовый пример:

    Код (C++):
    /***************************************************
      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 max = Adafruit_MAX31865(4, 5, 6, 7);
    // use hardware SPI, just pass in the CS pin
    //Adafruit_MAX31865 max = 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(9600);
      Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

      max.begin(MAX31865_3WIRE);  // set to 2WIRE or 4WIRE as necessary
    }


    void loop() {
      uint16_t rtd = max.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(max.temperature(RNOMINAL, RREF));

      // Check and print any faults
      uint8_t fault = max.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");
        }
        max.clearFault();
      }
      Serial.println();
      delay(1000);
    }
    Не знаю уже куда копать......

    Если отключить Pt100 от Max31865, то выдает следующую информацию:

    RTD value: 1295
    Ratio = 0.03952026
    Resistance = 16.99371337
    Temperature = -202.95

    С уважением Дмитрий.
     
    Последнее редактирование: 15 май 2019
  2. b707

    b707 Гуру

    прочитайте прикрепленную тему и оформите сообщение правильно.
     
  3. parovoZZ

    parovoZZ Гуру

    на плате точно стоит такой резистор? Плата где куплена?

    Датчик точно PT100? Подключен правильно? Для начала не обязательно три провода подключать - можно и два. Три или даже четыре - это для длинных линий от метра.
     
  4. DLS74

    DLS74 Гик

    Визуально, да датчик pt100. Замерил сопротивление, показывал что около 112 Ом. Третий провод со вторым показывает около одного Ома.
    Pt100 куплен в интернет магазине... скорее всего китайский....
    При коммутации двух проводов, именно датчика ... сразу же выходит сообщение:
    RTD value: 0
    Ratio = 0.00000000
    Resistance = 0.00000000
    Temperature = -242.02
    Fault 0x40
    RTD Low Threshold
    Отключаю датчик (воздух на MX31865), то такое сообщение:
    RTD value: 1295
    Ratio = 0.03952026
    Resistance = 16.99371337
    Temperature = -202.95
     
  5. parovoZZ

    parovoZZ Гуру

    а референсный резистор какого номинала?
     
  6. DLS74

    DLS74 Гик

    Это где посмотреть(замерить)?
     
  7. parovoZZ

    parovoZZ Гуру

    там надо перемычку ставить. Даташит что-ли бы почитал на микросхему.
     
  8. parovoZZ

    parovoZZ Гуру

    на плате.
     
  9. DLS74

    DLS74 Гик

    Да, в двух местах поставил перемычку....
    Фото не получается загрузить....
     
  10. DLS74

    DLS74 Гик

    Нашел на плате Rref.... замерил... показывает 431 Ом
     
  11. parovoZZ

    parovoZZ Гуру

    микросхема где покупалась? Она либо битая, либо сопли на плате.
     
  12. DLS74

    DLS74 Гик

    Max31865 как и pt100 покупалось в интернет магазине.... китайское....
    Визуально... пайка хорошая...
     
  13. parovoZZ

    parovoZZ Гуру

  14. DLS74

    DLS74 Гик

    Ок. Спасибо.
    Я покупал по принципу что нашел в наличии.... в интернете очень мало кто продает MAX31865.
    Ссылки во сновном идут на Али....
     
  15. parovoZZ

    parovoZZ Гуру

    https://ru.mouser.com/Search/Refine?Keyword=MAX31865
    Доставка включена в стоимость.
    Если нет нужды измерять сверхнизкие или особо высокие температуры, то нет никаких причин использовать резистивные датчики при обильном выборе интегральных.
     
  16. DLS74

    DLS74 Гик

    Мне необходимо мерить температуру примерно от +5 до 60 С..... но максимально точно и быстро...
    Тренировался на 18B20.... ооочень тормозит..
    может что-то альтернативное посоветуете?
     
  17. parovoZZ

    parovoZZ Гуру

    в электронике, да и в метрологии, не может быть качественных оценок. Только количественные. Точность какая? Быстро - это сколько?
    Тем паче, что MAX31865 не сможет обеспечить сколь угодно малую точность без поверки.
     
  18. DLS74

    DLS74 Гик

    Быстрее чем D18B20.... Я разогревал на газе воду... так китайский термометр за 60 рублей показывал уже 33 градуса, тогда как D18B20 еще только 26 градусов.... минут через 5 он догрелся... до 33.... :)
    Мне нужна on-line температура.
    А по калибровке не особо важно.... для меня самое главное... чтобы во время нагрева воды, нагревание происходило адекватное.... и пусть даже в начале вместо 20 градусов будет показывать 21 это не главное... Мне главное чтобы Дельта температурная была точная... Так же интересуют десятые доли температуры...
     
  19. parovoZZ

    parovoZZ Гуру

    этот датчик делает замер за 750 мс либо меньше. Всё остальное - это температурная инерция корпуса. Сам датчик не при делах.

    быстро тоже не получится ввиду указанной причины выше. У меня медицинский градусник до целевой температуры доходит минут за 5.
    Если нужен действительно быстрый замер, то только в области диапазона ИК. Но и там есть нюансы.
     
  20. DLS74

    DLS74 Гик

    Поэтому я стал экспериментировать с Pt100+Max31865....