Страница 45 из 59
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 13, 2016 19:18:41
Мурик
asidalv писал(а):DS1821 , скажите, она - аналог DS1820
Разрешающая способность у DS1821 на порядок ниже!
asidalv писал(а):или совсем другие там команды
Команды и разрешающая способность отличаются.
Re: Всё по DS18(B/S)20.
Добавлено: Чт янв 14, 2016 08:50:48
BOB51
В принципе возможно.
Только дискретность у DS1821 в 1 градус и размешение данных по-другому.
Основное назначение - трехвыводный термостат с заданной пользователем фиксированной уставкой (смена значений только по принципу стирание - программирование). Внешний вывод позволяет напрямую управлять силовым ключом. Остальное в даташите.

Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 16, 2016 10:58:02
kolobok0
Мурик писал(а):...Разрешающая способность у DS1821 на порядок ниже!...
БРЯХНЯ(из кинухи)!!!!
Разрешающая способность:
DS1821 = 0,01 градуса
DS1820 = 0,0625 градуса
в матчасти усё есть...
(круглый)
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 16, 2016 13:38:10
Мурик
Читайте даташит.
http://datasheets.maximintegrated.com/en/ds/DS1821.pdf
Provides 8-bit (1°C resolution) centigrade temperature measurements
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 16, 2016 17:55:20
BOB51
kolobok0
Вам приходилось на МК с математикой и набором обмена в режиме HIGH-RESOLUTION TEMPERATURE READINGS с этими датчиками работать?
Да и в любом случае младший разряд для пользователя есть без особой надобности, дай боже хоть до 0,5 градуся на DS18B20 в типовых приложениях выйти - ибо одно дело "относительно измеренной какой-то точки" в датчике и другое - градуировочная характеристика, в привязке к контрольному термометру хотя бы со шкалой, имеющей цену деления в 1/10 градуса...
Вобщем для индикации больше чем в пол-градуса вывод не рекомендуется - во избежании вечных споров с любителями посмотреть хоша-бы на ртутный контрольный термометр, расположенный совсем вроде и рядом с DSкой.

Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 17, 2016 00:31:45
kolobok0
Мурик писал(а):Читайте даташит.
в даташите приведена формула получения повышенного разрешения.
двадцатка меньше имеет разрешение потому, что в формулу зашита константа:
Note that the COUNT PER °C register is hard-wired to
16 (10h)
у двадцать первого такого ограничения нет.
посему разрешение
DS1821 = 0,01 градуса
DS18x20 = 0,0625 градуса.
Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 17, 2016 00:42:02
kolobok0
BOB51 писал(а):...Вам приходилось...в режиме HIGH-RESOLUTION TEMPERATURE READINGS с этими датчиками работать?...для пользователя есть без особой надобности...
железо+софт, где используется разрешение 0,01 градуса на датчиках DS1821 использую более 10 лет, в том числе и в поставках за рубеж(2005 год, несколько сот штук, Англия). Всего выпущенных единиц - десятки тысячь. Нареканий нет.
так достаточно, если я отвечу?
По поводу показа человеку. А кто сказал, что это для этого необходимо? Домыслы оставляем при себе...
Спорить, доказывать что-либо по факту реально работающего железа не буду (температура при сканировании линейна, никаких "скачков" или "нагреваний более десятых градусов" при постоянном сканировании _цикл_менее_1_сек_ = нет).
Считайте так - я знаю тайные знания, магия для тех кто не верит.
Может быть это и к лучшему. Цена решения выше.
Кстати, я не один такой "маг":
http://radiokot.ru/forum/viewtopic.php? ... 9&start=20
см. посты Kotische
удачи усем
(круглый)
ЗЫ
Для тех, кому опыт интересен. У 21 есть другие косяки. При плотном юзанье - спрашивайте, подскажу как обойти грабли(до фазы разводки плат только).
Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 17, 2016 08:37:05
BOB51
Да все енто уже даавно пройденный материал для тех, кто с датчиками работал "в режиме бытовухи".
Вот только стандарты иные требования выдвигают.
Да и сам процесс удержания (не просто измерения) температуры по распределенному объёму с точностью до 0,01 градуса... как бы корректнее выразиться... не для любителя (и не только из-за датчиков).
Мелкий вопрос шеволится -
зачем при наличии стандартно работающего с заводской разрешающей способностью 0,0625 датчика DS18x20 в целевом изделии применять гораздо более громоздкий (корпус с большей тепловой инерцией), "грубый" (и вобщем-то не для тех целей разработанный) DS1821?

Re: Всё по DS18(B/S)20.
Добавлено: Пт янв 22, 2016 21:28:21
9mm
Добрый вечер, мудрые коты!
Прошу строго не судить и помочь.
Электронщик я старый, а вот с микроконтроллерами только начал разбираться.
Встала задача сделать термостат. Выбор пал на tiny2313 и ds18b20. Процессе макетирования была собрана простейшая схема: tiny2313+ds18b20+резистор.
Написан код на Си в Atmel Studio.
Все работало нормально, температура измерялась, до тех пор пока я не решил поменять пин подключения датчика. Поменял на макете и соответственно в коде. Запускаю - не работает!!!
В результате экспериментов выяснилось - при подключении датчика к 0 пину любого порта все работает, но при подключению к любому другому пину любого порта работать перестает.
То же эффект словил и на другом контроллере (tiny13А).
Код во вложении. (Как вставить в текст сообщения еще не разобрался).
Прошу помочь разобраться с этими граблями.
Заранее все спасибо.
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 23, 2016 06:35:50
WiseLord
Код: Выделить всё
void OneWire_SendBit(unsigned char SBit)
{
OneWire_BusHigh();
OneWire_BusLow();
if (SBit==1)
Проблема в последней строке. Проверять надо не на равенство единице, а на неравенство нулю.
От вышестоящей функции сюда приходят не только ноль или единица, а и другие числа - степени двойки.
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 23, 2016 19:12:21
ROMan2947
Привет всем!!!
решил изучить и подключить датчик DS18B20 к микроконтроллеру.почитал описание, посмотрел примеры, вроде ниче сложного. взялся писать код.шапку скопировал с примера остальное решил написать самостоятельно согласно своему пониманию. 1 шаг инициализация только вот сомнения есть в работоспособности,хотелось бы услышать критику бывалых:
код ниже
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define SKIP_ROM 0xCC // Пропустить индентификацию
#define CONVERT_T 0x44 // Измерить температуру
#define READ_SCRATCHPAD 0xBE // Прочитать измеренное
//определяем порт и бит к которому подключено устройство
#define OWI_PORT PORTD
#define OWI_DDR DDRD
#define OWI_PIN PIND
#define OWI_BIT 0
#define OWI_LOW OWI_DDR |= 1<<OWI_BIT//притягиваем шину к 0
#define OWI_HIGH OWI_DDR &= ~(1<<OWI_BIT)//отпускаем шину
int main(void)
{ PORTA=0x00;
DDRA = 0x00;
OWI_LOW; //притягиваем шину к 0
_delay_us(500);
OWI_HIGH; //отпускаем шину
_delay_us(65);
if (OWI_PIN= (1<<0))
PORTA=3;// означает о наличии устройства
else
PORTA=100;// означает о отсутствии устройства
}
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 23, 2016 19:53:30
WiseLord
По линии датчика вроде нормально, но смущают странные и бесполезные манипуляции с резисторами подтяжки на порту A.
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 23, 2016 22:15:22
ROMan2947
манипуляции на PORTA я произвел для визуализвции ответа датчика о том, что он в канале.тестировал прогу в Proteus подключал к шине 1 wire осцилограф в надежде увидеть импульс присутствия датчика,но в ввиду наверное короткого времени я так и не увидел...в коде я имел ввиду если датчик подает импульс присутствия, то контроллер мне показывает это выводом на портА числа 3, если же он не отвечает то 100.
числа 3 и 100 взяты произвольно..вот и решил поинтересоваться насколько я в правильном направлении.

Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 23, 2016 23:19:14
WiseLord
ROMan2947 писал(а):в коде я имел ввиду если датчик подает импульс присутствия, то контроллер мне показывает это выводом на портА числа 3, если же он не отвечает то 100
Если бы порт A был сконфигурирован на выход - то ладно. А так, фактически, просто дёргаются встроенные резисторы подтяжки, без вывода информации на пины порта A МК.
Re: Всё по DS18(B/S)20.
Добавлено: Сб янв 23, 2016 23:50:09
ROMan2947
точняк...

DDR=0xFF.
Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 24, 2016 21:12:13
9mm
WiseLord писал(а):Код: Выделить всё
void OneWire_SendBit(unsigned char SBit)
{
OneWire_BusHigh();
OneWire_BusLow();
if (SBit==1)
Проблема в последней строке. Проверять надо не на равенство единице, а на неравенство нулю.
От вышестоящей функции сюда приходят не только ноль или единица, а и другие числа - степени двойки.
WiseLord Спасибо за наводку.
Проверил. Не здесь собака порылась, да и от вышестоящей функции приходит либо 0 либо 1.
Но почему при подключении к 0 пину работает, а например при подключении к 4 пину не работает.
Вот в чем вопрос!
Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 24, 2016 21:23:25
9mm
ROMan2947
Мне кажется импульс присутствия нужно ловить вот так:
Код: Выделить всё
if ((OWI_PIN&(1<<OWI_BIT))==0)//***3
{
...
}
else
{
...
}
Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 24, 2016 21:45:09
WiseLord
9mm писал(а):Но почему при подключении к 0 пину работает, а например при подключении к 4 пину не работает.
Код: Выделить всё
#define DS18B20_Bit 0
...
unsigned char OneWire_ReciveBit() {
...
if ((DS18B20_Pin&(1<<DS18B20_Bit))==1)
Видите причину? Я в предыдущем сообщении немного не тот кусочек кода вставил просто...
Re: Всё по DS18(B/S)20.
Добавлено: Вс янв 24, 2016 21:58:57
9mm
WiseLord
Спасибо огромное!!!
Вот теперь то я и сам понял....век живи век учись.
Все заработало....мотаю на усы
Еще раз спасибо!!!
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 27, 2016 14:45:39
clickhex
Доброго времени участникам форума. У меня есть вопрос по 1wire периферии. Кто нибудь пробовал на МК эмулировать любое 1wire устройство , скажем тот же 1820. Таким образом можно эмулировать уже существующие или создавать новые семейства и устройства 1wire