Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Всё по DS18(B/S)20.

Сообщение drakon »

Да у него площадь маленькая, так что все будет нормально. Надо бы перед каждым обращением к датчику считывать его адрес, считать CRC и сравнивать с принятым, если не сходится то включать аварийную сигналку (авария датчика).
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Всё по DS18(B/S)20.

Сообщение murzila »

Ну, я бы не был столь категоричен.
Изображение
Все-таки «Absolute maximum ratings» это не совсем штатные параметры. Кроме того, при паразитном питании производитель не рекомендует измерять температуру выше 100ºC. Вот ещё интересная таблица.
Изображение
А в EEPROM кроме всего прочего хранятся калибровочные константы. Имели место случаи искажения калибровочных констант, в результате чего датчик мог давать ошибку вплоть до ±60°C.
arelaw1
Родился
Сообщения: 15
Зарегистрирован: Сб авг 02, 2008 19:07:36
Откуда: Вологодская обл

Re: Всё по DS18(B/S)20.

Сообщение arelaw1 »

ой , тогда ну его нафиг , можно лоханутся с таким датчиком .
уж извиняюсь что уйду немного от темы ,может кто подскажет хорошую несложную схему термостата с релейным выходом ,на компараторе?
Reaper666
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн ноя 05, 2012 03:40:39

Re: Всё по DS18(B/S)20.

Сообщение Reaper666 »

Собственно, возился с этим датчиком и напоролся на ошибку, только так и не понял, где я её допустил. Я считываю два байта с датчика и каждый байт отправляю в отдельную переменную. Поскольку работаю первый раз, то попробовал вывести первый байт на портб и туда выводятся одни единицы. Какую температуру на датчике не устанавливай, все равно и в первом и во втором байте выдаются единицы. Что может быть не так? Код привожу. Контроллер PIC16F84A

Код: Выделить всё


#include <pic.h>
#include <htc.h>
__CONFIG(0x3ff2);
#define state TRISA3
#define pin RA3

void init(void)
{
state=1;
pin=0;
state=0;
_delay(50);
state=1;
_delay(65);
}

void TX(unsigned char com)// процедура записи в датчик
{
unsigned char i=0,temp=0;
temp=com;
for (i=0;i<8;i++)
{
   if (temp&0x01)
   {
   pin=0;
   state=0;
   _delay(15);
   state=1;
   _delay(60);
   }
   else
   {
   pin=0;
   state=0;
   _delay(60);
   state=1;
   }
temp>>=1;   
}
}

int RX(void) // процедура чтения из датчика
{
unsigned char i=0,dat=0,b;
for (i=0;i<8;i++)
{
pin=0;
state=0;
_delay(15);
state=1;
_delay(65);
b=pin;
_delay(50);
dat|=(b<<i);

}
return dat;
}

void main()
{
unsigned char l,i;
int t1,t2,temperature;
char temp[10];
TRISA=0;
TRISB=0;
PORTA=0;
PORTB=0;
init();
TX(0xCC); //skip ROM
TX(0X44); //Конвертировать
_delay(750);
init();
TX(0xCC);
TX(0xBE);
temp[0]=RX();
temp[1]=RX();
PORTB=temp[0];

while(1) {}

}
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Не знаю, по какой документации Вы это делали, но у Вас абсолютно всё неправильно.
Читайте
DS1820.pdf
(150.86 КБ) 281 скачивание
Reaper666
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн ноя 05, 2012 03:40:39

Re: Всё по DS18(B/S)20.

Сообщение Reaper666 »

Аlex писал(а):Не знаю, по какой документации Вы это делали, но у Вас абсолютно всё неправильно.
Читайте
DS1820.pdf



Вы задержки имеете ввиду? Просто мне проект один попался в руки, так там и на таких задержках все работало и частота была 4 Мгц. Ну попробую по даташиту
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Мало ли что где было и работало...

Ну попробую по даташиту
Да ладно, не стОит... Нафиг они вообще эти даташиты нужны...
Reaper666
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн ноя 05, 2012 03:40:39

Re: Всё по DS18(B/S)20.

Сообщение Reaper666 »

Аlex писал(а):Мало ли что где было и работало...

Ну попробую по даташиту
Да ладно, не стОит... Нафиг они вообще эти даташиты нужны...



Сарказм не оценен. Вы мне лучше скажите, ошибки только в задержках или где-то еще?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Сарказм не оценен.
Ну если у Вас и так всё должно работать, что тогда можно сказать... А одолжения Ваши никому тут не нужны.
Был один тут, пару страниц назад - понаписал отсебятины и ещё бился головой об стену, утверждая, что всё должно работать. Нахрена тогда на форум идти с вопросами, не понятно....

По поводу Вашего кода. Приведите все тайминги к рекомендованным производителем, потом уже и будет разговор. А так-же, старайтесь выкладывать код со всеми используемыми ф-иями, типа _delay(). Гадать на кофейной гуще, что это за чудо-задержки, никто не будет. Или, на крайняк, ставьте комментарии к подобным строкам, например - "Задержка 10 Us".
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Всё по DS18(B/S)20.

Сообщение murzila »

Добавлю только, что об этих датчиках уже столько написано, в том числе и на русском, что вопросов уже быть вообще не должно.
zifus
Родился
Сообщения: 17
Зарегистрирован: Чт фев 07, 2013 16:05:09
Откуда: Украина
Контактная информация:

Паразитное питание DS18B20

Сообщение zifus »

Здраствуйте!! Я новичок и не могу понять где в коде нужно организовать высокий уровень порта для паразитного питания датчика температуры DS18B20. Ткните меня носом пажайлуста..
Вложения
Исходник.rar
(98.66 КБ) 191 скачивание
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Организовывать нужно не в коде, а подтяжкой линии данных к питанию.
zifus
Родился
Сообщения: 17
Зарегистрирован: Чт фев 07, 2013 16:05:09
Откуда: Украина
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение zifus »

Аlex писал(а):Организовывать нужно не в коде, а подтяжкой линии данных к питанию.

Подтяжка к питанию есть 4,7кОм но когда я подключаю по паразит.пит. на индикаторе 85,0 градусов
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

4.7 много, повесьте, хотя бы, 1 Ком.
zifus
Родился
Сообщения: 17
Зарегистрирован: Чт фев 07, 2013 16:05:09
Откуда: Украина
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение zifus »

Аlex писал(а):4.7 много, повесьте, хотя бы, 1 Ком.

Спасибо за помощь!! Было под рукой 680 Ом поставил и все заработало :idea:
borys
Держит паяльник хвостом
Сообщения: 927
Зарегистрирован: Вт сен 07, 2010 19:27:48
Откуда: Ташкент

Re: Всё по DS18(B/S)20.

Сообщение borys »

При 680 Ом есть опасность спалить датчик. Да и 1 кОм тоже маловато. Сейчас то все заработало, но надолго
ли ?
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Всё по DS18(B/S)20.

Сообщение murzila »

Верное замечание. Если длина соединительных проводов относительно мала и с подтяжкой 4,7К датчик не работает, осмелюсь предположить, что тайминги не соответствуют рекомендациям изготовителя.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Сейчас то все заработало, но надолго ли ?
2 года стоят часы-термометр дома, работают 2 датчика, пуллап - ~600 ОМ. Ничего до сих пор не случилось.
Да и откуда такие данные, что этого сопротивления мало ? Где это написано ? Я в даташите не нахожу подобных параметров.
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Всё по DS18(B/S)20.

Сообщение murzila »

Кроме даташита на сам датчик, есть еще общие рекомендации для сетей 1-Wire. Раньше рекомендовали использовать pull-up ~5K, сейчас нормой считается ~2,2...1K. Не стоит забывать, что внутри датчика отнюдь не силовой MOSFET, который мог бы притянуть к земле сколь угодно малую подтяжку. Цитата:
Tests have shown that pull-up resistors down to 1K allow operation over the maximum cable length. If the resistor is less than 1K, logic levels are degraded, and with higher values capacitive loading prevents the proper waveforms.
А термометры дома есть не только у Вас... ;)
Reaper666
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн ноя 05, 2012 03:40:39

Re: Всё по DS18(B/S)20.

Сообщение Reaper666 »

Почти добил, но я не понимаю, почему он выводит мне такие значения 11111110 в нулевом байте и 11111111 в первом байте. К тому же лог симулятора показывает какую-то не поддерживаемую команду, а лог отладчика все верно показывает. Кто может подсказать, в чем проблема? Проект привел, если что.
Вложения
Desktop.rar
(23.07 КБ) 186 скачиваний
команад.JPG
(26.87 КБ) 444 скачивания
лог.JPG
(22.08 КБ) 378 скачиваний
Ответить

Вернуться в «Периферия»