Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая 2013.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
250.07 Кб
Скачать

2.3 Синхронизация

Почти сразу после присоединения к считывающему устройству (через несколько микросекунд) slave-устройство iButton выдаёт на линию импульс низкого уровня, чтобы сказать устройству master, что оно на линии и ожидаёт получения команды. Этот сигнал называется presence pulse (импульс присутствия, далее просто presence). Master может также давать запрос на iButton с целью получения presence, путём выдачи на iButton специального импульса, называемого импульсом сброса (reset pulse, далее просто reset).

Если iButton принял reset или если он был отсоединён от считывающего устройства, он будет анализировать линию данных, и как только линия снова достигнет высокого уровня, iButton сгенерирует presence. Полная последовательность импульсов reset и presence показана на рис. 2-6.

Рис. 2-6: Импульсы RESET и PRESENCE.

2.4 Передача данных

После выдачи presence iButton ожидает получения команды. Любая команда записывается в iButton с помощью последовательности тайм-слотов, записывающих в iButton биты 1 и 0. Такая последовательность создаёт полный байт команды.

Передача данных в обратном направлении (чтение iButton) использует те же самые временнЫе правила для представления 0 или 1. Поскольку iButton разработано как slave-устройство, то оно оставляет устройству master определять начало каждого тайм-слота. Чтобы произвести чтение iButton, master для чтения одного бита данных просто генерирует тайм-слот записи лог. 1 (именно тайм-слот записи, а не чтения). Если бит, который посылает iButton, равен 1, то iButton просто ожидает появления следующего тайм-слота, пропуская текущий. При этом с линии данных master считывает 1. Если бит, который посылает iButton, равен 0, то iButton удерживает линию данных в состоянии лог. 0 определённое время, и master считывает с линии данных 0. Пример полной последовательности выполнения команды показан на рис. 2-7. Активность устройства master нарисована толстыми линиями. Серой линией показан ответ iButton. Тонкая линия показывает, что не активно ни одно из устройств. Линия, через которую происходит обмен данными, подключена к положительному полюсу источника питания (обычно +5 в) через специальный нагрузочный резистор.

Рис. 1-8: Пример чтения ROM (одна из разновидностей iButton, например - носитель уникального кода DS1990A. Он и используется в качестве ключа для электронного замка).

  1. Контактный термометр ds1920

Из всех видов измерений в повседневной жизни мы чаще всего сталкиваемся с измерением температуры: при плохом самочувствии хватаемся за градусник, перед выходом на улицу смотрим на термометр за окном и т.д. Но это лишь верхушка айсберга: в медицине, промышленности, транспорте, сельском хозяйстве не обойтись без измерения температуры Такие задачи решаются при помощи электронных приборов, среди которых важное место занимают цифровые термометры (лучше в металлическом корпусе).

DS1920 представляет собой цифровой термометр (блок-схема на рис.3-1) в корпусе МiсгоСАN, который обеспечивает измерение температуры в диапазоне от –55°С до +100°С с шагом 0,5°С и временем преобразования 0,2 с. Разрешающая способность 0,5°С и разрядность 9 бит обеспечивают высокую точность измерения, а доступ к внутренним счетчикам дает возможность увеличить разрешение с использованием интерполяции. Особо следует выделить наличие специального набора команд, который позволяет проводить одновременный опрос нескольких приборов DS1920, подключенных к одной шине. Встроенный контроллер MicroLAN обеспечивает передачу команд управления и данных по однопроводной линии. Т.к. DS1920 не имеет встроенного источника питания и использует только режим «паразитного» питания, то во время преобразования температуры или при записи данных во внутреннее ЭППЗУ требуется внешний источник питания.

В состав DS1920 входят 64-разрядное ПЗУ с уникальным идентификационным номером, датчик температуры и два энергонезависимых регистра для хранения верхнего и нижнего порогов температуры.

Считывание и запись данных осуществляются через блокнотную память объёмом 8 байт с последовательным доступом. Поскольку режим произвольного доступа к блокнотной памяти отсутствует, то чтение этой памяти начинается с данных последнего измерения температуры, затем читаются регистры верхнего и нижнего температурных порогов. Последними читаются два регистра, которые используются для интерполяции температурных отсчётов. Для проверки полученных данных после чтения последнего байта блокнотной памяти передаётся 8-бит контрольная сумма.

Рис. 3-1: Блок-схема термометра DS1920

DS1920 не имеет внутреннего источника питания, а использует «паразитное» питание от однопроводной шины. Однако при измерении температуры и записи данных в ЭППЗУ ток потребления микросхемы превышает 1 мА, в то время как максимальный ток, который может обеспечить ведущий шины с помощью нагрузочного резистора 1,5…5 кОм, составляет 3,3…1 мА. Для одного прибора это достаточно, но для этого не надо городить сеть. Проблема решается или подключением внешнего источника питания или питанием по сети, но заменой нагрузочного резистора на низкоомный открытый ключ, который на время преобразования температуры и записи данных в ЭППЗУ подаёт на однопроводную шину напряжение питания +5 В. ИС имеет встроенный детектор используемого режима питания. Схема подключения приведена на рис. 3-2.

Рис. 3-2: Схема подключения DS1920 к однопроводной шине

Применение внешнего источника питания ускоряет процесс преобразования температуры, т.к. от ведущего шины не требуется ожидание в течение максимально возможного времени преобразования. В этом случае все DS1920, находящиеся на шине MicroLAN, могут одновременно выполнять преобразование температуры.

После завершения преобразования полученное значение сравнивается с величинами, хранящимися в регистрах ТН и ТL. Если измеренная температура выходит за установленные пределы, устанавливается сигнальный флаг (установка производится после каждого измерения). При установленном флаге DS1920 отвечает на команду «Поиск сигнала». Это позволяет в случае объединения множества приборов в сеть быстро идентифицировать точку с отклонениями температуры от допустимых пределов и сразу считать показания соответствующего термометра. Если команда «Поиск сигнала» не применяется, то регистры ТН и ТL могут использоваться как регистры общего назначения.

Измерение температуры DS1920 выполняется с помощью встроенной схемы измерения (блок-схема – на рис. 2-3). Суть метода измерения в следующем. Подсчитывается число тактовых импульсов генератора с низким температурным коэффициентом (ГНТК), выдаваемых за период измерения, который определяется генератором с высоким температурным коэффициентом (ГВТК). Предварительная запись в счетчик соответствует – 55°С. Если содержимое счетчика достигает нуля до того, как закончится период измерения, то регистр температуры, в который также предварительно записано значение, соответствующее – 55°С, инкрементируется, т.е. измеренная температура выше – 55°С. Затем в счетчик заносится новое значение из сумматора-корректора и начинается новый отсчет. Если счетчик обнуляется до того, как закончится период измерения, то процесс повторяется.

Рис. 3-3: Cхема измерения температуры DS1920

Сумматор-корректор компенсирует нелинейность генераторов от температуры, позволяя, таким образом, проводить измерения с высоким разрешением (0,5°С). Отметим, что все вычисления выполняются непосредственно DS1920. В таблице 3-1 приведены точные соотношения между измеренной температурой и выходными данными.

Таблица 3-1.

Температура, °С

Выход (двоичный код)

Выход (шестнадцатеричный код)

+100

00000000 11001000

00C8H

+25

00000000 00110010

0032H

+0.5

00000000 00000001

0001H

0

00000000 00000000

0000H

-0.5

11111111 11111111

FFFFH

-25

11111111 11001110

FFCEH

-100

11111111 10010010

FF92H

Как уже отмечалось, в DS1920 реализована возможность измерения температуры с более высоким разрешением. Для этого считывается значение температуры из регистра температуры и из него отбрасывается младший бит 0,5°С. Полученное значение обозначается TEMP_READ. Затем считывается оставшееся в счетчике значение, которое остается после окончания периода измерения и обозначается (COUNT_REMAIN). Последней величиной, необходимой для расчета, является число отсчетов на градус при данной температуре (COUNT_PER_C). Реальное значение температуры определяется по формуле:

T = TEMP_READ – 0,25 + (COUNT_PER_C – COUNT_REMAIN)/COUNT_PER_C

Память DS1920 является важнейшей составляющей, поэтому два слова о ней. Сюда входит (таблица 3-2): блокнотная память и два байта ЭППЗУ (регистры верхнего TH и нижнего TL температурных порогов). Блокнотная память организована как 8 байт памяти с последовательным доступом. Два первых байта – измеренная температура, третий и четвертый – временные копии TH и TL, обновляемые при каждом включении. Два следующих байта не используются. Седьмой и восьмой байты являются регистрами счетчика и используются для получения значения температуры с более высоким разрешением. Последний байт – байт контрольной суммы (проверка предыдущих восьми байтов). Через блокнотную память выполняется чтение и запись данных в микросхему. Поскольку режим произвольного доступа к блокнотной памяти отсутствует, то чтение этой памяти начинается с данных последнего измерения температуры, затем читаются регистры верхнего и нижнего температурных порогов и последними читаются два регистра, которые используются для интерполяции температурных отсчётов. Для проверки полученных данных после чтения последнего байта блокнотной памяти передаётся 8-разрядная контрольная сумма.

Мы уже говорили, что одной из особенностей термометров семейства DS192х является возможность работы в однопроводной сети Micro LAN на шине 1-Wire. Напомню, что однопроводная шина 1-Wire представляет собой систему с одним ведущим и многочисленными ведомыми. В качестве ведущего может использоваться любой промышленный микроконтроллер, например, 8051 с тактовой частотой 1,8 МГц, или персональный компьютер с универсальным асинхронным портом UART и скоростью 115,2 Кбит/с. Micro LAN имеет стандартные КМОП/ТТЛ логические уровни. Напряжение ниже 0,8 В соответствует логическому нулю («0»), а напряжение выше 2,2 В является логической единицей («1»). Диапазон рабочих напряжений составляет 2,8-6 В. Ведущий и ведомые сконфигурированы как передатчики, что позволяет передавать данные в любом направлении, но в данный момент – только в одном. Иными словами, передача данных является полудуплексной и асинхронной.

Таблица 3-2.

Блокнотная память

Байт

ЭППЗУ

Измеренная температура (старший байт)

0

температура (младший байт)

1

Копия TH

2

Верхний TH температурный порог

Копия TL

3

Нижний TL температурный порог

Резерв

4

Резерв

5

Счетчик COUNT REMAIN

6

Счетчик COUNT PER °С

7

Байт контрольной суммы

8

Подключение к шине 1-Wire допустимо для приборов с тремя состояниями или с открытым стоком. В DS1920 реализован выход с открытым стоком (эквивалентная схема на рис. 3-4). Протокол обмена между термометром и шиной состоит из 4 шагов:

  • инициализация;

  • команды работы с ПЗУ;

  • команды управления и работы с памятью;

  • передача/данные.

Рис. 3-4: Выход с открытым стоком DS1920

Любая передача на однопроводной шине начинается с инициализации, которая состоит из импульса сброса (формируется ведущим), после которого все ведомые генерируют импульс присутствия, в том числе и DS1920. После определения импульса присутствия ведущий шины выполняет одну из команд работы с ПЗУ (каждая по 8 бит). Чтение ПЗУ (33Н) позволяет ведущему считать 8-разрядный групповой код, 48-разрядный уникальный серийный номер и байт контрольной суммы. Эта команда может использоваться, если к шине подключен только один термометр DS1920. Совпадение ПЗУ (55Н) применяется для адресации определенного прибора среди нескольких, подключенных на шину. Пропуск ПЗУ (ССН) предназначен для одновременной связи со всеми приборами на шине. В нашем случае эта команда используется для преобразования температуры всеми термометрами DS1920 одновременно.

Поиск ПЗУ (F0H) обеспечивает работу в условиях постоянно изменяющейся структуры сети. По этой команде можно получить серийный номер одного прибора на шине с одновременной его адресацией. Условный поиск ПЗУ (ЕСН). Термометр отвечает на эту команду только в том случае, если в регистры TH и TL занесены значения верхнего и нижнего температурных порогов, а последнее измерение выходит за эти пределы. Команды управления и работы с памятью также имеют разрядность 8 бит. Запись в блокнотную память (4ЕН) термометра DS1920 выполняется, начиная с адреса 2, т.е. два записанных байта будут храниться в памяти по адресу 2 и 3. Запись может быть прервана в любой момент импульсом сброса. Однако, если импульс сброса появился до того, как оба байта были полностью переданы, то их содержимое будет не определено.

Чтение блокнотной памяти (ВЕН) позволяет прочитать все содержимое этой памяти. Копирование блокнотной памяти (48Н). По данной команде содержимое блокнотной памяти копируется в ЭППЗУ DS1920, что сохраняет значение измеренной температуры в энергонезависимой памяти. Преобразование температуры (44Н). Эта команда запускает процесс преобразования температуры, при этом никакие данные не передаются. Повтор (В8Н) переписывает значение измеренной температуры из ЭППЗУ в блокнотную память. Эта команда выполняется автоматически при подключении к DS1920 источника питания. На передаче данных мы останавливаться не будем, поскольку это уже достаточно хорошо описано.