Precisione misuratore distanza HC-SR04

Ciao a tutti,

ho iniziato ad usare il famoso misuratore di distanza HC-SR04. Ho letto in giro che ha una precisione molto alta, inferiore al millimetro, però nelle mie prove non ho riscontrato questo!

Usando la libreria ultrasonic con questo codice

#include <Ultrasonic.h>

#define TRIGGER_PIN  7
#define ECHO_PIN     8

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()
  {
  Serial.begin(9600);
  }

void loop()
  {
  float cmMsec, inMsec;
  long microsec = ultrasonic.timing();

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  
  
  Serial.print(", CM: ");
  Serial.println(cmMsec);
  
  delay(1000);
  }

Ho questi valori:

, CM: 12.91
, CM: 12.96
, CM: 12.96
, CM: 12.87
, CM: 12.91
, CM: 12.91
, CM: 13.00
, CM: 13.34
, CM: 12.83
, CM: 12.89
, CM: 13.45
, CM: 12.91
, CM: 12.89
, CM: 12.91
, CM: 13.03
, CM: 12.91
, CM: 12.91
, CM: 13.34
, CM: 13.00
, CM: 13.34
, CM: 12.89
, CM: 12.96
, CM: 13.00
, CM: 13.34
, CM: 13.34
, CM: 13.00
, CM: 13.00
, CM: 12.89
, CM: 12.89
, CM: 12.91
, CM: 13.00
, CM: 12.89
, CM: 12.91
, CM: 13.32
, CM: 13.03
, CM: 13.32

E' vero che la maggior parte dei valori è sui 12,8 e 12,9 cm ma ci sono valori anche consecutivi sopra 13 fino a 13,3.

Mi aspettavo una precisione più alta! Il valore sballato ci può essere, ma delle volte sono sballati 3-4 valori consecutivi!

Adesso non so se è il mio che ha un difetto oppure ha sempre questa tolleranza!

Dimentichi che c'è di mezzo anche la precisione dell'oscillatore di Arduino che è quello con cui poi si basano tutti i tempi e ... non è un oscillatore che brilla come stabilità :grin:

Ti consiglio, se vuoi ridurre l'errore, di effettuare una serie di misure, esempio 10 e poi fare la media e prendere quest'ultima come valore.

Guglielmo

Io farei anche delle prove con la libreria New ping
http://code.google.com/p/arduino-new-ping/

Ha anche dei metodi che fanno in automatico la media

Ciao
Gio

Grazie mille| :slight_smile:

Stamattina ho anche provato con NewPing ma non cambia molto, anche facendo la media! Ho notato che il mio esemplare tra i 10 e i 13 cm sballa completamente, per esempio se da 12 avvicino un po' l'ostacolo mi segna 13cm, lo fa praticamente sempre!!

Dovrei usare l'HC-SR04 per misurare il livello di un liquido, mi sa che devo trovare un altro sistema!

come alimenti arduino?

Mimmo011:
Dovrei usare l'HC-SR04 per misurare il livello di un liquido, mi sa che devo trovare un altro sistema!

Prova a guardare i sensori MaxSonar QUI ... scorri lungo la pagina, le serie XL e LV ... costano, ma sono molto precisi e ... volendo ti danno il valore della distanza direttamente su una porta seriale e già convertito in cm.

Guglielmo

camperos:
come alimenti arduino?

Lo alimento con l'USB!

gpb01:
Prova a guardare i sensori MaxSonar QUI ... scorri lungo la pagina, le serie XL e LV ... costano, ma sono molto precisi e ... volendo ti danno il valore della distanza direttamente su una porta seriale e già convertito in cm.

Guglielmo

26 euro non sarebbe tantissimo! Ma tipo non ci sarebbe qualcosa sulle 10 euro con una qualità intermedia? Si passa dalle 4-5 euro dell'HC-SR04 ai 26 euro di questi!

prova ad alimentare arduino dalla presa jack a 9-12V.

quando alimento da usb mi arrivano 4.8v
e se attacco anche un piccolo carico o shield mi fluttua 4,78- 4,77 ecc,
penso che per misure precise non si deve fare affidamento all'alimentazione da usb