Lettura frequenza da ne 555 AIUTO!!!

Ciao a tutti , scusate se non mi sono ancora presentato comunque questo è il mio primo post.
Io sto cercando di autocostruirmi un capacimetro usando la mia arduino duemilanove seguendo per la parte hardware questo ottimo tutorialhttp://www.elettronicamente.com/engine/default.asp?page=projectview&pid=793 dopo aver costruito il circuito esterno ho provato a connetterlo alla arduino e ha misurare la frequenza da cui poi con una formula dovrei ricavare la capacità del condensatore comunque il codice che mi stampa la frequenza su seriale è questo

int pin = 7;
unsigned long duration;
unsigned long frequenza;

void setup()
{
  pinMode(pin, INPUT);
  Serial.begin(9600);	
}

void loop()
{
  duration = pulseIn(pin, HIGH);
  frequenza = 500000/duration; 
  Serial.print(frequenza); 
  delay(500); 
}

Però testando il programma con tutta l'attrezzatura e con alcuni condensatori di cui l'autore del tutorial postva la frequenza che sarebbe dovuta uscire dal 555 ho avuto esiti del tutto diversi!!!! Se qualcuno ha qualche consiglio o qualche altro codice mi faccia sapere
ciao niko

Ciao Niko,
ho testato il tuo code con un generatore di frequenze di buona qualità, ho applicato frequenze a partire da 1Hz, il programma legge abbastanza correttamente fino a circa 2500 Hz, ma la misura non è stabile, avolte escono appunto valori strani; p.es in mezzo ad una sfilza di 2857 d colpo appare un 2873 o un 2958, mentre la frequenza in ingresso sull'oscilloscopio è stabilissima.
Verso i 3000 Hz e a salire la frequenza letta è proporzionalmente superiore a quella reale, per capirci se applico 6000Hz leggo quasi alternativamente 6024 e 6097 ( :astonished:); se applico 10KHz ne leggo 10204 stabili.
Insomma mi pare che vada applicato qualche correttivo al sofware, purtroppo non ho dimestichezze di questo genere ma sulla base di queste indicazioni gli esperti ti possono dire come intervenire.

il codice lo riporto da un post di alcuni mesi fa non ricordo ki l'ha scritto.... misura decentemente fino a 30KHz

//variabili
int sigPin = 7; //signal pin
int state; //the state of the input
int oldstate;
unsigned long t; //timer
unsigned long s; //samples
unsigned long c; //count
unsigned long f; //frequency


void setup()
{
  pinMode(sigPin, INPUT);
  Serial.begin(9600);
}

void loop()
{
  c = 0;

   t = millis(); // read time at start of sampling
   for(s=0; s<10000; s++){ //take a number of samples
	state = digitalRead(sigPin); //read state
	if (state != oldstate){ //if state changes:
	   c++; //increment counter
	   oldstate = state; //and reset current state
	}

   }
   t = millis() - t; //read time at end of sampling

   c = c/2; // need to divide by 2 because counter incremented on each change - two changes per cycle

   f = 1000*c/t; //calculate frequency

  Serial.println("frequenza");
  Serial.println(f);
  delay(500);
}

è stato postato da garinus.....

Ciao, diciamo fino a 20KHz, l'ho provato al volo; sono però curioso di capire perché escono comunque dei valori strani, abbastanza frequentemente.
Bah, domani arriva il nuovo generatore XD e vi farò sapere.

per aumentare la precisione devi aggiungere uno 0 nel ciclo for dove cè <10000

:~ :~ Grazie ragazzi ho provato il nuovo codice con un condensatore da 1 uf ma niente da fare non riesco a leggere quei 7 khertz ma leggo solo 14 hertz!!!! mi viene un dubbio un condensatore da 0,01 uf è un 10 nf giusto???? perchè se no è questo l'errore
comunque non vorrei aver sbagliato qualcosa ma le mie connessioni sono identiche a quelle dell'autore del tutorial
Fatemoi sapere
Niko

stai facendo un po' di confusione con i numeri, comunque 0,01µF è = 10nF o 10KpF; secondo me devi prima misurare la frequenza del tuo oscillatore, non vorrei che hai sbagliato qualche valore e stia oscillando a frequenza diversa da quella del progetto.

Il problema è propio questo non capisco cosa ci sia di errato . Prima pensavo di aver sbagliato il valore del condensatore sul controlvoltage del 555 ma purtroppo non è così mentre le due resistenze sono rispettivamente da 1000komh (marrone nero giallo) e da 4.7komh (giallo viola rosso) =(

Uploaded with ImageShack.us ecco questo è il circuito che dovevo creare è lo ho realizzato in modo praticamente identico Potrei misurare la frequenza ma purtroppo non ho un oscilloscopio
Ho però sentito parlare di alcuni oscilloscopi che acqisiscono dati attraverso la scheda audio del pc qualcuno li conosce e me ne consiglia qualcuno così provo a vedere se l'onda in uscita è quadra e provo a misurare la frequenza
grazie a tutti per l'aiuto
ciao niko

Stai continuando a fare casino:
1000KOhm (omh non esiste) sono 1MOhm, cioé marrone-nero-verde, marrone-nero-giallo è 100KOhm.
Non ho ben capito se l'immagine l'hai creata tu o è quella originale; ovviamente se l'hai creata tu e ti sei confuso con i colori il circuito non potrà mai funzionare, se invece è quella originale e tu hai usato proprio quelle resistenze allora dovrebbe andare.
Certo che è dura lavorare con le frequenze senza uno strumento di misura; non ti serve un oscilloscopio, ti basta e soverchia un frequenzimetro. Alcuni nuovi multimetri sono dotati della funzione di misura degli Herz (e multipli), dovresti cavartela con 60-70 euro.