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

Подцепить датчик DS1821 к 2313

Добавлено: Вт фев 28, 2006 19:29:19
Sailanser
Добрый вечер!
Хотелось бы спросить ни у кого нет случайно куска программы на ASM как подцепить датчик DS1821 к 2313 даташит на него скачал поглядел по инету но там только описания DS1820 различных модификаций. Сам еще только разбираюсь в програмировании микроконтроллеров. А то на днях порылся в своих запасах и его обнаружил и хотелось бы разобраться более подробно глядя в прогу и в даташит на датчик.

Заранее спасибо за ответ.

Добавлено: Вт фев 28, 2006 19:43:02
Max
А чем 1820 не устраивает?

Добавлено: Вт фев 28, 2006 19:47:32
Sailanser
DS1821 не устраивает по одной простой причине за отсутствием оных в любой модификации интнересовался по нашим фирмам и на нашем базаре говорят нет предлагают 1821 а смысл мне его покупать коль у меня он уже есть :)) А в магазинах предлагают на заказ вести и там срок от 1-3 недель. Как они говорят сначала заказы формируем а потом уще поставщику шлем, вот поэтому и приходиться с DS1821.

Добавлено: Вт фев 28, 2006 20:34:43
Max
Понятно... и чего - по даташитам они сильно различаются?
По-моему, там базовая система команд одна и таже - по крайней мере, для измерения температуры вполне хватит...

Добавлено: Вт фев 28, 2006 20:40:34
Sailanser
Вроде как гляжу по даташиту там сначала надо переключить из режима термостата в режим термометра. Просто с этой шиной еще ни разу не работал да и только разбираюсь во всем этом.

Добавлено: Вт фев 28, 2006 21:43:53
Max
Ну по 1820 точно тема уже была - посмотрите в форуме...

Добавлено: Пт мар 03, 2006 18:16:11
Sailanser
Поглядел по форуму по DS1820 поглядел форум есть упоминание там про датчик DS18S20 это полный аналог DS1820 откопал у себя еще DS18B20 но унего разрядность выбирается между 9,10,11 и 12 битами по умолчанию с завода идут настроенны на 12 бит мож ктио подскажет как его переключить на 9 бит. Глядел по даташиту но все равно что-то не пойму.

Добавлено: Сб мар 04, 2006 11:07:26
moLCHec
в блокнотной памяти есть байт конфигурации который за это отвечает
адреса его не знаю но думаю в дате найдёшь

Добавлено: Чт мар 09, 2006 17:09:24
moLCHec
почитал тут по 1WRIE вот что я понял;
начинается всё со сброса по этой команде все устройства
подглюченные на шину бросают свои дела и бегут к телевизору
на тебя смотреть :)))
и вот чё они видят
reset:
"садим" линию
ждём 700мкс
"отпускаем" линию
ждём 65мкс
проверяем линию если 0 то продолжаем иначе выводим "Устройство не подключено"
ждём 500мкс
проверяем линию если 1 то продолжаем иначе выводим "КЗ в линии"
ret
после того как мы определили что нас кто-то всё таки глядит проводим интерактивное шоу

чтение слота:
"гасим" линию
ждём 1мкс
"отпускаем"
ждём 13мкс
проверяем линию какой уровень такой и бит
ret

теперь по результатам опроса показываем кино
запись 0 в слот:
"садим" линию
ждём 80мкс
отпускаем линию
ret
запись 1 в слот
"садим" линию
ждём 4.5мкс
отпускаем линию
ждём 75 мкс
ret

если у тебя один датчик подглючен то тебе с ID кодами парится не надо
делаешь так
rcall reset
выводишь на линию команду сетевого уровня пропуск пзу 0x0СС
выводишь транпортную команду 0x44 преобразовать температуру
ждём 750мкс
выводим команду 0x0BE чтение озу
читаем сначала мл. затем старший байт

передачабайта по 1-WIRE осуществляется начинается с млядшего,
по умолчанию датчик выдаёт 9 разрядный код температуры

Добавлено: Сб янв 13, 2007 08:06:18
kitOK
Sailanser, про датчики всё подробно есть на http://woland.irk.ru/stm/

Добавлено: Сб янв 13, 2007 09:01:57
Мышонок
Была хорошая статья в "Компонентах и технологиях". №2,3-2001 о цифровых датчиках температуры Dallas Semiconductor, т.е. серии DS (не только о DS1820/1821).
DS1820 из-за ошибки в конструкции снят с производства. Вместо него DS18S20 и DS18B20.

Добавлено: Сб янв 13, 2007 23:03:57
Sailanser
Вопрос уже не актуален т.к давно сделал термометрер Atini2313+LCD16x2+два DS18S20. так что теперь все это добро меереет температуру на улице и в доме.

Добавлено: Пт фев 23, 2007 01:23:28
Abakt
вот еще проектик
http://startcd.narod.ru/clock/clock.html
часы термометр ATmega8 WinAVR Proteus

Добавлено: Вс апр 01, 2007 05:41:56
Алексей П
А как бы переделать этот проект под LCD?

Добавлено: Вс апр 01, 2007 19:22:17
Aheir
Как-как..
Исходник же есть? Есть... Даже на С, что гораздо проще.
Берем да переделываем.
В том же CVAVR есть встроенные библиотеки для LCD, так что все условия есть.. :)

два DS на один пин МК

Добавлено: Пн ноя 05, 2007 23:46:47
Dmitro
Народ, может я ленивый и плохо искал, но вот не нашел, какой алгоритм если у меня два датчика на одной линии сидят, тут Skip ROM не покатит, как МК должен организовать запрос промежуточного ОЗУ, чтобы получить серийники каждго датчика, что-бы потом знать к кому конкретно обращаться, (так как возможно датчики будут меняться, то вариант с заранее известным номером устройства -не катит).

Re: два DS на один пин МК

Добавлено: Вс дек 16, 2007 10:32:11
TechMike
Доброго времени суток.
Не получается считать температуры на VB6 с более чем одного датчика
ds18b20. Использую команду 55H но датчики возвращают температуру
только одного из них, т.е. температура одного из дачиков
отображается на обоих.
Делал все по даташиту, подключен датчик паразитным питанием:

dmmy = TMTouchReset(MyHandle) 'сбрасываем шину
If TMAccess(MyHandle, state_buffer(0)) <> 1 Then GoTo point1 'exit function
dmmy = TMTouchByte(MyHandle, &H55) 'даем команду для выбора датчика по
его уникальному номеру
For i = 0 To 8
dmmy = TMTouchByte(MyHandle, ROMid(g).ROMOrig(i)) 'передаем в шину
уникальный номер датчика, с которым хотим работать
Next i
If TMAccess(MyHandle, state_buffer(0)) <> 1 Then GoTo point1 'exit function
dmmy = TMTouchByte(MyHandle, &H44) 'даем команду измерять температуру
Pause (1) ' пауза на время измерения температуры
dmmy = TMTouchReset(MyHandle) 'сбрасываем шину
If TMAccess(MyHandle, state_buffer(0)) <> 1 Then GoTo point1 'exit function
dmmy = TMTouchByte(MyHandle, &H55) 'даем команду для выбора датчика по
его уникальному номеру
For i = 0 To 8
dmmy = TMTouchByte(MyHandle, ROMid(g).ROMOrig(i)) 'передаем в шину
уникальный номер датчика, с которым хотим работать
Next i
If TMAccess(MyHandle, state_buffer(0)) <> 1 Then GoTo point1 'exit function
'Read the scratch of a DS18B20
dmmy = TMTouchByte(MyHandle, &HBE) ' даем команду для чтения
регистров(памяти) датчика
For i = 0 To 8
dmmy = TMTouchByte(MyHandle, &HFF)' читаем данные из регистров
датчика
TEMP_buffer(i) = dmmy
Next i

В ROMid(g).ROMOrig() хранится уникальный код девайса, передаю его полсе H55 в таком же виде как считал с попомщью команды TMRom.
Пробовал и посылать последний байт первым и если If ROM(i) <= &HF то обнулят байт серийного номера.
Все равно не получается, подскажите плс почему?

По даташиту DS18B20.pdf ("MEMORY FUNCTION EXAMPLE Table 5"):
TX Reset Reset pulse (480-960 ?s).
RX Presence Presence pulse.
TX 55h Issue “Match ROM” command.
TX <64> Issue address for DS18B20.
TX 44h Issue “ Convert T” command.
TX I/O line is held high for at least a period of time greater than tconv by bus master to allow conversion to complete.
TX Reset Reset pulse.
RX Presence Presence pulse.
TX 55h Issue “Match ROM” command.
TX <64> Issue address for DS18B20.
TX BEh Issue “Read Scratchpad” command.
RX <9> Read entire scratchpad plus CRC; the master now
recalculates the CRC of the eight data bytes received
from the scratchpad, compares the CRC calculated and
the CRC read. If they match, the master continues; if
not, this read operation is repeated.
TX Reset Reset pulse.
RX Presence Presence pulse, done.

Единственное что не делал, это Strong pull-up после команды начать
измерение температуры(H44). НО температуру датчик измеряет т.е.
ему хватает напруги на линии. Если на шине только один датчик, то
проблем нем, все читается на ура, бъюсь уже три недели - результат
нулевой. Готов уже купить Temp Keeper, так как он все замечательно
меряет =(((

P.S. Проблему победил, исходники тут: http://rn3aig.ru/phpBB3/viewtopic.php?f=3&t=5

Re: DS1821

Добавлено: Вс фев 27, 2011 12:24:03
vovik15
здравствуйте! с 18b20 работал ,а вот каие команды посылать на ds1821 никак не пойму.
подскажите пожалуйсто как работать с ds1821 .В нашем городе вообще такая глухомань,можно только детали для телевизора найти,ито не факт :)
пишу на СИ зараннее спасибо

Re: Подцепить датчик DS1821 к 2313

Добавлено: Вс фев 27, 2011 12:47:39
ChipKiller
здравствуйте! с 18b20 работал ,а вот каие команды посылать на ds1821 никак не пойму.
... то же самое, но чуть проще :) . После сброса шлете - 0x0C, 0x01 ... разрешение одиночного преобразования. Потом - сброс и 0xАА .. чтение температуры

Re: Подцепить датчик DS1821 к 2313

Добавлено: Вс фев 27, 2011 13:21:16
vovik15
ChipKiller писал(а):
здравствуйте! с 18b20 работал ,а вот каие команды посылать на ds1821 никак не пойму.
... то же самое, но чуть проще :) . После сброса шлете - 0x0C, 0x01 ... разрешение одиночного преобразования. Потом - сброс и 0xАА .. чтение температуры
извените,немного непонял что должно быть после многоточия
reset();
iw_out(0x0C);
iw_out(0x01);
.........
reset();
//тут чтение