Реферат: Разработка микропроцессорной системы климат-контроля
33h - чтение ROM (ReadROM) - команда инициализирует термодатчик для генерации в линию идентификационного номера. Эту команду нельзя посылать, если к одной линии связи подключено несколько термодатчиков. Прежде чем подключить несколько датчиков на одну линию, необходимо для каждого датчика определить его личный номер с использованием данной команды.
55h - идентификация ROM (MatchROM) - команда выдается перед 64-битным идентификационным номеромподтверждает обращение именно к этому термодатчику. Все последующие команды будут восприниматься только одним датчиком до команды обнуления линии.
CCh - пропуск ROM (SkipROM) - команда может использоваться, когда необходимо обратиться ко всем датчикам, расположенным на одной линии, или когда к линии подключен только один датчик. Общей для многих датчиков может быть команда начала преобразования температуры. При обращении к одному термодатчику команда позволяет упростить программу за счет того, что пропускается громоздкая подпрограмма идентификации кода и вычисления кода четности.
ECh - поиск аварии (AlarmSearch) - действие команды аналогично команде «Поиск ROM», но отвечает на нее термодатчик, если измеренная температура выходит за пределы предварительных установок по максимуму и минимуму.
44h - начало преобразования температуры (Convert Т) - команда разрешает преобразование температуры и запись результата в блокнот. От подачи этой команды до считывания необходимо выдержать паузу, необходимую для преобразования с установленной точностью.
Beh - чтение блокнота (ReadScratchpad) - в блокноте содержится 8 байт информации (рисунок 2.6). Если нужна информация только о температуре, то считывается 9 бит. Термодатчик будет выдавать информацию до тех пор, пока управляющий микроконтроллер не выдаст в линию нулевой импульс.
Рисунок 2.6 – Карта памяти термодатчика DS 1820
4Eh - запись в блокнот (WriteScratchpad) - после этой команды управляющий микроконтроллер должен послать два байта для записи в блокнот максимальной ТН и минимальной TL температуры ограничения по максимуму и минимуму. Все 16 бит необходимо передавать непрерывно без обнуления линии.
48Н - копирование блокнота (CopyScratchpad) - после этой команды минимальная (TL) и максимальная (ТН) установленные значения температур переписываются в энергонезависимую память (EEPROM). После отключения напряжения питания записанные значения! сохранятся в памяти.
B8h - восстановление (Recall В2 ) - команда необходима для копирования значений температуры из. EEPROM в рабочую зону блокнота. При выполнении восстановления термодатчик выдает в линию низкий уровень, а после окончания записи — высокий.
B4h - питание от линии (ReadPowerSupply) - после этой команды термодатчик переходит к питанию от линии. В составе термодатчика имеется конденсатор, который заряжается от высокого уровня линии.
Перед опросом термодатчика управляющим микроконтроллером необходимо выдержать время, необходимое для заряда конденсатора.
Микроконтроллерный термодатчик тактируется внутренним генератором частотой 4 МГц и рассчитан на работу с управляющим микроконтроллером, который должен тактироваться такой же частотой.
Термодатчик работает на пониженных частотах из-за большого разброса длительности импульсов принятого в интерфейсе формата обмена данными между термодатчиком и управляющим микроконтроллером.
Передача данных по однопроводной шине выполняется импульсами нулевого уровня, но различной длительности. Импульс воспринимается как логическая 1, если его длительность не превышает 15 мкс (рисунок 2.7). Если длительность импульса больше 15 мкс, то он воспринимается как логический 0.
Рисунок 2.7 – Импульсы логического 0 и 1
Длительность одного бита информации принята равной 60 мкс. Отсюда и разброс возможных длительностей импульсов: лог. 0 — I...15 мкс, лог. 1 — 15...60 мкс. Для того чтобы термодатчик подготовить к приему информации, управляющий микроконтроллер должен послать в линию импульс обнуления (Reset) (рисунок 2.8).
Рисунок 2.8 – Импульс обнуления термодатчика
Импульс обнуления должен иметь длительность 480...960 мкс. В ответ на обнуление линии термодатчик посылает импульс присутствия (Presence). Если в устройстве не предусмотрено отключение датчика, то импульс присутствия для упрощения программы можно не проверять, а заполнить это время (около 100 мкс) паузой. Длительность импульса Presenceможет быть в пределах 60...240 мкс.
Если к одной линии подключено несколько термодатчиков, то проверка импульса присутствия обязательна. Перед приемом каждого бита информации с датчика, микроконтроллер управления PICдолжен послать короткий импульс готовности (запроса) длительностью 1...3 мкс.
Обмен данными и командами начинается с младшего бита. Формат регистров термодатчика показан на рисунке 2.9.
Младший регистр температуры LS
26 | 25 | 24 | 23 | 22 | 21 | 20 | 2-1 |
Старший регистр температуры MS (знаковый)
S | S | S | S | S | S | S | S |
Регистры установки ограничения температуры TH , TL
S | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
Рисунок 2.9 – Формат регистров термодатчика DS 1820
Младший регистр температуры (LS) несет информацию о температуре. В нулевой бит записана информация о десятых долях температуры. Если нулевой бит единичный, то десятые доли равны 0,5°С.
Старший регистр температуры (MS) содержит информацию о знаке температуры, Дели значения регистра нулевые, то знак температуры положительный, и наоборот.
Поскольку все биты регистра MS одинаковы, то достаточно считать только младший бит, т.е. длина слова от термодатчика составляет 9 бит = 8 бит (температура LS) + 1 бит знаковый (MS).
Регистры установки ограничения температуры Тн , TL несут информацию только о целых значениях температуры. В седьмом бите записывают информацию знаке температуры. При отрицательной температуре в седьмой бит необходимо записать единицу.
Таблица 2.5 – Значения кодов термодатчика при различной температуре
Температура | Формируемый двоичный код | Шестнадцатиричный код |
+85,0о С +25,0o C +0,5o C 0o C -0,5o C -25,0o C -55,0o C | 0000 0000 1010 1010 0000 0000 0011 0010 0000 0000 0000 0001 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1100 1110 1111 1111 1001 0010 | 00ААh 0032h 0001h 0000h FFFFh FFCEh FF92h |
В таблице 2.5 приведен пример принимаемых кодов при различных температурах. Для того чтобы получить значение температуры при минусовых температурах, необходимо принятую информацию перевести в дополнительный код. Для перевода в дополнительный код необходимо принятый код инвертировать и прибавить единицу. Например, для значения 1111 1111 получим 0000 0001, т. е. 0.5°С, но со знаком минус.
Последовательность действий управляющего микроконтроллера PIC при считывании температуры с одного термодатчика DS 1820:
1) послать сигнал обнуления линии (480…960 мкс);
2) принять импульс присутствия или заполнить паузой (60…240 мкс);
3) послать команду пропуска идентификации 0хССh;
4) послать команду начала преобразования 0х44h;