• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MAX31855 не работает

pliz

New member
MAX31855 - пытаюсь подключить - и ничего хорошего не выходит. Лезет в мониторе какой-то бред.
Это было ещё на ардуине. Я тогда подумал, что может по ошибке уровень сигнала не согласовал (питание давал 3,3). Заказал не на али, как предыдущий - а заказал пару с ебея. Пришли. Пытаюсь подключить - та же фигня. В монитор порта сыпется бредовые показания.Ну не могут же все ТРИ датчика быть "некачественными"? термопаты - тоже пробовал разные - и простую в стеклотканной обмотке, и в металлической оплётки. Разьём пропаян нормально (такие размеры спаять станцией проблем нет) Библиотеку использую адафрутовскую - хотя пробовал и другие - те же бубенчики...

Код:
*/
#include <MAX31855.h>


// Pin connections. 
#define MISO 12
#define SCK  14
#define CS   15

// Create the temperature object, defining the pins used for communication
MAX31855 temp(MISO, CS, SCK);

void setup() {
  Serial.begin(9600);
}


void loop (){
  Serial.print("Junction=");
  printTemperature(temp.readJunction(CELSIUS));
  Serial.print("Thermocouple=");
  printTemperature(temp.readThermocouple(CELSIUS));
  Serial.println();
  delay(1000);
}


// Print the temperature, or the type or fault
void printTemperature(double temperature) {
  switch ((int) temperature) {
    case FAULT_OPEN:
      Serial.print("FAULT_OPEN");
      break;
    case FAULT_SHORT_GND:
      Serial.print("FAULT_SHORT_GND");
      break;
    case FAULT_SHORT_VCC:
      Serial.print("FAULT_SHORT_VCC");
      break;
    case NO_MAX31855:
      Serial.print("NO_MAX31855");
      break;
    default:
      Serial.print(temperature);
      break;
  }
  Serial.print("   ");
}
WIN_20180201_15_50_58_Pro.jpg WIN_20180201_15_51_19_Pro.jpg Untitled-1.jpg Untitled-2.jpg
 

CodeNameHawk

Moderator
Команда форума
Последнее редактирование:
  • Like
Реакции: pliz

enjoynering

Well-known member
Не побоюсь этого слова - ЛУЧШАЯ библиотека под MAX31855 тут - GitHub - enjoyneering/MAX31855: Arduino library for 14-bit MAX31855 K-thermocouple to digital converter

Для уменьшения наводок на входе производитель советует ОБЯЗАТЕЛЬНО параллельно "-T" и "+T" допаять конденсатор на 10nF/0.01mF. Без него, время от времени, проскакивают неадекватные значения. Ребята из Adafruit дополнительно одевают ферритовые бусины на холодный спай.

ну и вы надеюсь в курсе что у термопары есть + и - и их надо не перепутать при подключении
 
Последнее редактирование:

pliz

New member
Да чем их пример не понравился?
Adafruit-MAX31855-library
Пробовал - "такая же фигня"...

Не побоюсь этого слова - ЛУЧШАЯ библиотека под MAX31855 тут - GitHub - enjoyneering/MAX31855: Arduino library for 14-bit MAX31855 K-thermocouple to digital converter
Да, поставил. Правда пришлось на второй комп ставить - стационарный, я им реже пользуюсь. Потому что на нотбуке - какая-то наверное путаница с библиотеками - и не компилировалось. Не стал разбираться.

Вообщем - выдаёт чётко - что чип опознаётся как МАКС31855, Cold Junction - крутится как правило около 128, иногда либо чуть меняется. Если термопару вытащить - начинает орать - "нет термокапла".
И такая фигня - на всёх трёх датчиках - и с тремя разными термопарами - в простой оплётке, в металлической - и даже попробовал у меня есть платиновая. Да, и сменя плюс-минус - тоже ничего не даёт.
Про кондёр - да, я до этого уже пробовал, читал об этом на англоязычных ресурсах - права я не стал заморачиваться впаивать СМД - а просто пробовал втыкать обычный керамический 104.

Вообщем - ничего не понимаю... :( куда копать, в какую сторону... если чип-то - опознаётся...
 

pliz

New member
************************************

Вообщем - "всем спасибо все свободны!"
Это китайские *****ассы... такие вот - ассы по подделкам.

На всех трёх модулях впаяны чипы с одинаковой маркировкой.

M31855K
1424A2
+780AB

То есть это - fake MAX31855 K Type Thermocouple Sensor Module!

И только в одном месте - на радиокоте - я нашёл тему, где люди оказывается столкнулись с точно такой же проблемой.
Вот тема на радиокоте:
Форум РадиоКот • Просмотр темы - Преобразователь сигнала термопары MAX31855

И вот я на всякий случай написал на буржуйском ардуиновском сайте:
Beware of a fake MAX31855 K Type Thermocouple Sensor Module
 

enjoynering

Well-known member
если с моей библиотекой и моим примером ваш Cold Junction - крутится около 128C, то похоже вашему чипу хана, так как это параметр читается из встроенного в чип сенсора.

- вы случайно на MAX31855 не подали 5в (по datasheet потолок 3.6в)?
- какой пример использовали с software или hardware SPI. советую попробовать hw_SPI пример?
- чтоб компилировалось на ноутбуке, надо удалить все остальные MAX31855 библиотеки.
 
  • Like
Реакции: pliz

pliz

New member
Я пробовал как раз хардверЭсПиАй.

На новые я точно 5В не подавал.
То есть это - фейковая серия МАКСов, по данным очевидцев из "секты свидетелей подсадного МАХа" не работают чипы именно с такими же "циферками" (номер партии).

Мне вспомнилось, как в начале 90-х, в "голодные времена" - какие-то махинаторы у метро быстро распродали несколько ящиков пельменей - в стандартных совковых пельменных коробочках, ледяные, белые... и только когда покупатели начали пытаться отварить их - стало понятно, что пельмени налепили из строительного алебастра и заморозили...

Кстати - жалко что ваш библиотек не нашлась изначально в Library Manager - только от вас уже узнал о её существовании... за библиотеку - спасибо!
 

enjoynering

Well-known member
я тут попробвал запустить свой код на esp8266 и вы знаете он не взлетел. может быть ваши чипы рабочие и вы зря ругаете китайских товарищей. убил два часа на поиск и нашел проблему. оказывается в arduino core for esp8266 по другому задаются пины!!! если в arduino для avr типа UNO написать digitalWrite(4, LOW) то это значит что цифровой пин D4 в ноль. В arduino для esp8266 все оказалось не так если написать digitalWrite(4, LOW) то это значит GPIO4 в ноль, а не D4. век живи век учись. и в примере с выводом в UART ошибся с разрядностью переменной - нужно int32_t а я влепил int16_t (забыл что это не MAX6675)

заново скачайте репозиторий, я там добавил примеры специально для esp и проверил их - 100% рабочие. отпишите об успехах потом. спасибо.
 
Последнее редактирование:
  • Like
Реакции: pliz

pliz

New member
Cейчас попробовал на Уно - MAX31855_hw_SPI_Demo

Так что в моём конкретном случае проблема всёже с чипом. Я уже заказал у наших ускоглазых товарищей другие микросхемки,они уверяют, что у них нормальная работающая партия. Придут, перепаяю и посмотрим на результат!

Да, а - "нескромный вопрос", даже два... (1) можно ли библиотеки и объекты именовать оригинально, чтобы не конфликтовали с кучей других и (2) "а почему ваша библиотека не обновляется в аруине автоматом. Простите за ламерские вопросы, просто интересно, мне кажется удобнее было, чем каждый раз с гитхуба тянуть... :)
 

Вложения

enjoynering

Well-known member
1. потому что мне так удобней.
2. там надо возиться с релизами, потом следить за версиями если что то исправил, а мне лень. я в основном пишу для себя. кому надо, то найдет посмотрит тело библиотеки, поймет что код и реализованные функции лучше чем у всех остальных и скачает. остальные будут тащить унылую копипасту с Library Manager.
 
  • Like
Реакции: pliz

enjoynering

Well-known member
вот заверенный скриншот работы под esp8266 пример "MAX31855_ESP8266_hw_SPI_LCD_i2c.ino" из моей библиотеки
 

Вложения

Jaeger

New member
Не побоюсь этого слова - ЛУЧШАЯ библиотека под MAX31855 тут - GitHub - enjoyneering/MAX31855: Arduino library for 14-bit MAX31855 K-thermocouple to digital converter
Да, неплохая либа. Отлично прокомментирована. Однако не понравилась большая задержка типа
Код:
delay(MAX31855_CONVERSION_TIME);
в функции readRawData. Это получается, 100 миллисекунд нужно ожидать в лупе ни чего не делая. Слишком расточительно. Для простейшего термометра сойдет, а если еще имеется несколько разных датчиков, то будут биг проблемы. Надо бы сделать, что бы ожидание завершения конверсии было в фоновом режиме, ну например, с помощью millis().
 
Сверху Снизу