Go Down

Topic: Contachilometri (Read 5937 times) previous topic - next topic

uwefed

Só di essere noioso perché mi ripeto.
Perché non misuri il tempo fra 2 impulsi?
In questo modo sei indipendente dal dover aspettare un tempo determinato per contare gli impulsi.
passi:
Inizi la misura aspettando il primo impulso
Aspetti il secondo impulso.
Calcoli la velocitá e la metti sul display
inizi da capo.

Ciao Uwe

Locke

eh ma se con questa storia del tempo tra un impulso e l'altro che non scende... non funzionerebbe comunque...

BrainBooster

a che velocità corrisponderebbe una lettura di un 1mpulso ogni dieci microsecondi?

NetWorm

Se può essere utile ho trovato questo:
http://www.arduino.cc/playground/Learning/Tachometer

non ho dato un'occhiata al codice anche perchè ci avrei capito poco, per ora, ehehe :D Vedi se ti può servire ^_^

uwefed

ciao a tutti

@ Locke : non ho capito cosa vuoi dire.
@ NetWorm : il link descrive la misura la velocitá di rotazione di un motore con attacata un elica di un modellino di aereo.
@ brainbooster con un impulso per giro della ruota ad una velocitá supersonica.

Ciao Uwe

BrainBooster

#50
Jun 27, 2010, 08:24 am Last Edit: Jun 27, 2010, 09:54 am by brainbooster Reason: 1
allora prova a fare un piccolo esperimento:

int ledPin = 13;                     // seleziono un pin per il LED
volatile int state = LOW;            // ricorda lo stato corrente

void setup() {
 pinMode(ledPin, OUTPUT);            //dichiara ledPin come OUTPUT
 Serial.begin(9600);
 attachInterrupt(0, check, CHANGE);  // attacca un interrupt (interrupt 0 = digital pin 2)
}

void loop() {
 digitalWrite(ledPin, state);
}

void check() {    // Interroga il relè per conoscere lo stato
 state = !state;
 Serial.print("Stato cambiato a: ");
 Serial.print(state);
 Serial.print(".\n");
}


CHANGE è usato per riconoscere il cambiamento di stato ma puoi usare RISING se ti interessa solo l'impulso in salita o FALLING per la discesa.
con questo dovresti ricevere sulla seriale una notifica ogni volta che il sensore cambia il suo stato a qualsiasi velocità.

NetWorm

@uwefed: lo so quello :)
se il problema iniziale è che non riesce a leggere il valore del sensore sulla ruota perchè è troppo veloce questo non dovrebbe risolvere la cosa? Non penso che la ruota di una moto giri più velocemente di un motore da modellismo :) C'è il discorso che usa un sensore ottico che è molto più veloce a commutare di uno meccanico...

Locke

Innanzi tutto ringrazio tutti quanti per l'aiuto ;)

Ho provato il tuo sketch brain, il risultato:
Se mando a Vcc non succede nulla, se mando a massa parte una sfilza di cambi di stato e non si ferma finchè non riporto a Vcc il pin...


garinus

perchè devi mettere un condesatore da 0,1n sul pin sennò gli sbalzi di tensione fanno rilevare vari impulsi

Locke

non credo... è proprio un errore a livello di codice penso, va avanti all'infinito a meno che non dia un impulso a Vcc

garinus

prova il codice sembra giusto

Locke

In parallelo o in serie?
luca

frog

il condensatore va tra il pin digitale 2 e gnd.
se hai fatto le prove con un filo volante al quale fai fare contatto un colpo a gnd, un colpo a vcc prendi sicuramente del rumore dovuto all'accoppiamento del filo con il corpo umano che fa fare in continuazione false transizioni

BrainBooster

quel codice era solo un "motore di acquisizione degli impulsi", quindi così com'è rileva le "variazioni" sia in salita che in discesa, e dovrebbe farlo anche alla velocità che serve a tè. (gli interrupt sono più affidabili per queste cose).
comunque è da modificare...
per il condensatore è ok, ti fà da "antirimbalzo".
P.S.
almeno durante le prove tieni i fili corti.

Locke

Perfetto allora per come lo hai pensato fuziona perfettamente, ma resta il problema che non ferma il conteggio una volta finito l'impulso, ma solo fino al ritorno a low...

Go Up