a
La home page di Lorenzo
Home

FidoCAD
    Introduzione
    FidoCAD Win
    FidoCAD FAQ
    FidoCAD sources

Elettronica
    Oscilloscopio
    Misurare la potenza
    CS low-cost
    SMD for dummies
    PIC16x84
    Propic2clone
    IR-displ

Software
    EZ Tunnel
    Varie

Varie
    Segnalare lo spam

Links
Forum
Guestbook
Contattami

Ritirare le truppe italiane dall'IRAQ:

Si

No

Risultati

Propic2 Clone

Versione documento: 0.2
Ultimo aggiornamento: 20/10/2002

 

Questa è una versione semplificata del propic2, un programmatore di PIC e EEPROM molto completo. Sul sito ufficiale potete trovare lo schema elettrico e la traccia del PCB doppia faccia; dato che a me i PCB doppia faccia fanno venire l'orticaria e che volevo aggiungere/togliere qualcosa, mi sono progettato un clone a singola faccia.

Premesse
Tutto l'occorrente
Qualche nota di montaggio
Software da abbinare al programmatore
Test del programmatore
Qualche rework (nel caso che abbiate problemi...)
FAQ
E per quanto riguarda lo zoccolo ZIF?

 

Premesse

Questo progettino ha avuto un successo superiore alle mie aspettative, mi arrivano quasi giornalmente delle e-mail che contengono domande o richieste su di esso. Sia per mia che per vostra comodità, vi esorto a leggere attentamente questa pagina (incluse le istruzioni per il test e le FAQ riportate verso la fine) prima di spedirmi dei messaggi privati; nel caso che abbiate un dubbio su qualcosa che non è spiegato qui, sarò più che lieto di rispondervi via e-mail oppure nel forum

 

Tutto l'occorrente

In questo pacchetto trovate tutto l'occorrente per costruire il circuito:

 

Qualche nota di montaggio

  • Rispetto alla versione ufficiale manca il supporto per il production mode, una modalità di programmazione "avanzata" più accurata che impone più cicli di programmazione a diverse tensioni. Dato che ho dei PIC programmati nel cosiddetto prototype mode (che sarebbe la modalità "a unico passaggio" supportata da questo clone come pure da qualsiasi altro programmatore per PIC) e che funzionano perfettamente da mesi o anni, presumo che il production mode per un hobbista sia del tutto superfluo.
  • Nella mia versione ho apportato anche qualche aggiunta/aggiustamento rispetto al circuito originale. Innanzi tutto il connettore parallelo è mappato correttamente, quindi si può usare una normale prolunga maschio-maschio per collegare il programmatore alla porta parallela (attenzione: è necessario utilizzare un connettore DB25 femmina! Usandone uno maschio tutti i piedini sarebbero invertiti, con scarso entusiasmo della porta parallela del vostro PC). Poi ho sostituito i 78L05 e 78L08 con i rispettivi modelli senza la L nel package TO220, perché scaldavano. Stesso discorso per lo zener, usatene un modello da 1 W. Infine ho inserito uno zoccoletto per la programmazione in-circuit; i piedini sono mappati nello stesso modo in cui lo erano nell'altro mio programmatore e in tutti i miei dispositivi che usano il PIC16x84: GND (pin 1), MCLR (pin 2), Clock (pin 3), Data (pin 4).
  • Per forare quasi tutte le piazzole è necessario usare una punta molto piccola, al massimo 0.8 mm ma è meglio da 0.7 mm. Fanno ovviamente eccezione i componenti con i reofori più grossi (il ponte di diodi, lo zener, il connettore DB25, gli stabilizzatori integrati) per i quali si deve usare una punta da 1 mm.
  • Le righe indicate sul lato delle serigrafie che vanno da una piazzola a un'altra sono collegamenti che potete fare con degli spezzoni di filo.

 

Software da abbinare al programmatore

Assieme al propic2 originale è fornito un omonimo programma che permette di utilizzarlo. È a pagamento, ha un'interfaccia abominevole e manda in crash sia Windows NT che Windows 2000 (almeno le versioni che ho provato io). Quindi vi consiglio caldamente di usare al suo posto IC-Prog. È gratuito, ha un'interfaccia utente anni luce superiore, supporta una valanga di programmatori di vari generi (non solo il propic2) e funziona anche sotto a Windows NT/2000. Un paio di note:

  • IC-Prog è un po' "scarso" nelle temporizzazioni. Non mi riferisco alla normale velocità di programmazione (che è impostabile) quanto ad esempio all'intervallo fisso e non configurabile che intercorre fra l'applicazione di 13V al piedino MCLR e l'inizio della lettura/programmazione. Qui da me ad esempio dava qualche problema in lettura, anche se mi è bastato accorciare il cavo parallelo (prima era molto lungo) per risolvere il problema. Se non funziona nemmeno così, provate anche a rimuovere il condensatore elettrolitico C8 da 1 µF; sospetto che il transitorio che provoca su Vcc attivi la funzione di power-on reset dei PIC, che normalmente preserva il funzionamento dei microcontrollori in presenza di fluttuazioni dell'alimentazione. Ignoro perché il progettista del propic2 abbia voluto mettere quella rete RC proprio lì; se volessi essere malizioso penserei che l'abbia fatto apposta in modo che il programmatore funzioni soltanto col suo software originale... 
  • Per sapere dove dovete mettere il PIC o la EEPROM che volete programmare, dovete usare il comando Device Position del menu View. Per orientare lo zoccolo del programmatore come lo zoccolo del disegno dovete girare la scheda in modo che il connettore DB25 punti verso di voi (se la scheda montasse lo zoccolo del disegno, la levetta si troverebbe sul lato interno); 
  • Ricordate che se volete usare IC-Prog sotto a Windows NT/2000 è necessario che: (1) Abbiate i privilegi di amministratore, o quantomeno quelli necessari per installare un driver (che è quasi sempre la stessa cosa); (2) Scarichiate il file icprog.sys che trovate sul sito, e lo copiate nella stessa directory dell'eseguibile; (3) Abilitiate il driver selezionando la casella Enable NT/2000 Driver nella scheda Misc della dialog di configurazione (menu Settings»Options).

 

Test del programmatore

Riporto una possibile procedura di "test" del programmatore, utile per verificare il suo corretto funzionamento. Questa è soltanto una scaletta di cose da verificare; se qualcosa va storto è comunque compito vostro trovare gli errori, quindi è necessario che abbiate un minimo di confidenza con l'elettronica.

  1. Innanzitutto è bene verificare che non ci siano corto circuiti o altri danni gravi. Alimentate il circuito senza collegarlo alla porta parallela, e verificate che il LED dell'alimentazione si accenda (è quello verde vicino agli stabilizzatori; gli altri due LED in questa fase non fanno ancora testo, quindi ignorateli). Se non si accende è necessario che ricontrolliate bene tutto il circuito prima di proseguire.
  2. Quando avrete avuto successo col punto 1, aprite IC-Prog e tramite la finestra di dialogo "Hardware Settings" configuratelo nel modo indicato qui a lato.
  3. Con IC-Prog in esecuzione, collegate il programmatore alla porta parallela e alimentatelo. A questo punto dovreste vedere il LED dell'alimentazione acceso; se non è così, scollegate immediatamente il circuito dalla parallela! È possibile che qualcosa stia andando in corto, e quindi è necessario che ricontrolliate il circuito prima di proseguire. Dato che al punto 1 il LED si accendeva, è probabile (ma non certo) che l'errore sia dalle parti del connettore DB25.
  4. Quando avrete avuto successo col punto 3, potete guardare lo stato degli altri due LED. In particolare, con IC-Prog in esecuzione e correttamente configurato, essi dovrebbero essere entrambi spenti. Se non è così, questo non è un problema "grave" (potete anche non scollegare il circuito dalla parallela) ma dovete comunque risolverlo prima di proseguire, perché altrimenti il programmatore non funzionerà. Una possibile causa di questo malfunzionamento potrebbe essere ad esempio un segnale della parallela non collegato bene, oppure una pista interrotta prima di arrivare a uno dei BJT.
  5. Quando avrete avuto successo col punto 4, sarà il momento di testare le funzioni del programmatore. Se avete fretta potete anche già fare delle prove con dei PIC o delle EEPROM, ma io vi consiglio di utilizzare la procedura che segue. Aprite la finestra di dialogo "Hardware Check" di IC-Prog; inizialmente non dovrebbe esserci nessuna casella spuntata, come nella figura qui a fianco. Provate a spuntare Enable MCLR: dovrebbe accendersi il LED rosso in basso a destra. Poi spuntate anche Enable VCC, e dovrebbe accendersi anche il LED verde in basso a sinistra. Se uno di questi due LED non si accende, è necessario che ricontrolliate il circuito prima di proseguire; le possibili cause di questo malfunzionamento sono simili a quelle del punto 4, quindi guardate tutto quello che c'è prima dei LED (collegamenti della porta parallela, 7407 e BJT).
  6. Con le caselle Enable MCLR e Enable VCC entrambe spuntate, provate a cliccare qualche volta su Enable Data Out: il suo stato dovrebbe essere seguito dalla casella Data In (quando è spuntata una è spuntata anche l'altra, e viceversa). Se ciò non succede, è probabile che la sezione del circuito malfunzionante sia quella che si occupa del Data In; il BJT che fa capo a questa sezione è T1, quello più vicino al connettore DB25.
  7. L'ultimo segnale rimasto senza verifica è il clock. Non ci sono metodi "immediati" per verificare il suo funzionamento; bisogna invece prendere il tester e controllare direttamente le tensioni sullo zoccolo del programmatore, così nel mentre potete dare un'occhiata anche agli altri segnali (il fatto che le verifiche ai punti 5 e 6 abbiano dato esito positivo non garantisce che le piste che portano i segnali allo zoccolo non siano interrotte). Sarebbe meglio controllare tutti i pin dello zoccolo che fanno capo a ciascun segnale; io mi limiterò a indicarne solo uno per segnale, il compito di identificare gli altri lo lascio a voi (basta guardare lo schema): lo stato della casella Enable Data Out lo potete leggere sul pin 35; Enable Clock sul 34; Enable MCLR sul 4; Enable VCC sul 36. Si tratta di segnali TTL (0-5 V) ad eccezione di MCLR (0-13 V).
  8. Se tutti questi test hanno dato esito positivo, il circuito dovrebbe funzionare. Se non funziona potrebbe trattarsi di un problema software (guardate a tale proposito la nota nel paragrafo precedente a proposito delle temporizzazioni di IC-Prog).

 

Qualche rework (nel caso che abbiate problemi...)

Recentemente ho dovuto programmare alcuni "nuovi" tipi di PIC col propic2 clone (in particolare il PIC16F876 e il PIC16F628). Nessun problema quando li programmavo in-circuit, mentre con la programmazione sullo zoccolo la questione cambiava radicalmente: ottenevo errori a ripetizione o non riuscivo per nulla a programmare i dispositivi.
Facendo due più due, ho concluso che l'unica cosa davvero diversa fra la programmazione in-circuit e quella su zoccolo era la resistenza di pull-up su MCLR; l'ho messa anche sullo zoccolo di programmazione e tutti i problemi sono scomparsi.
Nella pratica dovete collegare Vpp1 (generalmente usato per i PIC a 18 pin) , Vpp2 (PIC a 28 pin) e Vpp3 (PIC a 40 pin) a Vdd tramite tre resistenze da 10k. Questo dovrebbe risolvere i problemi che alcuni di voi mi hanno segnalato, anche se comunque vi consiglio di documentarvi sulla programmazione in-circuit e usare direttamente quella.

 

FAQ

Domanda: cosa significa la scritta "ICSP socket" sullo schema? Cosa ci devo mettere?
Risposta: ICSP sta per "In-Circuit Serial Programming" ed indica la possibilità di programmare un PIC direttamente sul circuito in cui è ospitato, senza il bisogno di doverlo staccare per metterlo nello zoccolo del programmatore. Si tratta di una procedura piuttosto comoda quando dovete fare del debug su un vostro programma e dovete aggiornare spesso il software del PIC. Per programmare un PIC in-circuit è necessario ovviamente che il circuito che lo ospita sia opportunamente predisposto e che sia dotato anch'esso di uno zoccolo ICSP; potete trovare più informazioni direttamente sul datasheet del PIC che vi interessa. Inizialmente, e/o se questa funzione non vi interessa, potete anche lasciare inutilizzati quei contatti sulla scheda; in ogni caso, non metteteci delle EEPROM! Al pari di tutti gli altri componenti, le EEPROM si programmano sullo zoccolo universale a 40 pin.

D: vedo che lo schema originale usava un connettore DB9 e dunque si collegava alla porta seriale, mentre il tuo usa un connettore DB25 e si collega alla parallela. Come posso fare per adattare il tuo schema per collegarlo alla seriale?
R: non puoi. Il propic2, anche quello originale, si collega solo ed esclusivamente alla porta parallela. I progettisti del propic2 hanno pensato (probabilmente per ridurre lo spazio) di usare un connettore DB9 dalla parte del programmatore, ma esso si collega comunque alla parallela tramite un cavo opportunamente costruito. Io ho usato un DB25 anche dalla parte del programmatore solo per comodità, perché così se si dispone di una prolunga maschio-maschio già fatta si può usare quella. In ogni caso è più semplice costruire una prolunga "simmetrica" (dove basta appaiare i contatti da una parte con i rispettivi contatti dall'altra) piuttosto che una asimmetrica.

D: non trovo lo zener da 7.2 V, posso usarne uno da xxx V?
R: lo zener è stato messo unicamente per non fare dissipare tutta la potenza (dovuta alla notevole caduta di tensione) al 7805. Basta che sia compreso fra 7 e 9 V.

D: che alimentatore devo usare per il propic2?
R: il propic2 non necessita di un alimentatore, contiene già tutti i componenti necessari. Il metodo classico per alimentarlo è quello di collegarlo alla rete elettrica tramite un trasformatore con secondario di 12 V e potenza di qualche VA (direi che 5 bastino e avanzino). Se riuscite a riciclarli vanno bene anche trasformatori con secondari a tensioni maggiori, ma state attenti perché se eccedete gli stabilizzatori e lo zener si scalderanno parecchio. Se non sbaglio io ne sto usando addirittura uno da 18 V, e per sicurezza alimento il circuito solo quando lo utilizzo.
Esistono anche altri metodi per alimentare il propic2. Ad esempio il fatto che non sia necessario usare un alimentatore stabilizzato non significa che non possiate utilizzarlo, se ciò vi risulta comodo. Se usate un alimentatore stabilizzato (o comunque una fonte di alimentazione in corrente continua) è però necessario che la tensione di uscita sia di almeno 15-16 V.

D: posso alimentare il propic2 direttamente attraverso il PC in qualche modo?
R: se fossi in te cercherei con impegno di scordarmelo. L'alimentazione diretta attraverso le porte di uscita (seriali o parallele) è sconsigliabile perché l'assorbimento del circuito è eccessivo per la corrente che sono in grado di erogare. Per quanto riguarda invece l'alimentazione attraverso l'alimentatore del PC essa è possibile, ma diventerebbe abbastanza complessa. I +12 V rispetto a massa potrebbero non essere sufficienti, quindi o si costruisce un alimentatore step-up usando un integrato della Maxim (che ne spedisce anche dei campioni gratuiti) oppure si utilizzano i segnali -5 V e +12 V per ottenere una caduta totale di 17 V. Quest'ultima soluzione ha però almeno un paio di problemi: uno, i -5 V non sono disponibili nei connettori "volanti" per gli Hard-Disk e quindi devono essere presi direttamente dal filo che esce dall'alimentatore; due, ci sarebbero quasi senz'altro problemi disastrosi derivanti dal fatto che la massa della porta parallela è riferita agli 0 V dell'alimentazione del PC e non alla nostra massa "finta" di -5 V. Quindi collegare la massa del circuito (che si trova a -5 V) con la massa della parallela (che si trova a 0 V) causerebbe un corto circuito, con sommo gaudio dei venditori di schede madri. Eliminare quel collegamento fra le due masse sarebbe comunque deleterio (anche se un po' meno), perché al 7407 arriverebbero segnali di +5 V riferiti agli 0 V dell'alimentatore (e dunque di +10 V se riferiti alla "nostra" massa). Insomma, in conclusione: comprate quel pidocchioso trasformatore da 12 V e non se ne parli più.

D: ma io vorrei davvero tanto usare l'alimentazione del PC.
R: OK. Se proprio vuoi fare un tentativo (che però non è detto che funzioni con tutti i PIC) fai così. Preleva i +12 V e gli 0 V da uno dei connettori volanti per gli Hard Disk. Rimuovi dal propic2 il ponte di diodi, collega i +12 V sulla piazzola del ponte contrassegnata da + e collega gli 0 V sulla piazzola contrassegnata dal -. Poi rimuovi il 7808 collegando con uno spezzone di filo le piazzole che corrispondono ai pin 1 e 3 (i due pin esterni). Poi prova a vedere se funziona.
Sconsiglio comunque di fare tutto ciò e ovviamente non mi assumo nessuna responsabilità sui possibili disastri. Ricordatevi inoltre di ripristinare il circuito se tornate a usarlo in "maniera canonica", altrimenti brucerete PIC come se piovesse.

D: quando accendo il PC e/o quando IC-Prog non è caricato, i LED di programmazione restano accesi o lampeggiano. È normale?
R: sì. Tipicamente all'avvio del PC tutti i pin di dati della porta parallela sono posti a zero e - dato che il propic2 usa i segnali invertiti - questo fa sì che tutti i LED si accendano. Può anche capitare che durante la fase di boot il BIOS o il sistema operativo giochino un po' con la parallela e che il programmatore si trasformi in un albero di natale. Tutto ciò non è un problema, l'importante è che inseriate i dispositivi da programmare solo ed esclusivamente quando IC-Prog è in esecuzione. Né prima, né dopo.

D: qual è il costo totale di questo circuito?
R: presumendo che abbiate già tutto il materiale per la fotoincisione, senza la scatola e lo zoccolo ZIF universale si sta sotto alle cinquantamila lire (incluso trasformatore, connettori DB25, scheda presensibilizzata ecc..).

D: oltre ai PIC e le EEPROM della famiglia 24x posso programmare anche i microcontrollori Antani1234 e CippaLippa9876?
R: essendo un clone del propic2, questo circuito programma esclusivamente i dispositivi supportati dal propic2. Il metodo più semplice per saperlo è aprire la finestra Tools->Device Position di IC-Prog, che mostra dove si deve inserire ciascun dispositivo sullo zoccolo a 40 pin del programmatore (il lato della levetta è quello del pin 1, ossia quello "verso l'interno" del propic2 clone). Nel caso dei dispositivi supportati, compare il disegno dello zoccolo con il componente inserito nella posizione opportuna; nel caso dei dispositivi non supportati, lo zoccolo è sbarrato con una croce rossa.. Nel caso che compaia la scritta "adaptor" significa che il propic2clone è in linea di principio in grado di programmare il dispositivo, ma serve un minimo di circuiteria di adattamento. Potete trovare alcuni schemi di adattatori sul sito di IC-Prog (ad esempio per le EEPROM della famiglia 93cXX basta una resistenza, uno zener e qualche collegamento volante!).

D: mi sono sbagliato e ho inserito un dispositivo da programmare al contrario. Ora il programmatore non funziona più. Cosa è successo?
R: beh, prova a indovinare. ;-)
È capitato anche a me di inserire un PIC16F84 al contrario. Il PIC si è trasformato in una caldarrosta per qualche secondo, ma non si è distrutto. Invece un BJT del programmatore (T2, per la precisione) si è cotto e ho dovuto sostituirlo. State sempre molto attenti ai versi e alle posizioni di inserimento, nonché al fatto che il dispositivo indicato da IC-Prog sia quello che state effettivamente per programmare.

D: non trovo il 7808, posso usare il 7809?
R: direi di sì. Sei al limite delle specifiche, ma considerando anche la caduta di qualche centinaio di mV sui BJT dovresti starci.

D: lo zoccolo del propic2 ha 40 pin, dove devo mettere i PIC e le EEPROM con meno pin?
R:  leggi tre risposte indietro.

 

E per quanto riguarda lo zoccolo ZIF?

Per ospitare tutti i dispositivi supportati dal programmatore vi serve uno zoccolo ZIF "universale" a 40 pin, che supporti sia il passo DIL stretto a 10.16 mm che quello più largo a 20.32 mm. Sul catalogo RS vecchio di qualche anno che ho qui sottomano, uno zoccolo del genere costava ventimila lire più IVA, non credo che sia cresciuto più di tanto in questi ultimi anni. Comunque se volete risparmiare anche quei soldi (ricordate che dovete aggiungere anche le spese di spedizione...), potete arrangiarvi con qualche zoccolo SIL tornito e qualche fila di contatti. Tento di spiegarmi meglio con qualche foto fatta in modo osceno con lo scanner.

Questa è una fila di contatti. Sono semplicemente dei contatti infilati in un supporto di plastica morbida. Vi servono due sbarrette da 20 contatti ciascuna.

Questo invece è uno zoccolo SIL (single-in-line) tornito (visto di profilo e dall'alto). Ve ne servono tre sbarrette da 20 contatti ciascuna.

Infine vi serve un piccolo ritaglio di basetta millefori. Quella riportata nell'immagine è delle dimensioni giuste (20x8 fori).

A questo punto dovete spingere i contatti in modo che il supporto di plastica vada a una delle loro due estremità:

Questi saranno i terminali del vostro "zoccolo autocostruito". Ora dovete assemblare tutto assieme; numerando dall'alto al basso le righe della basetta millefori (1 quella più in alto, 8 quella più in basso) i vari componenti devono essere messi così:

  • Riga 1: fila di contatti (supporto di plastica dalla parte dei componenti)
  • Riga 2: zoccolo SIL tornito
  • Riga 5: zoccolo SIL tornito
  • Riga 7: fila di contatti (supporto di plastica dalla parte dei componenti)
  • Riga 8: zoccolo SIL tornito

A questo punto stagnate assieme i contatti delle righe 1 e 2, e i contatti delle righe 5,6,7 e 8:

Nella figura qui sopra si vede la basetta finita dall'alto. Sulla destra a mo' di esempio sono riportate sei delle stagnature che dovrete fare (ovviamente dovete farle tutte e 40!).

Così facendo avete ottenuto uno zoccolo in grado di ospitare integrati DIL sia a passo 10.16 che a passo 20.32. Per i primi si usano gli zoccoli SIL sulle righe 1 e 5, per i secondi gli zoccoli sulle righe 1 e 8.

Vi consiglio di non stagnare direttamente questo zoccolo sulla basetta (anche perché tipicamente le sbarrette usano terminali piuttosto grossi, che mal si adattano alle piccole piazzole del circuito stampato). Io ho fatto un vero e proprio "sandwich di zoccoli":

  • Sulla basetta ho stagnato uno zoccolo DIL tornito a 40 poli. L'ho messo tornito perché è quello che dura di più, se in un futuro comprerò lo ZIF lo infilerò direttamente in questo zoccolo;
  • Sopra al DIL tornito ho messo uno zoccolo DIL a 40 pin "normale" (con i contatti non torniti), perché i terminali dello zoccolo autocostruito non entravano nei contatti torniti;
  • Infine sopra a tutto questo ho messo lo zoccolo autocostruito che ho appena illustrato.