Questo circuito è una semplice piattaforma didattica pensata per sperimentare l'utilizzo del bus USB con il PIC18. Il circuito è progettato per rendere semplice sia la connessione USB verso il PC, sia il collegamento di circuiti periferici utilizzando una breadboard, sia il debug e la programmazione attraverso il PICkit/ICD. Nella fotografia di apertura è mostrato collegato al PIC, ma non al PC.
Il circuito stampato include:
Il circuito è il terzo di un piccolo set di circuiti destinati all'apprendimento del PIC18. Gli altri due: PICdemo e PICdemo R2
A fondo pagina potete scaricare lo schema elettrico, il PCB ed il software di test ed esempio.
Il circuito è semplice: potrebbe essere realizzato senza particolari problemi direttamente su breadboard, prestando solo attenzione al disaccoppiamento delle alimentazione e, se intendete utilizzarlo, all'oscillatore quarzato, aspetti critici per questa applicazione. Per il connettore USB sono disponibili per meno di un euro comodi adattatori USB ↔ breaboard: li trovate su note piattaforme di aste on-line o nelle "fiere dell'elettronica".
Il circuito può essere alimentato tramite PICkit / ICD a 3,25 V, opzione comoda durante la programmazione ed il debug, oppure tramite il connettore USB.
In questo secondo caso è utilizzato un regolatore di tensione da 3.3 V, adatto a fornire al circuito e ad eventuali componenti esterni un centinaio di milliampere, purché all'interno delle caratteristiche termiche del regolatore che non può essere meccanicamente fornito di dissipatore. Il componente utilizzato può essere sostituito da altri regolatori fissi con le seguenti caratteristiche:
Il LED D5 indica semplicemente la presenza dell'alimentazione.
I quattro DIP switch SW1 non sono collegati al microcontrollore, ma occorre utilizzare quattro cavetti femmina attraverso il connettore P6 (nella fotografia di apertura: blu, viola, grigio, bianco)
Possono essere utilizzati per fornire ingressi digitali al PIC oppure ad altri circuiti presenti sulla breadboard. Per il corretto funzionamento è necessario utilizzare esternamente quattro resistenze di pull-up oppure, opzione consigliata con il PIC, usare PORTB configurata le resistenze di pull-up interne (weak resistor). Nota: le quattro resistenze presenti sul circuito stampato non sono adatte a fungere da pull-up e hanno il solo scopo di evitare danni nel caso di errata configurazione di PORTB come uscita.
Se un interruttore è chiuso, cioè collegato a massa, viene letto uno zero logico, altrimenti un uno logico.
Sono presenti 4 LED, ciascuno in serie ad una resistenza, non collegati direttamente al microcontrollore. Anche in questo caso per l'utilizzo sono richiesti quattro cavetti femmina oppure maschio/femmina, da collegare a P5 (nella fotografia di apertura: arancio, giallo, verde, blu).
Il potenziometro permette di fornire una tensione compresa tra massa e alimentazione, tipicamente da collegare ad un ingresso analogico del PIC. Non è collegato direttamente al PIC, ma serve utilizzare un cavetto tra P4 e RC7 (nella fotografia di apertura è quello verde singolo).
La resistenza R5 ha il solo scopo di evitare danni nel caso di errato collegamento. La sua presenza ha un impatto minimo sul funzionamento dell'ADC.
I connettori P1 e J2 rendono disponibili quasi tutti i pin del PIC18; sono stati pensati per il collegamento diretto alla breadboard e quindi vanno montati dal lato saldature, cioè "sotto". In particolare i due pin di alimentazione P1 permettono di portare l'alimentazione direttamente sui "binari" superiori della breadboard, in genere indicati da due linee rossa (+) e blu (-); attenzione a non utilizzare la breadboard "al contrario", invertendo i due colori. Se possibile, è meglio utilizzare pin pin più lunghi del normale, di 20.25 mm.
I nomi dei pin sono riportati sulla serigrafia; non vi sono riferimenti alla numerazione fisica dei pin del microcontrollore.
Occorre osservare che i due pin RA6 e RA7 possono essere utilizzati per il collegamento opzionale del quarzo. In questo caso è assolutamente necessario non collegare nulla ai corrispondenti pin della breadboard; potrebbe anzi essere consigliato evitare del tutto la saldatura del due pin corrispondenti del connettore J2.
Questo connettore, ad angolo e saldato al di sotto del circuito, permette di collegare il PICkit2 o il PICkit 3 al microcontrollore per effettuare la programmazione ed il debug del codice.
Tale connettore permette di collegare un circuito stampato esterno. Esso rende disponibili oltre alle alimentazioni, sei segnali di PORTB e PORTC, in particolare quelli usati dalle interfaccie I2C e SPI:
Al momento non ho pubblicato applicazioni hardware o software che ne fanno uso, ma il connettore è stato testato con successo con i moduli di ricetrasmissione radio nRF24L01+.
Questo connettore mini USB permette lo scambio di dati con il PC e l'alimentazione del circuito nel caso di assenza del PICkit.
Il quarzo può essere utilizzato allo scopo di garantire una frequenza di clock ad alta precisione necessaria all'interfaccia USB; deve essere necessariamente di 12 MHz. Con il PIC18(L)F25K50 l'uso del quarzo è facoltativo e potrebbe essere utile non saldarlo per guadagnare due pin e risparmiare qualche centesimo di euro sul costo finale.
La scelta della capacità dei due condensatori C3 e C4 (nominalmente 22 pF) è solo indicativa e potrebbe essere non corretta con alcuni modelli di quarzo, soprattutto nelle condizioni di temperatura o alimentazione estreme. Occorre inoltre tener presente che la presenza di due pin collegati alla breadboard aggiunge una capacità di qualche picofarad, difficilmente controllabile. Al fine di ridurre i problemi nell'uso del quarzo è opportuno:
A fondo pagina è riportato un codice dimostrativo che permette una sorta di auto-test della scheda utilizzando USB in modalità CDC (communications device class, in pratica è una emulazione delle antiche porte seriali). Sono inclusi anche alcuni file copiati dalle Microchip Libraries for Applications (MLA), nella versione più recente disponibile al momento della stesura di questa pagina (ottobre 2015). A meno di grossi cambiamenti, è consigliabile sostituirle con altre più recenti (basta copiare i file nella cartella, sovrascrivendo quelli esistenti)
Per l'utilizzo è necessario:
I comandi accettati:
Di seguito uno screen-shot di esempio (CuteCom in ambiente Gnome, Debian Jessie)
Nella parte bassa sono mostrati i comandi impartiti (accensione del primo LED; accensione dei primi due LED e spegnimento dei due successivi, visualizzazione della versione, dello stato degli switch e della tensione misurata dall'ADC); nella parte superiore l'output trasmesso dal PIC.
U1 | PIC18F25K50 (DIP 28 pin) | In alternativa e previa modifica del software: PIC18LF25K50 oppure PIC18F27J53 |
U2 | LP2950/3.3 (TO-92) | O altro regolatore simile (vedi testo) |
C1, C2 | 100 nF * | |
C3,C4 | 22 pF | Necessari solo in presenza del quarzo |
C5, C7 | 10 µF elettrolitico * | |
R1, R2, R3, R4, R5, R6, R7,R8, R9 | 1 KΩ* | |
R11 | 27 KΩ* | Microchip consiglia tra 10K e 40K |
P1 | 2x1 Pin Header, passo 2,54 mm | Lunghezza consigliata: 20 mm |
P2 | 2x4 Pine Header femmina, passo 2,54 mm | Opzionale |
P4 | Pin Header singolo | |
P5, P6 | 4x1 Pin Header, passo 2,54 mm | |
J2 | 6x1 Pin Header ad angolo, passo 2,54 mm | Vedi testo |
J2 | 19x1 Pin Header, passo 2,54 mm | Lunghezza consigliata: 20 mm |
Y1 | Quarzo 12 MHz (hc-49s) | Con il PIC18xF25K50 è opzionale (ved testo) |
SW1 | DIP switch x4 | |
D1, D2, D3, D4 | LED 3 mm | |
D5 | LED 5 mm | |
RV1 | Trimmer multigiro, 10 KΩ * | |
CON1 | Connettore mini USB |
I valori dei componenti passivi indicati con un * sono non critici.
Il circuito stampato misura circa 50 mm x 50 mm, è a doppia faccia con fori metallizzati. Di seguito il lato componenti (top) e quello saldature (bottom)
Il PCB è stato realizzato con KiCad. Nel file compresso che trovate a fondo pagina, è contenuto tutto quanto necessario alla sua realizzazione e all'eventuale modifica
Per realizzare questo circuito necessario disporre dei seguenti file o documenti:
Ultima modifica di questa pagina: 3 febbraio 2017
PIC-USB - Versione 0.4 - Preliminare - Ottobre 2015
Copyright © 2015, Vincenzo Villa - https://www.vincenzov.net
PIC-USB di Vincenzo Villa è distribuito con Licenza Creative Commons Attribuzione 4.0 Internazionale