Оглавление:

USB-термометр для дома / улицы (или «Мое первое USB-устройство»): 4 шага (с изображениями)
USB-термометр для дома / улицы (или «Мое первое USB-устройство»): 4 шага (с изображениями)

Видео: USB-термометр для дома / улицы (или «Мое первое USB-устройство»): 4 шага (с изображениями)

Видео: USB-термометр для дома / улицы (или «Мое первое USB-устройство»): 4 шага (с изображениями)
Видео: Только не говори никому.. Как легко можно восстановить жидкокристаллический экран.. 2024, Ноябрь
Anonim
USB-термометр для дома / улицы (или «Мое первое USB-устройство»)
USB-термометр для дома / улицы (или «Мое первое USB-устройство»)

Это простой дизайн, демонстрирующий периферийное устройство USB на PIC 18F. В сети есть множество примеров 40-контактных микросхем 18F4550, эта конструкция демонстрирует меньшую 28-контактную версию 18F2550. На печатной плате используются детали для поверхностного монтажа, но все компоненты доступны в версиях со сквозным отверстием. Я использую детали для поверхностного монтажа, потому что быстрее сделать плату без сверления отверстий. Конечным результатом является небольшое периферийное USB-устройство, которое измеряет температуру в помещении / на улице. Данные доступны для ПК через виртуальный последовательный порт. В примере используются датчики температуры, но могут быть добавлены другие аналоговые датчики. PS См. Живой график данных с моего регистратора здесь: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = график

Шаг 1. Обзор дизайна

Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна
Обзор дизайна

Обязательные компоненты PIC

Это периферийное USB-устройство основано на 28-контактном PIC 18F2550. В этом чипе есть все необходимое для полноценного USB-интерфейса. Конденсатор 0,1 мкФ между питанием и землей отделяет PIC от источника питания. Кристалл 20 МГц (используется для генерации внутренних часов 48 МГц) и два конденсатора 27 пФ. Резистор 10 кОм от питания к выводу MCLR. Я добавил диод, эквивалентный 1n4148, между резистором и питанием, чтобы напряжение 13 + В, подаваемое на MCLR во время программирования, не повредило другие компоненты на печатной плате. Заголовок ICSP (5 контактов) используется для программирования и отладки устройства. Требуемые USB-устройства. Гнездо USB типа «B». Для внутреннего стабилизатора напряжения USB требуется емкость 220nf-440nf. Я без проблем использую два конденсатора 0,1 мкФ (такие же, как для развязки). Светодиод с токоограничивающим резистором 330 Ом используется для отображения состояния USB-подключения. Необходимые датчики В качестве датчика температуры в помещении я использовал датчик температуры на микросхеме TC1047A. Он физически припаян к плате - из-за этого он нагревается на несколько градусов выше комнатной температуры. Разъем используется для подключения датчика температуры наружного воздуха (версия TO-92 TC1047a). Дополнительный конденсатор 0,1 мкФ помогает отделить длинный провод от остальной части платы. Уровни напряжения USB недостаточно согласованы для точного измерения и вычисления температуры с помощью аналоговых датчиков. Используется внешний источник опорного напряжения (MCP1525, 2,5 В). Для опорного напряжения требуется конденсатор на выходе от 1 мкФ до 10 мкФ. Без этого конденсатора опорное напряжение работать не будет.

Шаг 2: Прошивка

Прошивка использует класс CDC USB для имитации последовательного порта. Устройство будет отображаться как виртуальный COM-порт на ПК. Прошивка разбита на три раздела: 1. Драйвер USB выполняет перечисление устройств на ПК и эмуляцию COM-порта. 2. Программа обслуживания поочередно считывает значения температуры и преобразует их в читаемый формат. Выполнение обеих этих операций одновременно привело к потере соединения USB-устройства с ПК (потеря времени). Преобразование значений с плавающей запятой в строку в цикле обслуживания после преобразования устранило проблему подключения. * 3. Наконец, основная процедура принимает байты, отправленные с ПК, и возвращает запрошенные измерения. Множественные меры разделяются запятой, строки заканчиваются нулевым символом (шестнадцатеричный 0x00) Демонстрационная прошивка принимает следующие команды: шестнадцатеричное значение Возвращает 0x00 Температура в помещении (встроенный датчик) 0x01 Температура наружного воздуха (внешний заголовок) 0x02 Обе температуры (запятая отдельно) Температура рассчитывается на основе опорного напряжения 2,5 В, смещения и наклона Microchip TC1047A. Другие датчики температуры могут иметь другие характеристики. Техническое описание TC1047A доступно здесь: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Прошивка написана в MPLAB с демонстрационным компилятором PIC C18. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Фактическая прошивка USB предоставляется Microchip. Исходная среда доступна здесь: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = en021631 Для редактирования прошивки: извлеките всю структуру каталогов исходного кода в корневой каталог (c: / MCHPFSUSB). Затем вы можете загрузить файл рабочей области в MPLAB. * Подпрограмма с плавающей точкой в строку - это ресурсоемкая процедура. Чтобы обойти проблему с подключением, служебная подпрограмма USB вызывается в различных точках подпрограммы float2string. Лучше всего это исправить, обслуживая периферийное устройство USB по прерыванию. Я использовал хак, чтобы прошивка оставалась максимально приближенной к эталонной версии.

Шаг 3: Тестирование устройства

Тестирование устройства
Тестирование устройства
Тестирование устройства
Тестирование устройства
Тестирование устройства
Тестирование устройства

Инструкции для Windows, но устройство может быть подключено ко всему, что имеет драйверы эмуляции последовательного порта CDC.

Запрограммируйте устройство прошивкой. Все биты конфигурации должны быть правильно установлены в прошивке. Подключите устройство к USB-порту. Windows обнаружит это и предложит выбрать драйвер. ОБЯЗАТЕЛЬНО НАЖМИТЕ «ПРОСМОТР ПОЛЬЗОВАТЕЛЯ». Перейдите к расположению файла.inf, включенного в архив проекта (driver-win2k_winxp). Windows будет использовать этот файл для установки устройства. * Примечание о драйвере CDC - драйвер эмуляции последовательного порта CDC входит в состав Windows. Файл.inf (предоставленный Microchip) просто сообщает Windows о необходимости подключения этих драйверов к устройству. Чтобы узнать, какой COM-порт назначен устройству, выполните следующие действия: Перейдите в панель управления (пуск-> настройки-> панель управления). Дважды щелкните «система». Щелкните вкладку «Оборудование». Нажмите «Диспетчер устройств». Нажмите «+» рядом с портами. Отображается список COM-портов в системе. Я видел, что устройство отображается как COM 3 и 4, но это зависит от системы. Если не очевидно, какой порт новый, попробуйте следующее: отключите устройство от порта USB. Один из портов исчезнет. Это номер COM-порта устройства. Подключите устройство снова, порт снова появится. Небольшое приложение VB (исходный код включен) можно использовать для тестирования устройства. Введите команду для отправки, нажмите «Старт». Ответ будет показан в окне.

Шаг 4: Что еще он может сделать?

Что еще он может сделать?
Что еще он может сделать?

Эта демонстрационная плата является хорошей отправной точкой для небольшой домашней метеостанции: добавьте датчик влажности HIH3160 или замените аналоговый датчик температуры высокоточным последовательным датчиком температуры и влажности Sensiron HT74. Добавьте датчик давления Freescale MPX (a) 4115 к измерить атмосферное давление. Хотите опубликовать эти данные в Интернете? Включить его на свой веб-сайт, просмотреть в Google Earth или получать обновления в своем RSS-канале? См. Инструкции по интеграции этого устройства с веб-сервером SyndicIT.com:

Рекомендуемые: