Здравствуйте, кто сталкивался с данным датчиком, можете помочь? Купил такой датчик, он оказался без всякой обвязки, просто микросхема и клеммы для подключения. Знаю, что на него должно подаваться не более 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' (пин данных, тактовый сигнал, "защелка"). И вот, что он мне показывает в мониторе: Здесь зажимаю термопару пальцами: Весь диапазон изменяется от -2047 до +2047. Хотя на отсутствие термопары реагирует - пишет мол, проблемы с термопарой, при отключении одного из управляющих пинов, тоже реагирует, т.е. микросхема как бы работает, хочется верить, но что я делаю не так? Почему такие результаты? Конденсатор между контактами термопары ставил, как указано в даташите на MAX3185 - 0.1 мкФ.
Код (C++): Adafruit_MAX31855(int8_t _sclk, int8_t _cs, int8_t _miso); https://datasheets.maximintegrated.com/en/ds/MAX31855.pdf На MISO - SO делитель напряжения не нужен.
напряжение на термопаре можно померять тестером, там должно быть (в зависимости от термопары) 40 мкВ/К. Вместо термопары можно подключить источник напряжения с делителем, комнате соответствует примерно 12 мВ. У меня тестер, который и термопару оцифровывает, но хороший тестер должен брать и термопару.
С термопарой все нормально, даже с несколькими всякие разные использую (К-типа). мВ выдают и сам тестер с ними охотно работает в режиме измерения температуры. Я писал, что на отсутствие термопары датчик реагирует и выводит соответствующую запись в порт ("Something wrong with thermocouple!"). Но почему такие некорректные данные выводит в режиме измерения, загадка. SO подключал, как с делителем, так и без. Есть второй такой же датчик, его вообще напрямую к 5В Arduino UNO подключал, без делителей, без всего. Работал и показывал точно то же, что и первый датчик. Удивительно, то что вроде бы он реагирует на пальцы, когда обхватываешь саму термопару, т.е. в "спокойном" состоянии в Serial пишет "-2047" значение, а после прикосновения к термопаре, постепенно значение повышается до +"2047". Попробую еще поставить старую IDE (вроде 1.5.7), но сомневаюсь, что поможет. Какие действия еще можно предпринять? )
похоже библиотека неправильно декодирует данные, или неправильно сконфигурирована. А без библиотеки просто по spi не пробовали? Еще можно попробовать при 0 ° (термопару в воду с тающим льдом) и 100 ° и посмотреть, что выдаст. ОНо конечно хорошо бы каким -нибудь saleae посмотреть, что вам чип отвечает.
Не знаю что и делать. На низкие и высокие температуры датчик реагирует так же, как с пальцами "-2047" - +"2047", не важно насколько экстремальные эти температуры. Без библиотеки нет не пробовал, как то лень, думал вот он, датчик готовый, должен работать "из коробки". Может Вам придут на ум похожие цифровые датчики на высокую температуру (до +500*С) без танцев с бубном?
Я еще до появления этих чипов мерял с помощью инструментального операционника с термокомпенсацией (схема прямо по даташиту) прямо с термопары, сам паял - это на чипе AD8552, ну либо можете купить готовый усилитель с выходом 0-5, 0-10 В или 2-20 мА. Или вкуривать даташит и честно работать по spi. Или логическим анализатором типа saleae . У меня эти чипы года полтора валяются. но пока руки не дошли. Проектов новых высокотемпературных не было, а в старых проектах все на AD8552.
Ох и намаялся я с таким. как только не обвешивал (в итоге полную схему спаял http://arduino.ru/forum/programmirovanie/arduino-uno-termopara-tipa-k-max31855kasa - наводки бешеные. в итоге купил другой - работает как часы.
Там случайно не из этой серии чип припаян? M31855K 1424A2 +780AB Насколькоя понял,это просто бракованная серия/партия чипов, вот наши узкоглазые друзья и впаривают их лохам подешевле...
Да, пришли чипы из другой серии, перепаял - "работают как часики". Только надо кондёр керамический 103-й не забывать втыкать / впаять в параллель с термопарой - максы об этом в даташите пишутЪ, странно, что узкоглазые его не паяют на плату, он нужен обязательно.
подскажите, пожалуйста, где покупали работающий модуль (ссылочку). Мучаюсь с этой штукой, но купленной в чипдипе и собранной на самодельной плате - полный абзацен в показаниях.