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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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).
- 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.
|