Страница 1 из 1

ds18b20 с белой меткой

Добавлено: Чт фев 17, 2011 19:58:44
mdavit
Собрал термостат на ds18b20 и atmega8 , работает нормально. Купил еще ds18b20 но они с белой точкой. Проблема такая, те что без точки работают нормально, а те что с точкой показивают -35 при 24 градусах,-27 при 32 и.т.д. Некак не могу найти даташит к нему, на сайте производителя тоже нет. Если кто знает что ето за продукт и как его исползовать плз помогите.

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 01:11:52
piligrim130
может их отмаркировали как бракованые

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 01:21:09
mdavit
У меня были такие мысли, но зачем на продажу виставлять бракованное .
Или такое тоже бывает?
Все таки это Dallas semiconductors а не какая нибуд китайская saanyoo

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 01:37:29
mdavit
На сайте производитела про такой продукт и слова нету. Есть ешо ds18s20 , думал в магазине попутали, но на етом четко написано 18b20 как и далжно быт, и формат и содержание регистеров и серийной код правилние , только вот температура как будто на 50 градусов ниже показивает.
Да и ещо у ds18b20 завадская установка 12 бит а у етих 9, поменял програмно на 12 замирает на последнем 9 битном значении и не реагирует на изменении температуры, хотя регистри считиваются .

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 02:32:02
IM1
mdavit писал(а):У меня были такие мысли, но зачем на продажу виставлять бракованное .
Или такое тоже бывает?
Все таки это Dallas semiconductors а не какая нибуд китайская saanyoo
Если можно, выложите фото. Интересно посмотреть, что за зверь такой.

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 03:34:56
mdavit
Ничего интересного, обичный TO92 с тремя ножками, с надписами DALLAS и 18B22 спереди и с белой точкой сзади корпуса, и с работой не вписиваюшимся в указанном в даташите.
Ну послал я емеил DS фирме и буду ответа ждать.
Может ето и в правду бракованное или китайцы

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 10:16:10
Stalker-U
Доброго времени суток. Вот решил разобраться для себя с датчиком ds18b20 и сразу застрял на его инициализации. Библиотеки использовать не хочу. Написал программу, которая должна в цикле инициализировать этот датчик:

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

.include "D:\avr\avrasm\appnotes\m16def.inc"
.cseg

.org $0000
rjmp reset

reset:
ldi r16,low(RamEnd)
out SPL,r16
ldi r16,high(RamEnd)
out SPH,r16

ldi r16,0b11111111
out ddrd,r16


zzzz:
rcall zader1
rcall zader2
rjmp zzzz

zader1:
ldi r16,0b11111111
out portd,r16
ldi r17,255
ldi r18,3
n1:
dec r17
brne n1
dec r18
brne n1
ret

zader2:
ldi r16,0b00000000
out portd,r16
ldi r17,166

n2:
dec r17
brne n2
ret

Я как понимаю он должен откликаться всегда на каждое проседание линии более 480 мкс, а он так не делает- откликается через раз (если это вообще отклик). Помогите в чём я не прав?

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 11:10:42
ChipKiller
Stalker-U писал(а):Вот решил разобраться для себя с датчиком ds18b20 и сразу застрял на его инициализации. Библиотеки использовать не хочу. Написал программу, которая должна в цикле инициализировать этот датчик:
... для начала совет.
1. если пишете на ассемблере - пользуйтесь .equ и .macro. Код будет более понятен и читаем..
2. вместо zader1: и zader2: - хватит одной процедуры задержки

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

.equ PinDs1820 = 5 ; номер вывода порта
....
sbi DDRD,PinDs1820   ; вывод на выход "0"   
rcall delay_480
cbi DDRD,PinDs1820   ; вывод на выход "1"
rcall delay_5             ; время на восстановление линии в "1"
ldi r16,TIME
loop:
sbis    PIND,PinDs1820 ; цикл пока нет "0"
rjmp ds_ok   
dec r16
brne loop
ret
ds_ok:
rcall delay_480
ret


если r16 на выходе не равно 0 - датчик на линии есть

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 12:03:42
mdavit
Для работы с ds18b20 нужно саблюдать последовательность 3-х шагов
1. Инициализациа . У вас ето и просходит
2. ROM команда
3. Команда функции

При отцуствии последователности или каково то шага поведение ds18b20 не определено

Видимо у вас после инициализации ждет следующих шагов, далее понимает по своему незнаю что как и нету ответа, и внов переходит в режим ожидания инициализации


From datasheet

The transaction sequence for accessing the DS18B20 is as follows:
Step 1. Initialization
Step 2. ROM Command (followed by any required data exchange)
Step 3. DS18B20 Function Command (followed by any required data exchange)
It is very important to follow this sequence every time the DS18B20 is accessed, as the DS18B20 will not
respond if any steps in the sequence are missing or out of order. Exceptions to this rule are the Search
ROM [F0h] and Alarm Search [ECh] commands. After issuing either of these ROM commands, the
master must return to Step 1 in the sequence.

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 12:20:45
ChipKiller
mdavit писал(а):Для работы с ds18b20 нужно саблюдать последовательность 3-х шагов
1. Инициализациа . У вас ето и просходит
... не происходит и не произойдет
Stalker-U писал(а):

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

....
ldi r16,0b11111111
out ddrd,r16 ; все линии порта работают как выходы ОШИБКА
....
zader1:
ldi r16,0b11111111
out portd,r16 ; ОШИБКА
....
zader2:
ldi r16,0b00000000
out portd,r16
....

работать можно только так

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

sbi DDRD,PinDs1820   ; вывод на выход "0"   
cbi DDRD,PinDs1820   ; вывод на выход "1"


PS бит порта portd.PinDs1820 всегда равен 0

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 16:38:52
IM1
mdavit писал(а):Ничего интересного, обичный TO92 с тремя ножками, с надписами DALLAS и 18B22 спереди и с белой точкой сзади корпуса, и с работой не вписиваюшимся в указанном в даташите.
Ну послал я емеил DS фирме и буду ответа ждать.
Может ето и в правду бракованное или китайцы
Тоже поискал, похоже что это ds18b20+, т.е. тоже самое, но без свинца. Картинка похожая на Вашу http://www.megachip.ru/item.php?item_id=716047 . На сайте Максима в свежем даташите утверждают, что "+" должен стоять на лицевой стороне http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf .
Кстати, вчера купил 2шт. 18b20, так и есть, - внизу-слева маленький плюсик, а сзади углубление с буковкой "p".

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 20:59:53
Stalker-U
Уважаемый ChipKiller, я что-то не понял с командами sbi, cbi. Они вроде как устанавливают указаный бит регистра в 0 и 1 соответственно, а связва ldi r16,0b11111111 c out portd,r16 весь байт переводит в значение высокого уровня. В чём тогда фатальная ошибка не позволяющая инициализировать датчик и стабильно это видеть на осцилограмме, прикреплённой мной выше? Или собака зарыта глубже? И ещё вопрос: менять логический уровень надо регистром ddrd а не как я регистром portd при ddrd в 1?(исходя из вашего: PS бит порта portd.PinDs1820 всегда равен 0)? :shock:

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 21:15:42
ChipKiller
Stalker-U писал(а):В чём тогда фатальная ошибка
... ошибка в принципе управления - нельзя изменять вывод порта через out PORTx.
Stalker-U писал(а):менять логический уровень надо регистром ddrd а не как я регистром portd при ddrd в 1?
... именно. sbi DDRD,PinDs1820 - переключает порт на вывод "0", сbi DDRD,PinDs1820 - переключает порт на ввод и резистор 4,7КОм "подтянет" его к "1"

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 21:37:59
Stalker-U
Вы гений ChipKiller :idea: Всё заработало как надо! тока я не понял почему оно заработало :( пойду читать дальше.

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 21:55:16
ChipKiller
Stalker-U писал(а):тока я не понял почему оно заработало :( пойду читать дальше.
... потому, что запись "1" в порт не дает "возможности" DS18xx сбросить линию в "0" (при таком управлении по-сути происходит короткое замыкание вывода МК на землю )

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 22:17:08
PE_VK
mdavit писал(а): Есть еще ds18s20 Да и еще у ds18b20 заводская установка 12 бит а у этих 9 .


1. У DS18В20 заводская установка 12 бит, а DS18S20 - 9 бит.
Попробуйте работать как с DS18S20.
2. Может еще быть паразитное питание и только.

Re: ds18b20 с белой меткой

Добавлено: Пт фев 18, 2011 22:36:20
Stalker-U
Вроде разобрался. sbi ddr,x подключает ножку порта к нулю внутри самого контроллера и на линии устанавливается низкий уровень, что и вызывает начало инициализации; команда cbi ddr,x обеспечивает высокий уровень за счёт подключения к питанию через резистор в схеме на 4,7К. Ответом на инициализацию служит подключение линии к нулю в самом датчике. Фух. Два дня ушло. Ещё раз спасибо Вам ChipKiller!