Sommario:
- Passaggio 1: panoramica del design
- Passaggio 2: firmware
- Passaggio 3: test del dispositivo
- Passaggio 4: cos'altro può fare?
Video: Termometro USB per interni/esterni (o "Il mio primo dispositivo USB"): 4 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questo è un design semplice che mostra la periferica USB sui PIC 18F. Ci sono un sacco di esempi per i chip 18F4550 a 40 pin online, questo design dimostra la versione più piccola 18F2550 a 28 pin. Il PCB utilizza parti a montaggio superficiale, ma tutti i componenti sono disponibili in versioni con foro passante. Uso parti a montaggio superficiale perché è più veloce realizzare la scheda senza praticare fori. Il risultato finale è una piccola periferica USB che misura la temperatura interna/esterna. I dati sono disponibili al PC tramite una porta seriale virtuale. Nell'esempio vengono utilizzati i sensori di temperatura, ma è possibile aggiungere altri sensori analogici. grafico
Passaggio 1: panoramica del design
Componenti PIC richiesti
Questa periferica USB è basata sul PIC 18F2550 a 28 pin. Questo chip ha tutto il necessario per un'interfaccia USB a piena velocità. Un condensatore da 0,1 uf tra alimentazione e massa disaccoppia il PIC dall'alimentatore. Un cristallo da 20 MHz (usato per generare un clock interno da 48 MHz) e due condensatori da 27 pf. Un resistore da 10K dall'alimentazione al pin MCLR. Ho aggiunto un diodo equivalente 1n4148 tra il resistore e l'alimentazione in modo che i 13+volt posti su MCLR durante la programmazione non danneggino altri componenti sul circuito. Un'intestazione ICSP (5 pin) viene utilizzata per programmare ed eseguire il debug del dispositivo. Materiale USB richiesto Una presa USB tipo "B" femmina. È necessaria una capacità di 220nf-440nf per il regolatore di tensione USB interno. Uso due condensatori da 0,1 uf (gli stessi usati per il disaccoppiamento) senza problemi. Un LED con resistenza di limitazione della corrente da 330 ohm viene utilizzato per visualizzare lo stato della connessione USB. Materiale richiesto per il sensore Ho usato il sensore di temperatura a microchip TC1047A come sensore di temperatura interna. È fisicamente saldato alla scheda - questo fa sì che si scaldi di qualche grado in più rispetto alla temperatura ambiente. Un collettore viene utilizzato per collegare una sonda di temperatura esterna (versione TO-92 di TC1047a). Un ulteriore condensatore da 0,1 uf aiuta a disaccoppiare un lungo cavo dal resto della scheda. I livelli di tensione USB non sono sufficientemente coerenti per misurare e calcolare con precisione la temperatura dai sensori analogici. Viene utilizzato un riferimento di tensione esterno (MCP1525, 2,5 volt). Il riferimento di tensione richiede un condensatore sull'uscita da 1uf a 10uf. Senza questo condensatore il riferimento di tensione non funzionerà.
Passaggio 2: firmware
Il firmware utilizza la classe USB CDC per emulare una porta seriale. Il dispositivo verrà visualizzato come una porta COM virtuale su un PC. Il firmware è suddiviso in tre sezioni:1. Il driver USB si occupa di enumerare il dispositivo su un PC ed emulare una porta COM. 2. Una routine di servizio legge alternativamente i valori di temperatura e li converte in un formato leggibile. L'esecuzione di entrambe queste operazioni contemporaneamente ha causato l'interruzione della connessione del dispositivo USB al PC (time hogging). La conversione dei valori in virgola mobile in una stringa nel ciclo di servizio successivo alla conversione ha risolto il problema di connettività.* 3. Infine, una routine principale riceve i byte inviati dal PC e restituisce le misurazioni richieste. Più misure sono separate da una virgola, le righe sono terminate con un carattere nullo (hex 0x00)Il firmware dimostrativo accetta i seguenti comandi:Valore esadecimale Restituisce0x00 Temperatura interna (sensore integrato)0x01 Temperatura esterna (intestazione esterna)0x02 Entrambe le temperature (virgola separati) La temperatura viene calcolata in base al riferimento di 2,5 volt e all'offset e alla pendenza del Microchip TC1047A. Altri sensori di temperatura possono avere caratteristiche diverse. Il datasheet del TC1047A è disponibile qui:https://ww1.microchip.com/downloads/en/DeviceDoc/21498c.pdf Il firmware è scritto in MPLAB con il compilatore dimostrativo PIC C18. https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011Il firmware USB effettivo è fornito da Microchip. L'ambiente originale è disponibile qui:https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021631Per modificare il firmware: estrarre l'intera struttura della directory del sorgente nella directory principale (c:\MCHPFSUSB). È quindi possibile caricare il file dell'area di lavoro in MPLAB.*La routine da float a string è un divoratore di risorse. Per aggirare il problema di connettività, la routine del servizio USB viene chiamata in vari punti della routine float2string. Questo sarebbe meglio risolto riparando la periferica USB su un'interruzione. Ho usato l'hack in modo che il firmware rimanesse il più vicino possibile alla versione di riferimento.
Passaggio 3: test del dispositivo
Le istruzioni sono per Windows, ma il dispositivo può essere collegato a qualsiasi dispositivo dotato di driver di emulazione della porta seriale CDC.
Programmare il dispositivo con il firmware. Tutti i bit di configurazione dovrebbero essere impostati correttamente nel firmware. Collega il dispositivo a una porta USB. Windows lo rileverà e ti chiederà di scegliere un driver. ASSICURARSI DI FARE CLIC SU "Cerca PER DRIVER PERSONALIZZATO". Passare alla posizione del file.inf incluso nell'archivio del progetto (driver-win2k_winxp). Windows utilizzerà questo file per installare il dispositivo. *Una nota sul driver CDC: il driver di emulazione della porta seriale CDC è incluso in Windows. Il file.inf (fornito da Microchip) dice semplicemente a Windows di connettere questi driver al dispositivo. Per scoprire quale porta COM è stata assegnata al dispositivo, procedi come segue: Vai al pannello di controllo (start->impostazioni->pannello di controllo) Fai doppio clic su "Sistema" Fai clic sulla scheda "Hardware". Fare clic su "Gestione dispositivi" Fare clic su "+" accanto alle porte Viene visualizzato un elenco di porte COM sul sistema. Ho visto il dispositivo presentarsi come COM 3 e 4, ma varierà in base al sistema. Se non è ovvio quale porta è nuova, prova questo: scollega il dispositivo dalla porta USB. Una delle porte scomparirà. Questa è la porta COM del dispositivo #. Ricollegare il dispositivo, la porta riapparirà. La piccola applicazione VB (sorgente inclusa) può essere utilizzata per testare il dispositivo. Immettere il comando da inviare, fare clic su "Avvia". La risposta verrà mostrata nella finestra.
Passaggio 4: cos'altro può fare?
Questa scheda dimostrativa è un buon punto di partenza per una piccola stazione meteorologica domestica: aggiungi un sensore di umidità HIH3160 o sostituisci il sensore di temperatura analogico con il sensore di temperatura e umidità seriale ad alta precisione Sensiron HT74. Aggiungi un sensore di pressione Freescale MPX(a)4115 a misurare la pressione barometrica. Vuoi condividere questi dati sul web? Includilo nel tuo sito web, visualizzalo in Google Earth o ricevi aggiornamenti nel tuo feed RSS? Vedi questa istruzione sull'integrazione di questo dispositivo con il backend web syndicIT.com:
Consigliato:
Il mio primo sintetizzatore: 29 passaggi (con immagini)
Il mio primo sintetizzatore: Il sintetizzatore per bambini è nato mentre sedevo curvo su un groviglio di cavi del sintetizzatore. Il mio amico Oliver si è avvicinato, ha valutato la situazione e ha detto: "Sai che sei riuscito a creare il giocattolo per bambini più complicato del mondo". Mentre la mia prima r
Sistema di giardinaggio automatizzato basato su Raspberry Pi per esterni o interni - MudPi: 16 passaggi (con immagini)
Sistema di giardinaggio automatizzato basato su Raspberry Pi per esterni o interni - MudPi: ti piace il giardinaggio ma non riesci a trovare il tempo per mantenerlo? Forse hai delle piante d'appartamento che sembrano un po' assetate o stai cercando un modo per automatizzare la tua coltura idroponica? In questo progetto risolveremo questi problemi e impareremo le basi di
Il mio dispositivo IoT - Primo relè: 5 passaggi
Il mio dispositivo IoT - Primo relè: in questa istruzione controlleremo un relè di Blynk. Accensione e spegnimento dall'applicazione.ATTENZIONE!!!! Assicurati di sapere cosa stai facendo se intendi collegare il tuo relè alla rete elettrica!!! ATTENZIONE
Il mio primo dispositivo IoT: 14 passaggi
Il mio primo dispositivo IoT: in questo Instructable impareremo come installare Arduino IDE per il mio primo dispositivo IoT in modo che alla fine possiamo eseguire il codice arduino su di esso e controllarlo dal tuo telefono cellulare
Antenna a farfalla per interni/esterni: 5 passaggi
Antenna a farfalla per interni / esterni: sono sempre stato affascinato dall'antenna a farfalla standard e ho scoperto che avevano buone proprietà. quindi quando ero a RadioShack qualche tempo fa e ne ho visti 2 sullo scaffale per $ 5 ciascuno, non ho potuto trattenermi e ho aggiunto 2 alla mia collezione facendo 3