Например TDA7294

Форум РадиоКот • Просмотр темы - выбор провода под датчик температуры
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 10:03:56

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 32 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Ср июн 29, 2022 12:56:48 
Друг Кота
Аватар пользователя

Карма: 187
Рейтинг сообщений: 8255
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Сообщений: 39530
Откуда: Нерезиновая
Рейтинг сообщения: 0
АлександрЛ, а мост нужно делать на стороне датчика если для него нужно 4 провода ?

СпойлерИзображение


на два активных датчика не понятно как работать с двумя ацп

Я бы это сделал вот так:
СпойлерИзображение

Вообще- (имхо) 10 кОм много, лучше бы 1 кОм, один из датчиков можно заменить подстроечным резистором, типа "установка нуля"
А резистор R5 "калибровка" - регулировка коэффициента усиления..

В каких пределах у вас изменяется температура? У ММТ и им подобных- какая-то дикая нелинейность.. (имхо) DS18B20 будет намного проще, дешевле и точнее, единственно, я не знаю, как он будет работать на 9-ти метровый кабель.. :dont_know:


Вложения:
Датчик температуры.png [83.53 KiB]
Скачиваний: 67
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Ср июн 29, 2022 15:18:19 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
как он будет работать на 9-ти метровый кабель

Работает хорошо, если всё правильно сделано для защиты от помех (может работать и на более дальние расстояния).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Ср июн 29, 2022 15:52:22 
Друг Кота
Аватар пользователя

Карма: 187
Рейтинг сообщений: 8255
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Сообщений: 39530
Откуда: Нерезиновая
Рейтинг сообщения: 0
Если DS18B20 подключить экранированным двухжильным (хорошим) кабелем КММ 2х0,12-
Вложение:
WIN_20220629_15_50_13_Pro.jpg [75.05 KiB]
Скачиваний: 45

Или нужно трёхжильный кабель с экраном?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Ср июн 29, 2022 17:31:51 
Это не хвост, это антенна

Карма: 15
Рейтинг сообщений: 177
Зарегистрирован: Пт дек 10, 2021 12:48:46
Сообщений: 1326
Откуда: Тюмень
Рейтинг сообщения: 0
Не делал эксперименты с паразитным питанием… так как к данному способу отношусь с недоверием и считаю его ненадёжным… для малых расстояний использовать ещё можно, но экономить на жиле не считаю практичным… по этой причине трёхжильный с экраном предпочтительнее и надёжнее. Вполне можно обойтись и без экрана (на такое расстояние) при использовании витой пары (в варианте 4 пары).


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Чт июн 30, 2022 14:31:12 
Друг Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 355
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 4265
Откуда: Воронеж
Рейтинг сообщения: 0
Витая пара достаточно будет. На вход конденсатор запаяй и норм

Совершенно согласен. Никаких подстроечников и мостов не нужно, всё делается программно. В том числе и фильтр, кстати.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Пт июл 01, 2022 11:52:08 
Первый раз сказал Мяу!

Зарегистрирован: Вт июн 28, 2022 12:31:18
Сообщений: 29
Рейтинг сообщения: 0
из 8 свободных пинов на есп32 работают только 4 с дс18б20
можно ли применить какойнить расширитель под них ?
там же не аналоговый сигнал вроде и CD74HC4067 не прокатит вроде

Добавлено after 3 minutes 28 seconds:
да и не цыфровой с MCP23017 не заработали


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Пт июл 01, 2022 11:52:38 
Друг Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 355
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 4265
Откуда: Воронеж
Рейтинг сообщения: 0
На одну ногу можно повесить целую гирлянду датчиков.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Пт июл 01, 2022 11:56:01 
Первый раз сказал Мяу!

Зарегистрирован: Вт июн 28, 2022 12:31:18
Сообщений: 29
Рейтинг сообщения: 0
у меня автоопределение адреса датчика и гирлянда тут не прокатит с этим


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Пт июл 01, 2022 11:58:09 
Друг Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 355
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 4265
Откуда: Воронеж
Рейтинг сообщения: 0
Ну и пускай автоопределяет. Останется только запомнить в процессор где с каким номером висит датчик и дело в шляпе.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Пт июл 01, 2022 12:20:28 
Первый раз сказал Мяу!

Зарегистрирован: Вт июн 28, 2022 12:31:18
Сообщений: 29
Рейтинг сообщения: 0
что то ерунда получается
в уарт выводит два значения но они одинаковые и намного ниже чем в действительности

Изображение

подключил так

Изображение

Спойлер
Код:
#include <OneWire.h>
bool EN_82749380_1;
unsigned long period_82749380_1;
float temp_82749380_1;
bool error_82749380_1;
OneWire ds_82749380_1(3);
byte data_82749380_1[9];
byte count_82749380_1;
bool brake_82749380_1;
bool crcOK_82749380_1;
unsigned long time_82749380_1;
unsigned long time_old_82749380_1;
bool EN_82749380_2;
unsigned long period_82749380_2;
float temp_82749380_2;
bool error_82749380_2;
OneWire ds_82749380_2(3);
byte data_82749380_2[9];
byte count_82749380_2;
bool brake_82749380_2;
bool crcOK_82749380_2;
unsigned long time_82749380_2;
unsigned long time_old_82749380_2;
unsigned long _stou1 = 0UL;
void setup()
{
    _startUart0();
    _stou1 = millis();
}
void loop()
{
    //Плата:1
    EN_82749380_1 = !(0);
    period_82749380_1 = 1000UL;
    if(EN_82749380_1)
    {
        if(error_82749380_1) 
        {
             period_82749380_1 = 750;
        }
         // если ошибка - частый опрос
        time_82749380_1 = millis() - time_old_82749380_1; // таймер опросов
        if (time_82749380_1>period_82749380_1)
        {
            // таймер опросов
            time_old_82749380_1 = millis(); // таймер опросов
            ds_82749380_1.reset(); //сброс шины
             ds_82749380_1.write(0xCC); //пропуск ROM
             ds_82749380_1.write(0xBE); // прочитать 9 байт из датчика
             for (byte i = 0; i < 9; i++)
            {
                   // прочитать 9 байт из датчика
                 data_82749380_1[i] = ds_82749380_1.read();
            }
              // прочитать 9 байт из датчика
             int16_t raw = (data_82749380_1[1] << 8) | data_82749380_1[0]; // прочитать 9 байт из датчика
             temp_82749380_1 = (float)raw / 16.0; //посчитать температуру
            if (OneWire::crc8(data_82749380_1, 8) == data_82749380_1[8])
            {
                crcOK_82749380_1=1;
            }
             //сверка контрольной суммы
                  else
            {
                crcOK_82749380_1=0;
                count_82749380_1=0;
            }
            ds_82749380_1.reset(); //сброс шины
             ds_82749380_1.write(0xCC); //пропуск ROM
             ds_82749380_1.write(0x44, 1); //запуск измерения
            if (((data_82749380_1[0] == 255) && (data_82749380_1[1] == 255) && (data_82749380_1[2] == 255) && (data_82749380_1[3] == 255) && (data_82749380_1[4] == 255) && (data_82749380_1[5] == 255) && (data_82749380_1[6] == 255) && (data_82749380_1[7] == 255) && (data_82749380_1[8] == 255))  ||   ((data_82749380_1[0] == 0) && (data_82749380_1[1] == 0) && (data_82749380_1[2] == 0) && (data_82749380_1[3] == 0) && (data_82749380_1[4] == 0) && (data_82749380_1[5] == 0) && (data_82749380_1[6] == 0) && (data_82749380_1[7] == 0) && (data_82749380_1[8] == 0)))
            {
                brake_82749380_1 = 1;
                count_82749380_1 = 0;
            }
               else
            {
                brake_82749380_1 = 0;
            }
            if (count_82749380_1 < 4 && !brake_82749380_1 && crcOK_82749380_1)
            {
                // если нет обрыва и контрольная сумма правильная и меньше 3х замеров увеличить счётчик на 1
                   count_82749380_1++;
                   
            }
        }
         //конец __(time_82749380_1>period_82749380_1)__
    }
// конец EN_82749380_1
    error_82749380_1 = (brake_82749380_1 || (count_82749380_1 < 3) || !crcOK_82749380_1);
    EN_82749380_2 = !(0);
    period_82749380_2 = 1000UL;
    if(EN_82749380_2)
    {
        if(error_82749380_2) 
        {
             period_82749380_2 = 750;
        }
         // если ошибка - частый опрос
        time_82749380_2 = millis() - time_old_82749380_2; // таймер опросов
        if (time_82749380_2>period_82749380_2)
        {
            // таймер опросов
            time_old_82749380_2 = millis(); // таймер опросов
            ds_82749380_2.reset(); //сброс шины
             ds_82749380_2.write(0xCC); //пропуск ROM
             ds_82749380_2.write(0xBE); // прочитать 9 байт из датчика
             for (byte i = 0; i < 9; i++)
            {
                   // прочитать 9 байт из датчика
                 data_82749380_2[i] = ds_82749380_2.read();
            }
              // прочитать 9 байт из датчика
             int16_t raw = (data_82749380_2[1] << 8) | data_82749380_2[0]; // прочитать 9 байт из датчика
             temp_82749380_2 = (float)raw / 16.0; //посчитать температуру
            if (OneWire::crc8(data_82749380_2, 8) == data_82749380_2[8])
            {
                crcOK_82749380_2=1;
            }
             //сверка контрольной суммы
                  else
            {
                crcOK_82749380_2=0;
                count_82749380_2=0;
            }
            ds_82749380_2.reset(); //сброс шины
             ds_82749380_2.write(0xCC); //пропуск ROM
             ds_82749380_2.write(0x44, 1); //запуск измерения
            if (((data_82749380_2[0] == 255) && (data_82749380_2[1] == 255) && (data_82749380_2[2] == 255) && (data_82749380_2[3] == 255) && (data_82749380_2[4] == 255) && (data_82749380_2[5] == 255) && (data_82749380_2[6] == 255) && (data_82749380_2[7] == 255) && (data_82749380_2[8] == 255))  ||   ((data_82749380_2[0] == 0) && (data_82749380_2[1] == 0) && (data_82749380_2[2] == 0) && (data_82749380_2[3] == 0) && (data_82749380_2[4] == 0) && (data_82749380_2[5] == 0) && (data_82749380_2[6] == 0) && (data_82749380_2[7] == 0) && (data_82749380_2[8] == 0)))
            {
                brake_82749380_2 = 1;
                count_82749380_2 = 0;
            }
               else
            {
                brake_82749380_2 = 0;
            }
            if (count_82749380_2 < 4 && !brake_82749380_2 && crcOK_82749380_2)
            {
                // если нет обрыва и контрольная сумма правильная и меньше 3х замеров увеличить счётчик на 1
                   count_82749380_2++;
                   
            }
        }
         //конец __(time_82749380_2>period_82749380_2)__
    }
// конец EN_82749380_2
    error_82749380_2 = (brake_82749380_2 || (count_82749380_2 < 3) || !crcOK_82749380_2);
    if (!(0))
    {
         if (_isTimer(_stou1, 1000))
        {
            Serial.println((((_floatToStringWitRaz(temp_82749380_1,2))) + (String(" // ")) + ((_floatToStringWitRaz(temp_82749380_2,2)))));
            _stou1 = millis();
        }
    }
     else
    {
        _stou1 = millis();
    }
}
String  _floatToStringWitRaz(float value, int raz)
{
    return String(value,raz);
}
bool _isTimer(unsigned long startTime, unsigned long period)
{
    unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime)
    {
        return (currentTime>=(startTime + period));
    }
     else
    {
        return (currentTime >=(4294967295-startTime+period));
    }
}
void _startUart0()
{
    int code= 6;
    Serial.begin(9600, (_serialModeFromInt(code)));
}
int  _serialModeFromInt(int code)
{
    switch (code)
    {
        case 0x00: return SERIAL_5N1;
        break;
        case 0x02: return SERIAL_6N1;
        break;
        case 0x04: return SERIAL_7N1;
        break;
        case 0x06: return SERIAL_8N1;
        break;
        case 0x08: return SERIAL_5N2;
        break;
        case 0x0A: return SERIAL_6N2;
        break;
        case 0x0C: return SERIAL_7N2 ;
        break;
        case 0x0E: return SERIAL_8N2;
        break;
        case 0x20: return SERIAL_5E1;
        break;
        case 0x22: return SERIAL_6E1;
        break;
        case 0x24: return SERIAL_7E1 ;
        break;
        case 0x26: return SERIAL_8E1;
        break;
        case 0x28: return SERIAL_5E2 ;
        break;
        case 0x2A: return SERIAL_6E2;
        break;
        case 0x2C: return SERIAL_7E2;
        break;
        case 0x2E: return SERIAL_8E2;
        break;
        case 0x30: return SERIAL_5O1;
        break;
        case 0x32: return SERIAL_6O1;
        break;
        case 0x34: return SERIAL_7O1;
        break;
        case 0x36: return SERIAL_8O1;
        break;
        case 0x38: return SERIAL_5O2;
        break;
        case 0x3A: return SERIAL_6O2 ;
        break;
        case 0x3C: return SERIAL_7O2;
        break;
        case 0x3E: return SERIAL_8O2;
        break;
    }
    return SERIAL_8N1;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Пт июл 01, 2022 13:15:36 
Сверлит текстолит когтями

Карма: 20
Рейтинг сообщений: 296
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1218
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Используйте другое управление. Работает. (Библиотека DS18 оч. старая).
(Вход такой же, как у вашей схемы (11). Два датчика).
Код:
ROM = 28 41 1D 98 A 0 0 5B
  Chip = DS18B20
  Data = 1 B4 1 4B 46 7F FF C 10 8E  CRC=8E
  Temperature = 27.25 Celsius, 81.05 Fahrenheit
----------
ROM = 28 3B 3A 98 A 0 0 A5
  Chip = DS18B20
  Data = 1 B5 1 4B 46 7F FF B 10 A3  CRC=A3
  Temperature = 27.31 Celsius, 81.16 Fahrenheit
----------
No more addresses.


Вложения:
serial.jpg [141.72 KiB]
Скачиваний: 40
DS18x20_Temperature.zip [121.28 KiB]
Скачиваний: 51
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: выбор провода под датчик температуры
СообщениеДобавлено: Ср июл 13, 2022 00:37:51 
Грызет канифоль

Зарегистрирован: Ср дек 30, 2009 09:55:39
Сообщений: 277
Рейтинг сообщения: 0
...По поводу DS18B20… однопроводная шина, как и кабель терморезистора, одинаково "боятся" наводок… ....


это НЕ правда. Вы тупо не умете их готовить...

(круглый)
ЗЫ
Готовлю любой DS18xx (не паразитным питаловом) по пром зоне десятки метров В ЛЁГКУЮ... Дорого :)))


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 32 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y