I codici vengono visualizzati su un display alfanumerico a cristalli liquidi con possibilità di scorrimento nel caso si ecceda il numero di caratteri a disposizione (nel nostro caso 8, ma non è difficile aumentarli).
Concettualmente l'apparecchio si compone di 3 parti:
L'IC Mitel MT8870, di cui è disponibile il datasheet, permette anche l'ingresso di tipo sbilanciato che usa meno componenti, ma ho preferito un ingresso bilanciato per minimizzare i disturbi.
La rete di componenti passivi presente sull'ingresso assolve ad alcuni compiti, quali la regolazione del guadagno e il taglio di tensioni troppo elevate presenti sulla linea telefonica, quest'ultima con l'ausilio dei diodi zener.
In effetti le resistenze da 100K, prima e dopo dei diodi zener, sono da considerarsi una unica resistenza da circa 200K che determina :
1) il guadagno in combinazione con la resistenza da 220K;
2) la frequenza di taglio del filtro passa alto con i condensatori di ingresso;
3) una elevata impedenza d'ingresso.
Le altre resistenze dipendono in vario modo da questa e comunque sulla application note della Zarlink sono presenti le formule per il calcolo.
Il quarzo DEVE essere da 3,579 MHz in quanto i filtri interni sono dipendenti dalla frequenza di clock, ma può essere utilizzato anche un economico risuonatore ceramico (purchè della medesima frequenza, che è poi quella della portante colore in formato NTSC) in quanto garantisce comunque una precisione accettabile.
Gli ultimi componenti di questo stadio determinano i tempi di riconoscimento e l'immunità ai disturbi e i valori indicati sono un buon compromesso per i tempi standard della rete telefonica.
Il PIC serve per prelevare i dati in uscita dal decoder e inviarli in forma opportuna al display (si veda il sorgente dtmf.asm).
Ogni volta che un dato valido è disponibile sulle uscite Q1-Q4 del decoder, il pin StD va alto e ciò viene sfruttato per generare un interrupt (Interrupt su variazione di RB0) in modo che i dati siano copiati in un buffer interno di lunghezza specificabile.
Un flag viene settato per ogni dato copiato ed il PIC esegue un ciclo di lettura dal buffer e scrittura sul display lcd fino a che il buffer è vuoto.
Non appena il circuito viene alimentato il PIC esegue una serie di inizializzazioni sia interne sia del display, nel caso questo non avesse eseguito correttamente il proprio ciclo di reset.
L'interfaccia tra PIC e display è del tipo a 4 bit, dato che i pin di I/O del PIC sono in numero limitato.
Questo implica un doppio trasferimento di dati tra i due dispositivi per ogni operazione eseguita, in quanto il formato interno dei dati è su 8 bit. Per un approfondimento circa l'interfacciamento con display LCD del tipo qui utilizzato consiglio una visita a queste pagine.
Anche per il PIC il quarzo può essere sostituito con un risuonatore ceramico e la frequenza non è in questo caso critica non essendoci temporizzazioni che necessitano di elevata precisione. Ovviamente la frequenza non può superare quella garantita dal PIC utilizzato. I condensatori da 33pF sono del tipo ceramico.
Il pulsante P1 serve nel nostro caso a far scorrere le cifre sul display se queste eccedono i caratteri disponibili, ma cambiando opportunamente il programma del PIC si potrebbero eseguire una o più operazioni diverse in dipendenza della durata e del numero delle pressioni (per esempio il reset dell'apparato).
Il display utilizzato è da una riga di 8 caratteri, ma nulla vieta di utilizzare un tipo diverso, purchè sia basato sul controllore Hitachi HD44780 che equipaggia la maggioranza dei dispositivi disponibili sul mercato, e sia adatto ad una alimentazione SINGOLA da 5V (alcuni tipi infatti necessitano anche di una tensione NEGATIVA da 5V per la regolazione del contrasto)
Cambiando alcune costanti del programma si può quindi adattare il circuito al numero dei caratteri a disposizione.
Il trimmer da 10K serve a regolare il contrasto e conviene metterlo inizialmente a metà corsa, ruotandolo lentamente dopo l'accensione fino ad ottenere la corretta visualizzazione.
L'alimentazione del circuito può andare dai 7 ai 15 volt e l'integrato 78L05 provvede a stabilizzarla sui 5V necessari a tutti i dispositivi. In particolare il display è molto delicato e si brucia con facilità se la tensione supera anche di poco quella nominale (almeno nel mio caso è successo).
Il montaggio originale è stato eseguito su una basetta millefori in vetronite, utilizzando zoccoli per il display ed i circuiti integrati. Si raccomanda di proteggere adeguatamente dalle cariche elettrostatiche tutti i dispositivi attivi sensibili fino al loro montaggio definitivo.
Si consiglia infine di inserire tutti i condensatori di disaccoppiamento con collegamenti abbastanza corti (quindi metteteli molto vicini ai rispettivi IC), onde sopprimere efficacemente eventuali autooscillazioni.
Le resistenze sono da 1/4 di W e i condensatori in poliestere da 100V ove non diversamente specificato.
Un'ultima nota (negativa) riguarda il programma del PIC: purtroppo è ancora presente un errore in quanto, benchè i primi codici ricevuti sono visualizzati correttamente, se si tenta di far scorrere i caratteri per visualizzare quelli successivi all'ottavo, questi risultano errati. Sono ben accetti quindi consigli e suggerimenti per eliminare questo difetto.
Un ringraziamento particolare ad Adriano Venturini che ha gentilmente disegnato per me lo schema in formato circad, dato che ancora non ero molto pratico.