Inhoudsopgave:

USB-binnen-/buitenthermometer (of 'Mijn eerste USB-apparaat'): 4 stappen (met afbeeldingen)
USB-binnen-/buitenthermometer (of 'Mijn eerste USB-apparaat'): 4 stappen (met afbeeldingen)

Video: USB-binnen-/buitenthermometer (of 'Mijn eerste USB-apparaat'): 4 stappen (met afbeeldingen)

Video: USB-binnen-/buitenthermometer (of 'Mijn eerste USB-apparaat'): 4 stappen (met afbeeldingen)
Video: Hitte en kou vanaf 2022. Gas en stroom peperduur. Hoe blijft klimaatbeheersing in huis betaalbaar? 2024, Juli-
Anonim
USB-binnen-/buitenthermometer (of 'Mijn eerste USB-apparaat')
USB-binnen-/buitenthermometer (of 'Mijn eerste USB-apparaat')

Dit is een eenvoudig ontwerp dat de USB-randapparatuur op de PIC 18Fs demonstreert. Er zijn een aantal voorbeelden voor de 18F4550 40-pins chips online, dit ontwerp demonstreert de kleinere 18F2550 28-pins versie. De PCB maakt gebruik van onderdelen voor opbouwmontage, maar alle componenten zijn beschikbaar in versies met doorlopende gaten. Ik gebruik onderdelen voor opbouwmontage omdat het sneller is om het bord te maken zonder gaten te boren. Het eindresultaat is een klein USB-randapparaat dat de binnen- en buitentemperatuur meet. Gegevens zijn beschikbaar voor de pc via een virtuele seriële poort. In het voorbeeld worden temperatuursensoren gebruikt, maar er kunnen andere analoge sensoren worden toegevoegd. PSBekijk hier een live grafiek van de gegevens van mijn logger: https://www.syndicit.com/stream/ian/nieuwemarkt/indoor_temperature/?format= grafiek

Stap 1: Ontwerpoverzicht

Ontwerpoverzicht
Ontwerpoverzicht
Ontwerpoverzicht
Ontwerpoverzicht
Ontwerpoverzicht
Ontwerpoverzicht

Vereiste PIC-componenten

Deze USB-randapparatuur is gebaseerd op de 28-pins PIC 18F2550. Deze chip heeft alles wat nodig is voor een full speed USB-interface. Een 0.1uf condensator tussen voeding en aarde ontkoppelt de PIC van de voeding. Een 20MHz kristal (gebruikt om een 48MHz interne klok te genereren) en twee 27pf condensatoren. Een weerstand van 10K van voeding naar de MCLR-pin. Ik heb een 1n4148-equivalente diode tussen de weerstand en de voeding toegevoegd, zodat de 13 + volt die tijdens het programmeren op MCLR wordt geplaatst, andere componenten op de printplaat niet beschadigt. Een ICSP-header (5 pinnen) wordt gebruikt om het apparaat te programmeren en te debuggen. Vereiste USB-spul Een vrouwelijke USB-aansluiting in 'B'-stijl. 220nf-440nf capaciteit is vereist voor de interne USB-spanningsregelaar. Ik gebruik zonder probleem twee 0.1uf condensatoren (dezelfde als gebruikt voor ontkoppeling). Een LED met een stroombegrenzende weerstand van 330 ohm wordt gebruikt om de USB-verbindingsstatus weer te geven. Benodigde sensor spullen Ik gebruikte de microchip TC1047A temperatuursensor als de binnentemperatuursensor. Het is fysiek aan het bord gesoldeerd - hierdoor wordt het een paar graden warmer dan kamertemperatuur. Een header wordt gebruikt om een buitentemperatuursensor aan te sluiten (TO-92 versie van TC1047a). Een extra 0.1uf condensator helpt om een lange draad te ontkoppelen van de rest van het bord. De USB-spanningsniveaus zijn niet consistent genoeg om de temperatuur van de analoge sensoren nauwkeurig te meten en te berekenen. Er wordt een externe spanningsreferentie (MCP1525, 2,5 volt) gebruikt. De spanningsreferentie vereist een condensator op de uitgang van 1uf tot 10uf. Zonder deze condensator werkt de spanningsreferentie niet.

Stap 2: Firmware

De firmware gebruikt de CDC USB-klasse om een seriële poort te emuleren. Het apparaat wordt weergegeven als een virtuele com-poort op een pc. De firmware is onderverdeeld in drie secties: 1. Het USB-stuurprogramma zorgt voor het inventariseren van het apparaat op een pc en het emuleren van een COM-poort. 2. Een serviceroutine leest afwisselend de temperatuurwaarden en zet ze om naar een leesbaar formaat. Door beide bewerkingen tegelijk uit te voeren, verloor het USB-apparaat de verbinding met de pc (tijdroven). Het omzetten van de drijvende-kommawaarden naar een string in de servicecyclus na de conversie loste het verbindingsprobleem op.* 3. Ten slotte ontvangt een hoofdroutine bytes die vanaf de pc zijn verzonden en retourneert de gevraagde metingen. Meerdere maten worden gescheiden door een komma, regels worden afgesloten met een null-teken (hex 0x00) De demonstratiefirmware accepteert de volgende opdrachten: Hex-waarde Retourneert0x00 Binnentemperatuur (boordsensor)0x01 Buitentemperatuur (externe header)0x02 Beide temperaturen (komma gescheiden)Temperatuur wordt berekend op basis van de 2,5 volt referentie en de Microchip TC1047A offset en helling. Andere temperatuursensoren kunnen andere kenmerken hebben. De datasheet van de TC1047A is hier beschikbaar: https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf De firmware is geschreven in MPLAB met de demonstratie PIC C18-compiler. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011De feitelijke USB-firmware wordt geleverd door Microchip. De originele omgeving is hier beschikbaar: https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021631Om de firmware te bewerken: pak de volledige directorystructuur van de bron uit naar uw hoofddirectory (c:\MCHPFSUSB). U kunt dan het werkruimtebestand in MPLAB laden. *De float to string-routine is een resource hog. Om het verbindingsprobleem te omzeilen, wordt de USB-serviceroutine op verschillende punten in de float2string-routine aangeroepen. Dit kan het beste worden opgelost door het USB-randapparaat tijdens een onderbreking te onderhouden. Ik gebruikte de hack zodat de firmware zo dicht mogelijk bij de referentieversie bleef.

Stap 3: Het apparaat testen

Het apparaat testen
Het apparaat testen
Het apparaat testen
Het apparaat testen
Het apparaat testen
Het apparaat testen

De instructies zijn voor Windows, maar het apparaat kan worden aangesloten op alles met CDC-stuurprogramma's voor seriële poortemulatie.

Programmeer het apparaat met de firmware. Alle configuratiebits moeten correct zijn ingesteld in de firmware. Sluit het apparaat aan op een USB-poort. Windows zal het detecteren en u vragen een stuurprogramma te kiezen. KLIK ZEKER OP ‘BROWSE FOR CUSTOM DRIVER’. Navigeer naar de locatie van het.inf-bestand dat is meegeleverd met het projectarchief (driver-win2k_winxp). Windows zal dit bestand gebruiken om het apparaat te installeren. *Een opmerking over het CDC-stuurprogramma: het CDC-stuurprogramma voor seriële poortemulatie wordt bij Windows geleverd. Het.inf-bestand (geleverd door Microchip) vertelt Windows eenvoudig om deze stuurprogramma's op het apparaat aan te sluiten. Om erachter te komen aan welke COM-poort het apparaat is toegewezen, doet u het volgende: Ga naar het configuratiescherm (start->instellingen->configuratiescherm) Dubbelklik op 'systeem' Klik op het tabblad 'hardware'. Klik op ‘apparaatbeheer’ Klik op de ‘+’ naast poorten Er wordt een lijst met COM-poorten op het systeem weergegeven. Ik heb het apparaat zien verschijnen als COM 3 en 4, maar het zal per systeem verschillen. Als het niet duidelijk is welke poort nieuw is, probeer dan dit: Koppel het apparaat los van de USB-poort. Een van de poorten zal verdwijnen. Dit is de COM-poort # van het apparaat. Sluit het apparaat weer aan, de poort verschijnt weer. De kleine VB-applicatie (bron meegeleverd) kan worden gebruikt om het apparaat te testen. Voer de opdracht in om te verzenden, klik op 'Start'. Het antwoord wordt in het venster weergegeven.

Stap 4: Wat kan het nog meer doen?

Wat kan het nog meer doen?
Wat kan het nog meer doen?

Dit demonstratiebord is een goed startpunt voor een klein weerstation voor thuis: voeg een HIH3160-vochtigheidssensor toe, of vervang de analoge temperatuursensor door de Sensiron HT74 zeer nauwkeurige seriële temperatuur- en vochtigheidssensor. Voeg een Freescale MPX(a)4115-druksensor toe aan meet de luchtdruk. Wilt u deze gegevens naar het web sturen? Opnemen in uw eigen website, bekijken in google earth, of updates krijgen in uw RSS-reed? Bekijk deze instructie over het integreren van dit apparaat met de webbackend van syndicIT.com:

Aanbevolen: