Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Dithering

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[11] Re: Dithering

Messaggioda Foto Utentethermidor » 18 giu 2011, 21:59

Per postare lo schema mi devo attrezzare perché non ho confidenza con FidoCad.
E' un filtro a quattro poli (un po' rabberciato).
Lo schema comunque è qui:
http://thermidor.altervista.org/wp-cont ... l-Rev1.pdf

Beh il silenzio tra una nota è l' altra funziona con il comando di Gate che è quello che fa partire i generatori di inviluppo.
In pratica l' ultima tensione di comando, ai Vco Vcf e Vca, deve rimanere memorizzata, anche quando si stacca la mano dalla tastiera, per permettere il tempo di rilascio, che può avere valori lunghissimi.
Avatar utente
Foto Utentethermidor
73 3
New entry
New entry
 
Messaggi: 86
Iscritto il: 20 apr 2011, 21:25

0
voti

[12] Re: Dithering

Messaggioda Foto UtenteIsidoroKZ » 19 giu 2011, 2:06

Ok, credo che qualcosa si possa fare, hai un filtro di ordine elevato quindi i conti che ho fatto sulla frequenza di rinfresco qui sono molto piu` rilassati.

Parlando del filtro, come hai stabilito la posizione dei poli? Facendo un po' di conti, vengono due poli con un Q di 1.1 a circa 580Hz e altri due reali a 1200Hz e 3000Hz circa. Con che criterio li hai posizionati in quel modo?

Direi che di sicuro si possa far qualcosa per conquistare almeno un bit o due in piu`, cioe` i valori possono essere ad esempio 513, 513.25, 513.5, 513.75 e poi 514 o anche solo un bit in piu`, 513, 513.5 e 514.

Cerca fra le routine del PIC se ne esistono che generano un bit casuale, oppure due bit casuali. Nel frattempo faccio un po' di conti per vedere come fare. Probabilmente le tabelle con i valodi di duty cycle devono essere riscritte come numero che abbia anche un bit o due decimali, quindi su 11 o 12 bit, da ridursi poi a 10bit prima di mandarli al generatore PWM.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[13] Re: Dithering

Messaggioda Foto Utentethermidor » 19 giu 2011, 14:56

In realtà non ho scelto la posizione dei poli, ho preso il filtro da qui:
http://www.electricdruid.net/
In un paio di applicazioni, viene usato un PIC per fare una sorta di DDS, attraverso il quale in un caso si crea un LFO, nell' altro un generatore di inviluppi.

La disposizione dei poli risulta anche a me essere la stessa, tra l' altro per curiosità tu come l' hai calcolato (sei stato velocissimo), io ho fatto ricorso a Ruffini e ci ho lavorato abbastanza.

Generare un numero casuale non è un problema, neanche riscrivere la tabella.
Rimane il problema che la frequenza di campionamento non la posso portare a più di 20kHz.
Avatar utente
Foto Utentethermidor
73 3
New entry
New entry
 
Messaggi: 86
Iscritto il: 20 apr 2011, 21:25

0
voti

[14] Re: Dithering

Messaggioda Foto UtenteRenzoDF » 19 giu 2011, 15:33

pasciok ha scritto:Posso sapere perché 3 post miei e relative risposte spariscono nel nulla?


No :!:
"Il circuito ha sempre ragione" (Luigi Malesani)
Avatar utente
Foto UtenteRenzoDF
55,9k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 13189
Iscritto il: 4 ott 2008, 9:55

0
voti

[15] Re: Dithering

Messaggioda Foto UtenteIsidoroKZ » 20 giu 2011, 8:05

Non ho trovato il filtro nel sito che hai indicato. La funzione di trasferimento l'ho calcolata con un programma per l'elaborazione simbolica delle espressioni. Ho scritto le 4 equazioni ai nodi che descrivono il circuito, le ho fatte risolvere al programma, sostituito i valori dei componenti, fatto fattorizzare il denominatore, totale 10 minuti, per lo piu` passati a cercare che cosa avevo sbagliato visto che mi ero perso un polo :).

Trovato come rifare le tabelle. Ho provato a fare i conti da 512 a 1023, ho preso 512 perche' tanto quando arrivi all'ottava dopo non hai bisogno di 1024, cambi ottava usando di nuovo 512.

In excel le nuove tabelle si fanno in un attimo. Mi serve una variabile n numero di bit da aggiungere (da 1 a 4 tipicamente) e K=2^n, che quindi puo` essere 2, 4, 8, 16... a seconda che voglia aggiungere 1 bit, 2 bit, 3 bit, 4bit... di piu` potrebbe sentirsi qualche battimento, ma puoi sempre provare.

Prendi la tua tabella iniziale con i numeri con tanti decimali e la moltiplichi per K. Poi la approssimi all'intero piu` vicino, come avevi gia` fatto per la tabella originale.

Fai un generatore di numeri casuali che generi numeri interi da 0 a K-1. Ad esempio se aggiungi 2 bit di risoluzione, deve generare casualmente 0, 1, 2 e 3.

Ogni volta che rinfreschi, prendi il numero dalla tabella e gli sommi un nuovo numero casuale. Il risultato lo shifti a destra di n bit, e ti ritrovi un numero da 10 bit da mandare al PWM.

Questo numero non e` uguale tutte le volte (tranne in qualche caso), ma oscilla casualmente fra un valore e quello successivo, e questo effetto dopo i filtro da` il valore medio piu` preciso.

Per il generatore di numeri interi (pseudo)casuali, credo possa anche usare un LFSR, ma non troppo lungo altrimenti una volta ogni tanto puoi avere lunghe sequenze di zeri o di uni. Un generatore con shift register di L bit puo` generare L uni di seguito e L-1 zeri di seguito. Se hai altri generatori, usali, al piu` fa sequenze troppo lunghe di zeri o uni.

Se hai idea della frequenza di taglio che vuoi avere per il filtro e la famiglia di polinomi (Butterworth, Chebicheff, Bessel...) posso provare a riprogettarlo.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[16] Re: Dithering

Messaggioda Foto Utentethermidor » 20 giu 2011, 9:55

Dunque l' articolo originale è qui:
http://www.electricdruid.net/index.php? ... ts.envgen7

Il metodo che hai descritto è quello che immaginavo, fa piacere avere una conferma.
Il filtro per ora lo lascerei così, anche perché l' ho già montato. In ogni modo non ho grossi problemi a dimensionarne un' altro, se ne venissero fuori ti contatto.

Piuttosto mi spieghi la differenza tra i generatori di numeri pseudocasuali che hai citato (il digitale non è proprio la mia tazza di tè).
Io fino ad ora mi ero basato su un generatore molto semplice (in termini di istruzioni), trovato tempo fa su EDN, credo.
Avatar utente
Foto Utentethermidor
73 3
New entry
New entry
 
Messaggi: 86
Iscritto il: 20 apr 2011, 21:25

0
voti

[17] Re: Dithering

Messaggioda Foto UtenteIsidoroKZ » 20 giu 2011, 10:12

Continuo a non trovare il filtro a 4 poli che hai usato.

Il solo schema che trovo e` questo.

Tutti i generatori di numeri casuali fatti da un programma sono in realta` pseudocasuali, la sequenza si ripete sempre la stessa e prevedibile. In questa applicazione forse e` opportuno che il generatore non faccia troppi run di valori costanti.

Com'e` il generatore che usi?
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[18] Re: Dithering

Messaggioda Foto Utentethermidor » 20 giu 2011, 23:34

Mannaggia Isidoro, mi becchi sempre in castagna.
Non è tutta colpa mia, l' autore del sito ha cambiato tipologia di filtro, tra l' altro dichiara che è un Bessel.

Ora è tardi, mi ripropongo domani di farti lo schema in FidoCad, e possibilmente di metterti la parte di listato del generatore pseudocasuale ( in Pascal).
Se riesco pure il link all' articolo di EDN.
Avatar utente
Foto Utentethermidor
73 3
New entry
New entry
 
Messaggi: 86
Iscritto il: 20 apr 2011, 21:25

0
voti

[19] Re: Dithering

Messaggioda Foto UtenteIsidoroKZ » 20 giu 2011, 23:49

In realta` non era tanto lo schema che volevo vedere, quello lo hai usato anche ti, ma se diceva qualcosa sui criteri di dimensionamento del filtro.

Per il generatore basta il link a edn, chissa` se il pascal me lo ricordo ancora.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

1
voti

[20] Re: Dithering

Messaggioda Foto Utentethermidor » 21 giu 2011, 10:00

Allora no, l' autore non diceva proprio nulla sul dimensionamento, ad ogni modo anche per provare FidoCad:


La posizione dei poli:
Immagine

Il link a EDN non riesco più a trovarlo, tra l' altro è diventato di un macchinoso il sito, però:

procedure generate_noise;
begin
asm
rlf _lowbyte
rlf _midbyte
rlf _highbyte
movlw polynomial
btfsc STATUS, C
xorwf _lowbyte, F
end;
PORTB := lowbyte;
end;


Beh è in pascal ma la routine è in assembler.
I tre byte sono assegnati all' inizio così:

lowbyte := $FF;
midbyte := $AA;
highbyte := $AA;


Mentre polynomial è una costante:
const
polynomial : byte = $1A;


Ora non ricordo più se la scelta dei valori iniziali e della costante fosse proprio quello di EDN, ad ogni modo questo era il metodo che spiegavano. A me andava bene perché occupava veramente poche risorse, e comunque il suo lavoro (generare rumore) lo faceva.
Avatar utente
Foto Utentethermidor
73 3
New entry
New entry
 
Messaggi: 86
Iscritto il: 20 apr 2011, 21:25

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 54 ospiti