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

термопара мах6675

gregvel

New member
Добрый день коллеги. Помогите решить проблему с компиляцией скетча для термопары.
Беру готовый пример serialthermocouple из библиотеки "max6675.h" и пробую компилировать (проверить), выскакивает ошибка:

D:\Arduino\temp\libraries\MAX6675_library\max6675.cpp:4:26: fatal error: avr/pgmspace.h: No such file or directory

[HASHTAG]#include[/HASHTAG] <avr/pgmspace.h>

^

compilation terminated.

Используем библиотеку MAX6675_library версии 1.0.0 из папки: D:\Arduino\temp\libraries\MAX6675_library
exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).

Помогите, тыкните носом где копать.
 

gregvel

New member
Добрый день коллеги. Помогите решить проблему с компиляцией скетча для термопары.
Беру готовый пример serialthermocouple из библиотеки "max6675.h" и пробую компилировать (проверить), выскакивает ошибка:

D:\Arduino\temp\libraries\MAX6675_library\max6675.cpp:4:26: fatal error: avr/pgmspace.h: No such file or directory

[HASHTAG]#include[/HASHTAG] <avr/pgmspace.h>

^

compilation terminated.

Используем библиотеку MAX6675_library версии 1.0.0 из папки: D:\Arduino\temp\libraries\MAX6675_library
exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).

Помогите, тыкните носом где копать.
НЕ УЖЕЛИ НИ КТО НЕ ИСПОЛЬЗОВАЛ ТЕРМОПАРУ
 

tretyakov_sa

Moderator
Команда форума
НЕ УЖЕЛИ НИ КТО НЕ ИСПОЛЬЗОВАЛ ТЕРМОПАРУ
Дело в том, что в библиотеке косяк. Она работает для AVR и не работает для ESP.
Первое что сделайте это снесите библиотеку и установите через менеджер библиотек.
 

gregvel

New member
Дело в том, что в библиотеке косяк. Она работает для AVR и не работает для ESP.
Первое что сделайте это снесите библиотеку и установите через менеджер библиотек.
Спасибо за ответ. Это первое что я делаю всегда, но тут вариант не прошел, почему и стал искать помощи.
 

wcat

New member
Пробуй вот эту: MAX6675-library.zip
Я с корректировал, проверить не могу устройства нет.
Hi!
Почти во всех библиотеках от Adafruit сидит какая-то засада... Конкретно в этой delay(1)..
У меня отрубалась точка доступа...
По документации производителя сам чип MAX6675 может отдавать по SPI данные на частотах до 4 МГц...
Привожу реально работающую функцию - фрагмент моего тестового кода
===
...
#include "SPI.h"
...
//----MAX6675--------
#define MAX_CLK 14
#define MAX_DO 12
#define MAX_CS 15
...
float readTcouple(){
uint16_t data;
byte b;
digitalWrite(MAX_CS,LOW);
data = (uint16_t)((float) 1001.1 / 0.15); // It's a small delay only :)
b = SPI.transfer(0x00);
data = b; data <<= 8;
b = SPI.transfer(0x00);
data |= b;
digitalWrite(MAX_CS,HIGH);
// Uncomend if would like to see raw code ;-)
//Serial.print("Read from MAX 0x"); Serial.println(data, HEX);
if (data & 0x4) {
// uh oh, no thermocouple attached!
return NAN;
}
data >>= 3;
return data*0.25;
}

void setup(){
...
pinMode(MAX_CS,OUTPUT);
digitalWrite(MAX_CS,HIGH);
SPI.begin();
SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));
...
}
===
А из loop() тупо вызывается :)

Вот только никому не нужно читать термопару на таких скоростях...
У меня в лаборатории возникла задача читать несколько термопар.
В рамках данной задачи написал обмен через TWI PCF8574, чтение одновременно до шести интерфейсов MAX6675 :)
Код крепко увязан с моей архитектурой, так что здесь не привожу.
Yours sincerely, Dmitry aka wcat
 

1976oldi

New member
Пробуй вот эту: MAX6675-library.zip
Я с корректировал, проверить не могу устройства нет.
библиотека действительно работает после переделки с esp8266 , но есть проблемки.
Делаю простенькую паяльную станцию с мониторингом на сервере мажордомо, если подключаем эту библиотеку то не работает реле....Включается выключается , вообщем ведет себя неадекватно, если отключить библиотеку все работает с теми же настройками, к сожалению перебратьбиблиотеку мозга неватит....
Мб кто нибудь прикручивал к esp8266 мах6675 и реле буду благодарен за любую помощь...
 

wcat

New member
Мб кто нибудь прикручивал к esp8266 мах6675 и реле буду благодарен за любую помощь...
Hi!
Я прикручивал, о чем уже писал :) У меня в аппаратуре штатно используеся шина TWI(i2c), так что прикрутил шесть интерфейсов термопары MAX6675 к расширителю портов PCF8574. По постанвке задачи _научными сотрудниками_ :) надо было снимать показания с _нескольких термопар_, им шести хватило :)
Согласно документации, время преобразования АЦП в MAX6675 0.17-0.22c, так что чудовищных скоростей SPI там не требуется ;-), а отдавать столько ног GPIO жаба мне запретила :)
Если интересно - могу кинуть кусочки кода :)
Yours sincerely, Dmitry aka wcat
 
Последнее редактирование:

gregvel

New member
библиотека действительно работает после переделки с esp8266 , но есть проблемки.
Делаю простенькую паяльную станцию с мониторингом на сервере мажордомо, если подключаем эту библиотеку то не работает реле....Включается выключается , вообщем ведет себя неадекватно, если отключить библиотеку все работает с теми же настройками, к сожалению перебратьбиблиотеку мозга неватит....
Мб кто нибудь прикручивал к esp8266 мах6675 и реле буду благодарен за любую помощь...
Попробуйте эту библиотеку, мне помогла и с реле работала без проблем.
 

Вложения

1976oldi

New member
Попробуйте эту библиотеку, мне помогла и с реле работала без проблем.
к сожалению то же самое термопара работает хорошо, а реле глючит
прилагаю скетч
ардуино ide 1.8.5 использовал
esp-12f
данные передаются по mqtt
не пойму что не так...
Hi!
Я прикручивал, о чем уже писал :)
уважаемый wcat если не трудно ...не отказался бы..
а то пока только 2 есп8266 использовать одно для реле одно для термопары , но это ппц конечно...
Ваш кусок кода пытался запустить который выше выкладывали
А из loop() тупо вызывается :)
вот с выводом у меня и неполучилось вылетала ошибка не скажу сейчас какая..
 

Вложения

Последнее редактирование:

wcat

New member
уважаемый wcat если не трудно ...не отказался бы..
Вот кусочки для MAIN:
===
#define TICK_TWI_SCAN 2000
unsigned long tickTwiScan;
//----TWI thermocouple---
#include "TwiSpi.h"
ThermoCouple tc;
...
void processTcouple(){
float TH;

if (tickTcouple < millis()){
//TH = readTcouple();
readWord();
if (cProfile.debugLevel >= 3){

Serial.print(F("Thermocuple C = "));
Serial.println(TH);
Serial.print("twi tc ");
float th;
for (int i=0;i<6;i++){
if(tc.word & 0x4) th = NAN;
else th = (tc.word>>3)*0.25;
Serial.print(th); Serial.print(',');
}
Serial.println();
}
tickTcouple = millis() + TICK_MAX;

}
}
===
И функции работы через TWI шину, а также схема подключения :)
PS:Код писал более года назад, сейчас вытащил из архива и выбросил вывод на контрольные дисплеи... Мог пролабудать с фигурными скобками :)
 

Вложения

Последнее редактирование:

enjoynering

Well-known member
попробуйте вот эту - GitHub - enjoyneering/MAX6675: Arduino library for 12-bit MAX6675 K-thermocouple to digital converter умеет работать с железным SPI и программным. определяет обрыв термопары (для этого -Т должен быть соединен с землей) вобщем поддерживает все плюшки сенсора. работает на avr и esp8266. мало весит, быстрая. только на esp надо задавать пины не 4 а D4 (в примерах есть об этом)
 
Сверху Снизу