Università degli Studi di Parma Facoltà di Ingegneria Corso di Costruzioni Elettroniche A - A.A. 2006/2007 Docente: Giovanni Franco e mail giovanni.franco12@tin.it Titolo: "Realizzazione su PCB di un programmatore ICD2 per microcontrollori PIC " 1
Sommario: 1. Introduzione 2. Descrizione del Progetto 2.1 - Boost Converter 2.2 - Modulo USB 2.3 - Microcontrollore 2.4 - PCB 3. Costi di progetto 2
Cap. 1 - Introduzione I dispositivi chiamati programmatori sono tradizionalmente usati per caricare il codice macchina in un microcontrollore. Attualmente, molti dei PIC Microchip (fig. 1) utilizzano ICSP (In Circuit Serial Programming) e/o LVP (Low Voltage Programming), che permettono di programmare il microcontrollore già posizionato in un circuito. Figura 1: alcuni microcontrollori PIC Microchip Figura 2: connettore USB di tipo A La programmazione ICSP impiega due pin, clock e dati, mentre un segnale ad alto voltaggio (12V) passa sul pin Vpp/MCLR. [Low voltage programming dispenses with the high voltage, but reserves exclusive use of an I/O pin and can therefore be disabled to recover the pin for other uses (once disabled it can only be reenabled using high voltage programming).]. Ci sono molti tipi di programmatori per microntrollori PIC, dai più semplici che permettono di scaricare il codice direttamente da un computer (ma non tutti i PIC supportano questa funzionalità), a quelli più intelligenti e complessi che usano essi stessi un microcontrollore PIC pre-programmato per configurare il PIC che necessita del codice macchina; alcuni PIC possono sfruttare anche un auto-programmazione (scrivono direttamente sulla propria memoria). Tuttavia, i vantaggi nell usare un programmatore per caricare il programma utente sono notevoli, in termini di velocità di programmazione, immediata possibilità di eseguire il programma e possibilità di debug usando lo stesso cavo. Per caricare il programma utente si possono sfruttare interfacce quali RS-232 o USB e il nostro progetto comprende infatti un modulo USB per la programmazione. Lo standard USB in particolare prevede che il connettore porti anche un segnale per alimentare le periferiche a basso consumo (le periferiche che hanno richieste energetiche elevate vanno alimentate a parte). I limiti energetici dello standard vanno seguiti scrupolosamente pena il probabile danneggiamento del gestore, dato che lo standard USB non prevede nelle specifiche minime la disconnessione in caso di sovraccarico. Inoltre, il disegno dell'usb è stato pensato per consentire un semplice inserimento e rimozione e le porte USB, oltre a prevedere la funzionalità di Plug and Play, supportano anche i dispositivi hot swap quindi, se il sistema operativo lo consente, permettono la rimozione a caldo e il reinserimento delle periferiche senza dover riavviare il computer. Lo standard USB nella versione 2.0 raggiunge una velocità di trasferimento massima di 60 Mbyte per secondo (480 Mbits/s) mentre lo standard 1.0 dell'usb supporta collegamenti a solo 1,5 Mbit/s, velocità adeguata per mouse, tastiere e dispositivi lenti. Le specifiche dell'usb stabiliscono due tipi di connettori per collegare i dispositivi, il connettore A (fig.2) e B ma molti produttori, cercando di ridurre le dimensioni dei dispositivi, hanno deciso di creare connettori più piccoli di quelli standard. Cap. 2 - Descrizione del Progetto La prima parte del lavoro di progetto consiste nell organizzare e riordinare gli schemi forniti nei tre sottosistemi: boost converter, microcontrollore e interfaccia USB, sfruttando il programma Capture del pacchetto Orcad. A partire dunque da schemi elettrici noti per la realizzazione di un programmatore ICD2 con interfaccia USB (fig. 3) e dagli schematici di Capture messi a disposizione, possiamo dunque modificare la disposizione dei vari elementi che compongono i tre sottosistemi del progetto e ottenere la struttura voluta (figura 4), che vedremo in dettaglio. 3
Figura 3 Uno schema di ICD2 con interfaccia USB Cap. 2.1 Boost Converter Figura 4 Divisone del progetto nei tre sistemi che lo compongono Il boost converter utilizzato per l alimentazione della scheda è un MC34063A della ST. L alimentazione in questo circuito è fornita dal modulo USB. Un boost converter è un convertitore DC/DC di potenza, fa parte della classe dei convertitori che operano in maniera switching e contiene dispositivi a semiconduttore che operano appunto come interruttori. Per aumentare le prestazioni del convertitore vi si aggiungo dei filtri, induttori e condensatori, in rapporto anche all applicazione voluta. Il componente assorbe staticamente una bassa corrente (2.5mA), opera fra i 3V e i 40V a una frequenza di 100KHz ed è dotato di limitazione di corrente; dal datasheet del componente rileviamo inoltre che è in grado di operare in un range di temperatura da -40 a 85 C, sopporta un voltaggio massimo di 50 Volt regolando una tensione stabile a 12.5V e un ripple massimo di circa 200mV a seconda delle applicazioni. 4
Figura 5 Boost converter Cap. 2.2 USB Il modulo USB del progetto è utilizzato per l interfacciamento del programmatore con un PC e per fornire l alimentazione alla scheda (si faccia sempre riferimento allo schema di figura 4). Tale modulo impiega un chip FT232BL USB UART (USB Serial, fig. 6) le cui caratteristiche sono le seguenti: possibilità di interfacciarsi con logica a 5V e 3.3V regolatore integrato a 3.3V per I/O USB circuito di Power-On-Reset integrato PLL 6MHz 48Mhz integrato USB 1.1 and USB 2.0 compatibile, utilizzabile con la maggior parte dei sistemi operativi Windows e Linux Per la comunicazione con il microcontrollore sfrutta un interfaccia seriale RS232, come si può vedere dallo schema di figura 9. Il chip necessita esternamente di una memoria EEPROM (Microwire Serial EEPROM) CAT93C66 da 4K-Bit (fig.7) e di un oscillatore ceramico piezoelettrico a 6MHz. In particolare, la memoria EEPROM può essere configurata sia con registri a 16bit che 8bit. Ogni registro può essere scritto o letto serialmente usando il pin DI (data in) o DO (data out). Questa memoria è stata realizzata con una tecnologia EEPROM CMOS floating gate e può supportare 1,000,000 di cicli lettura/scrittura, mantenendo i dati memorizzati per circa 100 anni. Figura 6 Chip USB FT232BL Figura 7 EEPROM (SOIC package) Figura 8 Connettore USB Il modulo è poi collegato ad un connettore USB del tipo di figura 8, impiegato nella maggior parte dei programmatori. Alla fine si ottiene lo schema di figura 9. 5
Figura 9 Modulo USB Cap. 2.3 Microcontrollore Il microcontrollore impiegato in questo progetto è un PIC16F876P che utilizza un clock esterno a 20MHz. Questo dispositivo è dotato di 8K x 14 words di Flash Program Memory, 368 x 8 bytes di Data Memory (RAM), 256 x 8 bytes di EEPROM Data Memory; può sopportare 100,000 cicli di cancellazione / scrittura sulla Flash program memory e 1,000,000 di cicli scrittura / cancellazione sulla Data EEPROM, che può mantenere il dato per più di 40 anni. Il PIC16F876 è inoltre Self-reprogrammable (sotto controllo software) e consente la programmazione In-Circuit Serial Programming (ICSP ) e l In-Circuit Debug (ICD) tramite due pin. Sfrutta tecnologia CMOS e può operare in un vasto range di temperatura con consumi ridotti. Il pinout del PIC è mostrato in figura 10, parte della sua struttura interna in figura 11. Figura 10 PIC16F876 6
Figura 11 Struttura interna PIC16F876 Figura 12 Caratteristiche della famiglia PIC16F87 Come si può vedere dallo schematico del modulo di figura 14 ci sono alcuni elementi attivi su cui vale la pena soffermarsi; si tratta di transistor NPN general purpose BC847 (figura 13) in grado di operare a una corrente di collettore massima di 100 ma e a una tensione massima collettore emettitore di 65 V. Figura 13 Transistor BC847 7
Infine notiamo, assieme ad altri elementi passivi, dei LED utili come verifica della funzionalità o per debuggare e il connettore per la programmazione (header 5); il sotto-sistema del microcontrollore così costruito è quello mostrato in figura 14. Cap. 2.4 PCB Figura 14 Modulo microcontrollore PIC16F87 Realizziamo il progetto su PCB utilizzando il programma Orcad Layout: dopo aver riunito i vari schematici di cui sopra, si procede creando la netlist dei componenti e relativi collegamenti che costituiranno l input del software per lo sbroglio e il routing degli stessi. Il circuito sarà realizzato con una fresatrice e perciò si potranno usare le facce superficiali della piastra sia per il posizionamento dei dispositivi sia per le piste di segnale e alimentazione. Quindi si dovranno utilizzare due layer (top e bottom) per la definizione dei collegamenti e il piazzamento dei componenti, utilizzando connessioni microstrip. Prima di procedere alla fase di place and route è tuttavia necessario disporre dei file di libreria dove sono contenuti i footprint dei vari componenti che costituiscono il progetto: tali file ci vengono forniti, ma è spesso possibile reperire gli stessi sulla rete, essendo quello di Orcad lo standard più comune per la progettazione elettronica (alternativamente si possono importare i footprint da PCB già esistenti, sempre in formato Orcad Layout). Una volta caricati i footprint e il file generato da Orcad Capture si può dunque ultimare la fase progettuale; definiamo innanzitutto un primo bordo di scheda, che potremo poi minimizzare. Grazie alle potenzialità del pacchetto Orcad possibile piazzare i componenti selezionandoli direttamente dagli schematici di Capture: ciò facilita notevolmente l ottimizzazione della disposizione dei sottosistemi (alimentazione, microcontrollore, modulo USB), per i quali possiamo prima definire le connessioni interne (ciò fra i loro vai elementi costitutivi) e poi andare a disporre l intero blocco in una zona definita. In questo modo la fase di routing fra i vari blocchi si limiterà a connessioni come quelle di figura 4 e alle piste di alimentazione. Procedere in questo modo al posizionamento comporta però la non ottimizzazione a livello globale delle piste o dello spazio occupato, ma siccome semplifica notevolmente il procedimento abbiamo in un primo momento seguito questa impostazione e, al termine del posizionamento, abbiamo cercato di ottimizzare con spostamenti mirati lo spazio occupato. Terminata questa fase, si può passare alla definizione delle connessioni. Durante tale operazione si deve minimizzare l utilizzo di via, che andranno poi metallizzate complicando la fase di saldatura, e introducono 8
inoltre elementi parassiti. Si crea infine il piano di massa sul bottom layer a cui sono poi connesse le varie masse del circuito. Il risultato ottenuto è quello di figura 15: notiamo a partire dal basso, a sinistra il modulo di alimentazione, al centro il modulo PIC e a destra il modulo USB; i vari connettori (USB, programmazione) sono posti ai bordi della scheda. In conclusione, si cerca di ottimizzare il PCB così ottenuto, allargando, dove possibile le piste (in particolare quelle di alimentazione), eliminando i possibili errori introdotti e segnalati dal software (distanza minima fra le piste e i componenti, errori di piazzamento, ecc ) ed infine compattando l intera scheda, cercando cioè di ridurre al minimo l occupazione d area (nel fare ciò si utilizzano ad esempio entrambi i layer per il piazzamento dei componenti). In figura 16 vengono evidenziate le connessioni (in rosso quelle sul top layer) del progetto. Alla fine si procede alla generazione di gerber files per la fresatura del PCB; sono necessari 4 file: oltre ai top layer e bottom layer (figure 17 e 18), holes (buchi dei vias e dei componenti) e keep out (contorno). Figura 15 Screenshot di Orcad Layout col PCB realizzato 9
Figura 16 PCB Figura 17 - Gerber Top Layer Figura 18 - Gerber Botom Layer Il PCB viene dunque fresato su FR4 ed è pronto per la metallizzazione delle vias e la saldatura dei componenti. Per prima cosa dunque metallizziamo tutte le vias presenti sulla scheda, avendo cura di verificare che non si sia creato alcun cortocircuito fra piste adiacenti (specialmente in quelle più vicine). Completata tale operazione si passa a saldare i componenti partendo da quelli SMD e dagli integrati; in questa fase ci scontriamo con alcuni problemi non previsti relativi ai footprint di alcuni componenti (come l induttanza di alimentazione o uno quarzi); in questi casi procediamo a saldature apposite oppure ripassando le piste vicine con un taglierino per garantire l isolamento. Ad esempio nel caso del quarzo del PIC era stato previsto un quarzo trough-hole, mentre noi abbiamo a disposizione un quarzo SMD; tuttavia sappiamo che il quarzo SMD è ricavato da quello trough-hole piegandogli i piedini; è sufficiente quindi raddrizzarne i piedini. Verifichiamo comunque anche in questa fase, la correttezza dei collegamenti prima di procedere alla saldatura di un nuovo componente. Si completa quindi la scheda saldando i connettori e gli altri componenti trough-hole. Il footprint del quarzo del chip USB era sbagliato, avevamo quindi a disposizione un componente molto più piccolo di quanto avessimo previsto in fase di layout. Abbiamo perciò collegato i pin del quarzo alle piazzole tramite cavi di collegamento (figura 19). 10
QUARZO A 6Mhz Figura 19: Collegamento realizzato per il quarzo a 6MHz Verifichiamo infine la corretta distribuzione delle alimentazioni, che potrebbe rappresentare l aspetto più critico per un possibile malfunzionamento del circuito. In questa fase riscontriamo purtroppo la presenza di un cortocircuito fra il piano di alimentazione di massa e cerchiamo di identificarne la causa, senza tuttavia trovarne l origine; potrebbe essere un errore di fresatura o della saldatura del chip USB, poiché le vias sono state saldate e controllate una ad una e il malfunzionamento è stato rilevato nel controllo successivo alla sua saldatura; ripassiamo le piste con un taglierino per ribadire l isolamento, ma il problema persiste. Procediamo comunque al completamento del circuito con la saldatura degli ultimi componenti. Il risultato finale del progetto è mostrato in figura 20 (lato top layer) e 21 (lato bottom layer). Figura 20: PIC ICD2 lato superiore (top) 11
Figura 21: PIC ICD2 lato inferiore (bottom) Cap. 3 Previsioni di costo Una prima analisi dei costi può essere effettuata tramite l elenco dei componenti necessari che ci viene fornito dal quale otteniamo una stima del costo di questi intorno ai 43 euro, considerando però l ordine di un singolo componente dal distributore (Farnell). I componenti più costosi sono ovviamente gli integrati, come il PIC (circa 9 euro), il chip USB (circa 6 euro), i resistori SMD, gli oscillatori e i connettori. A questi dovrebbero aggiungersi i costi di fresatura e saldatura. Per abbattere i costi dunque, si deve ottenere la migliore ottimizzazione possibile del PCB in termini di quantità di via, numero e passo delle connessioni e soprattutto area occupata. Ipotizzando poi di voler far realizzare la scheda da terzi, il costo ad essa associata varierebbe di molto in base al tempo di consegna e alla quantità di pezzi da ordinare, ovviamente fissate le dimensioni che per il nostro progetto sono circa 84*46mm. Una prima stima del costo di realizzazione di un PCB a doppia faccia come il nostro si può ricavare con una ricerca sulla rete: basandosi sui preventivi di MD (Millennium Dataware: http://www.mdsrl.it/catalog/ ), si può decidere inoltre se avere un PCB con Serigrafia su un lato e Solder Mask su entrambi, oppure un PCB semplice, come quello effettivamente da noi realizzato. I preventivi per i due diversi PCB sono mostrati nelle figure 22 (con Solder) e 23 (semplice): notiamo che il prezzo oscilla da un minimo di 28 euro per 2 pezzi in 11 giorni a quasi 2000 euro per 150 pezzi in 48 ore nel caso semplice, mentre molto più alto è il costo minimo nel caso PLUS (con Solder e serigrafia) anche in tempi lunghi. 12
Figura 22: preventivi per PCB con serigrafia e solder Figura 23: preventivi per PCB semplice 13