Съдържание:

USB вътрешен/външен термометър (или „Моето първо USB устройство“): 4 стъпки (със снимки)
USB вътрешен/външен термометър (или „Моето първо USB устройство“): 4 стъпки (със снимки)

Видео: USB вътрешен/външен термометър (или „Моето първо USB устройство“): 4 стъпки (със снимки)

Видео: USB вътрешен/външен термометър (или „Моето първо USB устройство“): 4 стъпки (със снимки)
Видео: Zigbee Термостат для управления теплым водяным полом MOES BHT-006GAZB 2024, Юли
Anonim
USB вътрешен/външен термометър (или „Моето първо USB устройство“)
USB вътрешен/външен термометър (или „Моето първо USB устройство“)

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

Стъпка 1: Преглед на дизайна

Преглед на дизайна
Преглед на дизайна
Преглед на дизайна
Преглед на дизайна
Преглед на дизайна
Преглед на дизайна

Необходими PIC компоненти

Това USB периферно устройство се базира на 28 -пиновия PIC 18F2550. Този чип има всичко необходимо за пълноскоростен USB интерфейс. 0.1uf кондензатор между захранването и земята отделя PIC от захранването. 20MHz кристал (използван за генериране на 48MHz вътрешен часовник) и два 27pf кондензатора. 10K резистор от захранване към щифта MCLR. Добавих 1n4148 еквивалентен диод между резистора и захранването, така че 13+волта, поставени върху MCLR по време на програмиране, да не повредят други компоненти на платката. ICSP заглавка (5 пина) се използва за програмиране и отстраняване на грешки в устройството. Необходими USB неща A USB гнездо в женски стил „B“. 220nf-440nf капацитет е необходим за вътрешния USB регулатор на напрежението. Използвам два 0.1uf кондензатора (същите като използваните за отделяне) без проблем. Светодиод с резистор за ограничаване на тока 330 ома се използва за показване на състоянието на USB връзката. Необходими сензори Използвах микрочип TC1047A температурен сензор като вътрешен температурен сензор. Той е физически споен към дъската - това го кара да работи няколко градуса по -горещо от стайната температура. Заглавието се използва за свързване на сонда за външна температура (TO-92 версия на TC1047a). Допълнителен 0.1uf кондензатор помага за отделяне на дълъг проводник от останалата част на платката. Нивата на USB напрежение не са достатъчно последователни за точно измерване и изчисляване на температурата от аналоговите сензори. Използва се справка за външно напрежение (MCP1525, 2.5 волта). Референтното напрежение изисква кондензатор на изхода от 1uf до 10uf. Без този кондензатор референтното напрежение няма да работи.

Стъпка 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:

Препоръчано: