Всё по DS18(B/S)20.
Re: Всё по DS18(B/S)20.
Да у него площадь маленькая, так что все будет нормально. Надо бы перед каждым обращением к датчику считывать его адрес, считать CRC и сравнивать с принятым, если не сходится то включать аварийную сигналку (авария датчика).
Re: Всё по DS18(B/S)20.
Ну, я бы не был столь категоричен.

Все-таки «Absolute maximum ratings» это не совсем штатные параметры. Кроме того, при паразитном питании производитель не рекомендует измерять температуру выше 100ºC. Вот ещё интересная таблица.

А в EEPROM кроме всего прочего хранятся калибровочные константы. Имели место случаи искажения калибровочных констант, в результате чего датчик мог давать ошибку вплоть до ±60°C.

Все-таки «Absolute maximum ratings» это не совсем штатные параметры. Кроме того, при паразитном питании производитель не рекомендует измерять температуру выше 100ºC. Вот ещё интересная таблица.

А в EEPROM кроме всего прочего хранятся калибровочные константы. Имели место случаи искажения калибровочных констант, в результате чего датчик мог давать ошибку вплоть до ±60°C.
Re: Всё по DS18(B/S)20.
ой , тогда ну его нафиг , можно лоханутся с таким датчиком .
уж извиняюсь что уйду немного от темы ,может кто подскажет хорошую несложную схему термостата с релейным выходом ,на компараторе?
уж извиняюсь что уйду немного от темы ,может кто подскажет хорошую несложную схему термостата с релейным выходом ,на компараторе?
Re: Всё по DS18(B/S)20.
Собственно, возился с этим датчиком и напоролся на ошибку, только так и не понял, где я её допустил. Я считываю два байта с датчика и каждый байт отправляю в отдельную переменную. Поскольку работаю первый раз, то попробовал вывести первый байт на портб и туда выводятся одни единицы. Какую температуру на датчике не устанавливай, все равно и в первом и во втором байте выдаются единицы. Что может быть не так? Код привожу. Контроллер 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.
Не знаю, по какой документации Вы это делали, но у Вас абсолютно всё неправильно.
Читайте
Читайте
Re: Всё по DS18(B/S)20.
Аlex писал(а):Не знаю, по какой документации Вы это делали, но у Вас абсолютно всё неправильно.
Читайте
Вы задержки имеете ввиду? Просто мне проект один попался в руки, так там и на таких задержках все работало и частота была 4 Мгц. Ну попробую по даташиту
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Мало ли что где было и работало...
Да ладно, не стОит... Нафиг они вообще эти даташиты нужны...Ну попробую по даташиту
Re: Всё по DS18(B/S)20.
Аlex писал(а):Мало ли что где было и работало...Да ладно, не стОит... Нафиг они вообще эти даташиты нужны...Ну попробую по даташиту
Сарказм не оценен. Вы мне лучше скажите, ошибки только в задержках или где-то еще?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Ну если у Вас и так всё должно работать, что тогда можно сказать... А одолжения Ваши никому тут не нужны.Сарказм не оценен.
Был один тут, пару страниц назад - понаписал отсебятины и ещё бился головой об стену, утверждая, что всё должно работать. Нахрена тогда на форум идти с вопросами, не понятно....
По поводу Вашего кода. Приведите все тайминги к рекомендованным производителем, потом уже и будет разговор. А так-же, старайтесь выкладывать код со всеми используемыми ф-иями, типа _delay(). Гадать на кофейной гуще, что это за чудо-задержки, никто не будет. Или, на крайняк, ставьте комментарии к подобным строкам, например - "Задержка 10 Us".
Re: Всё по DS18(B/S)20.
Добавлю только, что об этих датчиках уже столько написано, в том числе и на русском, что вопросов уже быть вообще не должно.
-
zifus
- Родился
- Сообщения: 17
- Зарегистрирован: Чт фев 07, 2013 16:05:09
- Откуда: Украина
- Контактная информация:
Паразитное питание DS18B20
Здраствуйте!! Я новичок и не могу понять где в коде нужно организовать высокий уровень порта для паразитного питания датчика температуры DS18B20. Ткните меня носом пажайлуста..
- Вложения
-
- Исходник.rar
- (98.66 КБ) 191 скачивание
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
Организовывать нужно не в коде, а подтяжкой линии данных к питанию.
-
zifus
- Родился
- Сообщения: 17
- Зарегистрирован: Чт фев 07, 2013 16:05:09
- Откуда: Украина
- Контактная информация:
Re: Всё по DS18(B/S)20.
Аlex писал(а):Организовывать нужно не в коде, а подтяжкой линии данных к питанию.
Подтяжка к питанию есть 4,7кОм но когда я подключаю по паразит.пит. на индикаторе 85,0 градусов
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
4.7 много, повесьте, хотя бы, 1 Ком.
-
zifus
- Родился
- Сообщения: 17
- Зарегистрирован: Чт фев 07, 2013 16:05:09
- Откуда: Украина
- Контактная информация:
Re: Всё по DS18(B/S)20.
Аlex писал(а):4.7 много, повесьте, хотя бы, 1 Ком.
Спасибо за помощь!! Было под рукой 680 Ом поставил и все заработало
-
borys
- Держит паяльник хвостом
- Сообщения: 927
- Зарегистрирован: Вт сен 07, 2010 19:27:48
- Откуда: Ташкент
Re: Всё по DS18(B/S)20.
При 680 Ом есть опасность спалить датчик. Да и 1 кОм тоже маловато. Сейчас то все заработало, но надолго
ли ?
ли ?
Re: Всё по DS18(B/S)20.
Верное замечание. Если длина соединительных проводов относительно мала и с подтяжкой 4,7К датчик не работает, осмелюсь предположить, что тайминги не соответствуют рекомендациям изготовителя.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Всё по DS18(B/S)20.
2 года стоят часы-термометр дома, работают 2 датчика, пуллап - ~600 ОМ. Ничего до сих пор не случилось.Сейчас то все заработало, но надолго ли ?
Да и откуда такие данные, что этого сопротивления мало ? Где это написано ? Я в даташите не нахожу подобных параметров.
Re: Всё по DS18(B/S)20.
Кроме даташита на сам датчик, есть еще общие рекомендации для сетей 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.
А термометры дома есть не только у Вас...
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.
А термометры дома есть не только у Вас...
Re: Всё по DS18(B/S)20.
Почти добил, но я не понимаю, почему он выводит мне такие значения 11111110 в нулевом байте и 11111111 в первом байте. К тому же лог симулятора показывает какую-то не поддерживаемую команду, а лог отладчика все верно показывает. Кто может подсказать, в чем проблема? Проект привел, если что.
- Вложения
-
- Desktop.rar
- (23.07 КБ) 186 скачиваний
-
- команад.JPG
- (26.87 КБ) 444 скачивания
-
- лог.JPG
- (22.08 КБ) 378 скачиваний