Encoder DTMF con pic 16F1705

Postato in: Elettronica,Pic Micro |

Introduzione

La storia continua, ancora un articolo al sapore di pic. Neanche io pensavo di dovermene più occupare ma sbagliavo. E’ stato un mio caro amico radioamatore, col quale da tempo condivido la passione per questi microcontrollori, che mi ha invogliato a portare a termine il progetto che mi accingo subito ad illustrarvi.

Ancora una volta torna prepotentemente il pic 16F1705, questa volta nelle vesti di generatore di segnali DTMF. Nulla di nuovo evidentemente, ma questo circuito all’occorrenza potrebbe essere impiegato in sistemi più o meno complicati, senza l’ausilio di integrati dedicati, riducendo così di molto la complessità circuitale; oppure, essere solamente e semplicemente oggetto di studio, per applicazioni e sviluppi diversi da quello attuale.

Bene, non ripeto qui le virtù di questo piccolo gioiello chiamato 16F1705, ma vi riporto i link del mio precedente articolo, in cui ne ho parlato più diffusamente.

IL DAC DEL PIC 16F1705

ECO DIGITALE CON PIC 16F1705

Descrizione

Brevemente, com’è noto ai più, e con riferimento alla tabella che segue, i DTMF sono dei segnali costituiti da coppie di toni ben precisi; per poterli riprodurre in modo corretto, ho prima digitalizzato tali toni con una frequenza di campionamento di 32 Khz e successivamente ho registrato nella memoria del pic solo i dati relativi ad un’onda intera di ognuno di essi.

dtmf_toni_bf

Alla pressione di un qualsiasi tasto, una routine di lettura, non fa altro che leggere in modo continuo i dati relativi alle due onde corrispondenti, eseguirne la somma ed inviare il risultato ottenuto al convertitore DAC, ottenenso così la riproduzione del corrispondente segnale DTMF.

La qualità dei segnali DTMF generati è veramente buona, ed un semplice filtro passa basso all’uscita del DAC del pic è già sufficiente ad eliminare eventuali segnali spuri. Per testarne la bontà, ho inviato tali segnali alla scheda audio del mio p.c. dandoli in pasto all’ottimo software “Spectrum Lab” di “DL4YHF” Col quale è possibile misurare la frequenza di ogni singolo tono generato, ed ognuno di essi si discosta dal valore standard al massimo di 10 Hz.

Dopo questo test, ho inviato i segnali generati ad una scheda elettronica di una chiave DTMF, impiegante il famoso decoder MT8870; ed i toni sono sempre stati decodificati correttamente senza alcun errore.

Chi volesse utilizzare i dati registrati, compresa la routine di riproduzione su un pic diverso, può farlo inviando i dati da riprodurre al modulo PWM anziché al DAC come in questo caso.

dtmf_schema

Non esistono pcb o foto della bread board che ho usato per le mie prove, ma potete fidarvi, il funzionamento è assicurato, del resto fa tutto il software e non vi sono componenti particolari. Credo di non dover aggiungere altro, come vedete dallo schema elettrico, oltre al pic ed alla tastiera c’è solo il filtro RC. Il file asm è corredato da molte indicazioni, ma se vi occorrono ulteriori chiarimenti non esitate a contattarmi……… Saluti e buon divertimento.

DTMF_asm

DTMF_hex

IT9DPX #135

(FRANCESCO M.)

(Articolo visitato: 199)

ECO DIGITALE

Postato in: Elettronica,Pic Micro,Schemi e Progetti |

Introduzione

Salve.
Un mese fa circa, sempre sulle pagine di questo sito, vi ho parlato di alcune mie prove fatte col 16F1705, che per le sue dimensioni e per le sue potenzialità ho definito “il piccolo gigante”. Non poteva non esserci un seguito, quindi, adesso desidero tornare sull’argomento per illustrarvi alcuni ampliamenti al progetto precedente, che lo rendono ancora più accattivante.
Infatti, oltre all’attivazione del DAC che abbiamo già visto, attivando anche l’interfaccia SPI e l’ADC del pic, e con l’aggiunta di una memoria esterna di tipo SRAM, è stato possibile ottenere un “Eco digitale”.

Descrizione

In poche parole, un segnale audio inviato all’ingresso dell’ADC del pic, viene campionato e memorizzato nella SRAM esterna, e successivamente dopo un tempo prefissato, riletto dalla SRAM per essere inoltrato al DAC del pic, ottenendo in questo modo una riproduzione del segnale precedentemente registrato, traslato nel tempo con un ritardo impostabile.

L’effetto finale, per tempi inferiori a 100mS, potrebbe risultare anche gradevole. Per darvi un’idea di cosa si ascolta, ho inviato ad un amplificatore sia il segnale diretto sia quello ritardato, e qui potete ascoltare il file audio che ho registrato, dove ogni dieci secondi noterete un incremento del tempo di ritardo.

All’inizio della registrazione il ritardo è di 11 mS, mentre alla fine di 165 mS circa. Non sono andato oltre con la registrazione, anche se con la memoria usata il ritardo massimo ottenibile e di 3 sec circa, e con tali valori non si ascolta più un eco ma due fonti sonore distinte contemporaneamente.

Col diagramma di flusso che segue, intendo illustrarvi ciò che accade ai dati durante l’elaborazione.
Ovviamente maggiore sarà la porzione di memoria utilizzata, maggiore sarà il tempo di ritardo dell’eco.

EcoDiagramma

Una piccola curiosità, collegando con una resistenza da 10 Kohm circa, l’uscita del DAC con l’ingresso del ADC, si realizza un anello chiuso, ottenendo in questo modo più echi che si susseguono l’un l’altro che si affievoliscono fino ad annullarsi.

Fin qui per grandi linee le caratteristiche di funzionamento del circuito, che potete osservare nella figura che segue, dove ho inserito qualche riferimento in più per renderlo maggiormente leggibile. I due pulsanti se premuti, incrementano o decrementano il tempo di ritardo con step di 11 mS, mentre il led segnala col suo impulso luminoso l’avvenuta variazione. Infine in basso a destra il connettore per la programmazione del pic in modalità ICSP.

EcoSch

Nella foto che segue è visibile il PCB, che ho eseguito evidentemente con metodi tradizionali. Se il PCB non è venuto più ingarbugliato di quanto lo è già, non è stato per merito mio, ma per merito di una interfaccia che non conoscevo e che si chiama PPS “peripheral pin select”.

EcoPcbComp

EcoPcbRame

Attivando questa interfaccia, mi è stato possibile infatti, assegnare un qualunque pin del pic, ad una qualunque interfaccia interna del pic. In questo modo, durante la fase di realizzazione del PCB, per evitare degli incroci o ingarbugliamenti con le piste di collegamento tra pic e SRAM, è stato possibile assegnare ad un pin piuttosto che ad un’altro, il collegamento alla periferica SPI, al DAC e all’ ADC del pic.
Anche se potrebbe sembrarlo, non è affatto complicato gestire la PPS del pic, e per ulteriori approfondimenti vi invito a leggere il datasheet del pic in questione.

Voglio precisare che la fedeltà dell’audio riprodotto è buona. Anche se ogni campione è di 8 bit e la frequenza di campionamento si aggira intorno ai 25 KHz, il segnale è perfettamente intellegibile.

Non escludo la possibilità di far lavorare la SPI con un clock maggiore, al fine di aumentare la frequenza di campionamento, o di usare un ADC ed un DAC a 16 bit, al fine di ottenere una qualità audio migliore. Ma questo mio scritto vuole essere solo uno stimolo ed uno spunto per chi volesse cimentarsi in progetti più complessi ed elaborati.

Clicca qui per il file asm
Clicca qui per il file hex

Buon divertimento.
Saluti.

Francesco.
it9dpx
#135

(Articolo visitato: 670)

IL DAC del 16F1705

Postato in: Elettronica,Pic Micro,Schemi e Progetti |

Introduzione

Eccomi ancora una volta a parlarvi di una mia recente esperienza che desidero condividere con voi. Si tratta di alcune prove fatte con un nuovo pic, nuovo almeno per me, la cui sigla è 16F1705, un piccoletto da 7+7 pin, ma con un cuore così grande da rimanerne sbalordito.
Il mio interesse per questo piccolo gigante è nato per caso, dopo essermi accorto spulciando il sito ufficiale della Microchip, che tra tutte le altre cose, a bordo ospita anche un DAC ossia un convertitore digitale analogico da 8 bit.
Poca cosa direbbero in tanti ma a me è subito piaciuto, soprattutto per le sue piccole dimensioni e per la sua grande flessibilità. Immediatamente ho anche fantasticato sulle possibili applicazioni offerte da tale opportunità, pensando ad uno scrambler, ad un oscillatore seno-coseno, ad un generatore di forme d’onda programmabile ed altro ancora.

L’interno

Elencarvi i vari blocchi interni che sono davvero tanti non credo sia il caso, chi lo desidera può scaricarsi il datasheet dal sito della Microchip che ho trovato molto chiaro, completo ed esaustivo.
Quindi come prima cosa, me ne sono procurato subito uno, ed ho fatto alcune prove, con risultati che a me sembrano molto interessanti e di cui vi illustro più avanti i vari aspetti, sperando di non tralasciare nulla.
Lo schema utilizzato per le mie prove, se di schema si può parlare, è visibile nella figura che segue, come vedete è davvero ridotto all’osso, infatti non c’è niente oltre al pic, nemmeno il quarzo per il clock da 32 Mhz, che viene generato internamente e più avanti vedremo come.

16F1705_schema

16F1705_breadboard

Così come suggerito nel datasheet, vista l’alta impedenza d’uscita del DAC, è consigliabile usare un buffer, ed in questo caso ho preferito utilizzare uno dei due amplificatori operazionali interni al chip, seguito da un semplice filtro passa basso RC, che rende la già molto precisa sinusoide, quasi perfetta, eliminando la leggera gradinatura del segnale presente sul pin 8. Vedi foto.

16F1705_out_bf

La parte che ci interessa approfondire l’ho copiata dal datasheet, ed è rappresentata nello schema a blocchi che segue, dove nella parte centrale è visibile il convertitore DAC vero e proprio; nel lato sinistro la parte che riguarda la selezione della tensione di riferimento positiva e negativa per il DAC, a destra in basso le uscite utilizzabili ed in alto gli otto bit da convertire.

16F1705_DAC

Software

Per la scrittura e la simulazione del software ho usato “MPLAB V8.92”, mentre per la scrittura del pic ho usato “propic2“ abbinato al software “melabs Programmer 4.52 beta”.
A fine articolo troverete anche il file ASM che ho corredato di alcune indicazioni per renderlo più leggibile, ma se qualcosa ho dimenticato me ne scuso ed eventualmente su richiesta cercherò di rimediare.
Voglio solo precisare che la tabella dei dati nel file ASM, contiene solo i valori del seno compresi tra 0° e 90°, gli altri valori tra 90° e 180° essendo speculari ai precedenti, li ho ottenuti leggendo la tabella al contrario da 90° a 0°. Lo stesso discorso vale per la parte negativa della sinusoide, dove i dati ricavati dalla tabella sono di volta in volta sottratti al valore 254, ottenendo in questo mado anche i valori da 180° fino a 360°.

Sinusoide

I valori che leggete in tabella sono ottenuti moltiplicando il seno dell’angolo per 100 e sommando il risultato ottenuto a 127, in questo modo la sinusoide sarà centrata a circa ½ della VCC.
In questo caso ho considerato tutti i valori tra 0° e 360° ottenendo una frequenza della sinusoide di circa 556 Hz, ma i risultati sarebbero ancora accettabili anche prendendo solo i valori pari, o solo i dispari, ottenendo ovviamente un valore di frequenza doppio.

Insomma, come accade sempre in questi casi, non ci sono limiti alla fantasia, e si possono implementare con questo DAC anche le cose più stravaganti, come generare un segnale di forma prestabilita ed assolutamente originale.

Nella figura seguente è invece visibile lo schema a blocchi che genera il clock, con evidenziato il percorso della logica che permette di generare 32 Mhz partendo da un riferimento di appena 500 Khz, si capisce come seguendo logiche diverse si possa scendere fino a 31,25 Khz.

16F1705_osc_clock

Qui per vedere il file asm.
Qui per il file hex.

Per qualunque chiarimento non esitate a contattarmi.
Saluti e buon divertimento.

Francesco.
it9dpx
#135

(Articolo visitato: 802)

Lettura impulsi contatore enel e registra consumi

Postato in: Elettronica,Hardware,Pic Micro,Schemi e Progetti |

Introduzione

Ormai da parecchio tempo su tutto il territorio nazionale, l’enel ha sostituito i vecchi contatori di tipo elettromeccanico con dei nuovi contatori di tipo digitale. Con il bravo display di cui sono dotati, è possibile tra tutte le altre cose, visualizzare la potenza istantanea erogata in quel momento, ma la cosa che subito attira l’attenzione di chi osserva, sono senza dubbio i due led rossi che lampeggiano più o meno con cadenza regolare.

Sin dall’inizio, cioè subito dopo che ne hanno installato uno anche a casa mia, ho cercato di trovare delle indicazioni utili, per dare un senso a questi enigmatici lampeggi, e sul web non è stato difficile trovare pagine e pagine dedicate alla spiegazione di questo mistero.

Molto sinteticamente, i due led comunicano al mondo esterno, la potenza erogata in quel momento, e più precisamente il led in alto la potenza attiva, quello in basso la potenza reattiva.

Nel dettaglio, trascurando la durata dell’impulso stesso in quanto ininfluente, il tempo tra un impulso ed il successivo è inversamente proporzionale alla potenza assorbita dall’impianto di casa in quel preciso istante, e con la seguente formula P=3600/t, possiamo determinarne con buona approssimazione il suo valore.

Questo, potremo farlo in qualunque momento della giornata per gioco o per curiosità, semplicemente usando un cronometro ed una calcolatrice. Ma sempre sul web, ho trovato un interessante articolo in cui l’autore, usando il proprio p.c. ed il proprio mouse modificato con una fotoresistenza, è stato in grado di misurare il tempo tra tali impulsi, determinare il valore della potenza e riportarlo su un grafico in excel, in modo tale da poterne leggere l’andamento nell’arco della giornata.

Ecco il link :
http://www.portalsole.it/casaenergia/misuraconsumi-elettrici.html

Alla fine dell’articolo, ho pensato quasi subito, alla possibilità di far eseguire lo stesso lavoro non ad un p.c. poco pratico ed ingombrante, ma ad un microcontrollore, molto più piccolo, di facile alimentazione ed installazione.

Del resto non servono ne grandi capacità di calcolo ne grandi velocità d’esecuzione, ma solo la possibilità di cronometrare tra due impulsi consecutivi, eseguire il semplice calcolo di cui prima, salvare il risultato su una eeprom, e dopo due o tre giorni di registrazione, riversare i dati così raccolti su un p.c. e rappresentarli su un grafico per un’agevole lettura ed interpretazione.

Funzionamento

Bene, dopo alcune settimane l’idea ha preso forma, e nella foto che segue potete osservarne alcuni aspetti; dove sono visibili oltre al pic, il quarzo, la eeprom, il led verde, il connettore per la seriale ed i due pulsanti, uno per avviare la registrazione e l’altro per riversare tutto sul p.c.

impulsiC.S

Le dimensioni contenute e l’esiguo numero di componenti usati, sono la diretta conseguenza dell’uso del microcontrollore programmato in modo opportuno, su cui gravano tutti i compiti da eseguire appresso elencati:

a) Implementare un cronometro con risoluzione di 1ms.

b) Eseguire la lettura tramite il fotodiodo.

c) Eseguire i calcoli.

d) Salvare i risultati sulla eeprom.

e) Implementare una porta seriale.

f) Trasferire i dati dalla eeprom al p.c.

Ecco il marchingegno in funzione…….

impulsi_collegato

Il corretto funzionamento è confermato dal led verde sulla basettina, che lampeggia in sincronia con il led rosso sul contatore, questo accade solo quando il fotodiodo è posizionato correttamente sul led rosso del contatore.

La registrazione può essere interrotta in qualsiasi momento togliendo alimentazione al circuito, oppure, si interrompe automaticamente dopo che lo spazio sulla eeprom è completamente esaurito, evento segnalato dal led verde che rimane acceso fisso.

Sembra molto, ma il microcontrollore usato in questa occasione, un pic 16F88, può fare molto di più.

impulsi_S.E

Nella figura che segue invece, è visibile una parte del grafico che è venuto fuori, dalla registrazione eseguita sul cantatore di casa mia durata tre giorni.

grafico

I picchi con cadenza regolare, presenti praticamente sempre, sono dovuti alla potenza assorbita dal riscaldatore del mio acquario, dove all’interno la temperatura non scende mai sotto 26 °C circa.

Durante le ore notturne, escludendo i picchi del riscaldatore, rimane la sola potenza assorbita dall’alimentatore del citofono, durante le ore diurne invece e per brevi periodi, ai picchi di cui prima, si sommano gli effetti della potenza assorbita dal lampadario, dal frigorifero o da entrambi contemporaneamente.

Insomma, dal grafico si possono trarre anche altre informazioni relative alle nostre abitudini quotidiane ed all’uso di alcuni elettrodomestici, come il ferro da stiro, la lavatrice, etc.

Non so in quale misura può essere utile un indagine di questo tipo, ma io l’ho trovata interessante ed anche divertente.

Se volete lasciare dei commenti ho avete delle curiosità o richieste da fare contattatemi pure, vedrò di accontentarvi.

Questo articolo è presente anche su:
http://www.electroyou.it/francopic/wiki/misura-impulsi-contatore-enel-e-registra-consumi

Saluti.

IT9DPX – #135 – (FRANCESCO M.)

(Articolo visitato: 2.911)

Riparazione citofono con microfono a carbone guasto.

Postato in: Elettronica,Schemi e Progetti |

Introduzione

La realizzazione del circuito che vi descriverò più avanti, risale a tre settimane fa circa; quando improvvisamente la cornetta del mio citofono, ha smesso di funzionare, consentendo solo l’ascolto del posto esterno e degli altri posti interni, ma non la trasmissione della voce verso gli altri.

Evidentemente è apparso subito chiaro che il problema risiedeva nella capsula microfonica, che in questo modello ormai non più tanto recente, è del tipo a carbone e d

i difficile reperibilità.

[continua a leggere →]

(Articolo visitato: 8.844) Pagina Successiva »