Newsgroup: it.hobby.elettronica.digitale
Titolo: ATMega e generazione di sinusoidi

1) Vorrei generare una sinusoide a bassa
distorsione e stabile un frequenza utilizzando la
porta PWM di un micro della AVR.
Vi chiedo, per una frequenza di 18-20 KHz la
purezza (dopo filtraggio LCR) e' decente oppure mi
ritrovo con una rampa oppure segnali triangolari?
2) Se volessi sincronizzare alcuni processi
software con questa onda, il micro mi genera una
qualche interruzione al passaggio per zero o alto
punto significativo?
In sostanza qual'e' il metodo migliore per
generare una sinusoide e conoscere con eccellente
precisione il passaggio di zero-cross oppure del
valore Pigreco/2 (con le possibili varianti
Pigreco e Pigreco*3/2)
Questa sinusoide verra' applicata ad una bobina di
trasmissione, il dispositivo dovra' poi leggere
con estrema precisione la fase del segnale in una
bobina di ricezione separata. Visto che nella
ricezione devo ricorrere ad un trigger, uno
"squadratore" di segnale ecc. per rilevare i
parametri di passaggio-zero, non volevo aggiungere
anche l'errore di campionamento in trasmissione.
avete suggerimenti da aggiungere?
TNX

 avete suggerimenti da aggiungere?
Potresti anche considerare un generatore DDS , per esempio
 l'AD9833 che fornisce una sinusoide con 10 bit di precisione,
armoniche e spurie < -60 dB, frequenza regolabile a passi di 0,1
Hz, fase regolabile a passi di 2pi/4096, programmabile con 3 fili SPI.
Comunque l'AD ha decine di DDS e questo e' solo il piu' piccolo ed
economico. Vedi tu se c'e' qualcosa che puo' esserti utile.

Pigreco e Pigreco*3/2)
Il metodo migliore secondo me è usare un oscillatore analogico (esempio un
'twin-tee'), due comparatori veloci e lavorare sulla differenza di fase delle
onde, approfittando del fatto che il ritardo dei comparatori si compensa.
--
ciao
  Stefano

 economico. Vedi tu se c'e' qualcosa che puo'
esserti utile.
questa e' la strada da seguire.
TNX

 onde, approfittando del fatto che il ritardo dei
comparatori si compensa.
ma in analogico ho decisi slittamenti di frequenza
in funzione della temperatura e devo sofisticare
per compensare questo difetto.
Era questo il motivo che mi illudeva di cercare
una soluzione come quelle che Valeria mi ha
suggerito.
TNX

suggerito.
Non credo che la temperatura possa variare tanto rapidamente da darti questo
genere di problemi, e comunque qualunque filtro ti darà di rotazione di fase.
Inoltre se usi condensatori in poliestere o mylar e resistenze a strato
metallico la stabilità in temperatura può essere buona.
Il modo migliore è compensare gli errori facendo una misura differenziale di
fase istantanea tra i segnali con due comparatori.
--
ciao
  Stefano

 punto significativo?
Sě, il micro generea un'interruzione praticamente per ogni campione per 
cui puoi sincronizzarti con precisione dove vuoi.

 troppo alta per il PWM di un AVR.
Alcuni AVR hanno un PLL che permette di fare
funzionare il generatore PWM a 64MHz, mentre il
core può funzionare normalmente a qualche MHz.
Tutto sommato comunque anche usando una
risoluzione minore ed un buon filtro, si potrebbero
ottenere buoni risultati... Si può anche usare un
algoritmo di dithering per guadagnare qualcosa.
Ciao,
A.D.

core può funzionare normalmente a qualche MHz.
E quali?
Non mi risulta che gli AVR abbiano un pll, forse ti confondi con gli ARM.
E qui non menziona nessun micro con pll:
http://www.atmel.com/dyn/products/devices.asp?family_id=607
--
ciao
  Stefano

 forse ti confondi con gli ARM.
Ci sono diversi modelli che hanno il PLL di cui parlavo,
ovviamente non me li ricordo a memoria tutti, ma posso
dirti con certezza che ce l'ha il Tiny26 (e dovrebbe
avercelo anche qualcuno della serie Mega).
Ciao,
A.D.

 wrote in message

In effetti il Tiny26 ha un "High Frequency PWM" che può funzionare a 64Mhz,
collegabile a un contatore a 8 bits. (a quanto sembra dopo ricerche l'ha solo
lui)
Questo consentirebbe in teoria, usando 256 gradini a un clk 256 volte più grande
di arrivare a un onda sinusoidale di circa 911 Hz.
Quindi a meno di utilizzare il teorema di Shannon o qualche trucco simile, che
comunque prevedono una filtratura non leggera con relativa rotazione di fase in
uscita, non può ottenere la frequenza voluta nemmeno col pll.
--
ciao
  Stefano

 sinusoidale di circa 911 Hz.
E' una stima un pò pessimistica! :-)
Stiamo prlando di campioni riprodotti a 250KHz!
Perfino in applicazioni audio (dove la purezza e la
qualità della sinusoide è fondamentale), si utilizzano
frequenze minori...
Le armoniche sarebbero sufficientemente lontane
dalla banda di interesse, e l'offset di fase introdotto
dal filtro sarebbe fisso, quindi facilmente corregibile.
Secondo me non è una brutta soluzione... :-)
Ciao,
A.D.