Come tutti i bravi appassionati di elettronica, nei cassetti del laboratorio riposano decine o
centinaia di transistor, di segnale, di media potenza, di potenza e di alta frequenza.
Spesso questi sono recuperati da schede o da confezione di componentistica mista, con sigle
inusuali e di difficile reperimento su internet (es. 2S317).
Che fare ? buttarli nel cestino o provare ad usarli ?...la ricerca del datasheet è perlomeno ardua.
Però è un peccato buttarli (piange sempre un pò il cuore) e per certe applicazioni non critiche, averli
disponibili può fare comodo; questo vuol dire armarsi di tanra pazienda e di un multimetro e cominciare
a spulciarli per capire, innanzitutto, se sono NPN o PNP, e poi sapere come sono messi i piedini.
Operazione snervante, per la quale anche la funzione di transistor tester dei nuovi multimetri serve a
poco (occorre sempre provare un pò di combinazioni).
Ecco allora l'idea di farsi un prova transistor digitale automatico.
Gli obiettivi di progetto sono semplici:
All'inizio avevo ideato un progetto che impiegava diversi commutatori analogici comandati da una CPU
per inviare ai pin le diverse tensioni e correnti; sulla carta tutto ok, ma la reperibilità di 'analog switch' adatatti e
la necessità di avere 2 tensioni di prova complicava non poco la vita.
La scelta è stata quindi di utilizzare direttamente le tensioni di uscita del uP, commutate in modo da
ottenere tutte le 6 possibili combinazioni richieste, con in aggiunta altri 3 pin usati come interuttori
per inserire o meno un'ulteriore resistenza su ciascun terminale del transistor.
L'obiettivo di semplicità circuitale è stata ampiamente raggiunta: tolto il display LCD e pochi
pezzi per l'alimentazione, il circuito richiede solo un PIC e 6 resistenze!
Ho utilizzato un PIC 18F2580 soprattutto per la disponibilità; la velocità di clock (interno), la
dotazione di RAM e EPROM e il numero di pin sono in esubero; anche un 18 pin sarebbe bastato.
9 Pin del PIC sono usati dal rivelatore e 6 pin comandano il display LCD. Un pin è utilizzato per l'avvio della misura, mentre un ulteriore pin (opzionale) comanda l'accensione
del 'backlight' del display LCD, anche per ridurre i consumi. In totale, sono usati al massimo 17 pin.
L'utilizzo di un PIC a 28 pin lascia spazio per modifiche e rende più 'mentalmente' facile la comprensione dello schema.
La figura a fianco visualizza lo schema logico di implementazione.
Ciascun terminale del transistor in prova è collegato tramite un deviatore a una tensione
di +5V oppure a massa (ovvero di -5V rispetto all'altro capo).
In serie ai terminali è inserita una resistenza di valore elevato (10 KOhm) con in parallelo,
tramite un interuttore normalmente chiuso, un'altra resistenza di basso valore (120 Ohm).
A riposo, la resistenza in serie ai pin è quindi di circa 120 Ohm (118 per esattezza), sufficienti
a non superare per ciascun pin del uP la corrente massima tipica di 25 mA, considerando che 2 resistenze
saranno sempre inserite per ciascuna coppia di pin.
Ai capi del transistor sono prelevate le tensioni inviate ai convertitori ADC del PIC.
NOTA BENE la metodologia di misura è totalmente empirica: le mie conoscenze e gli strumenti
di simulazione (Circuit Maker) non mi permettono di capire 'perchè' leggo certe tensioni.
Di conseguenza, l'approccio è stato misurare nella realtà le tensioni di interesse, metterle in una
tabella (tavola delle verità) e identificare i pattern significativi.
I valori sono discriminati in funzione di 3 soglie di tensione (Vminima, Vmassima e Vsoglia), stabiliti sempre
empiricamente, per scartare i valori fasulli e stabilire la polarità del transistor.
La procedura è suddivisa in 3 fasi:
Il programma è scritto in Basic (PicSimulatorIDE di Oshon Software) tranne 4 routine in Assembler:
- le routine 'peeks' e 'pokes' per leggere/scrivere il vettore Seq (costruito da Init all'inizio programma) contenente tutte le
possibili combinazioni di segnali.
- le routine 'peekr' e 'poker' per leggere/scrivere i valori letti dall'array temporaneo 'immres' alla
matrice 'result'
La lettura dei valori sui pin, effettuata tramite gli ADC0..ASC2, è il risultato mediato di 4 consecutive
letture spaziate di 1 msec; questo per correggere eventuali incertezze dovute alla capacità dei terminali.
I valori letti sono posti nell'array a 3 posizioni 'immres'.
Per la verifica di validità dei valori sono fissate 3 soglie: Vmin=100mV circa, Vmax=4.9V circa e
Vthr=2.75V circa.
Valori inferiori a Vmin sono considerati 0; valori superiori a Vmax sono considerati 5V.
Vthr serve a stabilire la demarcazione tra i valori tipici dei transistor NPN (valori superiori) e PNP (valori inferiori).
Il cuore del programma sono le 3 fasi sopra descritte.
Nella Fase 1 ('Scan'), le 6 possibili combinazioni di segnali sono applicate sequenzialmente ai terminali di prova.
La tripletta di valori letti è copiata da 'immres' alla matrice 'result'
Nella Fase 2 ('Analyze') i valori in Result sono analizzati per scartare quelli fuori dai limiti fissati da
Vmin e Vmax. I restanti valori sono confrontati con Vthr per stabilire se sono assegnabili a un
NPN o un PNP. La pratica dimostra che ci saranno 2 letture di un tipo e 1 del dell'altro.
La coppia di letture omologhe stabilisce la polarità NPN o PNP del transistor.
Un vettore ('Valid') ricorda quali combinazioni hanno prodotto i risultati accettabili per l'ulteriore analisi.
La seconda parte della Fase 2, identifica il pin che ha il valore maggiore (per gli NPN) o inferiore (per i PNP)
rispetto agli altri 2 terminali; questo pin è la base ('pinb').
La Fase 3 ('Analyze2') deve identificare i pin E e C del transistor; questa è l'operazione
più complessa e basata sui riscontri delle prove fatte, senza alcuna analisi teorica.
Come detto prima, ci saranno 2 combinazioni (righe della matrice Result' che hanno valori accettabili.
La semplice inversione di polarità applicata ai pin E e C non è sufficiente per ottenere risultati evidenti.
La soluzione trovata è di escludere la resistenza di basso valore dal terminale di base (gia identificato);
per far ciò, il pin del PIC che comanda questa resistenza viene posto come Input, ovvero ad alta impedenza.
Il risultato è che la base viene ora pilotata da una resistenza di 10KOhm, mentre gli altri pin hanno
un resistenza di circa 120Ohm.
Una nuova lettura delle tensioni porta a scoprire che un pin, diverso dalla base, avrà un valore inferiore
(per gli NPN) o superiore (per i PNP) al valore sulla base.
Questo pin è l'Emettitore, mentre l'altro è ovviamente il Collettore.
Tutti i pin sono stati identificati.
Se non si arriva a questo punto significa che il transistor non è connesso oppure è danneggiato, da
qui la segnalazione sul display di errore.
Per il funzionamento del dispositivo, quanto illustrato è sufficiente e si riflette nello schema
elettrico con i componenti base.
A complemento del progetto, e per estendere funzionalità e praticità d'uso, sono previste funzioni e componenti
aggiuntivi (questi indicati nello schema con 'sezioni opzionali').
Essi consistono in:
La costruzione è totalmente lasciata alla creatività e capacità del costruttore (entrambe scarse nel mio caso!). Ho trovato ad una fiera un contenitore di un dispositivo accessorio per telefonia; ha le dimensioni quasi giuste, una finestra per display 'quasi' giusta e dei fori per pulsanti. Non è elegantissima, ma abbastanza pratica.
![]() |
![]() |
![]() |
| Schema elettrico | Cicruito stampato | Disposizione componenti in 3D |
![]() |
![]() |
![]() |
| Prototipo al lavoro | Realizzazione | Progetto completato |
File compresso contenente schema elettrico, circuito stampato (versione EagleCad 5.x e immagini JPG> + Elenco componenti + file sorgente in Basic 'PicSimulatorIde' + eseguibile: » scarica