Jump to content
binarick

Измеряю Температуру

Recommended Posts

Здравствуйте уважаемые.

Я недавно в теме.

Понадобилось измерить температуру с помощью атмеги8

и всё бы было здорово если бы можно было использовать цифровой датчик. но у меня температура 360 Цельсия

потому придётся выбрать аналоговый датчик температуры (термистор).

может у когонить есть пример кода на с++ (это чтобы не разжёвывать) гугл не помог не или плохо искал

или мои вопросы

1. у аналоговых датчиков линейная зависимость сопротивления от температуры ?

2. по какому принципу можно получить температуру с аналогового датчика ? про работу АЦП не нужно объяснять мне, смутно но понимаю.

не понимаю что сделать когда я получил напряжение с датчика на АЦП как мне величину этого напряжения перевести в градусы ?

зы: Пишу проект на CodeVisionAVR 3.12 хоть и смотрел уроки на тюбе но атмел студии всё сложнее т.к. там нет мастеров генерации кода. Для меня лично как ламера в AVR это выручает до нельзя тк. мне не оч бы хотелось вникать в тонкости работы с lcd либо adc.

Далее мучаю протеус 8,1

Если необходимо выложу сюда

Спасибо за ваше время и ответы.

Share this post


Link to post
Share on other sites

Зависимость указывается в даташите на термистор.

Напряжение на АЦП ты получаешь с делителя напряжения, одним из плечей которого является термистор. Это напряжение однозначно зависит от напряжения перед делителем (должно быть постоянным и стабильным) и сопротивления термистора. Сопротивление однозначно зависит от температуры и калибровка (указание сопротивления для конкретных температур) тоже указана в даташите.

Вот пример для одного из NTC NTC-MF52AT 10K 3950 1%.pdf

В соответствии со всем этим ты связываешь температуру и выходное значение АЦП в МК.

Share this post


Link to post
Share on other sites

Изготовление 2-х слойных плат от 2$, а 4-х слойных от 5$!

Быстрое изготовление прототипа платы всего за 24 часа! Прямая доставка с нашей фабрики!

Смотрите видео о фабрике JLCPCB: https://youtu.be/_XCznQFV-Mw

Посетите первую электронную выставку JLCPCB https://jlcpcb.com/E-exhibition чтобы получить купоны и выиграть iPhone 12, 3D-принтер и так далее...

Ага буду искать датащит с табличкой зависимости t от r

понял про плечи сейчас реализую

но у меня есть lcd на котором не плохо было бы отображать текущую температуру.... и тут у меня ступор

как в коде это реализовать ?

приходит на ум только тупой способ какой то, если напряжение ацп = x тогда t = у и куча куча таких условий.....

в этом есть минус, что температура будет показываться ступенчато и чтобы ступени уменьшить нужно будет ещё больше если.

Может существует другой способ ? формула или чтото такое

Edited by binarick

Share this post


Link to post
Share on other sites

Вебинар "Новый BlueNRG-LP с Bluetooth 5.2 и Long Range — волшебная палочка разработчика IoT" (04/02/2021)

Приглашаем 4 февраля на бесплатный вебинар о BlueNRG-LP - новой системе-на-кристалле (SoC) STMicroelectronics. На вебинаре будут детально рассмотрены функциональные блоки, особенности подключения, аппаратные и программные средства для разработки, настройка сценариев с помощью BlueNRG-GUI, практические примеры работы с микросхемой, а также примеры применения BlueNRG-LP в устройствах интернета вещей.

Подробнее

Если зависимость можно описать формулой - используй формулу. Если нет, то можешь брать два ближайших значения и аппроксимировать.

Например точно известно, что при 110° сопротивление 1кОм, а при 111° 0.9кОм. Тогда при сопротивлении 0.91кОм будет 110.9°.

То есть тут уже чистая математика и возможности твоего АЦП.

Share this post


Link to post
Share on other sites

Новые компактные конденсаторы Panasonic серии TPS. Закаленный характер.

Panasonic представил новую серию TPS твердотельных танталовых конденсаторов с проводящим полимером для поверхностного монтажа. Конденсаторы серии TPS обладают уникальными особенностями, что делает их отличным выбором для использования в приложениях с высокими требованиями.

Подробнее

Эх беда.

попытаюсь найти датчик с линейной зависимостью если такой вообще существует.

Share this post


Link to post
Share on other sites

SiC MOSFET на 1200 В для схем флайбэк до 500 Вт!

Компания Wolfspeed выпустила новые карбид-кремниевые транзисторы C3M0350120D/J на 1200 В, предназначенные для маломощных устройств мощностью до 500 Вт. Карбид-кремниевые транзисторы в сравнении с кремниевыми демонстрируют меньший на 75% уровень потерь на переключение и меньшее на 50% значение потерь проводимости в рабочем режиме при температуре кристалла 100…150°С.

Подробнее

Что вам даст датчик с линейной зависимостью? На выходе делителя напряжение все равно не будет линейным.

Возьмите платиновый терморезистор типа PT-100 http://e-voron.dp.ua/catalog/015715 , высокая точность, сопротивление меняется по формуле Rt = Rо (1+0,00385 t) http://www.micropik.com/PDF/pt100.pdf

Share this post


Link to post
Share on other sites

IMHO на 360 градусов уже хромель-копелевую термопару нужно применять, а это уже специализированая обвязка. Термисторы такие бывают, но неизвестно насколько они легкодоставаемы и полагаю, что стОят они немало. Тот-же PT100 ~ 1000руб. А линейность - нелинейность, всё-равно калибровать нужно, ну или по таблице выборку делать с аппроксимацией, как уже написали.

Edited by shindbad

Share this post


Link to post
Share on other sites

Что вам даст датчик с линейной зависимостью? На выходе делителя напряжение все равно не будет линейным.

Возьмите платиновый терморезистор типа PT-100 http://e-voron.dp.ua/catalog/015715 , высокая точность, сопротивление меняется по формуле Rt = Rо (1+0,00385 t) http://www.micropik.com/PDF/pt100.pdf

предполагаю что формула на линейную зависимость будет проще

Вот спасибо за датчик. ща поискаю где добыть можно ли. жесть до 850 цельсия )))

IMHO на 360 градусов уже хромель-копелевую термопару нужно применять, а это уже специализированая обвязка. Термисторы такие бывают, но неизвестно насколько они легкодоставаемы и полагаю, что стОят они немало. Тот-же PT100 ~ 1000руб. А линейность - нелинейность, всё-равно калибровать нужно, ну или по таблице выборку делать с аппроксимацией, как уже написали.

деньги не имеют значения.

когда вник зачем мост сопротивлений нужен понял что калибровки не избежать.

насчёт легкодоступности пока абсолютно всё что когда либо требовалось покупал на алиэкспрессе.

Share this post


Link to post
Share on other sites

IMHO на 360 градусов уже хромель-копелевую термопару нужно применять, а это уже специализированая обвязка. Термисторы такие бывают, но неизвестно насколько они легкодоставаемы и полагаю, что стОят они немало. Тот-же PT100 ~ 1000руб. А линейность - нелинейность, всё-равно калибровать нужно, ну или по таблице выборку делать с аппроксимацией, как уже написали.

Не знаю, где вы увидели 1000 рублей, 2 доллара за датчик в виде резистора, 6 - в виде щупа http://www.aliexpress.com/premium/pt100.html?ltype=wholesale&d=y&origin=y&SearchText=pt100&initiative_id=AS_20150211011757&isViewCP=y&catId=523

Вот спасибо за датчик. ща поискаю где добыть можно ли. жесть до 850 цельсия )))

Не дефицит. И калибровать не прийдется, раз дана точность, то будет соответствовать формуле (и таблице соотв)

Share this post


Link to post
Share on other sites

Да примерно там-же:

http://russian.alibaba.com/goods/pt100-temperature-sensor.html

И как-то мне слабо верится, что "платиновый" датчик стоимостью $2-6, вообще содержит платину. Уж что-что, а писать китайцы хорошо умеют.

Share this post


Link to post
Share on other sites

Я попробую эти дешманские штуки потом отпишусь если не забуду

статейку нарыл по моей темке как раз

http://www.rlocman.r....html?di=151518

как обидно что там код на ассемблере.... я в нём ни бумбум.....

был бы хорошим велосипедом еслиб на с++

Edited by binarick

Share this post


Link to post
Share on other sites

поищите самодельные паяльные станции. там и датчики. там и исходники....


Люблю українську природу, горячий борщ, холодну воду, i бабу товсту як колоду, i лiс, i поле, i ставок, i повну пазуху цицьок А ще я люблю булку з маком, вино, горiлку, пиво з раком, люблю дiтей, батькiв, сiм'ю, та i себе трішечки люблю.

Share this post


Link to post
Share on other sites

Поищи в гугле самодельную паяльную станцию на атмеге8.

Там и схема и прога на СИ. И обвязки для термопары один операционник.

И термопару самому можно сделать.

Вот и опоздал уже.

Edited by croc19

Share this post


Link to post
Share on other sites

ищу пока только на термопарах попадаются схемки (нада кстати подумать в этом направлении)

хотя в коде как я понимаю различий не будет

если правильно понимаю термопара это тотже термистор но с обвязкой в виде усилителя

Edited by binarick

Share this post


Link to post
Share on other sites

вот функция кусочно-линейной аппроксимации термистора

uint32_t TempConvert (uint32_t T)
{
if (T<545) return 0;
if (T < 652) return ((T-545)*1000/215+2000)/10;
if (T < 783) return ((T-652)*1000/261+2500)/10;
if (T < 929) return ((T-783)*1000/293+3000)/10;
if (T < 1091)return ((T-929)*1000/324+3500)/10;
if (T < 1266)return ((T-1091)*1000/349+4000)/10;
if (T < 1453)return ((T-1266)*1000/374+4500)/10;
if (T < 1652)return ((T-1453)*1000/398+5000)/10;
if (T < 1858)return ((T-1652)*1000/412+5500)/10;
if (T < 2067)return ((T-1858)*1000/418+6000)/10;
if (T < 2277)return ((T-2067)*1000/419+6500)/10;
if (T < 2485)return ((T-2277)*1000/416+7000)/10;
if (T < 2688)return ((T-2485)*1000/406+7500)/10;
if (T < 2885)return ((T-2688)*1000/393+8000)/10;
if (T < 3072)return ((T-2885)*1000/374+8500)/10;
}

сигнал с делителя напряжения.

на примере первой строки if

При 20С сигнал на АЦП (расчетный по даташиту) 545 мВ, при 25С 652 мВ. T - текущее значение на ЦАП, 1000 просто коэффициент, чтобы математика была целочисленной, 215 - это значение в миливольтах на градус в этом промежутке (652-545)/5 умноженное на 10 чтобы избавиться опять же от десятичной точки. 2000 это 20 градусов умноженые на 100, так как у нас все в одном масштабе. / 10, чтобы получить значение в градусах с одним знаком после запятой (например 24,5). Идея понятна? То есть эта строчка на выходе дает нечто похожее на к примеру 245 если температура 24,5. Потом мы это число при помощи sprintf переводим в строку, добавляем точку куда надо, плюсуем в конец символ "С" и выводим как строковую константу на дисплей. Получается так как на фото. Нижняя строка (символ С не добавлял, место для отладки экономил, чтобы 3 температуры поместились ровно)

функция вывода на экран выглядит так

sprintf(str_buf_V, "%03u", _Actual.Temp1);
str_buf[0] = str_buf_V[0];
str_buf[1] = str_buf_V[1];
str_buf[2] = 0x2E;
str_buf[3] = str_buf_V[2];
str_buf[4] = str_buf_V[3];
MT_WH1602_SetDDRAMAddress(0x41);
while (MT_WH1602_ReadBusy()!=FALSE);
lcd_write_str(str_buf);

думаю тут комментарии излишни. Немного не феньшуй конечно, но работает очень быстро. А для меня главное не красота методов, а скорость и эффективность

комментария стоит только эта строка. В ней копируется завершающий ноль ('\0'), чтобы вывод на экран знал где конец строки

str_buf[4] = str_buf_V[3];

так что не стоит бояться кривой характеристики термисторов, просто надо уметь грамотно ей пользоваться и уметь совершать простейшие математические преобразования

post-183933-0-11029900-1423664571_thumb.jpg

Edited by mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites
вот функция кусочно-линейной аппроксимации термистора
Проще формулу вычислить по точкам и забить её в программу.

Вот Ваша зависимость :

y = -3E-05x2 + 0,3671x + 25,119

Где

y - температура, умноженная на 10.

x - значение в милливольтах на АЦП

А вот график в екселе с функцией :Книга1.rar

Share this post


Link to post
Share on other sites

да конечно мы в курсе за формулы аппроксимации, НО

проще то проще, и моя функция выполнится условно за 10 тактов и займет 10 байт, а ваша будет выполняться 2000 тактов и займет килобайта два. Угадайте почему

не все что красиво на бумаге красиво ложится на реальный камень

Edited by mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

И что ? Вы куда-то торопитесь и выводите информацию на дисплей с скоростью 10000 раз в секунду ?

По поводу памяти. Тут ещё спорный вопрос, что займёт больше места, функция или Ваша "простыня"...

Share this post


Link to post
Share on other sites

ну обычно контроллер занимается не только выводом на дисплей (который кстати тоже весьма нетороплив). Если все это суммировать, то на реальную задачу процессорного времени уже может остаться совсем маленько. Тут же надо еще учесть, что при работе с ацп желательно бы замутить еще и мультисэмплинг, чтобы показания на экране не скакали, а это мгновенно умножает расход ресурсов кратно показателю сэмплирования. Ну и там еще есть мелочи, недостойные внимания

Можете в принципе делать как хотите, если все устраивает. Я уже все эти методы давно испробовал, поэтому гдето обхожусь простынями, а гдето полиномами. Зависит конечно от задачи. Но на всякий пожарный стараюсь все таки ресурсы экономить. И в моих программах вы не увидите в процедурном коде функций типа delay_ms или наподобие. У меня весь код пролетается насквозь за один проход без остановок и за гарантированное время (касается и антидребезга и всяких звуоквых сигналов, и даже вывода на дисплей), даже если ресурсов камня с избытком

Edited by mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • с выключателем? интересная мысль.
    • Motherboard BT-200T плата на сайте https://akkh.com.ua/p176598716-materinskaya-plata-dlya.html
    • Когда схему регулятора напряжения впервые выложили в журнале Радио, "Витёк" ещё не родился...
    • Такая проблема часто возникает у "лунатиков", которые посрать без планшета в руках не могут. Соответственно, гаджет без конца заряжается, гнёзда и кабели летят только так.
    • Светодиод питается током, а не напряжением. Секёшь разницу? Напряжение на нём конечно присутствует, но ток имеет здесь главнейшую роль!
    • Зачем мне его читать? Меня память не подводит.  Я вижу, что Вы сейчас демонстрируете, что для того, чтобы судить о законности мало просто “погуглить“ и почитать одну статью.  И ранее видел многократно. Если Вы не знакомы и не “погуглили“, чтобы ознакомиться с практикой применения статей по аналогии, и прецедентами применения указанной Вами статьи, это признак того, что судить о законности Вам, как минимум, рано!   Под итогом можно вывести формулировку: Мало не быть среди “неспособных пользоваться "Гуглом", "Гарантом", "Консультантом" и т.д.“, необходимо не только знать где “гуглить“, но и необходимо понимать, что “гуглить“!   
    • Всем добрый день,  собрал по схеме 16 бп напряжение отлично регулируется , а вот с током беда реакции ноль и тригер тоже , сижу читаю тему уже третий день толку тоже ноль , что сделал; 1 менял С 6,С 9 безрезультатно  2 менял номиналы R28,29 безрезультатно 3 осликом китайским пробовал на 6 и 7 ноге нормально пульсаций нет , пульсации начинаются после VT4 и увеличиваются после VT1 от1.2 мв до 5 мв и частота от 150Khz до 830Khz вопрос откуда?, причём не помехи , а реально от (ломаного) шим до чистого синуса, может кто подскажет в чём беда? Транзистор VT4 5551 VT1 BD140 силовые 2SC5200

  • Dupont разъемы под обжим, набор из 100 шт. папы и 100 шт. мамы

  • Similar Content

    • By Тимур1992
      Доброго времени суток. Нужно вывести наружу устройства несколько аналоговых входов. Входы эти будут выполнять 2 функций: подключения концевиков на дверь шкафа, чтобы отслеживать открытия или к ним будет подключатся pt100-pt1000 по 3-х проводной схеме(точность нужна около 1 градуса). Входы должны быть гальванический изолированы от остальной системы, чтобы в случай произвола или ошибки монтажа остальная часть системы продолжила работать.
      Первый вариант был подключить внешнее АЦП, и считывать с него данные через I2C интерфейс с гальванической развязкой. Но это решение мне показалось более сложным, так как нужно наладить взаймодейтсвие через I2C и разобрать с настройками внешнего АЦП.
      Второй вариант, это использовать изолирующий усилитель HCPL-788J-500E и встроенное АЦП STM32F407. Мне это вариант нравиться больше так как схема упрощается. И программу проще писать.
      Но я до этого не когда не работал с изолированным усилителем, поэтому поднялось несколько вопросов:
      1. Жизнеспособна ли эта и идея?
      2. Не будет ли искажения и смещения от изолированного усилителя слишком большими?
      Схема видится мне примерно такой:

      Для облегчения наладки я решил внести в схему еще реле для возможности переключения внешнего входа на эталонный резистор R1 в 100 Ом при загрузке системы и калибровки по нему. Вообще думаю можно сделать несколько таких резисторов, только нужно тогда уже не реле использовать, а что-то более компактное. Вообще интересно будет почитать ваши комментарий и предложения.
    • By Danik
      Доброго времени суток.
      Стоит нетривиальная задача измерения переменного напряжения входной трехфазной цепи без нейтрали(только 3 провода). 
      До этого использовалась следующая схема: 1 фаза использовалась как нейтраль и заводилась на специализированный АЦП, две фазы на входы того же ацп. Однако, как показала практика, это не совсем хороший вариант т.к. если у нас обрывается фаза, которую используем как нейтраль, то мы теряем способность измерений вообще и не можем сказать у нас оборвались 2 фазы измеряемые или фаза-нейтраль.
      Ставить 3 подобных ацп, заменяя фазу-нейтраль тоже не подходит, т.к. внесутся искажения в измеряемую величину.
      Я предположил, что можно соединить все три фазы через резисторы в одной точке, то получим виртуальную нейтраль, но не учел, что при перекосе фаз, получим полную фигню по измерениям значений. Следовательно тоже не подходит.
      Знает кто-то схему для измерения трехфазной цепи без нейтрали? Или, возможно, уже готовое устройство (что-то вроде промышленных счетчиков) которые умеют отдавать данные, т.к. обработка значений будет проводится с помощью мк stm32f103. Связь с мк по SPI(желательно, но рассмотрю хоть какие варианты).
       
    • By Gerader
      Много видел схем, но, мне хочется сделать схему с обратной связью (т. е. температуру установил жало нагрелось до нужной t° и питание отключилось, жало остыло, питание включилось) а не с ограничением мощности на симисторе.
      Помогите пожалуйста, буду очень рад и благодарен!
    • By Danik
      Доброго времени суток.
      Стоит задача измерение переменного напряжения входной трехфазной цепи без нейтрали(только 3 фазы). Исследуя различные форумы и т.д. пришел к выводу, что стоит использовать ацп с дифференциальными входами, трехканальные, на каждый канал линейные напряжения между фазами(1-2, 1-3, 2-3).
      Кто-то сталкивался с подобной задачей или имеет готовое решение хотелось бы узнать?т.к. совсем мало опыта в схемотехнике.
      Обработка результатов измерения будет проводится с помощью контроллера stm32f1, принимать информацию от ацп будет по spi. Это необходимо потому что входных цепей много: 2 цепи переменки 380 В, 1 цепь постоянки 27 В и 2 цепи переменки 220 В.
    • By Профан
      Заказал своей даме в подарок плойку из Китая.Пришла быстро,но при первом использовании от волос пошел дым. Я взял тестер с термопарой,зажал в плойке и начал регулировать температуру. Температура при любых показаниях на дисплее(должно регулироваться 80-210 градусов) была ~196. Спор с продавцом я проиграл и решил попробовать оживить ее с вашей помощью. Проверил симиcтор (BT137),он рабочий. Куда еще копать ?



×
×
  • Create New...