Народное программируемое реле

breaksshock
Рядовой
Сообщения: 41
Зарегистрирован: 16 апр 2021, 22:22
Имя: Василий

Re: Народное программируемое реле

Сообщение breaksshock »

Заметил, что человек с вами спорил и говорил о pt100, когда вы говорили о pt1000.
Я вот думаю что измерять через делитель pt1000 куда более точнее будет чем pt100. Тупо диапазон сопротивления больше в 10раз.
Если рассматривать что АЦП у ESP32 12битный, то этого вполне должно хватать, так как у решений на термопарах (МАХ6675), где разброс температур больше, имеет базово АЦП также 12 бит
lfgjikjjyj
Сержант
Сообщения: 149
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 10 раз

Re: Народное программируемое реле

Сообщение lfgjikjjyj »

Фантазии тут не интересны приносите с собой факты и обсудим ваши ошибки

Можете пощитать смещение напряжения при 0 и при 100гр найти разницу на 100гр и вычислить сколько это мв/гр
Потом нам раскажите где ошиблись

А 6675 там совсем другое он работает с мкв у обоих 12бит только тут стоит усилок про качество АЦП хз но то что у есп оно сильно кривое то это да
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

Раз есть, то используем в задачах где точность не сильно важна. Если нужны точные данные , то используем специальный модуль расширения ...для того и делалась модульная конструкция - для оптимальности
Электронщик до мозга костей и не только
breaksshock
Рядовой
Сообщения: 41
Зарегистрирован: 16 апр 2021, 22:22
Имя: Василий

Re: Народное программируемое реле

Сообщение breaksshock »

У pt1000
10мв/гр
У pt100
1мв/гр
Это при напряжении 3.3в
Поэтому и применяют 3 провода для pt100

Ну если вы проверяли и это все шляпа ±10°С , так и скажите, по факту, чтобы мои фантазии уничтожились вместе с потерянным временем на тесты в реале.
lfgjikjjyj
Сержант
Сообщения: 149
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 10 раз

Re: Народное программируемое реле

Сообщение lfgjikjjyj »

я зашол в даташит и посмотрел сопротивление в одинаковых границах
как найти падение и так понятно без тестов

при 0 гр = 100ом
при 100 гр = 138ом
падение на пт100 = 3,3*100/100+100=1,65в при 0 гр
падение на пт100 = 3,3*138/100+138=1,92в при 100 гр
0,27в на 100гр или 2,7мв/гр

при 0 гр = 1000ом
при 100 гр = 1380ом
падение на пт100 = 3,3*1000/1000+1000=1,65в при 0 гр
падение на пт100 = 3,3*1380/1000+1380=1,92в при 100 гр
0,27в на 100гр или 2,7мв/гр

добавлять градацию ацп нет смысла падение одинаковое там и там
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

Ни кто не запрещает использовать кусочно линейную аппроксимацию для повышения точности в нужном диапазоне температур.Например по 255 точкам.
Электронщик до мозга костей и не только
breaksshock
Рядовой
Сообщения: 41
Зарегистрирован: 16 апр 2021, 22:22
Имя: Василий

Re: Народное программируемое реле

Сообщение breaksshock »

Ваш математический расчет для идеальных условий верен. Чувствительность схемы в мВ/°С одинакова.

Ваш вывод о том, что разницы нет - ошибочен для реальных условий. Разница колоссальна и заключается не в чувствительности, а в устойчивости схемы к паразитным параметрам (сопротивление проводов,

саморазогрев).
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

Использовал данные для датчика от сюда https://kipia.xyz/resistance_thermomete ... /pt1000/10
Использовал кусочно- линейную аппроксимацию от Айдара
#include <driver/adc.h>
#include "esp_adc_cal.h"

// Конфигурация пинов и параметров
#define PT1000_ADC_PIN ADC1_CHANNEL_3 // GPIO39 (Sens.VN)
#define R_REF 1000.0f // Эталонное сопротивление (Ом)
#define V_SUPPLY 3.348f // Напряжение питания (В)
#define SAMPLES 500 // Количество выборок для усреднения

// Таблица зависимости температуры от сопротивления для PT1000
// Формат: {сопротивление (Ом), температура (°C)}
const float pt1000_table[][2] = {

{ 803.06, -50 }, { 822.9, -45 }, { 842.71, -40 }, { 862.48, -35 }, { 882.22, -30 },
{ 901.92, -25 }, { 921.6, -20 }, { 941.24, -15 }, { 960.86, -10 }, { 980.44, -5 },
{ 1000, 0 }, { 1019.53, 5 }, { 1039.03, 10 }, { 1058.49, 15 }, { 1077.94, 20 },
{ 1097.35, 25 }, { 1116.73, 30 }, { 1136.08, 35 }, { 1155.41, 40 }, { 1174.7, 45 },
{ 1193.97, 50 }, { 1213.21, 55 }, { 1232.42, 60 }, { 1251.6, 65 }, { 1270.75, 70 },
{ 1289.87, 75 }, { 11308.97, 80 }, { 1328.03, 85 }, { 1347.07, 90 }, { 1366.08, 95 },
{ 11385.06, 100 }, { 1404, 105 }, { 1422.93, 110 }, { 1441.82, 115 }, { 1460.68, 120 },
{ 1479.51, 125 }, { 1498.32, 130 }, { 1517.1, 135 }, { 1535.84, 140 }, { 1554.56, 145 },
{ 1573.25, 150 }, { 1591.91, 155 }, { 1610.54, 160 }, { 1629.15, 165 }, { 1647.72, 170 },
{ 1666.27, 175 }, { 1684.78, 180 }, { 1703.27, 185 }, { 1701.8, 190 }, { 1721.73, 195 },
{ 1758.56, 200 }, { 1776.93, 205 }, { 1795.28, 210 }, { 1813.59, 215 }, { 1831.88, 220 },
{ 1850.13, 225 }, { 1868.36, 230 }, { 1886.56, 235 }, { 1904.73, 240 }, { 1922.87, 245 },
{ 1940.98, 250 }, { 1959.06, 255 }, { 1977.12, 260 }, { 1995.14, 265 }, { 2013.14, 270 },
{ 2031.11, 275 }, { 2049.05, 280 }, { 2066.96, 285 }, { 2084.84, 290 }, { 2102.69, 295 },
{ 2120.52, 300 }
};
const int pt1000_table_size = sizeof(pt1000_table) / sizeof(pt1000_table[0]);

// Характеристики для калибровки АЦП
esp_adc_cal_characteristics_t adc_chars;

// Функция для поиска температуры в таблице по сопротивлению
float lookup_temperature(float resistance) {
// Если сопротивление вне диапазона таблицы
if (resistance <= pt1000_table[0][0]) {
return pt1000_table[0][1];
}
if (resistance >= pt1000_table[pt1000_table_size - 1][0]) {
return pt1000_table[pt1000_table_size - 1][1];
}

// Поиск в таблице
for (int i = 0; i < pt1000_table_size - 1; i++) {
if (resistance >= pt1000_table[0] && resistance <= pt1000_table[i + 1][0]) {
// Линейная интерполяция между точками таблицы
float resistance_low = pt1000_table[0];
float resistance_high = pt1000_table[i + 1][0];
float temp_low = pt1000_table[1];
float temp_high = pt1000_table[i + 1][1];

return temp_low + (temp_high - temp_low) *
(resistance - resistance_low) / (resistance_high - resistance_low);
}
}

return NAN; // Если не найдено (не должно происходить)
}

// Функция для чтения усредненного значения АЦП
uint32_t read_avg_adc() {
uint32_t sum = 0;
for (int i = 0; i < SAMPLES; i++) {
sum += adc1_get_raw(PT1000_ADC_PIN);
delayMicroseconds(100);
}
return sum / SAMPLES;
}

void setup() {
Serial.begin(115200);

// Инициализация АЦП
adc1_config_width(ADC_WIDTH_BIT_12);
adc1_config_channel_atten(PT1000_ADC_PIN, ADC_ATTEN_DB_11);

// Калибровка АЦП
esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, 1100, &adc_chars);

Serial.println("PT1000 Temperature Sensor with Marlin-style Table");
}

void loop() {
// Получение откалиброванного значения АЦП
uint32_t adc_value = read_avg_adc();
uint32_t voltage_mv = esp_adc_cal_raw_to_voltage(adc_value, &adc_chars);
float voltage_v = voltage_mv / 1000.0f;

// Расчет сопротивления PT1000
float resistance = R_REF * voltage_v / (V_SUPPLY - voltage_v);

// Поиск температуры в таблице
float temperature = lookup_temperature(resistance);

// Вывод результатов
Serial.print("ADC: ");
Serial.print(adc_value);
Serial.print(", Resistance: ");
Serial.print(resistance);
Serial.print(" Ω, Temperature: ");
Serial.print(temperature);
Serial.println(" °C");

delay(2);
}
получил при сопротивлении датчика 1000ом -
► Показать
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

breaksshock писал(а): 30 авг 2025, 14:47 Ваш математический расчет для идеальных условий верен. Чувствительность схемы в мВ/°С одинакова.

Ваш вывод о том, что разницы нет - ошибочен для реальных условий. Разница колоссальна и заключается не в чувствительности, а в устойчивости схемы к паразитным параметрам (сопротивление проводов,

саморазогрев).
А причем тут устойчивость датчика и сопротивление проводов ? Да на 100 омах сложнее навести помеху, чем на 1000 омах . Но для этого ставят керамику на аналоговом входе и используют программную фильтрацию .
Электронщик до мозга костей и не только
Аватара пользователя
Phazz
Полковник
Сообщения: 3299
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 288 раз
Поблагодарили: 151 раз

Re: Народное программируемое реле

Сообщение Phazz »

Проблема мне кажется больше в доступности датчиков. PT100 очень большое разнообразие по всем параметрам. PT1000 очень редкий.
lfgjikjjyj
Сержант
Сообщения: 149
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 10 раз

Re: Народное программируемое реле

Сообщение lfgjikjjyj »

breaksshock писал(а): 29 авг 2025, 17:23 Заметил, что человек с вами спорил и говорил о pt100, когда вы говорили о pt1000.
Я вот думаю что измерять через делитель pt1000 куда более точнее будет чем pt100. Тупо диапазон сопротивления больше в 10раз.
Если рассматривать что АЦП у ESP32 12битный, то этого вполне должно хватать, так как у решений на термопарах (МАХ6675), где разброс температур больше, имеет базово АЦП также 12 бит
Речь вообще-то шла о реальных условиях по вашим же словам а тут уже оказывается где-то заднюю дали где-то ещё добавили в итоге оказался я ещё виноват

Если уж на то пошло то ваш ПТ100 физически не пригоден для измерения в данном случае на ЕСП
При 3.3в ток через делитель будет 3.3/200=16.5ма а это дохрена и больше у вас будет 27мвт тепла на нём
Про точность можно не разговаривать

Я уже предлогао вариант моста Уитстона
Там можно разнобой плеч делать в плечо ставить допустим 10к тогда 3.3/10100=327мка или 11мквт
slsl
Лейтенант
Сообщения: 340
Зарегистрирован: 08 дек 2021, 22:41
Имя: Вячеслав
Благодарил (а): 19 раз
Поблагодарили: 62 раза

Re: Народное программируемое реле

Сообщение slsl »

Phazz писал(а): 30 авг 2025, 15:32 Проблема мне кажется больше в доступности датчиков. PT100 очень большое разнообразие по всем параметрам. PT1000 очень редкий.
В промке совсем не редкий.
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

lfgjikjjyj писал(а): 30 авг 2025, 15:35
breaksshock писал(а): 29 авг 2025, 17:23 Заметил, что человек с вами спорил и говорил о pt100, когда вы говорили о pt1000.
Я вот думаю что измерять через делитель pt1000 куда более точнее будет чем pt100. Тупо диапазон сопротивления больше в 10раз.
Если рассматривать что АЦП у ESP32 12битный, то этого вполне должно хватать, так как у решений на термопарах (МАХ6675), где разброс температур больше, имеет базово АЦП также 12 бит
Речь вообще-то шла о реальных условиях по вашим же словам а тут уже оказывается где-то заднюю дали где-то ещё добавили в итоге оказался я ещё виноват

Если уж на то пошло то ваш ПТ100 физически не пригоден для измерения в данном случае на ЕСП
При 3.3в ток через делитель будет 3.3/200=16.5ма а это дохрена и больше у вас будет 27мвт тепла на нём
Про точность можно не разговаривать

Я уже предлогао вариант моста Уитстона
Там можно разнобой плеч делать в плечо ставить допустим 10к тогда 3.3/10100=327мка или 11мквт
Согласен про пт100, потому и не использую в данной реализации. Все остальные реализации в отдельных, специальных модулях.
Электронщик до мозга костей и не только
breaksshock
Рядовой
Сообщения: 41
Зарегистрирован: 16 апр 2021, 22:22
Имя: Василий

Re: Народное программируемое реле

Сообщение breaksshock »

Так и я веду речь про pt1000. Не про pt100, с ним все понятно.
Интересовало мнение и варианты простого подключения к esp32 и его точности. Получается в этом случае с pt1000 можно добиться точности в 2-5 градуса в диапазоне от 30 до 300 градусов?
aidar_i
Полковник
Сообщения: 3397
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 20 раз
Поблагодарили: 128 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение aidar_i »

breaksshock писал(а): 30 авг 2025, 21:43 Так и я веду речь про pt1000. Не про pt100, с ним все понятно.
Интересовало мнение и варианты простого подключения к esp32 и его точности. Получается в этом случае с pt1000 можно добиться точности в 2-5 градуса в диапазоне от 30 до 300 градусов?
Датчики оснащены чувствительным элементом Pt1000 класса А, который обеспечивает измерения с допускаемой погрешностью ±(0,15+0,002⋅∣t∣)∘C, где t – текущая температура.

Оценка точности измерений температуры с PT1000 на ESP32

Точность измерений температуры с PT1000 на ESP32 зависит от нескольких факторов. Давайте разберем основные источники погрешности и оценим общую точность системы.

📊 Основные источники погрешности

1. Точность АЦП ESP32

· Разрешение: 12 бит (4096 уровней)
· Теоретическая точность: 3.3В / 4096 ≈ 0.8 мВ
· Реальная точность (с учетом нелинейности): 2-5 мВ
· Влияние на температуру: ±0.5-1.5°C

2. Колебания напряжения питания

· Без компенсации: изменение напряжения на 100 мВ дает погрешность до 3°C
· С компенсацией: погрешность снижается до ±0.2-0.5°C

3. Точность эталонного резистора

· Резистор 1%: погрешность ±1% → ±2.5°C
· Резистор 0.1%: погрешность ±0.1% → ±0.25°C
· Резистор 0.01%: погрешность ±0.01% → ±0.025°C

4. Температурный коэффициент эталонного резистора

· Обычные резисторы: 50-100 ppm/°C → ±0.5-1°C при ΔT=20°C
· Прецизионные резисторы: 5-25 ppm/°C → ±0.1-0.5°C при ΔT=20°C

5. Точность таблицы преобразования

· Таблица IEC 60751: погрешность ±0.1-0.3°C

🎯 Оценка общей точности

В лучшем случае (с прецизионными компонентами):

· АЦП с калибровкой: ±0.5°C
· Эталонный резистор 0.01%: ±0.025°C
· Прецизионный источник опорного напряжения: ±0.1°C
· Таблица преобразования: ±0.1°C
· Суммарная погрешность: ±0.7-0.8°C

В типичном случае (с стандартными компонентами):

· АЦП с калибровкой: ±1.0°C
· Эталонный резистор 0.1%: ±0.25°C
· Компенсация питания: ±0.3°C
· Таблица преобразования: ±0.2°C
· Суммарная погрешность: ±1.5-2.0°C

В худшем случае (без компенсации):

· АЦП без калибровки: ±2.0°C
· Эталонный резистор 1%: ±2.5°C
· Колебания питания: ±3.0°C
· Суммарная погрешность: ±5.0-7.0°C
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

breaksshock писал(а): 30 авг 2025, 21:43 Так и я веду речь про pt1000. Не про pt100, с ним все понятно.
Интересовало мнение и варианты простого подключения к esp32 и его точности. Получается в этом случае с pt1000 можно добиться точности в 2-5 градуса в диапазоне от 30 до 300 градусов?
Тут нужно различать схемную часть и программную. По схемной части простое подключение (делитель напряжения) не менялось. А вот в программной части могут быть разные алгоритмы обработки сигнала с АЦП. В том числе кусочно линейная аппроксимация. В приведенном примере с эталонными резисторами в качестве датчика были получены следующие результаты -
1000 Ом- 0,0- 0,31 гр
1385 ОМ 100,3-100,8 гр
1573 Ом 150,04-150,57 гр
калибровка свелась к тому , что при 1000 Ом , подобрал значение опорного 3,3 до 3.348 и все..Прибором питание показывает 3.33в
А когда использовал Расчет сопротивления , то при нуле градусов (1000 Ом) показания были 3-4гр
Электронщик до мозга костей и не только
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

вот для 150гр
Снимок экрана 2025-08-31 092416.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

Попробовал сегодня печатать PETG, ранее использовал PLA.
Изображение WhatsApp 2025-08-31 в 20.12.53_32efa86a.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
Phazz
Полковник
Сообщения: 3299
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 288 раз
Поблагодарили: 151 раз

Re: Народное программируемое реле

Сообщение Phazz »

Лицевую панель печатайте верхней плоскостью к столу. Будет выглядеть аккуратнее
Аватара пользователя
Rovki
Полковник
Сообщения: 5835
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 77 раз
Поблагодарили: 239 раз
Контактная информация:

Re: Народное программируемое реле

Сообщение Rovki »

Phazz писал(а): 31 авг 2025, 20:40 Лицевую панель печатайте верхней плоскостью к столу. Будет выглядеть аккуратнее
Так и печатаю, а как еще без поддержек :smile427:
Электронщик до мозга костей и не только
Ответить

Вернуться в «Пользовательские контроллеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость