appunti di elettronica


E' consentito l'uso delle informazioni, schemi e codici contenuti in questa pagina, per soli scopi privati, hobbistici e comunque gratuiti, mentre l'utilizzo per scopi commerciali, compresa la pubblicazione su riviste, deve essere autorizzato dall'autore, contattabile all'indirizzo: posta@enzoarizzi.it.



Convertitore DTMF - PULSE
Foto del convertitore DTMF to PULSE

Motivazione del progetto:
Tempo fa, quando le connessioni a larga banda non erano di moda (ai più giovani sembrerà preistoria) mi è capitato di dovermi connettere ad Internet attraverso un centralino che ammetteva soltanto pulse-dial (composizione decadica).
Sulle prime la cosa non mi ha per nulla scomposto; piazzo la sequenza "P0," davanti al numero (P per passare in Pulse mode, seguito dallo Zero per chiedere al centralino la linea esterna ed infine una Virgola che inserisce una pausa per assicurare l'ottenimento della linea) per poi proseguire, sempre in pulse mode, con il numero del provider da chiamare.
Sorpresa! Il modem interno del mio notebook fa "..bii....bii-buu-bii-bii-bee-boo...."   (traduzione:  fa il dial in DTMF, ignorando il parametro "P").
Rapido controllo e controprova, impostazione forzata su "impulsi" nella proprietà di composizione del modem, il tutto conferma che il modem integrato nel notebook, non è in grado di fare dial in pulse mode e ignora qualsiasi impostazione al riguardo.
In seguito ho stabilito che questa è una caratteristica frequente nei modem moderni (Oopss, ormai anche loro non sono più molto moderni...), comunque mi riferisco ai cosiddetti soft-modem o win-modem, quelli cioè che non hanno più intelligenza propria, perché basta e avanza quella del PC per fare tutte le manipolazioni digitali.
Siccome la legge di Murphy è sempre in agguato, mi rendo subito conto che l'idea di usare un modem classico esterno, non è percorribile in quanto il mio notebook non ha nessuna porta seriale esterna (ormai sono una razza in via di estinzione, soppiantate dalle più efficienti USB), e che i modem USB sono spesso della famiglia di cui sopra (ne ho provati ben 4, di marche diverse e nessuno era in grado di comporre il numero a impulsi decadici).
Sono quindi costretto a ripiegare sulla composizione manuale, ma in questo modo la connessione ha successo in meno della metà dei tentativi e comunque non è possibile sfruttare le velocità prossime ai 56 Kbps dello standard V90.

Da qui la decisione di progettare questo dispositivo:

Schema del convertitore DTMF to PULSE

Come si vede dallo schema, il cuore del dispositivo è un micro-controller della serie ST62 della ST Microelectronics (SGS-Thomson). Basta il più piccolo, ST62E20. Io in realtà ho usato un ST62E10 che avevo in casa, è identico come funzionalità e piedini, ha solo 2k di eprom, contro i 4 dell' E20, sufficienti comunque per questo progetto, ma credo che l' E10 non sia più in produzione. Non dovendo fare ulteriori modifiche al programma, può essere usata la variante ST62T10, che è anche più economica ma può essere scritta una sola volta perché non cancellabile.
A corredo del micro ci sono altri due integrati, un DTMF decoder (MT8870) e un solenoid driver (ULN2003), peraltro sostituibile da quattro transistor, purché vengano aggiunti i diodi di spegnimento in parallelo ai rele, che invece sono già inseriti nel 2003. Sono inoltre presenti tre rele, alcuni componenti passivi e un quarzo da 3,579545 MHz, frequenza necessaria al decoder dtmf e usata anche per il micro, semplicemente per evitare un doppio quarzo (il micro potrebbe andare anche a 8 MHz ma in questa applicazione non è necessaria tale velocità). Contrariamente all'apparenza, il quarzo di quel valore si trova facilmente perché è la frequenza della sottoportante colore NTSC.

Funzionamento
A circuito spento, con tutti i rele a riposo, l'uscita del modem è collegata alla linea telefonica e il circuito è completamente isolato da entrambi.
Quando si è pronti a fare la connessione e si vuole che il dial a toni dtmf venga convertito in impulsi decadici, si alimenta momentaneamente il circuito attraverso il pulsante ON, il programma scritto nel processore inizializza le varie porte del micro, dopodiché eccita il rele RL1, che manterrà alimentato il tutto finchè il programma stesso non deciderà di auto-spegnersi, diseccitandolo.
Qualche millisecondo dopo, viene eccitato anche RL2, che commuta l'uscita del modem verso la simulazione di linea interna, alimentata a 16,5V (4,5+12) attraverso un secondo contatto di RL1 e un carico resistivo (lo standard sarebbe di circa 48V a vuoto, ma i modem sono molto tolleranti e se supera i 12V ho constatato che va sempre bene). Questa pseudo-linea, è accoppiata capacitivamente all'ingresso del decoder dtmf MT8870. Per ultimo viene acceso il del verde, per confermare la condizione di "Pronto".
Il tutto, naturalmente, in una frazione minima del tempo da voi impiegato per leggerlo!
A questo punto sul PC si da il via alla connessione, il modem emette i toni dtmf che vengono decodificati dall' MT8870 e presentati agli ingressi della porta "B" del micro.
I codici vengono memorizzati, tenendo conto anche di eventuali pause più lunghe se intervallate da singoli digit, mentre una pausa lunga dopo una serie di digit consecutivi, viene interpretata come fine del numero. Ad ogni tono ricevuto viene momentaneamente spento il led verde, producendo quindi un lampeggio di feedback.
Terminato il numero, il modem passa a generare il tono di riconoscimento del V90, ma insiste per parecchio tempo, finchè non riceve conferma dalla controparte.
Durante questo tempo il programma del micro compone il numero in pulse mode usando RL3 per chiudere il circuito di linea su un carico di cui fa parte il led rosso, che di conseguenza lampeggia.
Dopo l'ultimo digit, senza interporre pause, diseccita RL2, riportando il modem sulla linea, quindi diseccita anche RL1, auto-spegnendosi.
Tutto è ritornato a riposo e il modem, che ancora stava inviando i toni di riconoscimento, è il solo sulla linea, in attesa della risposta per iniziare l'handshaking, che avrà successo alla massima velocità consentita da quella linea, come se l'operazione di dial fosse avvenuta senza interventi estranei.
Il jumper JP1 serve a raddoppiare la durata delle pause, sia quella iniziale, sia quelle inserite fra digit singoli, mediante una virgola nel numero.
Per ultimo, il pulsante OFF sollecita lo spegnimento del circuito qualora fosse stato acceso senza necessità (anche se il circuito si spegnerebbe da solo, per risparmiare le batterie, dopo un minuto di attesa a vuoto dei toni dtmf).

Nota:
Pur essendo nato da una esigenza relativa ai modem, il circuito in se non preclude l'utilizzo con apparecchi telefonici di altro genere e quindi in tutti quei casi di telefoni o fax in grado di generare solo toni, collegati ad un centralino che riconosce solo impulsi.
L'unico inconveniente è la necessità di emettere i toni dtmf con una certa continuità (per esempio con numeri memorizzati) per non introdurre pause troppo lunghe che farebbero considerare terminato il numero.

Realizzazione
Il programma, dopo essere stato assemblato, deve essere scritto nel chip attraverso un apposito programmatore per ST62. La rivista Nuova Elettronica ha pubblicato una serie di ottimi articoli sulla programmazione di questi microcontrollori, compreso un kit per realizzare il programmatore.





Timer per ventola di aereazione
controllato da accensione/spegnimento luce


Scopo del circuito è di accendere una ventola di aereazione, per un bagno cieco, quando viene spenta la luce, mantenendola poi in funzione per un tempo prestabilito.

Il circuito, che si alimenta quando viene accesa la luce e si automantiene anche oltre, per il tempo di azionamento della ventola, è provvisto di 4 connessioni a 110/220Vac, rispettivamente per:

  • F   - Ingresso Fase linea 220Vac, usata per azionare la ventola.
  • FL - Ingresso Fase comandata da interruttore Luce.
  • FV - Uscita Fase per Ventola, comandata internamente via Triac.
  • N   - Ingresso Neutro linea 220Vac.
Il cuore del circuito è un microprocessore PIC12F675 della MIcrochip, coadiuvato da un Optoisolatore MOC4043 per il pilotaggio del Triac BTA08600CW. La scelta dell'optoisolatore con logica Zero-Crossing e del triac di tipo Snubberless, è stata fatta per pilotare senza problemi il carico induttivo costituito dal motore della ventola. Sono poi presenti altri componenti passivi per l'alimentazione del circuito solo quando necessario, fra i quali i due condensatori in poliestere da 470nF 400/600Vac, con gli zener e i diodi che li seguono, realizzano due alimentatori reattivi per ottenere i +5V necessari al PIC; il primo, quello con la resistenza da 1 MΩ in parallelo, collegato all'ingresso FL, alimenta il circuito quando viene accesa la luce (oltre a servire come input al PIC per rivelarne lo spegnimento) e il secondo, collegato alla linea FV, serve per mantenerlo durante il tempo di azionamento della ventola a luce già spenta, per poi autospegnersi, diseccitando il triac. A riposo quindi l'intero circuito non è alimentato.
Sul circuito sono presenti anche due connettori lineari, uno a 5 pin per la programmazione del PIC, usato anche per jumper di opzioni, e uno a 3 pin per impostare il tempo di mantenimento della ventola dallo spegnimento della luce. Lasciando questo secondo connettore aperto, si ha un tempo di circa 3 minuti. Ponendo un cavallotto fra il piedino centrale e il piedino collegato al -, si ha il ritardo minimo di circa un minuto, mentre con il cavallotto verso il + il ritardo sarà di circa 5 minuti. Per una più precisa regolazione del ritardo, invece del cavallotto può essere collegato ai 3 piedini un trimmer o potenziometro di 5/10K, la cui regolazione varierà con continuità il ritardo, fra 1 e 5 minuti.
Per impostazione predefinita, l'accensione della ventola avviene allo spegnimento della luce, ma è possibile farla partire anche a luce accesa, ponendo un cavallotto fra il piedino centrale (-) del connettore di programmazione e quello segnato (D), collegato al piedino 7 (GP0) del PIC.
Sempre per impostazione predefinita, la ventola non viene attivata se la luce rimane accesa per meno di 30 secondi. Questo tempo di guardia, teso ad evitare inutili interventi della ventola per brevi accensioni della luce, può essere annullato ponendo un cavallotto fra il piedino centrale (-) del connettore di programmazione e il piedino segnato (C), collegato al piedino 6 (GP1) del PIC.
I due cavallotti possono anche essere presenti contemporaneamente.
In ogni caso, il tempo di mantenimento della ventola è misurato a partire dallo spegnimento della luce e una sua successiva riaccensione durante il tempo di mantenimento lascia la ventola accesa fino alla normale scadenza del tempo, con eventuale sovrapposizione della condizione determinata dalla nuova accensione.
Una rapida sequenza di accensione e spegnimento della luce, con intervallo inferiore a 2 secondi, viene interpretata come comando manuale di accensione o spegnimento della ventola.

Realizzazione:
Nel mio caso, per poter inserire il circuito nello spazio di un frutto di tipo tappo, ho realizzato un PCB per montaggio superficiale del PIC e dei componenti meno ingombranti quali diodi, zener, resistenze e condensatori da 4,7µF, mentre la morsettiera per i collegamenti alla rete elettrica, il Triac, l'accoppiatore ottico, i condensatori in poliestere da 400Vac, il condensatore da 470µF e la resistenza da 1MΩ, tutti evvidenziati in azzurro nell'immagine, sono montati sul lato opposto.
La soluzione per montaggio superficiale con componenti SMD, rende necessariao poter programmare il PIC quando è già montato sul circuito, il che spiega il motivo del connettore a 5 pin per la programmazione, visibile in basso a destra del PCB, con i pin disposti come l'uscita del programmatore PICKIT2 della Microchip.
Può essere comunque eseguito un montaggio tradizionale a componenti discreti, quando non sussistano problemi di ingombro.



Vincoli:
E' consentito l'uso delle informazioni, schemi e codici contenuti in questa pagina, per soli scopi privati, hobbistici e comunque gratuiti, mentre l'utilizzo per scopi commerciali, compresa la pubblicazione su riviste, deve essere autorizzato dall'autore, contattabile all'indirizzo: posta@enzoarizzi.it.


Stop