Датчик температуры MAX31855

Тема в разделе "Arduino & Shields", создана пользователем Salk, 22 янв 2017.

  1. Salk

    Salk Гик

    Здравствуйте, кто сталкивался с данным датчиком, можете помочь?
    Купил такой датчик, он оказался без всякой обвязки, просто микросхема и клеммы для подключения.
    SKU245304-1.jpg
    Знаю, что на него должно подаваться не более 4 В, как питания, так и уровень управляющих сигналов (SPI). На макетке собрал делители (2к и 3к) на управляющие, а напряжение питания взял с Arduino UNO 3.3В.
    Скетч взял с гитхаба, использовал пример из библиотеки:
    Код (C++):
    /***************************************************
      This is an example for the Adafruit Thermocouple Sensor w/MAX31855K

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

      These displays use SPI to communicate, 3 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 <SPI.h>
    #include "Adafruit_MAX31855.h"

    // Default connection is using software SPI, but comment and uncomment one of
    // the two examples below to switch between software SPI and hardware SPI:

    // Example creating a thermocouple instance with software SPI on any three
    // digital IO pins.
    #define MAXDO   6
    #define MAXCS   5
    #define MAXCLK  7

    // initialize the Thermocouple
    Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

    // Example creating a thermocouple instance with hardware SPI
    // on a given CS pin.
    //#define MAXCS   10
    //Adafruit_MAX31855 thermocouple(MAXCS);

    void setup() {
      while (!Serial); // wait for Serial on Leonardo/Zero, etc
     
      Serial.begin(9600);
     
      Serial.println("MAX31855 test");
      // wait for MAX chip to stabilize
      delay(500);
    }

    void loop() {
      // basic readout test, just print the current temp
       Serial.print("Internal Temp = ");
       Serial.println(thermocouple.readInternal());

       double c = thermocouple.readCelsius();
       if (isnan(c)) {
         Serial.println("Something wrong with thermocouple!");
       } else {
         Serial.print("C = ");
         Serial.println(c);
       }
       //Serial.print("F = ");
       //Serial.println(thermocouple.readFarenheit());
       delay(1000);
    }
    В примере менял использования SPI с программного на аппаратный, никаких изменений это не принесло.
    Подключение должно быть верно, несколько раз все перепроверял. Маркировка на модуле датчика => обозначения в библиотеке: SO - 'MAXDO'; SCK - 'MAXCLK'; CS - 'MAXCS' (пин данных, тактовый сигнал, "защелка").
    И вот, что он мне показывает в мониторе:
    upload_2017-1-22_1-26-5.png
    Здесь зажимаю термопару пальцами:
    22.jpg
    Весь диапазон изменяется от -2047 до +2047. Хотя на отсутствие термопары реагирует - пишет мол, проблемы с термопарой, при отключении одного из управляющих пинов, тоже реагирует, т.е. микросхема как бы работает, хочется верить, но что я делаю не так? Почему такие результаты? Конденсатор между контактами термопары ставил, как указано в даташите на MAX3185 - 0.1 мкФ.
     
  2. возможно контакты термопары плохо обжаты
     
  3. mcureenab

    mcureenab Гуру

    Последнее редактирование: 22 янв 2017
  4. Onkel

    Onkel Гуру

    напряжение на термопаре можно померять тестером, там должно быть (в зависимости от термопары) 40 мкВ/К. Вместо термопары можно подключить источник напряжения с делителем, комнате соответствует примерно 12 мВ. У меня тестер, который и термопару оцифровывает, но хороший тестер должен брать и термопару.
     
  5. Salk

    Salk Гик

    :( С термопарой все нормально, даже с несколькими всякие разные использую (К-типа). мВ выдают и сам тестер с ними охотно работает в режиме измерения температуры. Я писал, что на отсутствие термопары датчик реагирует и выводит соответствующую запись в порт ("Something wrong with thermocouple!").
    Но почему такие некорректные данные выводит в режиме измерения, загадка. SO подключал, как с делителем, так и без. Есть второй такой же датчик, его вообще напрямую к 5В Arduino UNO подключал, без делителей, без всего. Работал и показывал точно то же, что и первый датчик.
    Удивительно, то что вроде бы он реагирует на пальцы, когда обхватываешь саму термопару, т.е. в "спокойном" состоянии в Serial пишет "-2047" значение, а после прикосновения к термопаре, постепенно значение повышается до +"2047".
    Попробую еще поставить старую IDE (вроде 1.5.7), но сомневаюсь, что поможет. Какие действия еще можно предпринять? )
     
  6. Onkel

    Onkel Гуру

    похоже библиотека неправильно декодирует данные, или неправильно сконфигурирована. А без библиотеки просто по spi не пробовали? Еще можно попробовать при 0 ° (термопару в воду с тающим льдом) и 100 ° и посмотреть, что выдаст. ОНо конечно хорошо бы каким -нибудь saleae посмотреть, что вам чип отвечает.
     
  7. Salk

    Salk Гик

    Не знаю что и делать. На низкие и высокие температуры датчик реагирует так же, как с пальцами "-2047" - +"2047", не важно насколько экстремальные эти температуры. Без библиотеки нет не пробовал, как то лень, думал вот он, датчик готовый, должен работать "из коробки".
    Может Вам придут на ум похожие цифровые датчики на высокую температуру (до +500*С) без танцев с бубном? :)
     
  8. Onkel

    Onkel Гуру

    Я еще до появления этих чипов мерял с помощью инструментального операционника с термокомпенсацией (схема прямо по даташиту) прямо с термопары, сам паял - это на чипе AD8552, ну либо можете купить готовый усилитель с выходом 0-5, 0-10 В или 2-20 мА. Или вкуривать даташит и честно работать по spi. Или логическим анализатором типа saleae .
    У меня эти чипы года полтора валяются. но пока руки не дошли. Проектов новых высокотемпературных не было, а в старых проектах все на AD8552.
     
  9. konsys

    konsys Нуб

  10. pliz

    pliz Нуб

    Там случайно не из этой серии чип припаян?

    M31855K
    1424A2
    +780AB


    Насколькоя понял,это просто бракованная серия/партия чипов, вот наши узкоглазые друзья и впаривают их лохам подешевле...
     
  11. pliz

    pliz Нуб

    Да, пришли чипы из другой серии, перепаял - "работают как часики".
    Только надо кондёр керамический 103-й не забывать втыкать / впаять в параллель с термопарой - максы об этом в даташите пишутЪ, странно, что узкоглазые его не паяют на плату, он нужен обязательно.
     
  12. подскажите, пожалуйста, где покупали работающий модуль (ссылочку). Мучаюсь с этой штукой, но купленной в чипдипе и собранной на самодельной плате - полный абзацен в показаниях.
     
  13. pliz

    pliz Нуб

    А какая у вас серия чипа?