Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Подключение NTC-термисторов на шину 1Wire как и DS18B20

Форум самогонщиков Приборы и электр(он)ика
1 2 3 4 1
serjrv Кандидат наук Камышин 393 219
05 Сент. 22, 21:14
Данная схема позволяет подключать до 8 NTC-термисторов 10 кОм с характеристикой B25/100: 3950 (по умолчанию, но можно выбрать и другой тип).
В железе это выглядит примерно так:
photo.jpg
Photo. Подключение NTC-термисторов на шину 1Wire как и DS18B20. Приборы и электр(он)ика.
Корпус.jpg
Корпус. Подключение NTC-термисторов на шину 1Wire как и DS18B20. Приборы и электр(он)ика.


Реализовано авто определение количества подключенных NTC-термисторов. На самой шине 1Wire так же могут присутствовать и датчики DS18B20.
Диапазон от -25 до +125 гр.С. Разрешение, из за нелинейности термисторов, тоже нелинейно:
Скрытый текстдо -11 гр.С = 0.0185 - 0.0090
до +25 гр.С = 0.0090 - 0.0035
до +80 гр.С = 0.0035 - 0.005
до +108 гр.С = 0.005 - 0.01
до +125 гр.С = 0.01 - 0.016
В любом диапазоне разрешение превосходит сами DS18B20. Пляска показаний при измерении происходит на уровне 3 - 7 тысячных градуса в диапазоне от +25 до +100, т.е. 1 разряд АЦП. Точность естественно связана с разбросом характеристик самих NTC-термисторов и примененных компонентов в схеме, рекомендую в схеме ставить резисторы с точностью не хуже 1%. Сами измерения АЦП синхронизированы с сетью 50Гц, т.е. за период 20 миллисекунд производится по 16 распределенных по времени выборок на каждый канал. Данный подход существенно снизил пляску значений АЦП в младших разрядах из за сетевых наводок на провода датчиков.

Немного пояснений по самому алгоритму:
При включении происходит авто определение подключенных датчиков и присвоение им внутренних серийных номеров.
Занимает этот процесс 24 миллисекунды, соответственно устройство автоматики (или иной контроллер) не должно ранее этого периода начать определять присутствие и идентифицировать цифровые датчики на шине. Если модуль прошиваем по UART и оставляем штатный для платы загрузчик, то время до начала идентификации надо увеличить как минимум до 500 миллисекунд.
Далее все идет практически по стандартному протоколу 1Wire. Сам опрос и расчеты для 8 датчиков занимает 300 миллисекунд. Есть одно исключение, в использованной библиотеке "OneWireHub", есть ошибка в обработке команды на преобразование температуры (0xCC, 0x44). По уму на старт измерения надо бы использовать перехват именно этой последовательности, но лень искать глюк в чужой библиотеке. Выкрутился так - если от любого устройства на шине 1Wire в течении 100 миллисекунд нет телодвижений, мы производим измерения АЦП по каналам и производим вычисления, саму шину 1Wire мы при этом не анализируем (и ни как ей не мешаем). В реальных применениях, глюков из за такого метода у меня не возникало на реальных устройствах. Это "вылечил", теперь работает по стандартному варианту по запросу на конвертацию (0x44).
Так же стоит уточнить как передаем показания с полной точностью. В самой посылке от датчика летит 9 байт, в первых двух температура с разрешением как и у DS18B20 (0.0625), а вот в третьем и четвертом как раз полная разрядность наших измерений (15 бит вместо 12 у DS`ок). В данных ячейках у реальных датчиков хранятся значения для режима термостата, нижний и верхний порог температур, используется данный режим обычно только если датчик работает автономно, соответственно с чистой совестью можем их использовать в своих целях ))). Пользоваться этим можно так:
Скрытый текстПример для стандартной Ардуиновской библиотеки:
byte data[9];
for ( i = 0; i < 9; i++) {
 data = ds.read();
}
int16_t raw_15 = (data[3] << 0x08) | data[2];
float Temperature = (float)raw_15 / 256.0;  // значение с разрядностью до 0.004

ПО написано в среде Arduino версии 1.8.5, SDK для платы Arduino Pro Mini (контроллер ATmega328P) 1.6.20. Думаю так проще для повторения.

Проверена работа на автоматиках LuckyBox, Contronius, просто на отдельной Ардуиновской платке для опроса DS`ок с библиотекой OneWire, и на схеме с PIC контроллером используемом совершенно не для наших задач. Работу с автоматиками опубликованными на данном форуме не проверял.

Схема, печатная плата и исходники ПО в архиве ниже. Плата разработана для возможности изготовить "на коленке". Основные компоненты - это готовые модули с AliExpress: Arduino Pro Mini 16Mhz 5v и 2 платки АЦП ADS1115 в узком корпусе, резисторы и конденсаторы типоразмера 0805. Библиотеки в ПО кстати интегрированы, чтобы лишних танцев с бубном не происходило )))

pro_mini_ntc.zip

Подправил прошивку и добавил модель корпуса для печати, так что архив заменил.
Теперь корректно отрабатывает команда на конвертацию температуры (0x44), ну и еще некоторые болячки либы “OneWireHub” подправил.
Изменились серийники "подставных" датчиков.
Скрытый текстПредопределены следующие серийники:
1-й датчик = 0x28, 0x10, 0x55, 0x44, 0x33, 0x22, 0x01, (0xD8)
2-й датчик = 0x28, 0x20, 0x55, 0x44, 0x33, 0x22, 0x02, (0xD7)
3-й датчик = 0x28, 0x30, 0x55, 0x44, 0x33, 0x22, 0x03, (0xD2)
4-й датчик = 0x28, 0x40, 0x55, 0x44, 0x33, 0x22, 0x04, (0xC9)
5-й датчик = 0x28, 0x50, 0x55, 0x44, 0x33, 0x22, 0x05, (0xCC)
6-й датчик = 0x28, 0x60, 0x55, 0x44, 0x33, 0x22, 0x06, (0xC3)
7-й датчик = 0x28, 0x70, 0x55, 0x44, 0x33, 0x22, 0x07, (0xC6)
8-й датчик = 0x28, 0x80, 0x55, 0x44, 0x33, 0x22, 0x08, (0xF5)
Так же добавил поддержку нескольких типов NTC-термисторов
Скрытый текстВозможно использовать следующие типы:
B(25/100) = 4300
B(25/100) = 3988
B(25/100) = 3950
B(25/100) = 3625
B(25/100) = 3530
B(25/100) = 3492
B(25/100) = 3380
их тип выбирается в самом начале скетча.
Весельчак Ы Кандидат наук Донецк 303 70
Отв.1  06 Сент. 22, 08:30
serjrv, Привет.

Не придираюсь, интересуюсь. Резисторы питания термисторов 10к и 6,2к обычные, 5%?
1117 тоже нельзя назвать прецизионной.
Есть ли смысл использовать точные компоненты, не прикидывал?
serjrv Кандидат наук Камышин 393 219
Отв.2  06 Сент. 22, 11:58
Весельчак Ы, Привет.

Про допуск резисторов я же написал: "рекомендую в схеме ставить резисторы с точностью не хуже 1%".
Стабилизаторы 1117 серии имеют такие характеристики по стабильности / точности:
- разброс выходных напряжений = 1% от заявленной
- точность стабилизации = 0.2%
- температурная стабильность = 0.4%
Сами NTC-термисторы имеют заявленную точность обычно 1% или 2% (и это известных фирм дающих доки на них), а вот что нам китайцы продают - большой вопрос ))).
В общем скажу проще, если все использовать с 1% допуском, максимальная разбежка между показаниями датчиков может достигать на температуре 78 гр.С - 1.35 гр.С. У фирменных DS`ок - 1 гр.С, а у китайских "нонаме" (на практике) и до 2 гр.С доходит.

p.s. Я не стремился получить именно точность измерений (у меня в автоматике к примеру присутствует калибровка датчиков), в первую очередь меня интересовала стабильность и разрешение в 0.01 гр.С в интересующем нас диапазоне температур.

p.p.s. Дополню. Вот фото с реальными показаниями на автоматике без калибровки:
разбежка.jpg
разбежка. Подключение NTC-термисторов на шину 1Wire как и DS18B20. Приборы и электр(он)ика.

Резисторы стоят с допуском 5%, NTC-термисторы просто сдернуты с китайских термостатов. По самим показаниям, Т1 - Т3 это как раз термисторы, а Т4 - Т7 это именно фирменные DS`ки из одной партии купленные у официалов в Европе лет 10 назад. Датчики просто лежат в одном боксе, так что температура на них одна и та же.
Весельчак Ы Кандидат наук Донецк 303 70
Отв.3  06 Сент. 22, 13:56
serjrv, позже до меня дошло, что невнимательно прочитал твоё сообщение, извини.

У меня, кстати, одна из китайских DS-ок, при температуре после 99 градусов просаживала всю шину. Нашёл (успел) у нас из старых запасов настоящих. Теперь норм.
serjrv Кандидат наук Камышин 393 219
Отв.4  08 Сент. 22, 17:04
Подправил сообщение и прошивку в шапке. Если архивчик уже кто то скачивал, обновите.
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.5  20 Марта 23, 09:48
serjrv
Вопрос автору темы. Почему верхний резистор в делителе применен именно 6.2к? При таком номинале сопротивление NTC B3950 соответствует температуре около 36°С. Нас ведь интересует максимальная точность в районе 78°С, что соответствует сопротивлению NTC 1.3313к.
Если же верхний резистор поставить 1.3к, то вероятно придется переписывать всю таблицу в скетче?
таблица.png
таблица.png Подключение NTC-термисторов на шину 1Wire как и DS18B20. Приборы и электр(он)ика.
serjrv Кандидат наук Камышин 393 219
Отв.6  20 Марта 23, 10:26, через 39 мин
Почему верхний резистор в делителе применен именно 6.2к?gol_avto, 20 Марта 23, 09:48
При меньшем номинале данных резисторов, мы выйдем за диапазон допустимых токов для большинства доступных NTC термисторов.
Если есть желание уменьшить номиналы данных резисторов, приведу подпрограммку расчетов без табличного метода:
Скрытый текст
/* 
*    R1(T1): 10кОм(25°С)
*    Схема включения: Ra подключен к U0, Rb параллельно R1(T1)
*    Ra/Rb: 6.2кОм/10кОм
*    Напряжения U0/Uref: 3.3В/2.047В
*/
int32_t computeTemp_15bit(uint16_t adcRez) {
  float Rp;
  float Rt;
  float Tc;
  uint16_t B25 = 3950;
  if (adcRez > 32000) return -55000;
  else if (adcRez < 2000) return 125000;
  else {
    Rp = 6200.0 / (U0 / adcRez - 1);
    Rt = 1.0 / (1.0 / Rp - 1.0 / 10000);
    Tc = 1.0 / (1.0 / 298.15 + log(Rt / 10000) * 1.0 / B25) - 273.15;
    return (int32_t)(Tc * 1000);
  }
  return 0;
}
Volume Кандидат наук Уфа 478 274
Отв.7  20 Марта 23, 11:22, через 57 мин
выйдем за диапазон допустимых токов для большинства доступных NTC термисторовserjrv, 20 Марта 23, 10:26
Можешь дать ссылку на даташиты с максимальным током?
на MF52,что массово продают на али, в тех справочных листках что смог найти про ток ничего, только про мощность рассеивания, не более 50 мВт.
При 3,3В 50 мВт это резистор 217 Ом. При 1,3к резистора делителя и 1,3к NTC общая мощность рассеивания 4мВт, из них на NTC только половина, 2 мВт
serjrv Кандидат наук Камышин 393 219
Отв.8  20 Марта 23, 11:56, через 34 мин
Volume, при мощности рассеивания более 1 мВт, начинает лезть погрешность. При сопротивлении 1.3к и к примеру Т=100 гр.С, получим мощность рассеивания 4 мВт. А вот значение 50-60 мВт, это максимальная мощность при которой термистор не сгорит. Так что не путайте разные параметры )))

p.s. Более менее подробные даташиты на термисторы смотрим у Epcos. Еще вот ссылка на статейку по расчетам и применению термисторов: http://aterlux.ru/article/ntcresistor
sachalin-1 Кандидат наук Куйбышев 432 126
Отв.9  20 Марта 23, 12:04, через 8 мин
Может, коллеги из коммерческой ветки помогут? Они вроде, похожую приблуду на 4мм датчики забабахали? Или там такая же петрушка?
Dry Gin Профессор Челябинск 11.8K 1.9K
Отв.10  20 Марта 23, 13:02, через 58 мин
Или там такая же петрушка?sachalin-1, 20 Марта 23, 12:04
Эта гораздо лучше. Вот вчера тарировал датчики по кипятку:
Screenshot_2023-03-20-15-15-56-047-edit_com.android.chrome.jpg
Screenshot_2023-03-20-15-15-56-047-edit_com. Подключение NTC-термисторов на шину 1Wire как и DS18B20. Приборы и электр(он)ика.

Три датчика ровненько идут.
Volume Кандидат наук Уфа 478 274
Отв.11  20 Марта 23, 14:00, через 59 мин
при мощности рассеивания более 1 мВт, начинает лезть погрешность....50-60 мВт, это максимальная мощность при которой термистор не сгорит. Так что не путайте разные параметры )))serjrv, 20 Марта 23, 11:56
кто путает? Я прекрасно понимаю что такое максимально допустимая мощность рассеивания и что мощность рассеиваемая на термисторе вносит погрешность.
Но ты сказал про "диапазон допустимых токов". Я не видел чтоб это нормировалось, поэтому вопрос задал.
Т.е., говоря о диапазоне токов, ты имел ввиду минимизацию рассеиваемой мощности для минимизации погрешности. Ок. А цифра 1 мВт откуда? Из справочника/даташита? Почему не 0.1? или 2?

PS думается, эффект нагрева NTC измерительным током - эффект давно известный, как и методы борьбы 1)минимизация мощности измерения 2)внесение поправки, исходя из известной мощности и теплового сопротивления.
Первый вариант, кроме номинала резистора, обеспечивается подачей тока на резистор только в момент измерения

Добавлено через 17мин.:

"А цифра 1 мВт откуда?" - вопрос снят, цифра из статьи по ссылке. Обоснования, правда, нет, видимо из практики ):
Желательно чтобы мощность на термисторе не превышала 1 мВт. А значит, при напряжении U0 = 5В, RA должен быть как минимум, 10 килоОм. Сопротивление термистора в измеряемом диапазоне должно иметь примерно тот же порядок.
serjrv Кандидат наук Камышин 393 219
Отв.12  20 Марта 23, 15:05
Ок. А цифра 1 мВт откуда? Из справочника/даташита? Почему не 0.1? или 2?Volume, 20 Марта 23, 14:00
Именно из практики, еще давненько на буржуйских ресурсах видел рекомендацию не превышать 0.5 мВт.
PS думается, эффект нагрева NTC измерительным током - эффект давно известный, как и методы борьбы 1)минимизация мощности измерения 2)внесение поправки, исходя из известной мощности и теплового сопротивления.
Первый вариант, кроме номинала резистора, обеспечивается подачей тока на резистор только в момент измеренияVolume, 20 Марта 23, 14:00
1) Подавая напряжение только в момент измерения, усложним схему, а эффект будет минимален, т.к. я не один раз в секунду измерения произвожу, в первом сообщении расписывал - почему именно так реализовал. Можно конечно номинал NTC термистора увеличить (и остальных резисторов соответственно), но начнем гробить разрешение внешними наводками на провода датчиков.
2) Зачем бороться с тем, чего можно избежать?

p.s. Я вот что то не пойму, разрешения в 0.01 гр.С кому то недостаточно?
Volume Кандидат наук Уфа 478 274
Отв.13  20 Марта 23, 15:26, через 22 мин
p.s. Я вот что то не пойму, разрешения в 0.01 гр.С кому то недостаточно?serjrv, 20 Марта 23, 15:05
есть тут ветка где про 0.001 говорят, мол - только так и не иначе! )
Если серъезно - ты сам путаешь разрешение с погрешностью. Мощность на NTC - это про абсолютную погрешность. К разрешению это не имеет никакого отношения.
имхо, абсолютная погрешность в нашем деле нафиг не нужна, +-2 градуса вполне норм. Стабильность показаний (долговременная), т.е. отсутствие дрейфа - надо обязательно. А разрешения 0.01 более чем достаточно

Мощность рассеиваемая на NTC дает абсолютную погрешность и дрейф показаний несколько минут после включения.

Я это все к чему - если на абсолютную точность пофиг, то мощностью можно особо не заморачиваться. Ну будет подвирать на 0,5..1 градус, ну после включения питания на эти 0,5 градуса уплывет - в чем беда если про это знаешь? Китайские дс-ки на 2 градуса врут - кому это мешает?
serjrv Кандидат наук Камышин 393 219
Отв.14  20 Марта 23, 15:56, через 30 мин
есть тут ветка где про 0.001 говорят, мол - только так и не иначе! )Volume, 20 Марта 23, 15:26
Так это же продать хотят, а я для повторения выложил, как бы разные вещи )))
Мощность рассеиваемая на NTC дает абсолютную погрешность и дрейф показаний несколько минут после включения.Volume, 20 Марта 23, 15:26
Беда в том, что на разных температурах, абсолютная погрешность будет разной. Хотя один черт, уложится в наши хотелки.
А про разрешающую способность измерений, ты видимо не внимательно прочитал. Я же написал - что если сопротивление NTC термистора увеличим, то потеряем в разрешении из за наводок, т.е. придется несколько младших бит АЦП просто игнорировать.
Dry Gin Профессор Челябинск 11.8K 1.9K
Отв.15  20 Марта 23, 16:18, через 22 мин
serjrv, как думаешь, а термопара К-типа будет стабильнее?
Виктрыч Профессор Екатеринбург 7.1K 1.9K
Отв.16  20 Марта 23, 16:45, через 28 мин
Температуру холодных концов чем мерять? Да и неинтересна она на наших температурах. 5 миливольт с двумя знаками после запятой чем взять учитывая ещё и нелинейность? 1400 цельсия её конек.
serjrv Кандидат наук Камышин 393 219
Отв.17  20 Марта 23, 18:11
Dry Gin, Виктрыч тебе за меня ответил )))
Ты же в живую данный вариант с NTC термисторами юзаешь, сам же вроде писал, что стабильно все.
Кстати вопрос к тебе, нет периодических глюков с опросом, как зачастую бывает с китайскими подделками DS18B20?
Dry Gin Профессор Челябинск 11.8K 1.9K
Отв.18  20 Марта 23, 19:20
Виктрыч тебе за меня ответил )))serjrv, 20 Марта 23, 18:11
Ответил-то ответил. Но вот из вики можно узнать вот такое:
Screenshot_2023-03-20-21-10-05-340-edit_com.android.chrome.jpg
Screenshot_2023-03-20-21-10-05-340-edit_com. Подключение NTC-термисторов на шину 1Wire как и DS18B20. Приборы и электр(он)ика.

А кроме того, подозреваю, стабильность должна быть повыше в сравнении с ntc.

Ты же в живую данный вариант с NTC термисторами юзаешь, сам же вроде писал, что стабильно все.serjrv, 20 Марта 23, 18:11
Всегда хочется бОльшего) Таки в районе Ткип воды есть какая-то небольшая болтанка. Примерно 0.03 +-. То есть приближается к ds-кам в этом диапазоне. А вот по спиртовой полке всё красиво, стоит крепко. Так что для старт-стопа идеально.

Кстати вопрос к тебе, нет периодических глюков с опросом, как зачастую бывает с китайскими подделками DS18B20?serjrv, 20 Марта 23, 18:11
Есть. Но ты обещал это поправить)))
сообщения удалены (2)
Виктрыч Профессор Екатеринбург 7.1K 1.9K
Отв.19  20 Марта 23, 21:09
.
сообщение удалено