Eccoci qua con un decoder DTMF implementato tramite hardware.
Il sottotitolo lascia intendere che ce ne sia almeno un altro all'interno del forum, e, in effetti, ce n'è uno implementato tramite software su PC nella sezione informatica:
Toni DTMFIl buon Gila75 ha realizzato qualcosa di già funzionante che è attualmente in via di perfezionamento per aumentarne la flessibilità e le prestazioni.
In questa discussione ho invece inserito l'implementazione hardware del riconoscimento dei toni DTMF, che sono poi quelli usati nelle telecomunicazioni per comporre i numeri telefonici.
Per ulteriori informazioni sul sistema DTMF è possibile consultare l'onnipresente
WikipediaDopo questa breve prefazione passiamo a qualcosa di concreto (o quasi).
Quasi perchè questo progetto
non l'ho realizzato in pratica per motivi di tempo e quindi non è testato.
Sono convinto che funzioni perfettamente perchè (molti) anni fa feci un qualcosa di simile che serviva come risponditore telefonico/chiave a codice che attivava relè da remoto tramite condici di 8 cifre inviati tramite DTMF.
Inizialmente partirò dalla sezione hardware per poi passare al firmware da inserire nel microcontrollore.
Il risultato finale sarà quello di avere il circuito in 2 versioni:
- Versione ridotta in cui un display visualizza il tono ricevuto (questa versione è priva di microcontrollore e non ha quindi bisogno di firmware)
- Versione completa, con microcontrollore, completa di display visualizzatore del tono ricevuto e contemporaneo invio del tono decodificato su porta seriale RS232
Lo schema elettrico:Veniamo alla spiegazione del funzionamento:
In alto a sinistra dello schema è visibile il connettore J1 al quale deve essere applicato il tono DTMF. Il segnale, tramite il condensatore C1, entra nell'integrato M8870-2. Questo integrato ha all'interno tutte le parti necessarie (amplificatore, filtri, sezione di decodifica, ecc.) necessari per riconoscere le coppie di toni.
Questo integrato è un po' vecchiotto, ma si riesce a trovare ancora in giro ed è stato inoltre rimpiazzato dall'integrato HT9170D della Holtek (non ho confrontato al 100% i 2 data-sheet ma i componenti mi sembrano identici).
Scaricando il
data-sheet è possibile vedere che le resistenze R1 ed R2 creano, insieme all'amplificatore operazionale interno all'M8870, un amplificatore invertente con guadagno -1.
Il segnale amplificato passa poi attraverso un primo filtro che lo ripulisce da parte dei disturbi e giunge a una coppia di filtri, che separano il gruppo dei toni alti da quello dei toni bassi.
Proseguendo il segnale passa attraverso 2 buffer che adeguano i segnali per poterli poi inviare a dei filtri digitali che, insieme ai successivi stadi, genera il codice binario corrispondente al bitono riconosciuto.
Sulle uscite D0-D3 dello schema è quindi presente il codice del bitono riconosciuto, mentre un livello logico alto (1) su DV indica che il il tono è presente ed è valido (alla cessazione del tono le uscite D0-D3 mantengono lo stato che avevano durante l'ultimo bitono ricevuto, ma DV torna basso).
D0-D3 e DV fanno capo ora a 2 diversi integrati:
U1 che è un decoder BCD-> 7 segmenti (converte il numero binario rpesente agli ingressi DA-DD nella corrispondente cifra del display a 7 segmenti, mentre LE congela lo stato degli ingressi DA-DD anche se dovessero cambiare)
U5 che è il microcontrollore su cui scaricare il firmware che pubblicherò più avanti (se vedrò che la discussione susciterà un certo interesse), per visualizzare il codice del bitono sul display e inviarlo sulla porta seriale RS232 per poi poterlo visualizzare su un PC o altro.
U1, in caso di realizzazione della versione completa, che richiede utilizzo di U5, può essere eliminato, dato che sarà U5, tramite U6, a pilotare il display U8 (che fa le stesse funzioni del display U4).
Nello schema ho racchiuso le parti alternative dentro le linee tratteggiate. La parte indicata come opzionale deve essere montata solo se si vuole utilizzare la porta seriale RS232 e il display U8, altrimenti la si può omettere.
Per il momento è tutto.....Ci vediamo alla prossima puntata in cui spiegherò la parte restante dell'hardware e le funzioni del firmware da realizzare.
SEGUE.....