• Система автоматизации с открытым исходным кодом на базе 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 (в примерах есть об этом)
 
Сверху Снизу