Chiave Dtmf a cinque canali

di Angelo Lezza
Chiave Dtmf a cinque canali, con logica gestita dal microcontrollore PIC16F88. I principali parametri operativi della chiave dtmf, quali ad esempio la modifica della password di accesso e l’attivazione o disattivazione delle note acustiche di risposta, possono essere inseriti sia a distanza, con apposita procedura in remoto,  che digitati manualmente nelle apposite locazioni di memoria EEprom del microcontrollore. Tutto ciò consente di disporre di una scheda elettronica semplice, compatta, economica e soprattutto affidabile e facile da realizzare
Il progetto di seguito descritto tratta la realizzazione di una piccola chiave dtmf a cinque canali che seleziona le sequenze dei bi-toni dtmf in ricezione (password + comando) e, se valide, attiva o disattiva dei carichi a distanza (relay). La chiave è bidirezionale per cui, ad ogni comando acquisito, risponde con note acustiche in bassa frequenza. Nel caso il comando o la password inviati dovessero essere errati, restituisce tre note BF acute, segnalando l’errore. L’acronimo DTMF vuol dire “dual tone multi frequency”, cioè doppia nota multi frequenza. Infatti, i toni dtmf risultano composti da due frequenze audio ben distinte, per un  totale di 16 bi-toni, i quali nascono appunto dalla combinazione di 8 note di bassa frequenza unite in coppia tra loro. La tecnica dei bi-toni multi frequenza, seppur sperimentata fin dalla fine degli anni ’50 del secolo scorso presso i Laboratori Bell, si è evoluta e tutt’oggi utilizzata in importanti implementazioni che riguardano diversi settori come le telecomunicazioni e le radio comunicazioni. Soprattutto in ambito telefonico, questo sistema consente di selezionare dalla tastiera del proprio apparecchio il numero dell’interlocutore da chiamare e di effettuare altre operazioni, ancor più complesse, quali la selezione di eventuali opzioni nelle procedure automatizzate dei call center per poter ad esempio interloquire, tra i vari operatori disponibili, con l’addetto desiderato. Nel campo delle radio comunicazioni le chiavi dtmf costituiscono un valido supporto per attivare o disattivare a distanza eventuali carichi. Di norma, buona parte, se non tutti i ripetitori radioamatoriali attualmente in uso in Italia (vhf, uhf e hf), sono dotati di questi interessanti dispositivi elettronici che permettono l’accensione e/o lo spegnimento dei trasmettitori tramite il semplice invio di sequenze dtmf via radio; col vantaggio di non doversi recare presso i luoghi, per effettuare manualmente tali operazioni. Specialmente in questi ultimi anni, anche il settore della domotica ha mostrato interesse all’utilizzo dei toni multi frequenza. Qualche esempio di applicazione:

– sistemi di antifurto che inviano le comunicazioni di allarme tramite gli appositi combinatori telefonici;
– schede elettroniche espressamente studiate per connetterle alla rete telefonica via cavo, fibra o Gsm al fine di accendere o spegnere a distanza elettrodomestici, impianti di irrigazione, caldaie, climatizzatori, lampade, ecc..
– segreterie telefoniche con cui si può interagire per ascoltare a distanza i messaggi ricevuti.

Descrizione del circuito

Per poter utilizzare questa chiave dtmf è necessario disporre di una fonte di alimentazione a 12 volt (va bene una batteria o un alimentatore con pari voltaggio collegato alla rete elettrica) e un ricevitore o un ricetrasmettitore dal quale prelevare i segnali di bassa frequenza. Sarebbe anche possibile prelevare i toni da un telefono, o da una forchetta telefonica, apportando però le dovute modifiche. Pur tuttavia questo circuito è stato concepito allo scopo di collegarlo ad un ripetitore radioamatoriale (vhf / uhf) per abilitare e disabilitare alcune funzioni (tra cui l’inibizione dei subtoni e del trasmettitore). La chiave dtmf è costituita da quattro differenti blocchi: lo stadio di alimentazione, il decoder, la logica e i relay (uno inserito nella scheda – gli altri nel modulo collegato). Lo stadio di alimentazione è formato da un 78L05 e componenti annessi. Ha il compito di ridurre e stabilizzare la tensione in ingresso al circuito, trasformandola dai 12 volt iniziali ai 5 volt necessari all’integrato e al microcontrollore. Il secondo stadio, ossia il decoder DTMF composto dall’integrato MT8870, svolge un ruolo determinante in quanto rappresenta una “interfaccia analogico – digitale” tra il segnale di bassa frequenza ricevuto e il microcontrollore: decodifica i toni dtmf e contestualmente li convertirli in quattro bit (16 toni dtmf).

Osservando lo schema, e precisamente i pin 11 ÷ 14 (Q1 ÷ Q4) dell’integrato, si rileva che il decoder invia al micro la decodifica dei toni dtmf sotto forma di codice binario. La seguente tabella riassume la combinazione delle 8 frequenze utilizzate per comporre i 16 toni dtmf e, in corrispondenza di ognuno dei 16 pulsanti della tastiera (4 righe per 4 colonne), restituisce il valore binario decodificato dall’integrato. Il pin 15 (STD) del decoder MT8870 fornisce un apporto significativo durante la fase di decodifica dei segnali. infatti, non appena ricevuto un tono dtmf  indica, per tutto il tempo di ricezione, la presenza dello stesso ponendosi a livello logico alto (+ 5 volt), per poi tornare nuovamente a livello basso (0 volt). E’ proprio grazie a questo evento che il micro riesce a tenere costantemente in osservazione la ricezione dei segnali dtmf ed acquisisce, tramite le linee Q1 ÷ Q4,  il valore in binario del tono dtmf in ingresso. Il terzo stadio è rappresentato dal microcontrollore PIC16F88 il quale effettua tutte le elaborazioni logiche necessarie al corretto funzionamento del circuito. Si tratta di un componente a basso costo, prodotto dalla nota casa costruttrice americana Microchip Tecnology con sede Chandler (Arizona);  vero e proprio colosso mondiale nella produzione di semiconduttori soprattutto microcontrollori PIC, ma anche memorie di tipo EEPROM, amplificatori operazionali, ecc. Il PIC16F88 ha una architettura interna CMOS Flash-based a 8 bit, un package a 18 pin compatibile “pin to pin” con altri microcontrollori della stessa famiglia, un oscillatore interno a 8 mhz, 256 bytes di memoria eeprom, Pwm, Usart, 7 canali A/D a 10 bit, ecc. Sfruttando appunto l’oscillatore interno del chip è stato possibile ridurre ulteriormente il numero dei componenti elettronici a vantaggio della semplicità circuitale e dei costi.

Osservando lo schema del circuito elettrico si nota, giusto in corrispondenza dei pin 15 e 16 (Ra7 / OSC1 e RA6 / OSC2) del PIC, l’assenza del quarzo esterno e dei condensatori a massa, componenti diversamente indispensabili nelle altre tradizionali configurazioni. Il micro viene connesso parallelamente al decoder dtmf attraverso i pin RB0 ÷ RB4 settati come ingressi, le porte RA0 ÷ RA3 (output) risultano invece collegate ai 4 canali del modulo Relay mentre il pin RB6 (output) comanda la base del transistor T1 del Relay1, tramite la resistenza R2. Il pulsante S1, pressato per un periodo minimo di 2 secondi all’accensione del circuito, provoca il reset della chiave e il ripristino dei valori iniziali (password e settaggi). Questa chiave, come riferito, è stata studiata per prevedere 5 differenti carichi. Pur tuttavia, durante la realizzazione del circuito nulla vieta di ridurre il numero dei relay in funzione alle esigenze costruttive del momento, senza dover necessariamente modificare il codice del microcontrollore. La chiave è bidirezionale, ad ogni comando vi è una risposta tramite una nota acustica. Le note vengono generate attraverso la linea RA4 settata come output, che comanda la base del transistor T2, tramite la resistenza R9.  L’ampiezza della nota è regolabile grazie al trimmer posto sulla linea di uscita e la funzione è attivabile o disattivabile attraverso un apposito comando (Tasto B). L’ultimo stadio è quello dei relay, tutti  settati in configurazione bi-stabile.

Il software del microcontrollore

Il codice, scritto in linguaggio a basso livello – assembly, permette un controllo molto preciso dell’hardware. Pur tuttavia, nonostante la semplicità del circuito nonché l’impiego di un microcontrollore economico e di fascia bassa, il firmware è piuttosto lungo e complesso. Il software interagisce spesso con la memoria EEprom interna al PIC e, durante tali operazioni logiche, legge e scrive tutti i dati nella stessa memoria (password, stato relay, settaggi, ecc). Questa circostanza rappresenta sicuramente un beneficio soprattutto nel caso in cui dovesse venir meno l’erogazione dell’alimentazione. In tal caso tutti i dati e le impostazioni rimarrebbero in memoria ed ri-utilizzabili successivamente. All’accensione il firmware setta i registri del micro, inizializza le porte Input /Output e legge i dati memorizzati.

Effettuate le operazioni preliminari il micro, tramite un loop composto da poche e semplici istruzioni assembly, che prevede anche un ritardo programmato di 50 millisecondi, rimane in attesa di leggere il valore logico alto dal pin STD dell’integrato per iniziare la decodifica dei toni nonché tutte le conseguenti operazioni logiche. Descrizione funzionamento e collaudo della scheda. Per comodità, sono state utilizzate durante la realizzazione del prototipo due distinte schede visibili in foto. La prima è un vecchio circuito riciclato, che ormai tenevo inutilizzato da tempo dentro il cassetto; si tratta di una vecchia scheda dtmf il cui firmware è stato scritto oltre quindici anni fa per un ormai obsoleto PIC16C84. Per riutilizzarla come prototipo ho dovuto effettuare diverse modifiche al circuito, sostituire il micro con il più evoluto PIC16F88 e scrivere un nuovo firmware grazie al quale ho apportato significativi miglioramenti. La seconda scheda è un modulo opto isolato costituito da quattro relay alimentati a 12 volt, acquistato in rete ad un paio di euro e collegato alla scheda dtmf direttamente ai pin del microcontrollore.

Ciò nonostante, trattandosi di un circuito piuttosto semplice, è possibile realizzarlo anche su basetta millefori a condizione di adottare tutte le precauzioni del caso, prima dell’accensione: la verifica dei collegamenti, delle tensioni e di eventuali falsi contatti! Accesa la scheda, la stessa si predispone alla ricezione della password, composta da 5 note dtmf. Dalla prima alla quinta nota non deve intercorrere un periodo superiore a 10 secondi in quanto, diversamente, il time out interno provvederà al reset della procedura. Inoltre, le note devono essere inviate l’una dall’altra con un tempo non inferiore a 100 ms. La password viene memorizzata in formato esadecimale a partire dall’indirizzo 20H dell’eeprom interna al micro.  Alla prima accensione sarà composta dai valori  9 – 8 – 7 – 6 – 5 e rimarrà tale fino alla sostituzione con una nuova. Oltre alla password occorre inviare un ulteriore comando. Segue tabella e l’elenco riassuntivo dei comandi.

Tasti 1–3–5–7–9  Attivazione Relay
Con questi cinque tasti è possibile attivare i rispettivi relay. Il micro risponderà emettendo una nota a 1700 Hz.
Tasti 2–4–6–8–0  Dittivazione Relay
Questi tasti disattivano i relay. Stavolta Il micro risponderà emettendo una nota a 800 Hz.
Tasto A – Lettura stato Relay
Questo comando è particolarmente comodo poichè consente di conoscere lo stato dei relay, infatti la scheda risponderà emettendo in sequenza cinque note acustiche a 800 Hz. Ogni nota, che corrisponde ad ogni relay, avrà lunghezza variabile (200 ms relay attivo – 1 secondo relay disattivo) e comunicherà lo stato dei relay. Facciamo un esempio pratico: supponiamo di avere il primo ed il terzo relay attivi mentre tutti gli altri disattivi. In questo caso la risposta della scheda dtmf sarà la seguente:
1^ nota = 800 Hz per  200ms – relay attivo
2^ nota = 800 Hz per  1s – relay disattivo
3^ nota = 800 Hz per  200ms – relay attivo
4^ nota = 800 Hz per  1s – relay disattivo
5^ nota = 800 Hz per  1s – relay disattivo
Tasto B – Attiva / Disattiva la nota di risposta
Tramite questo comando sarà possibile attiva o disattivare la risposta bidirezionale della scheda (note acustiche).
Tasto C – Rimane inutilizzato per eventuali future implementazioni
Tasto D – Funzione RESET Relay
Il tasto “D” consente il reset dei cinque relay, disattivandoli.
Tasto E – Funzione RESET Chiave
Col tasto “E”  è possibile procedere al reset totale della chiave, riportando la stessa alla condizione iniziale (prima accensione).
Tasto F – Cambio Password
Col tasto “F” è invece possibile attivare la procedura per modificare la password. Nella fase di inserimento della nuova password, nel caso in cui le cinque note della stessa non dovessero giungere entro 10 secondi (time out), la procedura andrà in reset, rimanendo valida la password precedente.

GIOVANNI DI MARIA