Decoder DTMF hardware

« Older   Newer »
  Share  
icon9  view post Posted on 6/5/2018, 17:03
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


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 DTMF

Il 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 Wikipedia

Dopo 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:

  1. Versione ridotta in cui un display visualizza il tono ricevuto (questa versione è priva di microcontrollore e non ha quindi bisogno di firmware)

  2. Versione completa, con microcontrollore, completa di display visualizzatore del tono ricevuto e contemporaneo invio del tono decodificato su porta seriale RS232

Lo schema elettrico:

DTMFdecoder-1_1

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.....
 
Top
icon6  view post Posted on 6/5/2018, 19:46
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
Il buon Gila75 ha realizzato qualcosa di già funzionante che è attualmente in via di perfezionamento per aumentarne la flessibilità e le prestazioni.

Grazie... :D :D

Adesso sono "ciapato" (preso), ma appena posso, leggo con molto interesse.
Mannaggia, come mi piacerebbe provare!!!
A sto punto prendo in seria considerazione di ritirare fuori tutto, scheda pic..ecc, ammesso che funzioni ancora.

Bel 3d Robo!!!

EDIT:
Come al solito, dimentico cose:
qualche domanda, poi con calma e con il mio inglese zoppicante leggo bene il datsheet:
Questo integrato ha limiti temporali ?
Un tono molto breve, o lunghissimo, lo interpreta correttamente ?

in uscita ho 4 bits che 2^4=16 mi danno 16 combinazioni, cioè i tasti no?

Edited by GILA75 - 6/5/2018, 21:02
 
Top
Elemento 38
view post Posted on 6/5/2018, 21:25




QUOTE
Un tono molto breve, o lunghissimo, lo interpreta correttamente ?

Durata minima dovrebbe essere specificata nello "standard" (notare " ") DTMF, ma non riesco a trovarlo ora. Alla pagina 6 del datasheet ci sono le specifiche temporali (nella tabella) o a pagina 7 c'e' il diagramma temporale. tone_detection_time e' la durata minima del tono in ingresso e minimum_interdigit_pause e' la minima durata tra due toni. Importante e' anche la tolleranza al rumore (-12dB)
QUOTE
in uscita ho 4 bits che 2^4=16 mi danno 16 combinazioni, cioè i tasti no?

Tabella 5, pag5, ti dice come correlare i valori delle uscite ai tasti (e quindi alle frequenze)
 
Top
view post Posted on 6/5/2018, 22:02
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


Come dice Ele ci sono dei limiti nella decodifica dei toni (indicati come 40msec di durata minima del bitono e 40msec come pausa minima), che sono comunque "User adjustable", quindi modificabili dall'utente tramite la costante RC data da R10 e C7 che fornisce la temporizzazione per la gestione dell'uscita StD (che nello schema ho chiamato DV), che sarebbe poi quella che fornisce il segnale di dato riconosciuto.
Nella figura 5 del data-sheet viene mostrato come rendere asimmetrico il tempo di attivazione o di disattivazione di StD, che altrimenti sarebbe simmetrico.
Più aumenti la capacità di C7 più deve essere lungo il bitono per essere discriminato (in questo modo eviti attivazioni accidentali date dai disturbi.
Per contro, la capacità alta rende lenta anche la disattivazione, e questo impedirebbe di discriminare bitoni vicini.

Guardando la tabella 5 mi sono reso conto che se si realizza il circuito nella versione semplificata (quella che monta il 4511 come visualizzatore del bitono ricevuto) non verranno visualizzate tutte le combinazioni, dato che il 4511 riesce a gestire correttamente i numeri binari compresi fra 0 e 9, corrispondenti ai tasti D,1,2,3,4,5,6,7,8 e 9. I tasti 0, *, #, A, B e C non provocheranno nessuna accensione del display.
Per gestire questi tasti aggiuntivi andrà usata la versione completa del circuito (e l'opportuno firmware, ovviamente).
 
Top
view post Posted on 6/5/2018, 22:35
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Ok, grazie delle info.
Leggero' con cura.
Con un firmware ben fatto, si risolve meglio e piu' in fretta che via software. O almeno del mio software... :)
 
Top
4 replies since 6/5/2018, 17:03   130 views
  Share