Innholdsfortegnelse:

USB innendørs/utendørs termometer (eller 'min første USB -enhet'): 4 trinn (med bilder)
USB innendørs/utendørs termometer (eller 'min første USB -enhet'): 4 trinn (med bilder)

Video: USB innendørs/utendørs termometer (eller 'min første USB -enhet'): 4 trinn (med bilder)

Video: USB innendørs/utendørs termometer (eller 'min første USB -enhet'): 4 trinn (med bilder)
Video: 30 товаров для автомобиля с Алиэкспресс, автотовары №15 2024, Juli
Anonim
USB innendørs/utendørs termometer (eller 'min første USB -enhet')
USB innendørs/utendørs termometer (eller 'min første USB -enhet')

Dette er en enkel design som demonstrerer USB -periferienheten på PIC 18F -ene. Det er en haug med eksempler på 18F4550 40 -pinners sjetonger online, dette designet demonstrerer den mindre 18F2550 28 -pinners versjonen. PCB bruker overflatemonterte deler, men alle komponenter er tilgjengelige i gjennomgående hullversjoner. Jeg bruker overflatemonterte deler fordi det er raskere å lage brettet uten å bore hull. Sluttresultatet er en liten USB -enhet som måler innendørs/utendørs temperaturer. Data er tilgjengelig for PC -en via en virtuell seriell port. Temperatursensorer brukes i eksemplet, men andre analoge sensorer kan legges til. PS Se en live graf over dataene fra loggeren min her: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/? Format = kurve

Trinn 1: Designoversikt

Designoversikt
Designoversikt
Designoversikt
Designoversikt
Designoversikt
Designoversikt

Nødvendige PIC -komponenter

Denne eksterne enheten er basert på 28 -pinners PIC 18F2550. Denne brikken har alt som trengs for et fullhastighets USB -grensesnitt. En kondensator på 0,1uf mellom strøm og jord kobler PIC fra strømforsyningen. En 20MHz krystall (brukes til å generere en 48MHz intern klokke) og to 27pf kondensatorer. En 10K motstand fra strøm til MCLR -pinnen. Jeg la til en 1n4148 ekvivalent diode mellom motstanden og effekten, slik at 13+volt plassert på MCLR under programmeringen ikke skader andre komponenter på kretskortet. En ICSP -topptekst (5 pins) brukes til å programmere og feilsøke enheten. Nødvendige USB -ting En USB -kvinnelig "B" -kontakt. 220nf-440nf kapasitans er nødvendig for den interne USB-spenningsregulatoren. Jeg bruker to 0.1uf kondensatorer (samme som brukes for frakobling) uten problemer. En LED med 330ohm strømbegrensende motstand brukes til å vise USB -tilkoblingsstatus. Nødvendige sensortyper Jeg brukte mikrochip TC1047A temperatursensor som innendørs temperatursensor. Det er fysisk loddet til brettet - dette får det til å gå noen grader varmere enn romtemperatur. Et topptekst brukes til å koble til en utetemperatur sonde (TO-92 versjon av TC1047a). En ekstra 0.1uf kondensator hjelper til med å koble fra en lang ledning fra resten av brettet. USB -spenningsnivåer er ikke konsekvente nok til å måle og beregne temperaturen nøyaktig fra de analoge sensorene. En ekstern spenningsreferanse (MCP1525, 2.5volt) brukes. Spenningsreferansen krever en kondensator på utgangen fra 1uf til 10uf. Uten denne kondensatoren vil ikke spenningsreferansen fungere.

Trinn 2: Fastvare

Fastvaren bruker CDC USB -klassen til å etterligne en seriell port. Enheten vises som en virtuell com -port på en PC. Fastvaren er delt inn i tre seksjoner: 1. USB -driveren tar seg av å telle opp enheten på en PC og etterligne en COM -port. 2. En servicerutine leser vekselvis temperaturverdiene og konverterer dem til et lesbart format. Ved å utføre begge disse operasjonene på en gang fikk USB -enheten til å miste tilkoblingen til PC -en (tidshogging). Ved å konvertere flytende punktverdier til en streng i tjenestesyklusen etter konverteringen ryddet opp tilkoblingsproblemet.* 3. Til slutt mottar en hovedrutine byte sendt fra PC og returnerer de forespurte målingene. Flere mål skilles med komma, linjer avsluttes med nulltegn (hex 0x00) Demonstrasjonens fastvare godtar følgende kommandoer: Hexverdi Returnerer0x00 Innetemperatur (innebygd sensor) 0x01 Utetemperatur (ekstern topptekst) 0x02 Begge temperaturer (komma separert) Temperaturen beregnes basert på 2,5 volt referanse og Microchip TC1047A forskyvning og helling. Andre temperatursensorer kan ha forskjellige egenskaper. Databladet TC1047A er tilgjengelig her: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Fastvaren er skrevet i MPLAB med demonstrasjonen PIC C18 -kompilatoren. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Den faktiske USB -fastvaren leveres av Microchip. Det originale miljøet er tilgjengelig her: https://www.microchip.com/stellent/idcplg? IdcService = SS_GET_PAGE & nodeId = 1824 & appnote = no021631 Slik redigerer du fastvaren: trekk ut hele katalogstrukturen til kilden til rotkatalogen (c: / MCHPFSUSB). Du kan deretter laste inn arbeidsflatefilen i MPLAB.*Float to string -rutinen er en ressurssvin. For å komme rundt tilkoblingsproblemet kalles USB -servicerutinen på forskjellige punkter i float2string -rutinen. Dette vil best løses ved å betjene USB -periferienheten ved en avbrudd. Jeg brukte hacken slik at fastvaren holdt seg så nær referanseversjonen som mulig.

Trinn 3: Testing av enheten

Tester enheten
Tester enheten
Tester enheten
Tester enheten
Tester enheten
Tester enheten

Instruksjonene er for Windows, men enheten kan kobles til alt som har CDC -serielle portemuleringsdrivere.

Programmer enheten med fastvaren. Alle konfigurasjonsbiter bør være riktig angitt i fastvaren. Koble enheten til en USB -port. Windows oppdager det og ber deg velge en driver. FORSIKTIG Å KLIKKE PÅ “BROWSE FOR CUSTOM DRIVER”. Naviger til plasseringen av.inf-filen som følger med prosjektarkivet (driver-win2k_winxp). Windows bruker denne filen til å installere enheten. *En merknad om CDC -driveren - CDC -serieportemuleringsdriveren er inkludert i Windows.. Inf -filen (levert av Microchip) ber Windows ganske enkelt om å koble disse driverne til enheten. Gjør følgende for å finne ut hvilken COM-port enheten ble tildelt: Gå til kontrollpanelet (start-> innstillinger-> kontrollpanel) Dobbeltklikk på "system" Klikk på "maskinvare" -fanen. Klikk på "enhetsbehandling" Klikk på "+" ved siden av porter. En liste over COM -porter på systemet vises. Jeg har sett at enheten vises som COM 3 og 4, men den vil variere fra system til system. Hvis det ikke er åpenbart hvilken port som er ny, kan du prøve dette: Koble enheten fra USB -porten. En av havnene vil forsvinne. Dette er enhetens COM -port #. Koble enheten til igjen, porten vil dukke opp igjen. Den lille VB -applikasjonen (inkludert kilde) kan brukes til å teste enheten. Skriv inn kommandoen du vil sende, klikk "Start". Svaret vises i vinduet.

Trinn 4: Hva annet kan det gjøre?

Hva annet kan det gjøre?
Hva annet kan det gjøre?

Dette demonstrasjonskortet er et godt utgangspunkt for en liten værstasjon i hjemmet: Legg til en HIH3160 fuktighetssensor, eller bytt ut den analoge temperatursensoren med Sensiron HT74 seriell temperatur- og fuktighetssensor med høy nøyaktighet. Legg til en Freescale MPX (a) 4115 trykksensor til måle barometrisk trykk. Vil du syndikere disse dataene til nettet? Inkludere det på ditt eget nettsted, se det på google earth eller få oppdateringer i RSS -siv? Se denne instruksjonen for å integrere denne enheten med syndicIT.com web -backend:

Anbefalt: