Например TDA7294

Форум РадиоКот • Просмотр темы - Всё по DS18(B/S)20.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс июл 06, 2025 01:30:49

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1164 ]     ... , , , 55, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Вт дек 12, 2017 20:59:35 
Первый раз сказал Мяу!

Зарегистрирован: Вс дек 10, 2017 22:56:31
Сообщений: 21
Рейтинг сообщения: 0
Усы уже кудрявые(
как кодируется и раскодируется температура с сия девайса?

Честно я не понимаю о чем вы говорите. Датчики просто присоединены кабелем UTP к raspberry pi3.
В raspberry формируется файл из показаниями датчика.
/sys/devices/w1_bus_master1/28-21ee67000900/
Код:
pi@raspberrypi:~ $ cd /sys/devices/w1_bus_master1/28-21ee67000900
pi@raspberrypi:/sys/devices/w1_bus_master1/28-21ee67000900 $ ls
driver  id  name  power  subsystem  uevent  w1_slave
pi@raspberrypi:/sys/devices/w1_bus_master1/28-21ee67000900 $ cat w1_slave
ff 07 ef eb 7f ff 03 10 e1 : crc=e1 YES
ff 07 ef eb 7f ff 03 10 e1 t=127937
pi@raspberrypi:/sys/devices/w1_bus_master1/28-21ee67000900 $


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Вт дек 12, 2017 21:20:47 
Открыл глаза

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Вс май 03, 2015 15:05:58
Сообщений: 55
Рейтинг сообщения: 0
Всем привет! Смотрю здесь люди пытаются запустить датчик на пониженных тактовых частотах микроконтроллера? У меня удалось запустить от 128 кГц. https://github.com/FeruzTopalov/ds18b20-pocket-thermo


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Вт дек 12, 2017 21:22:39 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
viktor6 писал(а):
Честно я не понимаю о чем вы говорите.
Ну "Малинка" жу не умеет сама по себе датчики обслуживать. Ей нужен код. Покажите его.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Вт дек 12, 2017 22:25:16 
Первый раз сказал Мяу!

Зарегистрирован: Вс дек 10, 2017 22:56:31
Сообщений: 21
Рейтинг сообщения: 0
viktor6 писал(а):
Честно я не понимаю о чем вы говорите.
Ну "Малинка" жу не умеет сама по себе датчики обслуживать. Ей нужен код. Покажите его.

Да вроде как умеет.
Может я чтото не так понимаю. Код вроде как нужен только для вывода данных.
Спойлер
Код:
pi@raspberrypi:~/myproject $ cat temperature.py
import os
import glob
import time

os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'

def read_temp_raw():
    f = open(device_file, 'r')
    lines = f.readlines()
    f.close()
    return lines

def read_temp():
    lines = read_temp_raw()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = read_temp_raw()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        temp_f = temp_c * 9.0 / 5.0 + 32.0
        return temp_c, temp_f

while True:
    print(read_temp())
    time.sleep(1)
pi@raspberrypi:~/myproject $


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

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 08:17:33 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1466
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15061
Откуда: ДОНЕЦК
Рейтинг сообщения: 2
Если более одного датчика на веточке то каждый канал перед обращением к датчику обязан провести "именной вызов" того датчика, к которому обращается.
В случае с одиночным эта процедура для сокращения проблем с протоколом весьма часто не проводится.
Возможно в том и ошибки зарыты.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 10:43:24 
Первый раз сказал Мяу!

Зарегистрирован: Вс дек 10, 2017 22:56:31
Сообщений: 21
Рейтинг сообщения: 0
Ребята а может один из датчиков (4) не правильно работать и поэтому выдавать помехи в линию?
На данный момент подключено всего три датчика (3,4,5). Есть подозрения что только один (4) датчик через некоторое время выдает температуру 127 градусов.
Короче говоря буду наблюдать так ли это.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 14:10:03 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
Честно я не понимаю о чем вы говорите. Датчики просто присоединены кабелем UTP к raspberry pi3.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 14:22:39 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 2
Медали: 1
Получил миской по аватаре (1)
ROMan2947 писал(а):
Я считал данные в двоичном коде, мне этот код нужно преобразовать в
Любое число можно представить во множестве счислений - хот в двоичном, хоть в десятичном, ... Но значение этого числа от этого будет неизменным.
Вообще, двоичную систему придумали для удобства хранения, а не для того, чтобы на форуме переводили из неё числа в другую систему. Системы разные - значение одно ! Запомните это !

Что касается датчика. Данные он выдаёт уже в удобоваримом формате. Их просто нужно занести в знаковую переменную один к одному - сразу получаем температуру.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:15:17 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
Данные он выдаёт уже в удобоваримом формате.

Ну считал я 0b0000000110001000 == 392==0x188 и где тут температура?
а если 392*0,0625=24,5 вот это более похоже на правду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:16:18 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4328
Откуда: Ижевск
Рейтинг сообщения: 0
Аlex писал(а):
Данные он выдаёт уже в удобоваримом формате. Их просто нужно занести в знаковую переменную один к одному - сразу получаем температуру.
Разве? Для получения температуры с разрешением 1ºC, нужно код разделить на 16, т.к. 0,0625*16=1


Последний раз редактировалось akl Ср дек 13, 2017 15:18:04, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:19:44 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
Их просто нужно занести в знаковую переменную один к одному - сразу получаем температуру.
Этот процесс можно на примере показать?

Добавлено after 2 minutes 30 seconds:
Цитата:
нужно код разделить на 16.
16 это к чему относится? 16 битный код?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:27:51 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
akl писал(а):
Цитата:
сразу получаем температуру.
Разве? Для получения температуры с разрешением 1ºC, нужно код разделить на 16
Разве.
Мы, в любом случае, получаем температуру. Пусть и умноженную на что-то там (16 в данном случае), но температуру. Остаётся только привести её к необходимому программисту разрешению.

Добавлено after 3 minutes 11 seconds:
ROMan2947 писал(а):
Этот процесс можно на примере показать?
Процесс чего ?

ROMan2947 писал(а):
16 это к чему относится?
К разрешению датчика.

Добавлено after 3 minutes 39 seconds:
а если 392*0,0625=24,5 вот это более похоже на правду.
Пропустил этот пост.
Ну вот, видите, всё Вы умеете. А спрашиваете как переводить эти данные в пользовательский вид :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:29:36 
Друг Кота
Аватар пользователя

Карма: 123
Рейтинг сообщений: 7959
Зарегистрирован: Сб сен 13, 2014 16:27:32
Сообщений: 39199
Откуда: СпиртоГонск созвездия Омега
Рейтинг сообщения: 0
ПРОДУРА ЧТЕНИЯ DS18(B/S)20. ДОВОЛНО СИЛНОJNKBXFTNCZ ОТ ДРЕВНИХ DS1820ТЕ ДОПУСКАЛИ много волностей в протоколе чтения
эти капризные им надо полностью соблюсти тайминги и процедуру-обязателна фаза запроса датчиков и чтения внутренего ID -даже если датчик 1 нашине или всего 1 -такое упрошени в коде часто дают 127С на нем если процедура обрашения нестандартная или не выдержаны тайминги весма точно 2 глюк датчик имет болезнь саморазогрев и его не надо долбить слишком часто запросами
а вм паузах надо усыплять
tit одно часто фантомное питание не прокатывает на выносе чтоб не долбатца почему врет ...лучше проводки не экономить

_________________
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:38:12 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
К разрешению датчика.

в даташите о таком разрешении ни слова,полагаю 16 это 12 битная разрешающая способность?

Добавлено after 4 minutes 36 seconds:
Цитата:
А спрашиваете как переводить эти данные в пользовательский вид 
ну пришлось поюзать,но до истины добраться уж только здесь) :write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 15:46:26 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ROMan2947 писал(а):
полагаю 16 это 12 битная разрешающая способность?
Да. При 12-ти битах, 4 бита остаются в дробной части от целых. А 4 бита - это 16.
Если будете считывать начиная с 5-ого по счёту бита - получите разрешение в 1 градус, с 4-ого бита - в 0.5 градуса. С 1-ого бита - получаем разрешение в 0.0625 градуса, т.б. в 1/16-ую.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 18:16:41 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
В регистре температуры на знак температуры выделено пять бит.Вопрос: достаточно ли проверять знак по одному из этих битов?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 18:25:30 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
Ничего подобного, никаких битов отдельно под знак не выделено. Там просто int16_t число, равное температуре с точностью до коэффициента 16 (или 2 для DS18B20).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 18:38:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18400
Откуда: Новочеркасск
Рейтинг сообщения: 2
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
уже не один раз писал, как определить температуру по данным...
Код:
uint8_t scratchpad[9]; // сюда считываются данные из датчика
int16_t *temp = (void*)scratchpad; // по указателю будет температура

// считали данные, проверили CRC. если все ОК, берем *temp и делим на 16 или иной коэффициент в зависимости
// от типа датчика - имеем готовую температуру со знаком.

float temperature = *temp / 16.0;

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 20:17:45 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
уже не один раз писал, как определить температуру по данным...
На мое огромное удивление температура отображается исправно,причем и при отрицательной температуре :) Но все же есть одно,НО... очень хочется на своей LCD видеть не только целые,но и десятые доли)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 20:22:39 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Код:
uint8_t scratchpad[9]; // сюда считываются данные из датчика
int16_t temp = *(int16_t*)scratchpad; // читаем температуру в temp

// считали данные, проверили CRC. если все ОК, берем *temp и делим на 16 или иной коэффициент в зависимости
// от типа датчика - имеем готовую температуру со знаком.

temp *=10;
temp /=16;
Теперь в temp лежит температура с десятыми, умноженная на 10.

Вывод :
Код:
printf("%d.%d", temp/10, temp%10);
Ну или любым другим способом.


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

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


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

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


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

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


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