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

Обсуждаем цифровые устройства...
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

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

Заранее спасибо за ответ.
Реклама
Max
Админ
Аватара пользователя
Сообщения: 10814
Зарегистрирован: Вт авг 23, 2005 15:23:25
Откуда: Москва

Сообщение Max »

А чем 1820 не устраивает?
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

DS1821 не устраивает по одной простой причине за отсутствием оных в любой модификации интнересовался по нашим фирмам и на нашем базаре говорят нет предлагают 1821 а смысл мне его покупать коль у меня он уже есть :)) А в магазинах предлагают на заказ вести и там срок от 1-3 недель. Как они говорят сначала заказы формируем а потом уще поставщику шлем, вот поэтому и приходиться с DS1821.
Max
Админ
Аватара пользователя
Сообщения: 10814
Зарегистрирован: Вт авг 23, 2005 15:23:25
Откуда: Москва

Сообщение Max »

Понятно... и чего - по даташитам они сильно различаются?
По-моему, там базовая система команд одна и таже - по крайней мере, для измерения температуры вполне хватит...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

Вроде как гляжу по даташиту там сначала надо переключить из режима термостата в режим термометра. Просто с этой шиной еще ни разу не работал да и только разбираюсь во всем этом.
Реклама
Max
Админ
Аватара пользователя
Сообщения: 10814
Зарегистрирован: Вт авг 23, 2005 15:23:25
Откуда: Москва

Сообщение Max »

Ну по 1820 точно тема уже была - посмотрите в форуме...
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

Поглядел по форуму по DS1820 поглядел форум есть упоминание там про датчик DS18S20 это полный аналог DS1820 откопал у себя еще DS18B20 но унего разрядность выбирается между 9,10,11 и 12 битами по умолчанию с завода идут настроенны на 12 бит мож ктио подскажет как его переключить на 9 бит. Глядел по даташиту но все равно что-то не пойму.
Мявтор!
Аватара пользователя
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.

Сообщение moLCHec »

в блокнотной памяти есть байт конфигурации который за это отвечает
адреса его не знаю но думаю в дате найдёшь
Вложения
регистр.JPG
в книге откуда инфу брал байт был под намером 4 после 2-байтов темп. и 2-х байтов темп.границ измерения
(25.87 КБ) 771 скачивание
Настоящий кот всегда либо голоден,
либо невыспался ...
Контактная информация:
Мявтор!
Аватара пользователя
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.

Сообщение 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 разрядный код температуры
Настоящий кот всегда либо голоден,
либо невыспался ...
Контактная информация:
Родился
Сообщения: 1
Зарегистрирован: Сб янв 13, 2007 08:04:03

Сообщение kitOK »

Sailanser, про датчики всё подробно есть на http://woland.irk.ru/stm/
Друг Кота
Аватара пользователя
Сообщения: 3792
Зарегистрирован: Чт сен 14, 2006 11:42:09
Откуда: Обитаю на чердаке

Сообщение Мышонок »

Была хорошая статья в "Компонентах и технологиях". №2,3-2001 о цифровых датчиках температуры Dallas Semiconductor, т.е. серии DS (не только о DS1820/1821).
DS1820 из-за ошибки в конструкции снят с производства. Вместо него DS18S20 и DS18B20.
Последний раз редактировалось Мышонок Чт янв 18, 2007 20:56:20, всего редактировалось 1 раз.
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3126
Зарегистрирован: Ср фев 01, 2006 22:29:02
Откуда: г.Ростов-на-Дону

Сообщение Sailanser »

Вопрос уже не актуален т.к давно сделал термометрер Atini2313+LCD16x2+два DS18S20. так что теперь все это добро меереет температуру на улице и в доме.
Вечно гонимый
Аватара пользователя
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

вот еще проектик
http://startcd.narod.ru/clock/clock.html
часы термометр ATmega8 WinAVR Proteus
Вымогатель припоя
Аватара пользователя
Сообщения: 615
Зарегистрирован: Сб фев 24, 2007 06:26:18
Откуда: г.Нижний Тагил

Сообщение Алексей П »

А как бы переделать этот проект под LCD?
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Как-как..
Исходник же есть? Есть... Даже на С, что гораздо проще.
Берем да переделываем.
В том же CVAVR есть встроенные библиотеки для LCD, так что все условия есть.. :)
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Открыл глаза
Сообщения: 64
Зарегистрирован: Пт дек 01, 2006 20:32:23
Откуда: Запорожье

Сообщение Dmitro »

Народ, может я ленивый и плохо искал, но вот не нашел, какой алгоритм если у меня два датчика на одной линии сидят, тут Skip ROM не покатит, как МК должен организовать запрос промежуточного ОЗУ, чтобы получить серийники каждго датчика, что-бы потом знать к кому конкретно обращаться, (так как возможно датчики будут меняться, то вариант с заранее известным номером устройства -не катит).
Контактная информация:
Прорезались зубы
Сообщения: 247
Зарегистрирован: Сб дек 15, 2007 23:00:54
Откуда: Moscow

Сообщение 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
Последний раз редактировалось TechMike Вс фев 27, 2011 12:32:56, всего редактировалось 1 раз.
Контактная информация:
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

здравствуйте! с 18b20 работал ,а вот каие команды посылать на ds1821 никак не пойму.
подскажите пожалуйсто как работать с ds1821 .В нашем городе вообще такая глухомань,можно только детали для телевизора найти,ито не факт :)
пишу на СИ зараннее спасибо
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

здравствуйте! с 18b20 работал ,а вот каие команды посылать на ds1821 никак не пойму.
... то же самое, но чуть проще :) . После сброса шлете - 0x0C, 0x01 ... разрешение одиночного преобразования. Потом - сброс и 0xАА .. чтение температуры
Опытный кот
Сообщения: 768
Зарегистрирован: Сб ноя 08, 2008 18:32:36

Сообщение vovik15 »

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

Вернуться в «Цифровая техника»