Термопара + MAX6675 на расстоянии
- Войдите на сайт для отправки комментариев
Пнд, 16/05/2016 - 19:01
Необходимо мониторить температуру в дымоходе печки, контроллер nano с модулем на max6675 установлен в доме, труба в которую проведена термопара находится за стенкой в метрах 6-и. Показания не совсем корректны, т.к. макс компенсирует температуру в зависимости от температуры в доме, как правильнее этот момент обойти? И как учесть эту компенсацию к примеру при помощи показаний температуры в доме?
Компенсацию холодного спая термопары нужно делать по температуре на тех клеммах, где термопарные провода переходят в "медь". Делают это разными способами. Прочитайте тут: http://www.compel.ru/lib/ne/2007/15/10-kompensatsiya-holodnogo-spaya-v-p... Возможно, какая либо из схем Вас и устроит.
Добавлю еще про саму коммутацию термопары с MAX6675:
Термопара находится в печке, в соседнем помещении, примерно в метрах 6-7 от модуля MAX6675, естественно туда прокинуты медные провода, т.е. получается что сам "хвост" от термопары сидит на клемнике от которого эти медные провода идут к модулю, и модуль установлен уже на одной плате с контроллером Arduino Nano.
Спасибо за ссылку, данную статью уже встречал - мне вот что не понятно - раз уж в MAX6675 уже предусмотрена компенсация холодного спая, то почему получается следующая ситуация:
1. Получаю температуру с MAX6675 при помощи методов библиотеки от adafruit, питание подаю на нее пока что с цифровых выходов контроллера в секции setup (как и в примере библиотеки), что в общем-то считаю и не обязательным, но пока так.
2. У меня есть отдельный датчик температуры в доме (как раз рядом стоит модуль MAX6675) - так вот следующая ситуация:
Допустим что в данный момент температура на термопаре НЕ изменяется (т.е. ни нагрева ни охлаждения как такового не происходит). При помощи кода приложенного выше - я получаю определенные значения в принципе похожие на реальные.
Затем при повышении температуры в ДОМЕ - начинают повышаться показания с термопары (хотя еще раз оговорюсь, что в этот момент в печке где установлена термопара ничего не изменяется).
Получается примерно так:
* температура в доме 19 градусов, показания с термопары 44
* температура в доме 22 градуса, показания с термопары 47
Т.е. эти самые 3 градуса в доме прибавились к показаниям с термопары!
И да кстати - если рукой подержать чип MAX6675 - показания также растут...
Вопрос - куда копать!?
Применяя термопару надо всегда помнить, что физически термопар ДВЕ. Одна термопара в зоне измерения, а вторая - в зоне перехода с термопарных проводов. Выходной сигнал - всегда суммарный сигнал этих двух термопар. Отличить вклад одной от другой нельзя. Это физика процесса. В аналоговой технике на клеммник просто вешали точно такую же термопару и вычитали один сигнал из другого. Насколько я понимаю, в примененной микросхеме применен программный способ компенсации за счет измерения температуры встроенным датчиком. Считается, что термопарные провода подходят к микросхеме максимально близко. Поэтому при изменении температуры в доме микросхема честно стремится скорректировать показания термопар, считая свою температуру температурой холодного спая. На мой взгляд, при сохранении структуры системы, надо выносить микросхему к клеммной коробке термопары, или ставить туда отдельный датчик и делать программную коррекцию. Так делают в известных мне промышленных контроллерах. Но детальнее по этой части я Вам уже не подскажу. С этими микросхемами и библиотеками я не сталкивался.
пожалуй проще всего скомпенсировать от другого термометра. в либе самой ничего такого нет, в самой схеме стоит диод который аппаратно компенсирует, так что только программно тут не обойдешься
Ну я в общем то к аналогичному склоняюсь, только вот какой момент - раз уж микросхема уже с учетом своей какой то поправки выдает данные, то компенсировать получается нужно будет ориентируясь на показания температуры места, где установлен сам MAX6675 и термометра который измеряет в районе соединения проводов термопары с медным кабелем.
Скорее всего использую термистор, а температура в доме из RTC модуля будет получена вот их разницу и буду из показаний MAX6675 вычитать/прибавлять...
Всем спасибо - осталось до практического эксперимента добраться - всё это хозяйство у меня на даче смонтировано к выходным смогу всё проверить - благо положительный опыт работы с термисторами + Arduino уже есть.
советую вынести NANO в прелах досигания термопары...
этим Вы избавитесь сразу от двух проблемм
1. компенсация холодного конца (о чем сабж)
2. помехи и наводки на длинную медную хрень.... на эти грабли Вы еще не наступили, но в зависимости от погоды, и прочих близлежащих источников помех у Вас будут плавающие показания, которые Вы не сможете компенсировать ни программно ни железом...
почитайте как делают зонный контроль температуры в больших печах... тогда поймете глубину проблеммы...
Мне в общем то допустима погрешность +-2 градуса - но не 10-15 - ради этого перемещать контроллер в баню смысла не вижу. Питание и прочие "прелести" туда дополнительно протягивать тоже не особо тянет.
Сделаю как запланировал - по результатам отпишусь.
Я работал с MAX31855. Она кроме измеренной термопарой температуры выдаёт ещё и собственную температуру.
В каком смысле выдает собственную? Ее можно отдельно мониторить?
Читал, что микросхемы для термопар имеют выходы I2C или SPI . Мне требуется подключить 6 термопар , которые установлены в сауне к ардуино. Расстояние до 25 метров. Как реализовать подключение термопар на такое большое расстояние? Заранее благодарен за совет!
Все зависит от того, что Вы знаете про ардуину, электронику и эту хрень вообще.
Если температура в дымоходе не превышает 500С то лучше взять PT-100 сенсор и подключить его через MAX31865. Точность выше, геморроя намного меньше.
с электроникой дружу давно, с железом ардуино знаком больше чем с софтом, скетчи с нуля не пишу, могу отчасти корректировать уже готовое.
В любом случае придется поставить рядом с точкой съёма свой МК с коммуникационной целью. А вот с прошивкой для такого блока придется помучаться или искать готовое. У меня был один "банщик" - он конечные ноды в флпроге лепил и гнал данные на веб-сервер (такой затейник был). Заодно там всякие фонтанчики дистанционно включал...
У меня сейчас 6 DS18B20 подключены к ардуино уно и ардуино через ethernet отправляет данные в Инет на web сервер.
Т.е. если мне такое подходит то я могу поставить 6 термопар с MAX6675 и рядом с каждой контроллер ардуино с ethernet модулями
и так же отправлять на сервер. Охереть не рационально, но в принципе-то так можно сделать?
Нерационально, но быстро и незамысловато. Задача не имеет единственного решения по физканалу. Возможно, что придется лепить мастер-гейтвей или ещё какую-то хреновину для стыка вашей "сети датчиков" с чем-то, что собирает и показывает данные.
Я все последние проекты которые так или иначе связаны со сбором данных (или управлением) обустраиваю через сеть modbus. (это конечно касается проводных проектов, лучше проводов для промышленных нужд пока считаю могут быть ТОЛЬКО провода :))) ну а беспроводные NRF, LoRa, реже wi-fi)
С точки зрения рационально/не рационально каждый решает в силу своего бюджета - протянуть 4-проводный кабель по всему объекту (питание и данные rs-485), на конечных точках (вблизи непосредственного подключения датчиков) обычно ставлю какой нибудь pro mini. Прошивка наипростейшая, набор регистров соответствует в принципе как правило количеству используемых GPIO.
Таким образом имеем сеть из устройств которые отлично, быстро и стабильно работают. В качестве головной станции для визуализации отображения и управления как правило NODE-RED.
Все данные от контроллеров отлично можно визуализировать а в связке с локальным Blynk Server и в мобильное приложение вытащить нет никаких проблем. Все работает как часы!
p.s. и Node-Red и Blynk само собой под *nix'ами, так как с виндовыми вариантами я давно уже наигрался и работают они мягко говоря не очень хорошо... да и железо для организации подобной головы можно использовать не суперпроизводительное. Какой нибудь MX, AntiX - прекрасно работают на очень скромном железе!
На практике i2c работает у меня метрах на 10 (дальше не было необходимости), но это наверное не самый хороший вариант так далекой тащить подобные вещи. Все таки шина не совсем для подобных ситуаций была придумана.
Из выдержек референса по i2c:
For reference, shielded 22 AWG twisted pair cables have capacitance in the range of 100-240 pF/m. So the maximum bus length of an I2C link is about 1 meter at 100 Kbaud, or 10 meters at 10 Kbaud. Unshielded cable typically has much less capacitance, but should only be used within an otherwise shielded enclosure.
Отсюда и следует что 25 метров это наверное под большим вопросом даже исходя из ТТХ.