Go Down

Topic: lettura di un voltaggio conversione in db (Read 495 times) previous topic - next topic

Fabriziomarchetti

Salve sono un neofita nell'utilizzo della piattaforma arduino, e spero che voi guru' possiate aiutarmi... sto costruendo un dispositivo che deve convertire una tensione in decibel. Praticamente legge un segnale in volt, restituisce il valore su un display 16x2 ( e fin qui non ho avuto problemi ed esegue tutto correttamente) ora devo convertire quella tensione letta in decibel. L'operazione che deve eseguire è la seguente : 20*log10 (tensione letta sul pin analogico / 0,775) poi ovviamente visualizzare il risultato. Mi scuso se ho sbagliato sezione dove scrivere questo post.
Spero in un vostro aiuto grazie in anticipo.

uwefed

Sí, delle discussioni in lingua italiana vanno messe nella parte italiana del forum.

Non capisco il Tuo problema. Come leggere un entrata analogica e trasformarla in tensione é spiegato in tanti esempi.

Ciao Uwe

nid69ita

Credo di capire che il tuo è un problema di programmazione C ovvero non sai quali comandi usare per la formula?

Io invece non ho capito qual'e' la formula perchè scrivi:
>> L'operazione che deve eseguire è la seguente: 20*log10 (tensione letta sul pin analogico / 0,775)
Tensione /0,775    oppure   20*log10(tensione)   ?

http://www.cplusplus.com/reference/cmath/log10/
my name is IGOR, not AIGOR

Michele Menniti

non mi sembra difficile da interpretare: moltiplica x20 il logaritmo in base 10 del valore che legge sul pin analogico diviso 0,775 :)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

nid69ita

#4
Jun 26, 2013, 09:44 am Last Edit: Jun 26, 2013, 09:47 am by nid69ita Reason: 1

non mi sembra difficile da interpretare: moltiplica x20 il logaritmo in base 10 del valore che legge sul pin analogico diviso 0,775 :)


azzarola, hai ragione, troppo programmatore...  la funzione con la parentesi tonda staccata di uno spazio, non capivo fosse un tutt'uno  :smiley-mr-green:

#include <math.h>
...
result = 20*log10( tensione/0.775);
my name is IGOR, not AIGOR

PaoloP

tensione deve essere dichiarato float altrimenti la divisione risulta intera.
Code: [Select]
#include <math.h>
...
float result = 20*log10((float)tensione/0.775);
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

nid69ita

Teoricamente, se il compilatore fa il bravo, 0.775 è giù di suo float, credo non sia necessario il cast, ma in tutti i casi non fa mai male.  :smiley-mr-green:
my name is IGOR, not AIGOR

Go Up