leggere frequenza

ciao
dovrei leggere la frequenza di un'onda sinuisoidale...
come posso fare? ho letto che pulsein conta il tempo della semionda positiva però: la legge tutta o solo quella che supera una certa soglia?
mi conviene squadrarla?
fino a che frequenza legge arduino?

grazie

ciao

devi squadrarla il piu possibile... magari con un trigger di shmitt.
poi leggere la frequenza dovrebbe essere abbastanza semplice usando i timer interni.

una veloce googolata rivela:
http://www.arduino.cc/playground/Code/FrequencyTimer2
http://interface.khm.de/index.php/labor/experimente/arduino-frequency-counter-library/

PS la frequenza teorica è 8MHz

grazie massimo

ciao
mi stavo orientando verso un lm2917 per non affaticare l'arduino
sapete di schemi pronti? con quello del datasheet non riesco a leggere valori stabili...

grazie

l'arduino non si affatica stai tranqui :slight_smile:

purtoppo deve eseguire altre operazioni...ma proverò con la libreria

sapete consigliarmi un integrato per squadrare l'onda?

scusate se continuo
ho un dubbio da nabbo ho una entrata 12v ac e per leggere la frequenza devo collegare alla massa uno dei due cavi.
secondo voi interferisce con la massa di arduino?

Innanzitutto salve a tutti. Anch'io sono alle prese con un'Arduino, esattamente la board è una Nano e sto utilizzando un contatore di frequenze per un generatore di onde quadre.

Il mio problema è questo: l'accuratezza è sufficiente per letture nel range di frequenze fino a 10 Khz, quando si va a 100 Khz, il valore rilevato è sballato. Ora non so se il problema risiede nel codice

usi un circuito aggiunto alla scheda o usi puramente codice?

Uso solo codice, con il generatore di funzioni collegato alla Arduino.
Il codice l'ho prelevato da qui: http://www.canadaka.net/blog/hurley_108/re_arduino_as_frequency_meter_r-4331.html

penso sia nel codice il campionamento è solo di 100000 impulsi e quindi se li superi non funziona
non sono un esperto quindi se sbaglio please correggetemi.

sepete come fare per sapere se ho ancora ram libera sull'arduino?

Ho risolto il mio problema utilizzando la libreria frequencycounter.

Rialzo questo topic perchè ho questo problema: volevo utilizzare il contatore di frequenze con la precisione delle cifre decimali, sfortunatamente però la libreria lavora solo con valori di tipo unsigned long, mentre io invece ho bisogno di farlo lavorare con valori di tipo float o double. Ho provato, senza sucesso, anzi col risultato che il contatore di frequenze non funzionava più, a modificare la libreria.

io non riesco a far fun zionare la libreria di suo....
c'è un trucco o è per colpa del fatto che uso il 0013?

Io uso il pin 5.

no proprio in fase di compilazione non compila....

Hai copiato la libreria nella cartella delle librerie di Arduino?

certo come per le altre ma mi dà molti errori
ora provo con la 0014

ok apposto

non l'ho mai utilizzata e ho bisogno di chiarimenti:
quanto tempo impiega a campionare?
a cosa servono i seguenti comanti presenti nell'esempio:

 FreqCounter::f_comp=106;
  FreqCounter::start(1000);

while (FreqCounter::f_ready == 0)

devo utilizzare un segnale in alternata a 12 v e ricavarci la frequenza
correggetemi se sbaglio:

metto un diodo per usare solo semionda positiva

uso un optoisolatore (esempio 4n35(una resistenza da 470 ohm va bene?(non sono molto pratico con la legge di ohm max 60ma)))
prelevo il segnale dall'opto e uso una resistenza di pullup(consigliata da datasheet 2200ohm

dovrebbe funzionare vero?

ps sapete risp anche al post di sopra? grazie