DOMANDA Calcolo della velocità tramite un sensore ad ultrasuoni (Arduino)

Pubblicità

a trigger for a braca

Nuovo Utente
Messaggi
26
Reazioni
1
Punteggio
24
Salve a tutti, durante la costruzione di un misuratore di potenza con arduino mi sono imbattuto nel seguente problema:

Il sensore ad ultrasuoni per arduino permette di calcolare la distanza di un oggetto dal sensore. Inizialmente pensavo di ricavare la velocità istantanea tramite un semplice v=ds/dt, utilizzando il seguente codice:

//calcolo spazio 1
digitalWrite( trig, HIGH );
delayMicroseconds( 10 );
digitalWrite( trig, LOW );
time = pulseIn( eco, HIGH ); //il sensore ad ultrasuoni ritorna il tempo impiegato dal suono a raggiungere il bersaglio e tornare
d1 = 0.034 * time / 2; //dal tempo la distanza del bersaglio

delay(5); //intervallo tra le due misurazioni

//calcolo spazio 2

digitalWrite( trig, HIGH );
delayMicroseconds( 10 );
digitalWrite( trig, LOW );
time = pulseIn( eco, HIGH );
d2 = 0.034 * time / 2;

v=(d1-d2)/???;

Il problema riguarda il dt: tra le due misurazioni intercorrono i 5 millisecondi imposti dal delay(5), ma a ciò dovrei aggiungere il tempo della seconda misurazione.
Presumo che il tempo aggiuntivo sia 10 micoresecondi (dal delay) più due volte "time" (andata e ritorno) della seconda misurazione.

I 10 microsecondi potrebbero essere tranquillamente ignorati. Il problema deriva dal time: il suono per percorrere un metro ci mette circa 3 millisecondi, che sfalserebbero notevolmente la misura.

Qualcuno avrebbe qualche consiglio da darmi? :help:
 
Salve a tutti, durante la costruzione di un misuratore di potenza con arduino mi sono imbattuto nel seguente problema:

//calcolo spazio 1
digitalWrite( trig, HIGH );
delayMicroseconds( 10 );
digitalWrite( trig, LOW );
time = pulseIn( eco, HIGH ); //il sensore ad ultrasuoni ritorna il tempo impiegato dal suono a raggiungere il bersaglio e tornare
d1 = 0.034 * time / 2; //dal tempo la distanza del bersaglio

delay(5); //intervallo tra le due misurazioni

//calcolo spazio 2
digitalWrite( trig, HIGH );
delayMicroseconds( 10 );
digitalWrite( trig, LOW );
time = pulseIn( eco, HIGH );
d2 = 0.034 * time / 2;

v=(d1-d2)/???;

Il problema riguarda il dt: tra le due misurazioni intercorrono i 5 millisecondi imposti dal delay(5), ma a ciò dovrei aggiungere il tempo della seconda misurazione.
Presumo che il tempo aggiuntivo sia 10 micoresecondi (dal delay) più due volte "time" (andata e ritorno) della seconda misurazione.
Il problema matematico è piuttosto semplice da risolvere perché il tempo che tu indichi con il ??? è 5 millisecondi delay + 10 microsecondi delay + time (utilizzare due variabili time1 e time2 per memorizzare le due misure te l'ha vietato il medico?)
Però:
Per evitare echi, il datasheet del modulo HC-SR04 consiglia di effettuare le misurazioni a distanza di almeno 60mS.
Non hai tenuto conto della portata del modulo che, sempre nel caso di cui sopra è di 4m
 
Pubblicità
Pubblicità
Indietro
Top