home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


accelerare una moltiplcazione
     
Autore Messaggio opzioni
caccamo2





postato il:
12.07.2019, alle ore 14:28
non ho familiarita' con l'algoritmo che stai usando non saprei cosa aspettarmi, se sei soddisfatto tu direi che hai risolto.


...
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
14.07.2019, alle ore 16:26
MB54:

devo far fare l' analisi di un segnale acquisito a 10 bit dall' ADC e OGNI TOT blocchi acquisiti devo fargli anche calcolare il valore Vrms e l' offset DC, fare la media mobile di VRMS ecc.
....
Il calcolo di Vrms è saltuario, ed avviene ogni tot.
....
L' impedenza di uscita del segnale in ingresso (sinusoide 400-900 Hz) è sui 200 ohm;
.....

Ho letto solo ora tutto il 3D ed intervengo sul calcolo del valore RMS.

Se non e' obbligatorio usare esclusivamente un solo PIC e fare tutto il lavoro in modalita' numerica, potresti delegare il calcolo (peraltro saltuario come da te evidenziato) del valore RMS ad un integrato analogico esterno, ad esempio LTC1968 che fino a 150 KHz ha un errore di conversione dello 0.1% e gestisce segnali in ingresso fra 5 mV ed 1 V con un fattore di cresta fino a 5. (l'ho gia' usato e va benissimo)
http://cds.linear.com/docs/en/datasheet/1968f.pdf
Una volta che hai il valore RMS (una tensione continua), lo acquisici (saltuariamente!) con l'ADC o se serve la simultaneita' stretta con un secondo ADC. Se poi il tuo PIC ha un solo ADC nulla vieta di usare DUE pic visto che costano meno di un cappuccino e brioche.

Se infine il segnale in ingresso fosse una sinusoide non troppo distorta forse basterebbe usare un fattore di conversione (da calibrare una tantum o anche periodicamente ogni 4-5 secondi) da applicare al valore di picco (che hai gia' dall'adc) per ottenere il valore rms.






"se peso cado, ma se cado non peso"
adamatj.altervista.org
MB54




una ogni 100 livelli


postato il:
14.07.2019, alle ore 21:05
Ti ringrazio dei suggerimenti e dell' attenzione. Devo avere ancora un LTC1968 che gira in qualche scatola, ma nel caso specifico direi che non è possibile usarlo. Quello di cui voglio misurare la tensione rms è un segnale 'burst' (una trasmissione morse) e voglio misurare la tensione solo nel momento in cui c'è un burst (punto o linea o loro frazione ).

L' algortimo di Goertzel riconosce la presenza di un tono a 700 Hz ( un punto o frazione di punto) e solo in questo caso acquisisco Vrms. Quando il tono non c'è piu', non uso il dato. L' obiettivo è costruire una media mobile delle tensioni rms solo quando il tono è presente (media mobile su 6..20 toni riconosciuti) per controllare il DAC del PIC con cui regolare un ALC o AGC (o in alternativa usare I2C-SPI per controllare un potenziometro di volume all' ingresso).

Direi che riflettendo su quanto detto in questo forum, mi sono accorto di aver fatto alcuni grossi errori concettuali, che dovrei al momento aver corretto e/o superati tutti.

Con Fosc del PIC a 64M, timer0 a 238 µS eseguo 4200 campionamenti al secondo, ognuno dei quali dura tra i 20 ed i 35 µS effettivi (varia con il numero di cicli di precarica del condensatore dell' ADC). Fra un campionamento è l' altro mi rimane tempo in abbondanza per fare tutti i calcoli necessari (anche a 16 bit, anche Vrms senza saltare riconoscimenti). Mi avanza ancora molto tempo per fare la media mobile e tutto il resto.
A essere sincero, il campionamento con clock dell' ADC a 1µS è buono, ma non perfetto: a lavoro definito vedrò se i tempi per tutte le operazioni sono compatibili con un TAD di 2µS

Il tempo di riconoscimento della presenza di un tono non è bassissimo, e varia da circa 4 mS (per una BW di 233 Hz,usando 18 loop nell' algoritmo di Goertzel) a 19 mS per una BW di 54 Hz (78 loop nell' algoritmo di Goertzel).
Ho provato anche qualche funzione comandata da pulsanti ( preferibilmente da I2C proveniente dal un successivo processore che si occuperà della decodifica) che mi possa variare al volo la frequenza centrale dell' algoritmo, il numero di loop dell' algoritmo di G., la soglia numerica per il riconoscimento del tono ecc.

La decodifica Morse-> testo sarà fatta da un processore successivo



Genesi:
Il problema per cui ho iniziato questo 3D è nato per una variabile dichiarata male: non riuscivo correttamente a fare in successione un singolo campionamento per volta seguito dai relativi calcoli. In una funzione che prevedeva prima tutti i campionamenti di un blocco di dati (20...150) e poi i calcoli, la variabile era dichiarata correttamente e tutto procedeva bene ma lentamente (trattandosi di operazioni successive). Un altra funzione, con un acquisizione per volta e relativi calcoli subito dopo (e così via 20..150 volte) conteneva invece una dichiarazione errata e venivano numeri improbabili.

Per il momento mi fermo quì con Goertzel. I punti deboli sono essenzialmente due:
1. scarso fattore di forma della risposta , intesa come 'pendenza' della risposta al limite della BW. Lobi laterali non troppo attenuati (1:4 - 1:5 in tensione).
2. risultato in uscita enormemente influenzato dal livello del segnale in ingresso


inizierò in settimana con LM567 per poter fare un confronto fra le due alternative e poi ottimizzerò quello imho preferibile.

Grazie per tutti i contributi.
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
15.07.2019, alle ore 10:37
A proposito di algoritmi economi per rivelare una sinusoide, non è che questo articolo può darti qualche spunto?
https://www.electroyou.it/ecotan/wiki/ricevitore-per-onde-co…
(in questo caso si tratta di una sinusoide a 141 kHz)



anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
MB54




una ogni 100 livelli


postato il:
15.07.2019, alle ore 11:17
Troppo difficile per me, non ci ho capito nulla; spiegazione direi molto (troppo) sintetica. Chiarimento soft di un lettore (ultimo commento), ma non saprei che farne.
Devo procurarmi questo libro, ma soprattutto trovare tempo e voglia.... a casa arrivo alla sera sempre cotto. E poi dovrei imparare ad usare i chip a 16 o 32 bit... purtroppo 'poi' è fratello di 'mai'.

http://www.dspguide.com/download.htm
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
15.07.2019, alle ore 17:29
Bastano una quarantina di click per scaricare i 34 capitoli in pdf, piu' gli esercizi e l'errata corrige....
Se poi uno lo vuole su carta servono circa 50 euri dal pelatone, grossomo modo quello che costa stampare in copisteria le oltre 500 pagine del libro

Sara' una sana lettura per le prossime fredde notti invernali con una tazza di vin brule'.

ps. grazie per il link (free e legalissimo!)



"se peso cado, ma se cado non peso"
adamatj.altervista.org
MB54




una ogni 100 livelli


postato il:
15.07.2019, alle ore 17:50
double_wrap:
Bastano una quarantina di click per scaricare i 34 capitoli in pdf,


Grazie. Avevo visto solo le 600 pagine in html, e mi era passata la voglia di scaricarle una ad una. Il link per il pdf di ogni capitolo in effetti c'è.
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale