Innehållsförteckning:

USB inomhus/utomhus termometer (eller "min första USB -enhet"): 4 steg (med bilder)
USB inomhus/utomhus termometer (eller "min första USB -enhet"): 4 steg (med bilder)

Video: USB inomhus/utomhus termometer (eller "min första USB -enhet"): 4 steg (med bilder)

Video: USB inomhus/utomhus termometer (eller
Video: TOP 15 GADGETS FOR CAMPERVAN & MOTORHOME TRAVEL 2024, Juli
Anonim
USB inomhus/utomhus termometer (eller "min första USB -enhet")
USB inomhus/utomhus termometer (eller "min första USB -enhet")

Detta är en enkel design som visar USB -kringutrustningen på PIC 18F: erna. Det finns en massa exempel på 18F4550 40 -stifts chips online, denna design visar den mindre 18F2550 28 -stiftsversionen. Kretskortet använder ytmonterade delar, men alla komponenter är tillgängliga i genomgående hålversioner. Jag använder ytmonterade delar eftersom det är snabbare att göra brädan utan att borra hål. Slutresultatet är en liten USB -kringutrustning som mäter inomhus/utomhustemperaturer. Data är tillgänglig för datorn via en virtuell seriell port. Temperatursensorer används i exemplet, men andra analoga sensorer kan läggas till. PS Se en levande graf över data från min logger här: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = Graf

Steg 1: Designöversikt

Designöversikt
Designöversikt
Designöversikt
Designöversikt
Designöversikt
Designöversikt

Obligatoriska PIC -komponenter

Denna USB -kringutrustning är baserad på 28 -stifts PIC 18F2550. Detta chip har allt som behövs för ett fullhastighets USB -gränssnitt. En 0,1uf kondensator mellan kraft och jord kopplar bort PIC från strömförsörjningen. En 20 MHz kristall (används för att generera en 48 MHz intern klocka) och två 27pf kondensatorer. Ett 10K -motstånd från ström till MCLR -stiftet. Jag lade till en 1n4148 ekvivalent diod mellan motståndet och effekten så att de 13+volt som placerats på MCLR under programmeringen inte skadar andra komponenter på kretskortet. Ett ICSP -huvud (5 stift) används för att programmera och felsöka enheten. Obligatoriska USB -grejer Ett USB -kvinnligt B -uttag. 220nf-440nf kapacitans krävs för den interna USB-spänningsregulatorn. Jag använder två 0.1uf kondensatorer (samma som används för avkoppling) utan problem. En lysdiod med 330ohm strömbegränsande motstånd används för att visa USB -anslutningsstatus. Obligatoriska sensorgrejer Jag använde mikrochipet TC1047A temperaturgivare som temperatursensorn inomhus. Det är fysiskt lödt på brädet - detta får det att gå några grader varmare än rumstemperatur. En rubrik används för att ansluta en utomhustemperatursond (TO-92 version av TC1047a). Ytterligare en 0.1uf kondensator hjälper till att koppla bort en lång ledning från resten av kortet. USB -spänningsnivåer är inte tillräckligt konsekventa för att noggrant mäta och beräkna temperaturen från de analoga sensorerna. En extern spänningsreferens (MCP1525, 2,5volt) används. Spänningsreferensen kräver en kondensator på utgången 1uf till 10uf. Utan denna kondensator fungerar inte spänningsreferensen.

Steg 2: Firmware

Firmware använder CDC USB -klassen för att emulera en seriell port. Enheten visas som en virtuell kom -port på en dator. Firmware är uppdelad i tre sektioner: 1. USB -drivrutinen tar hand om att räkna upp enheten på en dator och emulera en COM -port. 2. En servicerutin läser växelvis temperaturvärdena och konverterar dem till ett läsbart format. Genom att utföra båda dessa åtgärder på en gång fick USB -enheten att förlora anslutningen till datorn (tidskörning). Omvandlingen av flytpunktsvärdena till en sträng i servicecykeln efter konverteringen rensade upp anslutningsproblemet.* 3. Slutligen tar en huvudrutin emot byte som skickas från PC och returnerar de begärda mätningarna. Flera mått separeras med ett kommatecken, linjer avslutas med nulltecken (hex 0x00) Demonstrationsprogramvaran accepterar följande kommandon: Hexvärde Returns0x00 Inomhustemperatur (inbyggd sensor) 0x01 Utetemperatur (extern rubrik) 0x02 Båda temperaturerna (komma) separerad) Temperatur beräknas baserat på 2,5 volt referens och Microchip TC1047A förskjutning och lutning. Andra temperaturgivare kan ha olika egenskaper. Databladet TC1047A är tillgängligt här: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Den fasta programvaran är skriven i MPLAB med demonstrationen PIC C18 -kompilatorn. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Den faktiska USB -firmware tillhandahålls av Microchip. Den ursprungliga miljön finns här: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = en021631 För att redigera firmware: extrahera hela katalogstrukturen för källan till din rotkatalog (c: / MCHPFSUSB). Du kan sedan ladda arbetsytans fil i MPLAB.*Floaten till strängrutinen är en resursgris. För att komma runt anslutningsproblemet kallas USB -servicerutinen på olika punkter i float2string -rutinen. Detta skulle bäst åtgärdas genom att serva USB -kringutrustningen vid ett avbrott. Jag använde hacket så att den fasta programvaran förblev så nära referensversionen som möjligt.

Steg 3: Testa enheten

Testar enheten
Testar enheten
Testar enheten
Testar enheten
Testar enheten
Testar enheten

Instruktionerna är för Windows, men enheten kan anslutas till allt som har CDC -seriella portemuleringsdrivrutiner.

Programmera enheten med firmware. Alla konfigurationsbitar ska vara korrekt inställda i firmware. Anslut enheten till en USB -port. Windows upptäcker det och uppmanar dig att välja en drivrutin. VAR SÄKER ATT KLICKA PÅ”BLÄDDNING FÖR KUNDFÖRAREN”. Navigera till platsen för.inf-filen som ingår i projektarkivet (driver-win2k_winxp). Windows använder den här filen för att installera enheten. *En anteckning om CDC -drivrutinen - CDC -seriell portemuleringsdrivrutin ingår i Windows.. Inf -filen (tillhandahålls av Microchip) berättar helt enkelt för Windows att ansluta dessa drivrutiner till enheten. Gör följande för att ta reda på vilken COM-port enheten tilldelades: Gå till kontrollpanelen (start-> inställningar-> kontrollpanel) Dubbelklicka på "system" Klicka på "maskinvara" -fliken. Klicka på "enhetshanteraren" Klicka på "+" bredvid portar. En lista över COM -portar på systemet visas. Jag har sett att enheten visas som COM 3 och 4, men det kommer att variera beroende på system. Om det inte är uppenbart vilken port som är ny, försök med detta: Koppla bort enheten från USB -porten. En av hamnarna försvinner. Detta är enhetens COM -port #. Anslut enheten igen, porten visas igen. Den lilla VB -applikationen (källa ingår) kan användas för att testa enheten. Ange kommandot som ska skickas, klicka på "Start". Svaret visas i fönstret.

Steg 4: Vad kan det annars göra?

Vad kan den annars göra?
Vad kan den annars göra?

Denna demonstrationstavla är en bra utgångspunkt för en liten hemväderstation: Lägg till en HIH3160 fuktsensor eller byt ut den analoga temperatursensorn mot Sensiron HT74 högt noggrann seriell temperatur och fuktighetssensor. Lägg till en Freescale MPX (a) 4115 trycksensor till mäta barometertryck. Vill du syndikera dessa data till webben? Inkludera den på din egen webbplats, visa den på google earth eller få uppdateringar i ditt RSS -vass? Se denna instruktion om hur du integrerar den här enheten med syndicIT.com webbbackend:

Rekommenderad: