Mündəricat:

USB Daxili/Açıq Termometr (və ya 'İlk USB Cihazım'): 4 Addım (Şəkillərlə)
USB Daxili/Açıq Termometr (və ya 'İlk USB Cihazım'): 4 Addım (Şəkillərlə)

Video: USB Daxili/Açıq Termometr (və ya 'İlk USB Cihazım'): 4 Addım (Şəkillərlə)

Video: USB Daxili/Açıq Termometr (və ya 'İlk USB Cihazım'): 4 Addım (Şəkillərlə)
Video: Telefon ustaları bu özəlliyi heç vaxt sizə deməz 2024, Noyabr
Anonim
USB Daxili/Açıq Termometr (və ya 'İlk USB Cihazım')
USB Daxili/Açıq Termometr (və ya 'İlk USB Cihazım')

Bu, PIC 18F -lərdə USB ətraf qurğusunu nümayiş etdirən sadə bir dizayndır. 18F4550 40 pin çipləri üçün bir çox nümunə var, bu dizayn daha kiçik 18F2550 28 pinli versiyanı nümayiş etdirir. PCB səthə montaj hissələrindən istifadə edir, lakin bütün komponentlər çuxurlu versiyalarda mövcuddur. Səthi montaj hissələrindən istifadə edirəm, çünki dəlik açmadan lövhəni düzəltmək daha sürətlidir. Nəticə, daxili/xarici temperaturları ölçən kiçik bir USB ətrafıdır. Məlumat PC -yə virtual serial portu vasitəsilə verilir. Nümunədə temperatur sensörləri istifadə olunur, ancaq digər analoq sensorlar əlavə edilə bilər. PS Qeydiyyatçımdan verilənlərin canlı qrafikinə baxın: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = qrafik

Addım 1: Dizayn Baxışı

Dizayn Baxışı
Dizayn Baxışı
Dizayn Baxışı
Dizayn Baxışı
Dizayn Baxışı
Dizayn Baxışı

Lazım olan PIC komponentləri

Bu USB ətraf cihazı 28 pinli PIC 18F2550 -ə əsaslanır. Bu çipdə tam sürətli USB interfeysi üçün lazım olan hər şey var. Güc və torpaq arasındakı 0.1uf kondansatör PIC -ni enerji təchizatından ayırır. 20MHz kristal (48MHz daxili saat yaratmaq üçün istifadə olunur) və iki 27pf kondansatör. Gücdən MCLR pininə qədər 10K müqavimət. Rezistorla güc arasında 1n4148 ekvivalent bir diod əlavə etdim ki, proqramlaşdırma zamanı MCLR -ə qoyulan 13+volt, dövrə lövhəsindəki digər komponentlərə zərər verməsin. Cihazı proqramlaşdırmaq və düzəltmək üçün ICSP başlığı (5 pin) istifadə olunur. Tələb olunan USB əşyaları USB qadın "B" üslublu yuva. Daxili USB gərginlik tənzimləyicisi üçün 220nf-440nf tutum tələb olunur. Mən heç bir problem olmadan iki 0.1uf kondansatördən istifadə edirəm (ayırmaq üçün istifadə edildiyi kimi). USB bağlantısı vəziyyətini göstərmək üçün 330ohm cərəyan məhdudlaşdırıcı rezistoru olan bir LED istifadə olunur. Lazım olan sensorlar, mikroçip TC1047A temperatur sensorunu daxili temperatur sensoru kimi istifadə etdim. Lövhəyə fiziki olaraq lehimlənir - bu, otaq temperaturundan bir neçə dərəcə daha isti işləməsinə səbəb olur. Bir başlıq, açıq hava temperaturu probunu bağlamaq üçün istifadə olunur (TC1047a-nın TO-92 versiyası). Əlavə 0.1uf kondansatör, lövhənin qalan hissəsindən uzun bir telin ayrılmasına kömək edir. USB gərginlik səviyyələri, analoq sensorlardan temperaturu dəqiq ölçmək və hesablamaq üçün kifayət qədər uyğun deyil. Xarici gərginlik istinadı (MCP1525, 2.5volt) istifadə olunur. Gərginlik arayışına 1uf -10uf çıxışında bir kondansatör lazımdır. Bu kondansatör olmadan gərginlik referansı işləməyəcək.

Addım 2: Firmware

Firmware, seriyalı portu təqlid etmək üçün CDC USB sinifindən istifadə edir. Cihaz bir kompüterdə virtual bir əlaqə portu olaraq görünəcək. Firmware üç hissəyə bölünür: 1. USB sürücüsü cihazın kompüterdə sayılması və COM portunun emulyasiyası ilə məşğul olur. 2. Bir xidmət rutini alternativ olaraq temperatur dəyərlərini oxuyur və oxunaqlı bir formata çevirir. Bu əməliyyatların hər ikisini bir anda yerinə yetirmək USB cihazının PC ilə əlaqəsini kəsməsinə səbəb oldu (vaxt hogging). Dönüşümdən sonra üzən nöqtə dəyərlərini xidmət dövründəki bir sətirə çevirmək, əlaqə problemini aradan qaldırdı. Birdən çox tədbir vergüllə ayrılır, sətirlər sıfır simvolu ilə kəsilir (hex 0x00) Göstərici proqram təminatı aşağıdakı əmrləri qəbul edir: Hex dəyəri Geri qaytarır0x00 Daxili temperatur (bort sensoru) 0x01 Xarici temperatur (xarici başlıq) 0x02 Hər iki temperatur (vergül) İstilik 2.5 volt arayışa və Microchip TC1047A ofset və yamacına əsasən hesablanır. Digər temperatur sensörləri fərqli xüsusiyyətlərə malik ola bilər. TC1047A məlumat cədvəli burada mövcuddur: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Firmware, nümayiş PIC C18 kompilyatoru ilə birlikdə MPLAB -da yazılmışdır. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Faktiki USB firmware Microchip tərəfindən təmin edilir. Orijinal mühit burada mövcuddur: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = en021631Firmware redaktə etmək üçün: mənbənin bütün kataloq quruluşunu kök qovluğunuza çıxarın (c: / MCHPFSUSB). Daha sonra MPLAB -da iş sahəsinin faylını yükləyə bilərsiniz.*String to string routine bir qaynaq donuzudur. Bağlantı problemini həll etmək üçün float2string prosedurunun müxtəlif nöqtələrində USB xidmət qaydalarına deyilir. Bu, ən yaxşı halda USB periferiyasına fasilə verilərək xidmət göstərilə bilər. Proqram təminatının istinad versiyasına mümkün qədər yaxın qalması üçün hackdən istifadə etdim.

Addım 3: Cihazı yoxlayın

Cihazın Test Edilməsi
Cihazın Test Edilməsi
Cihazın Test Edilməsi
Cihazın Test Edilməsi
Cihazın Test Edilməsi
Cihazın Test Edilməsi

Təlimatlar pəncərələr üçündür, lakin cihaz CDC seriyalı port emulyasiya sürücüləri olan hər hansı bir şeyə qoşula bilər.

Cihazı firmware ilə proqramlaşdırın. Bütün konfiqurasiya bitləri firmware -də düzgün qurulmalıdır. Cihazı USB portuna qoşun. Windows bunu aşkar edəcək və sürücü seçməyinizi xahiş edəcək. ƏMƏKSİZ "SÜRÜCÜ SÜRÜCÜ ÜÇÜN GÖZLƏ" düyməsini basın. Layihə arxivinə daxil olan.inf faylının yerləşdiyi yerə gedin (driver-win2k_winxp). Windows cihazı quraşdırmaq üçün bu fayldan istifadə edəcək. *CDC sürücüsündə bir qeyd - CDC seriyalı port emulyasiya sürücüsü Windows -a daxil edilmişdir.. İnf faylı (Microchip tərəfindən təmin edilir) sadəcə Windows -a bu sürücülərin cihaza qoşulmasını bildirir. Cihaza hansı COM portunun verildiyini öyrənmək üçün aşağıdakıları edin: İdarəetmə panelinə gedin (başlanğıc-> Ayarlar-> İdarəetmə paneli) 'Sistem' düyməsini iki dəfə vurun 'Donanım' sekmesini basın. 'Cihaz meneceri' ni basın Limanların yanındakı '+' düyməsini basın Sistemdəki COM portlarının siyahısı göstərilir. Cihazın COM 3 və 4 olaraq göründüyünü gördüm, ancaq sistemə görə dəyişəcək. Hansı portun yeni olduğu aydın deyilsə, bunu sınayın: cihazı USB portundan ayırın. Limanlardan biri yox olacaq. Bu cihazın COM portudur #. Cihazı yenidən bağlayın, liman yenidən görünəcək. Kiçik VB tətbiqi (mənbə daxil olmaqla) cihazı sınamaq üçün istifadə edilə bilər. Göndərmək üçün əmri daxil edin, 'Başlat' düyməsini basın. Cavab pəncərədə görünəcək.

Addım 4: Başqa nə edə bilər?

Başqa nə edə bilər?
Başqa nə edə bilər?

Bu nümayiş lövhəsi kiçik bir ev hava stansiyası üçün yaxşı bir başlanğıc nöqtəsidir: HIH3160 rütubət sensoru əlavə edin və ya analog temperatur sensörünü Sensiron HT74 yüksək dəqiqlikli seriyalı temperatur və rütubət sensoru ilə əvəz edin. barometrik təzyiqi ölçün. Bu məlumatları internetdə birləşdirmək istəyirsiniz? Bunu öz veb saytınıza daxil edin, google yerində baxın və ya RSS qamışınızda yeniliklər əldə edin? Bu cihazı syndicIT.com web backend ilə birləşdirmək üçün bu təlimata baxın:

Tövsiyə: