Страница 1 из 1
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 08:47
hess2222
Е…ся я с этим блоком. Хочу создать небольшой контроллер , но не хотел он измерять температуру постоянно, не сочтите за флуд но думаю медленно (я начинающий), пересмотрев все темы и код исходник печи представленный создателем блока понял что можно поставить на вход внутренние часы реального времени с детектором числа, тогда код нагружен, но датчик работает исправно
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 08:59
ecoins
Кажется Вы верно ухватили суть проблемы.
Пришлите пожалуйста код проекта, возможно смогу дать полезные рекомендации.
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 09:26
hess2222
Спасибо

обязательно, только вечером смогу ))))
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 09:49
edyapd
[ref]hess2222[/ref], было бы хорошо, если при подобных вопросах сразу выкладывать проект.
Из того, что вы описали, я вижу такую проблему. Вы пытались опрашивать датчик в каждом цикле программы. А это несколько раз (возможно сотни и тысячи раз) в секунду. И датчик просто не мог при этом корректно работать.
Вам надо просто установить генератор + Rtrig, на вход разрешения датчика. Настроить выдачу импульсов раз в 2-5 сек. И думаю, что всё заработает
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 10:29
hess2222
Возможно, но я пробовал устанавливать на 1-ну секунду симметричный мультивибратор и у меня не получилось, вопрос а зачем rtrig?
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 14:58
edyapd
Просто мультивибратор тут не поможет. Так как у вас получается, что в течении половины секунды датчик опрашивается очень часто.
Тут как раз и спасает Rtrig. Он запускается по переднему фронту мультивибратора и опрашивает датчик только один раз. Следующий опрос будет на следующем фронте мультивибратора.
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 15:17
aidar_i
У него опрос раз в секунду по скриншоту.
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 15:23
edyapd
Если схема с рисунка не работает, то там возможно ещё причина в том, что часы устанавливаются в каждом цикле. И не понятно, выдают ли они при этом вообще какой сигнал.
Поэтому я и предложил поставить генератор + триггер
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 20:20
hess2222
Нет , схема с рисунка рабочая , меня интересует общий вопрос, на кой нужен этот вход и можно ли сделать как нибудь без него то бы просто был датчик без всякой трихомудии
Отправлено спустя 2 часа 6 минут 12 секунд:
Всё, файл отправлен))) Спасибо что откликнулись!
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 21:36
Naladchik
hess2222 писал(а): 29 сен 2021, 18:14
...на кой нужен этот вход и можно ли сделать как нибудь без него...
Можно, но вот вопрос, как Вы отнесетесь к электроприбору, отключить который можно только выдернув шнур из розетки?
Отправлено спустя 59 минут 53 секунды:
hess2222 писал(а): 29 сен 2021, 20:20
Всё, файл отправлен)
Проверьте.
VJQ_1.flp
По идее чаще чем раз в 0,5с опрашиваться не должен, если надо реже измените в параметрах.
И настройки пинов в параметрах маленько привел в порядок.
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 29 сен 2021, 23:04
ecoins
1.По используемому блоку MAX6675 - он использует библиотеку, которая при каждом обращении к блоку тормозит на время >9ms.
Фрагмент кода из библиотеки ниже.
[spoiler]double MAX6675::readCelsius(void) {
uint16_t v;
digitalWrite(cs, LOW);
_delay_ms(1);
v = spiread();
v <<= 8;
v |= spiread();
digitalWrite(cs, HIGH);
if (v & 0x4) {
// uh oh, no thermocouple attached!
return NAN;
//return -100;
}
v >>= 3;
return v*0.25;
}
double MAX6675::readFahrenheit(void) {
return readCelsius() * 9.0/5.0 + 32;
}
byte MAX6675::spiread(void) {
int i;
byte d = 0;
for (i=7; i>=0; i--)
{
digitalWrite(sclk, LOW);
_delay_ms(1);
if (digitalRead(miso)) {
//set the bit to 0 no matter what
d |= (1 << i);
}
digitalWrite(sclk, HIGH);
_delay_ms(1);
}
return d;
}[/spoiler]
В конкретном проекте это мало на что влияет, но лучше бы этого избегать.
2. В качестве пина S0 для сенсора выбран пин 4 (D2) - лучше выбрать другой пин (например 14(D5)).
Пины D1,D2(5,4) - лучше не занимать, это интерфейс i2c, он пригодится при развитии проекта.
3. Если Вы будете расширять в проекте вывод на дисплей Nextion, то я бы рекомендовал несколько иной подход обмена между с дисплеем (без тормозов).
-----
Если Вам интересно продвижение в выбранном Вами направлении, и Вы готовы освободить пин 4, то я мог бы набросать Вам основу проекта, который бы Вы могли развивать без угрозы появления "тормозов" и пр.
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 30 сен 2021, 20:08
hess2222
Спасибо !!!! Так он начал работать намного шустрее.Конечно

интересно))) Но извиняюсь он уже не занят , он у меня пуст или я чего то не понимаю, не хочется выглядеть тупым
Подружился с оговорками MAX6675 для ESP8266 NodeMcu v3
Добавлено: 02 окт 2021, 14:28
ecoins