Cuprins:

Termometru USB interior / exterior (sau, „Primul meu dispozitiv USB”): 4 pași (cu imagini)
Termometru USB interior / exterior (sau, „Primul meu dispozitiv USB”): 4 pași (cu imagini)

Video: Termometru USB interior / exterior (sau, „Primul meu dispozitiv USB”): 4 pași (cu imagini)

Video: Termometru USB interior / exterior (sau, „Primul meu dispozitiv USB”): 4 pași (cu imagini)
Video: NU-ȚI PUNE CAMERE DE SUPRAVEGHERE VIDEO ACASĂ PÂNĂ NU VEZI ASTA *ca să știi ce decizi* 2024, Iulie
Anonim
Termometru USB interior / exterior (sau, „Primul meu dispozitiv USB”)
Termometru USB interior / exterior (sau, „Primul meu dispozitiv USB”)

Acesta este un design simplu care demonstrează perifericul USB de pe PIC 18Fs. Există o grămadă de exemple pentru cipurile 18F4550 cu 40 pini online, acest design demonstrează versiunea mai mică 18F2550 cu 28 pini. PCB folosește piese de montare la suprafață, dar toate componentele sunt disponibile în versiuni prin găuri. Folosesc piese de montaj la suprafață, deoarece este mai rapid să fac placa fără găuri. Rezultatul final este un mic periferic USB care măsoară temperaturile interioare / exterioare. Datele sunt disponibile pentru PC printr-un port serial virtual. Senzorii de temperatură sunt folosiți în exemplu, dar pot fi adăugați alți senzori analogici. PS Vezi un grafic în timp real al datelor din jurnalul meu aici: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = grafic

Pasul 1: Prezentare generală a proiectului

Prezentare generală a designului
Prezentare generală a designului
Prezentare generală a designului
Prezentare generală a designului
Prezentare generală a designului
Prezentare generală a designului

Componente PIC necesare

Acest periferic USB se bazează pe PIC 18F2550 cu 28 de pini. Acest cip are tot ce este necesar pentru o interfață USB cu viteză maximă. Un condensator de 0,1uf între putere și masă decuplează PIC de sursa de alimentare. Un cristal de 20 MHz (folosit pentru a genera un ceas intern de 48 MHz) și doi condensatori de 27 pf. Un rezistor de 10K de la alimentare la pinul MCLR. Am adăugat o diodă echivalentă 1n4148 între rezistor și putere, astfel încât cele 13 + volți plasate pe MCLR în timpul programării să nu deterioreze alte componente de pe placa de circuit. Un antet ICSP (5 pini) este utilizat pentru a programa și depana dispozitivul. Lucruri USB necesare O priză USB de tip feminin „B”. Este necesară o capacitate de 220nf-440nf pentru regulatorul de tensiune USB intern. Folosesc două condensatoare de 0.1uf (la fel ca cele utilizate pentru decuplare) fără probleme. Un LED cu rezistor de limitare a curentului de 330ohm este utilizat pentru a afișa starea conexiunii USB. Materiale necesare senzorului Am folosit senzorul de temperatură microcip TC1047A ca senzor de temperatură interioară. Este lipit fizic pe placă - acest lucru îl face să funcționeze cu câteva grade mai fierbinte decât temperatura camerei. Un antet este utilizat pentru a conecta o sondă de temperatură exterioară (versiunea TO-92 a TC1047a). Un condensator suplimentar de 0,1uf ajută la decuplarea unui cablu lung de restul plăcii. Nivelurile de tensiune USB nu sunt suficient de consistente pentru a măsura și calcula cu precizie temperatura de la senzorii analogici. Se utilizează o referință de tensiune externă (MCP1525, 2,5 volt). Referința de tensiune necesită un condensator la ieșirea de la 1uf la 10uf. Fără acest condensator, tensiunea de referință nu va funcționa.

Pasul 2: Firmware

Firmware-ul folosește clasa USB CDC pentru a emula un port serial. Dispozitivul va apărea ca un port virtual virtual pe un PC. Firmware-ul este împărțit în trei secțiuni: 1. Driverul USB se ocupă de enumerarea dispozitivului pe un PC și de emularea unui port COM. 2. O rutină de service citește alternativ valorile temperaturii și le convertește într-un format lizibil. Efectuarea ambelor operații simultane a determinat dispozitivul USB să piardă conexiunea la PC (timpul de hogging). Conversia valorilor în virgulă mobilă într-un șir din ciclul de service după conversie a eliminat problema conectivității. * 3. În cele din urmă, o rutină principală primește octeți trimiși de la PC și returnează măsurătorile solicitate. Măsurile multiple sunt separate printr-o virgulă, liniile sunt terminate cu un caracter nul (hex 0x00) Firmware-ul demonstrativ acceptă următoarele comenzi: Valoare hexagonală Returnează0x00 Temperatură interioară (senzor de bord) 0x01 Temperatură exterioară (antet extern) 0x02 Ambele temperaturi (virgulă) separat) Temperatura este calculată pe baza referinței de 2,5 volți și a offsetului și a pantei Microchip TC1047A. Alți senzori de temperatură pot avea caracteristici diferite. Foaia de date TC1047A este disponibilă aici: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Firmware-ul este scris în MPLAB cu compilatorul demonstrativ PIC C18. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011 Firmware-ul USB real este furnizat de Microchip. Mediul original este disponibil aici: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = en021631 Pentru a edita firmware-ul: extrageți întreaga structură de directoare a sursei în directorul rădăcină (c: / MCHPFSUSB). Apoi puteți încărca fișierul spațiului de lucru în MPLAB. * Rutina float to string este un porc de resurse. Pentru a rezolva problema de conectivitate, rutina de servicii USB este apelată în diferite puncte din rutina float2string. Acest lucru ar fi cel mai bine remediat prin întreținerea perifericului USB la o întrerupere. Am folosit hack-ul astfel încât firmware-ul să rămână cât mai aproape de versiunea de referință.

Pasul 3: Testarea dispozitivului

Testarea dispozitivului
Testarea dispozitivului
Testarea dispozitivului
Testarea dispozitivului
Testarea dispozitivului
Testarea dispozitivului

Instrucțiunile sunt pentru Windows, dar dispozitivul poate fi conectat la orice element care are drivere CDC de emulare a portului serial.

Programați dispozitivul cu firmware-ul. Toți biții de configurare trebuie să fie setați corect în firmware. Conectați dispozitivul la un port USB. Windows îl va detecta și vă va solicita să alegeți un driver. ASIGURAȚI-VĂ CĂ FĂCȚI „CĂUTARE PENTRU ȘOFER PERSONALIZAT”. Navigați la locația fișierului.inf inclus în arhiva proiectului (driver-win2k_winxp). Windows va utiliza acest fișier pentru a instala dispozitivul. * O notă despre driverul CDC - driverul de emulare a portului serial CDC este inclus cu Windows. Fișierul.inf (furnizat de Microchip) spune pur și simplu Windows să conecteze aceste drivere la dispozitiv. Pentru a afla ce port COM a fost atribuit dispozitivului, procedați în felul următor: Accesați panoul de control (start-> setări-> panoul de control) Faceți dublu clic pe „sistem” Faceți clic pe fila „hardware”. Faceți clic pe „manager de dispozitive” Faceți clic pe „+” de lângă porturi Este afișată o listă de porturi COM din sistem. Am văzut dispozitivul apărând ca COM 3 și 4, dar va varia în funcție de sistem. Dacă nu este evident ce port este nou, încercați acest lucru: Deconectați dispozitivul de la portul USB. Unul dintre porturi va dispărea. Acesta este numărul de port COM al dispozitivului. Conectați dispozitivul la loc, portul va reapărea. Aplicația mică VB (sursă inclusă) poate fi utilizată pentru a testa dispozitivul. Introduceți comanda de trimis, faceți clic pe „Start”. Răspunsul va fi afișat în fereastră.

Pasul 4: Ce altceva poate face?

Ce altceva poate face?
Ce altceva poate face?

Această placă demonstrativă este un bun punct de plecare pentru o stație meteo mică de acasă: adăugați un senzor de umiditate HIH3160 sau înlocuiți senzorul de temperatură analogic cu senzorul de temperatură și umiditate de serie de înaltă precizie Sensiron HT74. Adăugați un senzor de presiune Freescale MPX (a) 4115 la măsurați presiunea barometrică. Doriți să sindicați aceste date pe web? Includeți-l în propriul dvs. site web, vizualizați-l în Google Earth sau primiți actualizări în reed-ul RSS? Consultați acest instructable despre integrarea acestui dispozitiv cu backend-ul web syndicIT.com:

Recomandat: