Pages: [1]   Go Down
Author Topic: Lettura frequenza da ne 555 AIUTO!!!  (Read 822 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 182
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Code:
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
Logged

Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12561
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ( smiley-eek); 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.
Logged

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

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5500
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il codice lo riporto da un post di alcuni mesi fa non ricordo ki l'ha scritto.... misura decentemente fino a 30KHz
Code:
//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.....
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12561
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-lol e vi farò sapere.
Logged

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

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5500
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Se corri veloce come un fulmine, ti schianterai come un tuono.

Offline Offline
Full Member
***
Karma: 0
Posts: 182
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-confuse smiley-confuse 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
Logged

Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12561
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

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

Offline Offline
Full Member
***
Karma: 0
Posts: 182
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)  smiley-cry

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
Logged

Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12561
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

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

Pages: [1]   Go Up
Jump to: