Разработка цифрового термометра
Чтобы начать температурное измерение и преобразование, ведущий должен подать команду начала конвертирования температуры. После конвертирования, полученные данные запоминаются в 2-байтовом регистре температуры в оперативной памяти, и DS18B20 возвращается к неактивному состоянию. Если DS18B20 включен с внешним питанием, ведущий может контролировать конвертирование температуры (после команды… Читать ещё >
Разработка цифрового термометра (реферат, курсовая, диплом, контрольная)
НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра «ВСТ»
Курсовой проект
по дисциплине «МПС»
" Разработка цифрового термометра"
Выполнил: Елькин Александр, студент гр. 09-В1
Проверил: Киселев Ю.Н.
Нижний Новгород 2012
- Введение
- 1. Выбор и обоснование основных технических решений
- 1.1 Техническое задание
- 1.1.1 Источники информации
- 1.1.2 Приемники информации
- 1.2 Возможные варианты решения поставленной задачи, обоснования выбора
- 1.2.1 Выбор способа измерения температуры
- 1.2.2 Выбор устройства отображения информации
- 1.2.3 Выбор микроконтроллера
- 2. Структурная схема
- 2.1 Описание принципа действия и общий алгоритм работы
- 2.2 Блок-схема работы микроконтроллера
- 3. Разработка функциональной и принципиальной схем устройства
- 3.1 Принципиальная схема устройства
- 3.2 Функциональная схема устройства
- 4. Разработка алгоритмов
- 4.1 Алгоритм инициализации датчика
- 4.2 Алгоритм отправки байта данных датчику
- 4.3 Алгоритм получения одного байта от датчика
- 4.4 Структура программы
- 4.5 Код программы
- 5. Технология отладки программы
- 6. Моделирование
- Список литературы
Измерение, контроль и регулирование температуры является одной из неотъемлемых и важных задач в современном мире. Такая задача стоит и перед промышленностью, и перед сельским хозяйством, и в быту и даже в области высоких технологий. В разных случаях задача регулирования температуры имеет свою индивидуальную цель и метод решения.
Главное преимущество использования электронного термометра является возможность контролировать температуру на расстоянии. Если нужно контролировать температуру, например, в подвале дома, на чердаке или в любом подсобном помещении, обычный ртутный (спиртовой) или механический термометр вряд ли подойдет, т.к. будет проблематично постоянно выходить из комнаты, только чтобы взглянуть на шкалу термометра. Более пригоден в подобных случаях электронный термометр, позволяющий измерять температуру дистанционно — на расстояниях в сотни метров. Причем в контролируемом помещении будет располагаться лишь миниатюрный термочувствительный датчик, а в комнате на видном месте — ЖКИ, отображающий текущую температуру.
1. Выбор и обоснование основных технических решений
1.1 Техническое задание
Разработать аппаратные и программные средства для реализации цифрового термометра. Термометр должен соответствовать требованиям:
Ш сфера применения: измерение температуры воздуха (или воды при доработке защиты датчика от влажности);
Ш диапазон измеряемой температуры: −50… +99? С;
Ш погрешность измерений: ±0.5? С (в диапазоне от -10 до +85? С);
Ш напряжение питания: 3 — 5 В;
Ш использование доступных, энергоэкономичных, дешевых элементов для возможности последующей реализации разработанного устройства.
1.1.1 Источники информации
Основным источником информации в данной конструкции является термодатчик. Он должен в зависимости от величины аналогового сигнала (температуры) формировать определенный цифровой код, который должен быть доступен для считывания микроконтроллером.
Еще один источник информации — кнопка старта/останова измерений.
1.1.2 Приемники информации
Для случая получения информации от термодатчика приемником информации является контроллер, который обрабатывает входные данные и периодически отправляет их на цифровой индикатор.
А для случая считывания данных с цифрового индикатора приемником информации можно считать пользователя, который получает данные температуры и обрабатывает их, принимая какие-либо решения.
1.2 Возможные варианты решения поставленной задачи, обоснования выбора
1.2.1 Выбор способа измерения температуры
В ходе проектирования данного устройства было рассмотрено несколько способов измерения температуры. Первый основан на использовании терморезистора или термопары, протекающий ток которых пропорционален величине температуры. Для оцифровки данного сигнала нужен дополнительный аналогово-цифровой преобразователь. Полученный результат нужно еще масштабировать в соответствии со шкалой Цельсия. Наибольшая сложность в том, что зависимость измеренной величины от температуры могла бы получиться не прямой. Вряд ли данный способ дал хорошую точность. Еще и нужно реализовать устройство передачи данных от АЦП микроконтроллеру. Так как большая часть выходов портов занята под цифровой индикатор, то параллельный способ передачи данных возможен только при введении дополнительных адресных селекторов или при последовательной передаче данных, что значительно усложняет устройство. Еще и невозможно было бы подключать несколько датчиков к одной линии, что ограничивает возможности усовершенствования прибора.
В термометре было решено использовать датчик температуры DS18B20.
Данное устройство хорошо согласуются с микроконтроллером. Термодатчик DS1820 имеет следующие технические характеристики:
Ш индивидуальный 64-битный идентификационный номер;
Ш напряжение питания от +3 до +5,5 В;
Ш измеряемая температура от -55 до +125°С;
Ш погрешность измерения температуры в диапазоне −10…+85°С не более 0,5°С;
Ш в остальном диапазоне температур погрешность измерения не превышает 2 °C;
Ш информация о температуре выдается 9-битным кодом;
Ш максимальное время преобразования температуры в код 750 мс;
Ш возможность питания от высокого уровня шины данных;
Ш термодатчики не требуют индивидуальной настройки при замене. Термодатчик типа DS18B20 отличается от DS1820 способностью измерять температуру с четырьмя уровнями погрешности — 0,5; 0,25; 0,0625°С. При этом максимальное время измерения для каждого уровня составляет соответственно 93,75; 187,5; 375; 750 мс. Необходимая погрешность измерения может быть задана при инициализации термодатчика.
Термодатчики выпускают в двух типах корпусов: ТО-92 и SOIC.
DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Это также послужило ключевой особенностью в пользу выбора датчика, т. к. позволяет впоследствии модернизировать устройство путем добавления новых датчиков.
Другая особенность DS18B20 — способность работать без внешнего питания. Эта возможность предоставляется через подтягивающий резистор. Высокий сигнал шины заряжает внутренний конденсатор (CPP), который питает прибор, когда на шине низкий уровень. Этот метод носит название «Паразитное питание». При этом максимальная измеряемая температура составляет + 100 °C. Для расширения диапазона температур до + 125 °C необходимо использовать внешнее питание.
Основные функциональные возможности DS18B20 — его температурный преобразователь.
Чтобы начать температурное измерение и преобразование, ведущий должен подать команду начала конвертирования температуры [0×44]. После конвертирования, полученные данные запоминаются в 2-байтовом регистре температуры в оперативной памяти, и DS18B20 возвращается к неактивному состоянию. Если DS18B20 включен с внешним питанием, ведущий может контролировать конвертирование температуры (после команды [0×44]) по состоянию шины. DS18B20 будет формировать (ответ на слот времени чтения от устройства управления) логический «0» когда происходит температурное преобразование. И логическую «1», когда конвертирование выполнено. Если DS18B20 включен с паразитным питанием, эта технология уведомления не может быть использована, так как шину нужно подать высокий уровень (напряжение питания) в течение всего времени температурного преобразования. В этом случае устройство управления должно самостоятельно контролировать время конвертирования.
Выходные температурные данные DS18B20 калиброваны в градусах Цельсия. Температурные данные запоминаются как 16-битовое число со знаком (см. рис. 2). Биты признака (S) указывают, является ли температура положительная или отрицательная: для положительных S = 0, а для отрицательных чисел S = 1. Если DS18B20 будет настроен для конвертирования 12-битной разрешения, то все биты в температурном регистре будут содержать действительные данные. Для 11-битной разрешающей способности, бит 0 неопределен. Для 10-битной разрешающей способности, биты 1 и 0 неопределенны, и для 9 битной разрешающей способности 2, 1 и 0 неопределенны.
цифровой термометр преобразователь индикатор
1.2.2 Выбор устройства отображения информации
Были рассмотрены возможности использования LCD дисплея без подсветки и семисегментного индикатора. Основной плюс LCD — простой вывод информации без дополнительных преобразований кодов и небольшое энергопотребление, что позволило бы использовать в качестве источника питания устройства гальванические элементы.
Все же было решено использовать блок семисегментных индикаторов, т.к. он более доступен и имеет подсветку, что позволяет использовать устройство в темное время суток. Есть широкий выбор таких индикаторов, можно использовать практически любые. Кроме того, можно самостоятельно изготовить индикаторы из цепочек светодиодов. В стационарном режиме работы термометра это позволит сконструировать индикаторы больших размеров. При определенном навыке изготовления таких устройств можно продавать их за немалые деньги.
1.2.3 Выбор микроконтроллера
В качестве устройства управления должен быть выбран микроконтроллер, обладающий хорошими техническими характеристиками, иметь, а также иметь относительно невысокую стоимость.
Также необходимо определить количество необходимых для работы портов, которые должен иметь микроконтроллер.
Причины выбора микроконтроллера PIC16f628A
Характеристика RISC ядра Ш Тактовая частота от DC до 20МГц Ш Поддержка прерываний Ш 8-уровневый аппаратный стек Ш Прямая, косвенная и относительная адресация Ш 35 однословных команд Ш Все команды выполняются за один машинный цикл, кроме команд ветвления и условия с истинным результатом Особенности микроконтроллеров Ш Внешний и внутренний режимы тактового генератора Ш Режим энергосбережения SLEEP
Ш Программируемые подтягивающие резисторы на входах PORTB
Ш Защита кода программы Ш Сброс по снижению напряжения питания BOR
Ш Сброс по включению питания POR
Ш Широкий диапазон напряжения питания от 2.0 В до 5.5 В Ш Промышленный и расширенный температурный диапазон Периферия
16 каналов ввода/вывода с индивидуальными битами направления Сильноточные схемы портов сток/исток, допускающих непосредственное подключение светодиодов.
Вывод
16 каналов ввода/вывода вполне достаточно для подключения датчика и индикаторов. Еще и остаются свободные каналы, например, для добавления новых линий датчиков и кнопок при модернизации устройства.
Кроме того, данный микроконтроллер поддерживает интерфейс работы с устройствами 1-Wire, что дает полную совместимость его с выбранным мной датчиком DS18B20. Подтягивающие выходные транзисторы микроконтроллера позволяют использовать функцию «паразитного» питания датчика.
Данный микроконтроллер имеет довольно небольшую цену, в сравнении с другими подобными.
2. Структурная схема
Назначение микроконтроллера PIC16f628A
Осуществляет управление всей системой, а именно: периодически опрашивает датчик, обрабатывает полученные данные, раскладывает данные в вид, удобный для вывода на семисегментные индикаторы.
Назначение термодатчика DS18B20
Термодатчик измеряет аналоговую величину температуры, преобразует ее в цифровой вид по запросу микроконтроллера, сохраняет полученное значение в своей памяти, выдает микроконтроллеру сигнал завершения температурного преобразования. Назначение блока семисегментных индикаторов. Отображает информацию о температуре в цифровом виде.
Назначение блока клавиши Старт/Останов Запускает, останавливает процесс опроса датчика и вывода информации на индикаторы.
2.1 Описание принципа действия и общий алгоритм работы
После подачи питания на устройство, микроконтроллер производит настройку портов, общее конфигурирование, например, отключение компаратора. После этого запускается основной цикл работы микроконтроллера. На этом этапе микроконтроллер дожидается нажатия клавиши «Старт/Останов» для начала измерений. Вначале инициализируется термодатчик. Так как на линии только один датчик, отправляется команда интерфейса 1-Wire выбора всех датчиков. Затем отправляется команда начала температурного преобразования. Так как для температурного преобразования нужно определенное время, микроконтроллер ожидает от датчика сигнала завершения температурного преобразования. Для этого он в цикле опрашивает состояние порта датчика, настроенного на ввод данных. Настройка точности преобразования не производится, т.к. для данной работы достаточно точности 0.5 градуса Цельсия. После получения сигнала завершения температурного преобразования, датчик вновь инициализируется и считывается содержимое его памяти. Считанные данные преобразуются в вид, удобный для вывода на индикатор, определяется знак числа. Если оно отрицательное, то происходит преобразования из дополнительного кода в прямой код. Затем происходит вывод данных на семисегментный индикатор.
Опрашивается порт, к которому подключена клавиша управления. Если клавиша нажата, микроконтроллер переходит в цикл ожидания.
2.2 Блок-схема работы микроконтроллера
3. Разработка функциональной и принципиальной схем устройства
3.1 Принципиальная схема устройства
Данная принципиальная электрическая схема — графическое изображение с помощью условных графических и буквенно-цифровых обозначений (пиктограмм) связей между элементами проектируемого устройства.
На ней видно как между собой связанны составные элементы системы: микроконтроллер, блок семисегментных индикаторов, термодатчиков.
В отличие от разводки печатной платы эта схема не показывает взаимного (физического) расположения элементов, эта лишь указывает на то, какие элементы с какими соединяются.
3.2 Функциональная схема устройства
Устройство управляется микроконтроллером PIC16f628. Для связи с семисегментным индикатором, используются выводы RA2, RA3, RA6 порта PORTA для передачи номера позиции отображаемого символа и выводы RB0-RB6 порта PORTB для включения конкретного сегмента.
Для связи с датчиком используется вывод RA1 порта PORTA.
Клавиша «Старт/Останов» подключена к порту RA7
4. Разработка алгоритмов
4.1 Алгоритм инициализации датчика
Для инициализации устройства интерфейса 1-Wire необходимо подать на устройство единичный импульс, «провалить» шину примерно на 500 мкс, затем возобновить единичный сигнал и подождать еще 500 мкс.
Код процедуры инициализации датчика:
4.2 Алгоритм отправки байта данных датчику
Код процедуры отправки байта датчику Для отправки единицы подается кратковременный низкий уровень, затем высокий уровень на 60 микросекунд.
Для отправки нуля подается сначала низкий уровень на 60 микросекунд, затем кратковременный высокий импульс.
4.3 Алгоритм получения одного байта от датчика
Для получения очередного разряда от датчика подается низкий уровень на датчик, производится небольшая задержка, затем опрашивается порт. Датчик поддерживает нулевой потенциал на шине, если разряд равен нулю, на протяжении 60 мкс.
Код функции для получения байта от датчика:
4.4 Структура программы
5. Технология отладки программы
В качестве основной среды для написания кода программы и его отладки я использовал приложение MPLAB IDE, являющимся стандартным средством разработки кода для микроконтроллеров PIC. Так как приложение имеет только встроенный компилятор ассемблерного кода, мне пришлось использовать внешний компилятор кода на языке Си.
Я использовал компилятор кода на языке Си HI-TECH C Compiler.
Для синхронизации приложения написания кода и компилятора при создании проекта в мастере проектов указал в качестве приложения компиляции HI-TECH C Compiler.
Так же в мастере была возможность выбора используемого микроконтроллера и настройки его начальной конфигурации. Например, указание частоты тактового генератора. Ниже приведен фрагмент листинга программы, полученного на этапе компиляции
6. Моделирование
Для моделирования работы цифрового термометра использовалась программа Proteus 7.7 Professional.
Использовались следующие компоненты:
Вид | Описание | |
Микроконтроллер PIC16f628A. RA0-RA7 — выводы порта PORTA RB0-RB7 — выводы порта PORTB | ||
Термодатчик DS18S20 1 — заземляющий вывод 2 — вывод на шину данных 3 — вывод основного питания | ||
Блок из четырех семисегментных индикаторов A-G — входы соответствующих сегментов DP — вход сегмента-точки 1−4 — вход позиции отображаемого символа | ||
Управляющая клавиша. При щелчке мышью по значку клавиши, контакт замыкается. При повторном щелчке — размыкается. Клавиша должна находиться в нормально-разомкнутом состоянии. Для подачи управляющего сигнала нужно замкнуть контакт и сразу же разомкнуть. | ||
Резистор 4.7 кОм. Используется для зануления порта RA7 при разомкнутой клавише управления. | ||
Подтягивающий резистор шины данных термодатчика. Нужен для установки на шине высокого уровня при отключении соответствующего порта (вернее, при переключении его на ввод). Еще этот резистор позволяет датчику работать в режиме паразитного питания. | ||
Осциллограф. Использовался для отслеживания сигналов на шине данных термодатчика. | ||
Для получения кодов отображаемых на индикаторе символов, я собрал следующую схему:
Последовательность разработки и отладки программного обеспечения
1. Создал проект в вышеописанной программе MPLAB IDE для конкретного микроконтроллера с указанием начальных параметров конфигурации, добавил в него файл с расширением «.c» — файл кода на языке Си.
2. Редактировать файл Си в MPLAB IDE оказалось неудобно. Открыл файл в Visual Studio, после внесения изменений и сохранении файла при переключении в MPLAB IDE он автоматически обновлял проект, предварительно запросив подтверждение:
3. Запускал трансляцию и компиляцию проекта. За этот этап отвечает HI-TECH C Compiler, синхронизированный с MPLAB IDE (см. пункт 6 «Технология отладки программы»).
Результаты компиляции можно посмотреть в окне «Output» .
3. В результате компиляции получается выходной файл с расширением «.hex», находящийся в корневом каталоге проекта.
В Proteus в настройках микроконтроллера необходимо прописать путь к нему. Это требуется сделать лишь один раз. В последствии можно запускать модель на выполнение сразу же после компиляции, что существенно экономит время.
4. Тестировал модель и программное обеспечение путем отслеживания уровней на входах и выходах с помощью подсветки сигналов и осциллографа Так же иногда полезно просмотреть состояние регистров и памяти выбором соответствующего пункта в контекстном меню модели микроконтроллера.
Результаты моделирования Положительные показания прибора Отрицательные показания Вид осциллограммы передачи байта данных датчику Передается байт 0xCC.
0xCC = 1 100 1100b
" Провал" шины на 60 мс соответствует логической единице.
Кратковременный провал и поддержка высокого уровня на 60 мс — нулю.
1. «PIC16F62X Однокристальные 8-разрядные FLASH CMOS микроконтроллеры компании Microchip Technology Incorporated» — перевод компании ООО «Микро-Чип», основанный на оригинальной документации микроконтроллера.
2. «Программирование на языке С для AVR и PIC микроконтроллеров» — Ю. А. Шпак.