Подключение Термопары MAX6675
- Войдите на сайт для отправки комментариев
Ср, 24/05/2017 - 08:24
Доброго времени суток! Принимайте новенького :)
Хочу подключить к ARDUINO несколько термопар по интерфейсу SPI, вот таких:
https://market.yandex.ru/offer/QgZdPyNtHz1225D9Ps2Bqg?hid=763583&pp=1001...
1. Будет ли работать и нужно ли еще что-то, кроме того что есть на борту ARDUINO и в комплекте поставки термопары?
2. Можно ли подключить много таких термопар (например, 12-16)?
1. Думаю что работать будет.
2. Не однозначно сформулирован вопрос, но подключить можно и много термопар (каждая со своей платой).
Предоставьте техописание на плату (схему, даташит).
Можете существенно сэкономить - на Али можно купить за 800р 5 таких комплектов...
Понадобится бибилотека.
Смотря какая плата дуины - лишь бы хватило ног, т.к. помимо прочего ещё понадобятся пины для выбора конкретного чипа (CS) - по количеству таких модулей. Т.е. все модули цепляете параллельно к шине SPI, а выводами CS выбираете тот модуль, с которого планируется получение температуры.
Мне уже попадались темы, где такая плата подключалась и вроде все работало. Но было замечание, что температура завышается. Возможно, на плате нет (или криво сделана) компенсация холодного спая.
Отдельный вопрос - сколько таких термопар (плат) можно физически воткнуть в Arduino, и сколько он способен опросить. Насколько я понимаю, количество каналов измерения у него ограничено. У меня предполагается опрашивать около 24 датчиков разного типа. Способен ли Arduino их переварить, и за какое время (длительность цикла опроса).
Можете существенно сэкономить - на Али можно купить за 800р 5 таких комплектов...
Понадобится бибилотека.
Смотря какая плата дуины - лишь бы хватило ног, т.к. помимо прочего ещё понадобятся пины для выбора конкретного чипа (CS) - по количеству таких модулей. Т.е. все модули цепляете параллельно к шине SPI, а выводами CS выбираете тот модуль, с которого планируется получение температуры.
Спасибо! И пока я писал свое, Вы уже частично ответили.
Компенсация встроена в микросхему, соответственно, выводы ТП должны быть подключены в том месте, где расположена м/с или применены компенсационные провода.
Если вы не про аналоговые входы, то нет никакого ограничения.
К примеру, время конвертации MAX6675 - 0.2 сек, остальное - надо смотреть...
Компенсация встроена в микросхему, соответственно, выводы ТП должны быть подключены в том месте, где расположена м/с или применены компенсационные провода.
Там же подключение концов ТП непосредственно к платке преобразователя, физически невозможно подключить далеко от м/с. Ну да ладно, можно же программно скорректировать, хотя бы по двум точкам?
Датчики будут часть по SPI, часть к собственным аналоговым входам.
Некоторые умудряются соединить обычным проводом ))
По коррекции - фиг знает, можно попробовать интерполировать через ф-ю map().
Или, если завышение всегда одинаковое - тупо вычитать разницу.
Нужно потренироваться на кошках, в смысле, на одном экземпляре м/с.
Есть другие варианты, на MAX31855K - у неё есть контроль обрыва/к.з. на шины питания-земли.
Если не хватает аналоговых входов, можно применить аналоговый мультиплексор
Термопары все равно напрямую нельзя подключить.
Я ж не про ТП, а про -
"часть к собственным аналоговым входам"
Будут и другого типа датчики?
Да, предполагается и токовые 4...20 мА, и напряжения 0...5 В и 0...16 В.
А можно ли куда-то записывать лог показаний датчиков?
1. SD-карта, в файл (понадобится модуль для карты)
2. На комп - в файл (нужно писать софтину, что бы принимала данные со стороны компа)
2. На комп - в файл (нужно писать софтину, что бы принимала данные со стороны компа)
Годится только 1.
А можно ли вычислить произведение двух измеренных величин и интегрировать его по времени, с реальным временнЫм шагом, а не номинально заданным?
Можно, для этого при вычислении интеграла нужно использовать значение этого реального промежутка времени , а не абстрактного номинального.
То есть, Ардуино умеет вычислять точные интервалы времени между двумя событиями? Интересуют малые интервалы, в один цикл измерения. То есть интегрирование за каждый цикл.
То есть, Ардуино умеет вычислять точные интервалы времени между двумя событиями? Интересуют малые интервалы, в один цикл измерения. То есть интегрирование за каждый цикл.
Ардуино - компьютер, соответственно, вопрос "умеет ли вычислять" можно воспринимать лишь как риторический.
Да и вычисление интервала - простая операция "вычитание". Проблема может быть лишь с получением точного времени наступления тех или иных событий (но к вычислению это уже не имеет никакого отношения). Обычная дискретность времни для 16-МГц Ардуино составляет 4 мкс. Насколько это для Вас точно - не знаю. При определенных условиях ее можно снизить до 1 мкс, Ну а за счет неграмотно составленного алгоритма измерения увеличить погрешность измерения можно неограниченно.
Ну а вопросы численного интегрирования активно разрабатываются уже несколько десятков лет.
Спасибо, вопрос был именно об этом.
А есть ли в Ардуино функция (или библиотека), вычисляющая производную параметра по времени? Простая разность двух последовательных измерений, деленная на шаг времени, не годится.
А есть ли в Ардуино функция (или библиотека), вычисляющая производную параметра по времени? Простая разность двух последовательных измерений, деленная на шаг времени, не годится.
А ничего другого нет и быть не может.
Как я понял, Вы хотите быстро померить температуру 24 датчиков? С точки зрения Arduino проблем нет, ставим сдвигающие регистры, преобразователи последовательного кода в паралельный, тактовый вход к цифровому выходу Arduino. Выходы регистра к сигналу выбора датчика. Каждый такт цифрового выхода Arduino выбирает следующий датчик, число которых ограничено числом регистров.
А вот проблема тут тепловая инерция датчиков, которая не меньше 20-30 секунд, то есть цикл не быстрее 5-10 сек.
А есть ли в Ардуино функция (или библиотека), вычисляющая производную параметра по времени? Простая разность двух последовательных измерений, деленная на шаг времени, не годится.
А ничего другого нет и быть не может.
Близкие по времени измерения дадут не производную, а нули и среди них единичные выбросы.
А вот проблема тут тепловая инерция датчиков, которая не меньше 20-30 секунд, то есть цикл не быстрее 5-10 сек.
Датчиков ожидается около 24, но только часть из них термопары (со схемкой MAX6675), еще будут просто напряжения пост.тока с делителем, и еще токи 4...20 мА (которые тоже напряжения с шунта). Про тепловую инерцию в курсе, буду выбирать датчики пошустрее. Но схемка MAX6675 уж слишком тугодумная, более 0,2 с одно измерение делает.
Близкие по времени измерения дадут не производную, а нули и среди них единичные выбросы.
"Не умею" и "невозможно" - это совершенно разные вещи.
Для любого (не обязательно производной) измерению нужно уметь измерять. Если мне не изменяет память, даже дисциплина такая есть - Теория измерений.
Теорию измерений я изучал, и в основном применительно к измерению теплофизических величин (температуры, давления, расходы...). Нужно вычислять производную в "скользящем окне" настраиваемой ширины, а не по двум соседним точкам.
Теорию измерений я изучал, и в основном применительно к измерению теплофизических величин (температуры, давления, расходы...). Нужно вычислять производную в "скользящем окне" настраиваемой ширины, а не по двум соседним точкам.
И что мешает?
Ну и, кроме того, по логике нужно адаптировать под задачу период измерения, а не чесать репу, как обработать результаты измерений, выполненных заведомо слишком часто.
Близкие по времени измерения дадут не производную, а нули и среди них единичные выбросы.
это не так, они дадут то же значение, что и предыдущее. Если вы хотите получить отфильтрованную кривую, можно использовать, например фильтр Калмана, он и предсказывать может.
Для уменьшения тепловой инерции надо уменьшать массу датчика, например оставив голую термопару. Если надо мерить еще быстрее, то например инфракрасные термометры, если конечно позволит конструкция.
Близкие по времени измерения дадут не производную, а нули и среди них единичные выбросы.
это не так, они дадут то же значение, что и предыдущее. Если вы хотите получить отфильтрованную кривую, можно использовать, например фильтр Калмана, он и предсказывать может.
Для уменьшения тепловой инерции надо уменьшать массу датчика, например оставив голую термопару. Если надо мерить еще быстрее, то например инфракрасные термометры, если конечно позволит конструкция.
Именно нули, если параметр за время измерения изменился меньше дискрета АЦП. Производная = 0 - параметр не меняется. Производная равна константе - параметр изменяется на одно и то же значение за каждый отсчет.
Массу датчика уменьшать - это понятно. Но голую термопару нельзя оставить, ее просто сожрет среда, и очень быстро. ИК-термометры для измерения температуры газов неприменимы, да и небюджетно это совсем.
Читал, что микросхемы для термопар имеют выходы I2C или SPI . Мне требуется подключить 6 термопар , которые установлены в сауне к ардуино. Расстояние до 25 метров. Как реализовать подключение термопар на такое большое расстояние? Заранее благодарен за совет!
Общий подход такой. Там, где установлены датчики температуры ставите отдельную Ардуину, на коротком расстоянии собирающую данные от всех датчиков, а потом прокидываете последовательной канал до той Ардуины, где Вам данные нужны, и как-то их используете.
Если программируете уверенно, то используйте физику канала RS-485 и какой-нибудь понятный протокол через соответствующие библиотеки. Например, Modbus, CAN. На форуме есть примеры.
Если с программированием "не очень", то делаете "токовую петлю" (10 ... 20 мА), с двух сторон завешенную оптронами с развязанным питанием, и используете медленный SPI из одной Ардуины в другую.
Да, а почему именно термопары? Там и провода специфичные, и обязательная термокомпенсация. И копеечные бескорпусные варианты не пойдут, как тут правильно писали, "среда сожрет".
Потому что сейчас в сауне стоят 6 штук DS18B20 и уже в одном помещении их раз пять меняли, потому что там греется до 130-140 градусов. Расстояния от датчиков до микроконтроллера от 15 до 25 метров, потому что датчики расположены в разных комнатах.
Где почитать про "токовую петлю" с оптронами?
А на каком расстоянии могут работать эти медленные SPI ?
P.S. Большое спасибо за ответ!
Никакие токовые петли не удлинят SPI. От мелкого микроконтроллера на стороне градусника не уйти. Сыканомить можно только на канале "МК с градусником - сервер"
Расстояния от датчиков до микроконтроллера от 15 до 25 метров, потому что датчики расположены в разных комнатах.
Ну так вам уже сказали - поставьте несколько микроконтроллеров, чтобы они располагались рядом с датчиками. Если все 6 датчиков в разных местах - значит придется поставить 6 МК, по одному на каждую термопару - в конце концов МК стоят копейки
М-м-м... Вот так, чтобы готовую схемку, даже и не знаю. Мы сами делали. :)) Я словами расскажу, возможно, этого будет достаточно. На передающей стороне выход подключен к светодиоду оптрона. Фотодиод (фототранзистор) оптрона управляет транзисторным ключом, нагруженным на кабельную линию. С приемной стороны к этой линии подключен светодиод принимающего оптрона. Фотодиод принимающего оптрона подключен ко входу принимающего устройства. Ток в кабельной линии для надежного зажигания оптрона в пределах 10 ... 20 мА. Питание "кабеля" делают от отдельного источника, гальванически изолированного и от передающей, и от приемной стороны.
У нас всё было реализовано на жесткой логике (это примерно 93-й год). Сдвиговыми регистрами (мы слов SPI тогда и знать не знали :)) осуществлялась связь между ручным пультом управления с кнопками и индикаторами и системой управления робототехническим комплексом в условиях цеха электросварочного производства, где сварочные токи были в районе 1000 А. Экранированный кабель КУПЭВ. Длина кабельной линии порядка 20-и метров. Тактовая частота - единицы килогерц. Точнее не скажу, не помню.
Чем могу. :))
М-м-м... Вот так, чтобы готовую схемку, даже и не знаю. Мы сами делали. :))
Duino A.R. несколько неточен - токовая петля это не секрет, а в описании выше сказано: задавить помеху током. т.е. расчет производить не так как обычно, сопрягая напряжение, а конкретно - дать побольше току (напряжение тоже не лишим будет 5-12В, может и 20В) и помехи помрут, пакет меньше "плыть" будет.
теоретически, используя "витуху 8 жил" и написав свой интерфейс под max6675 хватит одного контроллера, а микросхемы поближе к термопарам. max6675 я так в ДШ понял можно и меньше 1кГц тактировать... если нет жестких требований к скорости и вся система изолирована. 6 ног МК под выбор микрухи драйвер не нужен, прием данных - 6 транзисторов и сопроты на приемниках... вот SCK хуже всего - или парами или тройками тактировать (т.к. нагрузка параллельное подключение N сопротивлений) микросхемы соответственно 2-3 ноги на SCK нужно и соответственно 2-3 транзистора и опрашивать по очереди, чтоб остывали в перерывах, со стороны max6675 соответственно сопротивления. итого: 6+1+3 = 9 - ног МК, если ничего не уплотнять, 9 транзисторов и горка сопротивлений.
Да не о "секрете" токовой петли речь шла, а о конкретной схемке с двусторонней оптронной развязкой, чтобы собрать, и сразу гарантированно заработала. Где такую в сети взять, я не знаю. Я её могу аккуратно нарисовать, но попробовать мне её не на чем. У меня кабеля столько нет. А рекомендовать, не попробовав... Не, я тут жестко жизнью научёный.
Да, именно так. Токовый сигнал. Чтобы сигнал имел вполне ощутимую мощность, которую бы помеха перешибить не смогла. И из своей практики и из других серийных разработок я бы в кабель меньше 12 В не закачивал. Вот здесь бы взял ровно 12 В и комплементарные ключи, а не "ключ-резистор". Но это уже так, "вкусовщина", главное, чтобы работало. А тут пробовать надо. Обязательно.
Вполне возможно. Но я бы оставил несколько МК (минимум - 2) и разделил функционал "дальней" и "ближней" связи. Отработал бы сначала "дальнюю", выяснил бы её ограничения и добился гарантированной надежной работы, а потом стал бы подключать термопарную часть.
Теоретически можно и STP кинуть сразу без токовой петли ;)
Термопару можно кидать на любое расстояние без проблем. И стоит термопарный кабель 20 рублей за метр на али.
Советчики, как всегда, советуют какую-то чушь, про которую прочитали где-то краем глаза, и теперь считают себя дико умными.
Что, на километр тоже можно кинуть ? Мужики-то знают об этом?
Можно. Мужики-то знают, что ты проводишь свое время, пытаясь взять на понт людей в интернете, которые вчера взялись за новое хобби?
Термопару можно кидать на любое расстояние без проблем.
это из вики, а теперь вопрос на засыпку: мы учитываем помехи или нам на них пофиг?
Нет, не учитываем. Закон ома тоже. Импеданс усилителя, правила прокладки проводов - ничего не учитываем. Зачем, когда можно прочитать абзац в википедии, не понять, но сделать вид что ты подловил кого-то на чем-то. Опять таки, очень хорошо работает на начинающих. Термины страшные, отвечать нечего. ЧСВ растет. Жалко, что я не начинающий.
Да не о "секрете" токовой петли речь шла, а о конкретной схемке с двусторонней оптронной развязкой, чтобы собрать, и сразу гарантированно заработала.
вариант такой: 1 БП для всего, у передатчика транзистор с открытым коллектором, у приемника соответственно сопротивление - это самый простой драйвер линии. Рискну предположить, что для сауны этого за глаза и 25м не километр. Опторазвязка нужна если БП разные.
Один раз использовал алгоритм с двойным определением уровня, это когда на один такт 2 раза проверяем логический уровень - маленькая, но проверка (как с дребезгом кнопки).
Это я самый простой способ описал, экспериментировать нужно. ИМХО считаю его достаточным если не требовать гипер скоростей опроса.
Нет, не учитываем. Закон ома тоже. Импеданс усилителя, правила прокладки проводов - ничего не учитываем. Зачем, когда можно прочитать абзац в википедии, не понять, но сделать вид что ты подловил кого-то на чем-то. Опять таки, очень хорошо работает на начинающих. Термины страшные, отвечать нечего. ЧСВ растет. Жалко, что я не начинающий.
вы забыли про трансформатор с КЗ витком написать и импеданс линии на 25м далеко не "0". Это вы считать его умеете правильно, вот только практика показывает, что наводка бывает наши правила нарушает. Уйти от аналога в цифру, где ошибки ловить понятнее и проще - вариант для новичка.
АПД. моё-твоё ЧСВ чьё победит? :)))))))))))))))))))
вот только практика показывает,
Опять. Ты не того пытаешься наебать. У тебя нет и не было никакой практики наладки систем с термопарами. ХВАТИТ ВРАТЬ.
вот только практика показывает,
Опять. Ты не того пытаешься наебать. У тебя нет и не было никакой практики наладки систем с термопарами. ХВАТИТ ВРАТЬ.
ТРМ138 - на экструдере, прекрасная вещь... была такая конторка НОВЭК, кабели делали. если чего не понятно про ТРМ, те, что ОВЕН производит - легко гуглится.
ЗЫ и я не говорил, что у меня были проблемы... ну кроме как фильтр по питанию и сами пары летели... но это к делу наладки не относится... и пары были хромель-копель ну так, на всякий случай....
ЗЫЗЫ и я не грубил, просты высказывал свое мнение так сказать предлагал вариант.
Если программируете уверенно, то используйте физику канала RS-485 и какой-нибудь понятный протокол через соответствующие библиотеки. Например, Modbus, CAN. На форуме есть примеры.
Большое спасибо за совет на счет RS-485. Решил делать на этом интерфейсе и протоколе ModBus RTU. Собрал прототип (макетку) пока из трех термопар (нужно шесть) подключенных каждая к своему Arduino Nano. Эти ардуинки через модули MAX485, по витой паре подключены к центральному контроллеру на Arduino UNO с модулем Ethernet, он отправляет данные на WEB сервер. Проверял на бухте кабеля длиной 40 метров, всё работает отлично, ошибок обмена не замечается (на приёмной стороне специально сделал программный счетчик ошибок для наглядности). Есть только один вопрос. Во всех статьях по спецификации RS485 пишут что линия связи должна быть только одна с короткими ответвлениями на slave устройства. А у меня планируется каждый Slave подключать к ведущему контроллеру отдельной витой парой, параллельно. Возможно ли такое подключение, если длина каждого кабеля будет от 20 до 40 метров и таких линий будет шесть? Не будут ли терминальные резисторы (120 Ом) на каждом устройстве Slave садить вход модуля RS485 на ведущем контроллере, может их сопротивление увеличить? Или лучше проверить всё на практике?
Практика это всегда хорошо. Если звезда, то терминальный резистор один на мастере. Если будут ошибки, понизить скорость обмена. 40 метров витой пары в одном луче нормально.
Собрал прототип (макетку) пока из трех термопар (нужно шесть) подключенных каждая к своему Arduino Nano. Эти ардуинки через модули MAX485, по витой паре подключены к центральному контроллеру на Arduino UNO с модулем Ethernet, он отправляет данные на WEB сервер.
А какими библиотеками пользуешься? Я с RS-485 multi drop дела раньше не имел. Только Точка-Точка использовал. А сейчас надо что-то вроде того что ты делаешь. Но я нигде не увидел как решается вопрос коллизий.
Большое пожалуйста. :)) RS-485 в АСУ ТП настолько распространен, что вроде как стал "общим местом" - "а как ещё то?". :))
Опять же в АСУ ТП RS-485 и ModBus RTU - "близнецы - братья". Практически всегда подразумевается именно эта связка. Только за десятилетия использования протокола появилось такое количество "лепилова", что уму не постижимо. От ModBus берут только сетевой уровень, внутри посылки делают, что хотят, по ходу дела и тайминги курочат, и прочие безобразия. Успех дела очень сильно зависит от того, насколько глючной будет используемая библиотека. В Ардуино я Вам конкретно не подскажу.
Очень хорошо.
Есть только один вопрос. Во всех статьях по спецификации RS485 пишут что линия связи должна быть только одна с короткими ответвлениями на slave устройства. А у меня планируется каждый Slave подключать к ведущему контроллеру отдельной витой парой, параллельно. Возможно ли такое подключение, если длина каждого кабеля будет от 20 до 40 метров и таких линий будет шесть? Не будут ли терминальные резисторы (120 Ом) на каждом устройстве Slave садить вход модуля RS485 на ведущем контроллере, может их сопротивление увеличить? Или лучше проверить всё на практике?
В промышленности, если что не заработает, и выясниться, что разработчик системы (и/или проектировщик) нарушил прямые рекомендации изготовителя оборудования (= требования нормативной документации), то "со всеми вытекающими" и "со всей строгостью". И там таких экспериментов стараются не делать. А для себя...
Как советует
Модбас одномастерный протокол. Только Мастер спрашивает по адресу конкретное устройство и получает от него ответ. Остальные слейвы только слушают. Там, вроде, коллизий быть не должно, кроме как из-за глючности конкретной библиотеки.
Так какую библиотеку посоветуйте?