Indholdsfortegnelse:

USB indendørs/udendørs termometer (eller 'min første USB -enhed'): 4 trin (med billeder)
USB indendørs/udendørs termometer (eller 'min første USB -enhed'): 4 trin (med billeder)

Video: USB indendørs/udendørs termometer (eller 'min første USB -enhed'): 4 trin (med billeder)

Video: USB indendørs/udendørs termometer (eller 'min første USB -enhed'): 4 trin (med billeder)
Video: Shelly Wifi & Bluetooth Nyheder til Homey og Home Assistent 2024, Juli
Anonim
USB indendørs/udendørs termometer (eller 'min første USB -enhed')
USB indendørs/udendørs termometer (eller 'min første USB -enhed')

Dette er et simpelt design, der viser USB -periferienheden på PIC 18F'erne. Der er en masse eksempler på 18F4550 40 pin chips online, dette design viser den mindre 18F2550 28 pin version. PCB bruger overflademonterede dele, men alle komponenter er tilgængelige i gennemgående huller. Jeg bruger overflademonterede dele, fordi det er hurtigere at lave brættet uden at bore huller. Slutresultatet er et lille USB -periferiudstyr, der måler indendørs/udendørs temperaturer. Data er tilgængelige for pc'en via en virtuel seriel port. Temperatursensorer bruges i eksemplet, men andre analoge sensorer kan tilføjes. PS Se en live graf over dataene fra min logger her: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = kurve

Trin 1: Designoversigt

Design Oversigt
Design Oversigt
Design Oversigt
Design Oversigt
Design Oversigt
Design Oversigt

Påkrævede PIC -komponenter

Denne USB -periferiudstyr er baseret på 28 -pin PIC 18F2550. Denne chip har alt, hvad der er nødvendigt for en fuldhastigheds USB -grænseflade. En 0,1uf kondensator mellem strøm og jord afbryder PIC'en fra strømforsyningen. En 20MHz krystal (bruges til at generere et 48MHz internt ur) og to 27pf kondensatorer. En 10K modstand fra strøm til MCLR -stiften. Jeg tilføjede en 1n4148 ækvivalent diode mellem modstanden og strømmen, så de 13+volt placeret på MCLR under programmeringen ikke beskadiger andre komponenter på printkortet. Et ICSP -header (5 ben) bruges til at programmere og fejlsøge enheden. Nødvendige USB -ting En USB -kvindelig 'B' -stik. 220nf-440nf kapacitans er påkrævet til den interne USB-spændingsregulator. Jeg bruger to 0.1uf kondensatorer (samme som bruges til afkobling) uden problemer. En LED med 330ohm strømbegrænsende modstand bruges til at vise USB -forbindelsesstatus. Nødvendige sensortyper Jeg brugte mikrochip TC1047A temperatursensor som indendørs temperatursensor. Det er fysisk loddet til brættet - det får det til at køre et par grader varmere end stuetemperatur. Et header bruges til at tilslutte en udetemperaturføler (TO-92 version af TC1047a). En yderligere 0.1uf kondensator hjælper med at afkoble en lang ledning fra resten af kortet. USB -spændingsniveauer er ikke konsekvente nok til nøjagtigt at måle og beregne temperatur fra de analoge sensorer. Der bruges en ekstern spændingsreference (MCP1525, 2,5volt). Spændingsreferencen kræver en kondensator på output fra 1uf til 10uf. Uden denne kondensator fungerer spændingsreferencen ikke.

Trin 2: Firmware

Firmwaren bruger CDC USB -klassen til at efterligne en seriel port. Enheden vises som en virtuel com -port på en pc. Firmwaren er opdelt i tre sektioner: 1. USB -driveren sørger for at opregne enheden på en pc og efterligne en COM -port. 2. En servicerutine læser skiftevis temperaturværdierne og konverterer dem til et læseligt format. Ved at udføre begge disse handlinger på én gang fik USB -enheden til at miste forbindelsen til pc'en (time hogging). Konvertering af flydende punktværdier til en streng i servicecyklussen efter konverteringen rydde forbindelsesproblemet.* 3. Endelig modtager en hovedrutine bytes sendt fra pc'en og returnerer de ønskede målinger. Flere mål adskilles med et komma, linjer afsluttes med et nulltegn (hex 0x00) Demonstrationsfirmwaren accepterer følgende kommandoer: Hexværdi Returnerer0x00 Indendørs temperatur (indbygget sensor) 0x01 Udetemperatur (ekstern header) 0x02 Begge temperaturer (komma adskilt) Temperatur beregnes ud fra 2,5 volt referencen og Microchip TC1047A forskydning og hældning. Andre temperatursensorer kan have forskellige egenskaber. Databladet TC1047A er tilgængeligt her: https://ww1.microchip.com/downloads/da/DeviceDoc/21498c.pdf Firmwaren er skrevet i MPLAB med demonstrationen PIC C18 -kompilatoren. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=da010014&part=SW006011Den faktiske USB -firmware leveres af Microchip. Det originale miljø er tilgængeligt her: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = da021631 Sådan redigeres firmwaren: udtræk hele bibliotekets struktur i kilden til dit rodmappe (c: / MCHPFSUSB). Du kan derefter indlæse arbejdsområdefilen i MPLAB.*Float to string -rutinen er et ressourcehog. For at omgå forbindelsesproblemet kaldes USB -servicerutinen på forskellige punkter i float2string -rutinen. Dette vil bedst blive løst ved at servicere USB -periferienheden ved en afbrydelse. Jeg brugte hacket, så firmwaren holdt sig så tæt på referenceversionen som muligt.

Trin 3: Test af enheden

Test af enheden
Test af enheden
Test af enheden
Test af enheden
Test af enheden
Test af enheden

Instruktionerne er til Windows, men enheden kan forbindes til alt, hvad der har CDC -serielle portemuleringsdrivere.

Programmer enheden med firmwaren. Alle konfigurationsbit skal være indstillet korrekt i firmwaren. Slut enheden til en USB -port. Windows registrerer det og beder dig om at vælge en driver. Vær sikker på at klikke på 'GENNEMFØR FOR TILPASSET KØRER'. Naviger til placeringen af .inf-filen, der følger med projektarkivet (driver-win2k_winxp). Windows bruger denne fil til at installere enheden. *En note om CDC -driveren - CDC -serielportemuleringsdriveren er inkluderet i Windows.. Inf -filen (leveret af Microchip) fortæller simpelthen Windows at forbinde disse drivere med enheden. For at finde ud af, hvilken COM-port enheden blev tildelt, skal du gøre følgende: Gå til kontrolpanelet (start-> indstillinger-> kontrolpanel) Dobbeltklik på 'system' Klik på fanen 'hardware'. Klik på 'enhedshåndtering' Klik på '+' ved siden af porte Der vises en liste over COM -porte på systemet. Jeg har set enheden vise sig som COM 3 og 4, men det vil variere fra system til system. Hvis det ikke er klart, hvilken port der er ny, kan du prøve dette: Tag enheden ud af USB -porten. En af havnene forsvinder. Dette er enhedens COM -port #. Tilslut enheden igen, porten vises igen. Den lille VB -applikation (kilde inkluderet) kan bruges til at teste enheden. Indtast kommandoen, der skal sendes, klik på 'Start'. Svaret vises i vinduet.

Trin 4: Hvad kan den ellers gøre?

Hvad kan den ellers?
Hvad kan den ellers?

Dette demonstrationstavle er et godt udgangspunkt for en lille hjemmestudsstation: Tilføj en HIH3160 fugtighedsføler, eller udskift den analoge temperatursensor med Sensiron HT74 seriel temperatur- og fugtighedsføler med høj nøjagtighed. Tilføj en Freescale MPX (a) 4115 trykføler til måle barometrisk tryk. Vil du syndikere disse data til web? Medtage det på dit eget websted, se det i google earth eller få opdateringer i dit RSS -rør? Se denne vejledning om integration af denne enhed med syndicIT.com web -backend:

Anbefalede: