qqcreafis
| Inviato il: 22/05/2020 09:20:51
|
mi serve in tempo reale (adesso!)un tester true RMS con una banda passante di almeno almeno 3 KHz
Ho pensato di utlilizzare arduino in quanto ... disponibile
ma non riesco a trovare il tempo di sample dell'istruzione analogread deve essere il più piccolo possibile compatibilmente ai miseri 10 bit.
è il parametro fondamentale in quanto sul numero di letture al secondo si può derogare
il metodo più semplice potrebbe essere quello di accumulare solo la media e la media dei quadrati fare 10000 letture o più e poi spedire i dati
--------------- ODE AD UNO STUDENTE MERITEVOLE (Sermone) Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo ! In un mondo dove tutto SEMBRA uguale a tutto. In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti. In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”. Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto. Xyz ci da una SPERANZA. Xyz non ha seguito le falsità che ci circondano. Xyz si è impegnato ed è riuscito nel suo intento.
| |
| | qqcreafis
| Inviato il: 23/05/2020 17:56:00
|
void setup() {
Serial.begin(9600);
}
unsigned long acc;
unsigned long acc2;
unsigned long z;
//double z,acc,acc2,nume=200;
double var2,media,media2,RMS,RMS02;
int i=0;
int n=4000;
void loop() {
z=0;
acc=0;
acc2=0;
var2=0;
for(i=0;i<n;i++){
z=analogRead(0);
//delay(1000);
acc=acc+z;
acc2=acc2+z*z;
//acc=0;
//acc2=0;
}
//num=n;
//var2=((acc2-acc*acc)/num^2*(5/1024)^2)^(1/2);
// var2=sqrt(acc2-acc*acc)/n*5/1024;
//var2=(acc)/n*5/1024;
var2=(acc2-acc*acc);
media=acc;
media=media/n;
media2=acc2;
media2=media2/n;
RMS=sqrt(media2)*5/1024;
RMS02=(media2-media*media)*25/1024/1024;
Serial.println(acc);
Serial.println(media*media);
Serial.println(media2);
Serial.println(RMS,4);
Serial.print("var2 = ");
Serial.println(RMS02,8);
// var2=((acc2-acc*acc)/num^2)^(1/2);
// var2=((acc2-acc*acc)/n^2*(5/1024)^2)^(1/2);
// Serial.println( var2);
//Serial.print( acc2);
//Serial.print(" ");
//Serial.println( acc*acc);
// delay(1000);
}
--------------- ODE AD UNO STUDENTE MERITEVOLE (Sermone) Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo ! In un mondo dove tutto SEMBRA uguale a tutto. In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti. In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”. Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto. Xyz ci da una SPERANZA. Xyz non ha seguito le falsità che ci circondano. Xyz si è impegnato ed è riuscito nel suo intento.
| | | | qqcreafis
| Inviato il: 23/05/2020 17:58:16
|
sembra che funzioni devo solo testare con onda sinosuidale
fornisce RMS com media diversa da zero ed il quadrato della varianza che è il valore RMS^2 nel caso di media 0
--------------- ODE AD UNO STUDENTE MERITEVOLE (Sermone) Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo ! In un mondo dove tutto SEMBRA uguale a tutto. In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti. In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”. Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto. Xyz ci da una SPERANZA. Xyz non ha seguito le falsità che ci circondano. Xyz si è impegnato ed è riuscito nel suo intento.
| | | | qqcreafis
| Inviato il: 01/06/2020 08:51:32
|
void setup() {
Serial.begin(9600);
}
unsigned long acc;
unsigned long acc2;
unsigned long z;
//double z,acc,acc2,nume=200;
double var2,media,media2,RMS,RMS02;
int m,i=0;
int n=4000;
double valore=0;
void loop() {
z=0;
acc=0;
acc2=0;
var2=0;
for(i=0;i<n;i++){
z=analogRead(0);
//delay(1000);
acc=acc+z;
acc2=acc2+z*z;
//acc=0;
//acc2=0;
}
//num=n;
//var2=((acc2-acc*acc)/num^2*(5/1024)^2)^(1/2);
// var2=sqrt(acc2-acc*acc)/n*5/1024;
//var2=(acc)/n*5/1024;
var2=(acc2-acc*acc);
media=acc;
media=media/n;
media2=acc2;
media2=media2/n;
RMS=sqrt(media2)*5/1024;
RMS02=(media2-media*media)*25/1024/1024;
m=m+1;
valore=valore+sqrt(RMS02);
//Serial.println(m);
if(m ==100){
//Serial.println(m);
Serial.println(valore/100,8);
valore =0;
m=0;
//Serial.println(media*media);
//Serial.println(media2);
//Serial.println(RMS,4);
// Serial.print("var2 = ");
//Serial.println(RMS02,8);
// var2=((acc2-acc*acc)/num^2)^(1/2);
// var2=((acc2-acc*acc)/n^2*(5/1024)^2)^(1/2);
// Serial.println( var2);
//Serial.print( acc2);
//Serial.print(" ");
//Serial.println( acc*acc);
// delay(1000);
}
}
funziona benissimo fa la media di 100 misure ciascuna composta da 4000 acquisizioni.
Modificato da qqcreafis - 01/06/2020, 11:05:33
--------------- ODE AD UNO STUDENTE MERITEVOLE (Sermone) Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo ! In un mondo dove tutto SEMBRA uguale a tutto. In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti. In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”. Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto. Xyz ci da una SPERANZA. Xyz non ha seguito le falsità che ci circondano. Xyz si è impegnato ed è riuscito nel suo intento.
| |
| | |
|
Versione Mobile!
|
|
|