Собрал термостат на ds18b20 и atmega8 , работает нормально. Купил еще ds18b20 но они с белой точкой. Проблема такая, те что без точки работают нормально, а те что с точкой показивают -35 при 24 градусах,-27 при 32 и.т.д. Некак не могу найти даташит к нему, на сайте производителя тоже нет. Если кто знает что ето за продукт и как его исползовать плз помогите.
У меня были такие мысли, но зачем на продажу виставлять бракованное . Или такое тоже бывает? Все таки это Dallas semiconductors а не какая нибуд китайская saanyoo
На сайте производитела про такой продукт и слова нету. Есть ешо ds18s20 , думал в магазине попутали, но на етом четко написано 18b20 как и далжно быт, и формат и содержание регистеров и серийной код правилние , только вот температура как будто на 50 градусов ниже показивает. Да и ещо у ds18b20 завадская установка 12 бит а у етих 9, поменял програмно на 12 замирает на последнем 9 битном значении и не реагирует на изменении температуры, хотя регистри считиваются .
У меня были такие мысли, но зачем на продажу виставлять бракованное . Или такое тоже бывает? Все таки это Dallas semiconductors а не какая нибуд китайская saanyoo
Если можно, выложите фото. Интересно посмотреть, что за зверь такой.
Ничего интересного, обичный TO92 с тремя ножками, с надписами DALLAS и 18B22 спереди и с белой точкой сзади корпуса, и с работой не вписиваюшимся в указанном в даташите. Ну послал я емеил DS фирме и буду ответа ждать. Может ето и в правду бракованное или китайцы
Доброго времени суток. Вот решил разобраться для себя с датчиком ds18b20 и сразу застрял на его инициализации. Библиотеки использовать не хочу. Написал программу, которая должна в цикле инициализировать этот датчик:
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 мкс, а он так не делает- откликается через раз (если это вообще отклик). Помогите в чём я не прав?
Вот решил разобраться для себя с датчиком 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 - датчик на линии есть
Для работы с 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.
Для работы с 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"
Ничего интересного, обичный 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".
Уважаемый ChipKiller, я что-то не понял с командами sbi, cbi. Они вроде как устанавливают указаный бит регистра в 0 и 1 соответственно, а связва ldi r16,0b11111111 c out portd,r16 весь байт переводит в значение высокого уровня. В чём тогда фатальная ошибка не позволяющая инициализировать датчик и стабильно это видеть на осцилограмме, прикреплённой мной выше? Или собака зарыта глубже? И ещё вопрос: менять логический уровень надо регистром ddrd а не как я регистром portd при ddrd в 1?(исходя из вашего: PS бит порта portd.PinDs1820 всегда равен 0)?
тока я не понял почему оно заработало пойду читать дальше.
... потому, что запись "1" в порт не дает "возможности" DS18xx сбросить линию в "0" (при таком управлении по-сути происходит короткое замыкание вывода МК на землю )
Вроде разобрался. sbi ddr,x подключает ножку порта к нулю внутри самого контроллера и на линии устанавливается низкий уровень, что и вызывает начало инициализации; команда cbi ddr,x обеспечивает высокий уровень за счёт подключения к питанию через резистор в схеме на 4,7К. Ответом на инициализацию служит подключение линии к нулю в самом датчике. Фух. Два дня ушло. Ещё раз спасибо Вам ChipKiller!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения