Adafruit è una nota azienda che si occupa di ideare e progettare hardware open-source, come sensori, prodotti elettronici, utensili e accessori.
Un prodotto molto interessante da esaminare è il sensore di distanza ad ultrasuoni HC-SR04, in grado di misurare distanze che variano da 2 centimetri fino a 4 metri (ma in quest’ultimo caso l’opposizione dell’aria potrebbe inficiare le misurazioni).
Il principio con cui funziona HC-SR04 è molto semplice, uno dei due cilindri emette delle onde sonore ad ultrasuoni che rimbalzando dall’oggetto che si trova davanti tornando indietro, che in seguito sono rilevate dall’altro cilindro. Il sensore è molto preciso ma vi sono alcuni oggetti, come i peluche, che assorbono le onde sonore impedendo la corretta misurazione.
Questi tipi di sensori sono veloci, precisi, costano poco (in questo caso 3,60 euro) e sono abbastanza semplici da usare. HC-SR04 è dotato di quattro connettori:
- Vcc – viene collegato alla tensione di alimentazione di 5V.
- Trig – è il pin “Trigger” che deve essere attivato per inviare il segnale ad ultrasuoni.
- Echo – è il pin che produce un impulso che si interrompe quando viene ricevuto il segnale riflesso dall’oggetto.
- GND – viene collegato al potenziale di riferimento, la messa a terra.
In che modo il sensore HC-SRO4 riesce a misurare la distanza? La velocità del suono è una grandezza fisica nota, 331,5 m/s a 0 °C e di 343,4 m/s a 20 ° ed è direttamente proporzionale alla temperatura. In generale varia secondo la relazione v = 331,4 + 0,62 T. La velocità altro non è che il rapporto tra spazio e tempo e in questo caso specifico si deve tener conto che l’onda sonora percorre per ben due volte la distanza da misurare, quindi il valore dello spazio ottenuto deve essere diviso per 2. Quindi per ottenere misurazioni precise è consigliabile utilizzare anche un sensore di temperatura.
Per connettere il sensore HC-SR04 ad Arduino basta collegare i 2 pin di alimentazione rispettivamente a Vcc e Gnd e gli altri 2 pin (Trigger e Echo) a 2 ingressi digitali.
Ecco uno sketch per utilizzare il sensore HC-SR04 sprovvisti di un sensore di temperatura:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#define TRIG_PIN 10 #define ECHO_PIN 9 void setup(){ Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); digitalWrite(TRIG_PIN, LOW); } void loop(){ digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); unsigned long tempo = pulseIn(ECHO_PIN, HIGH); float distanza = 0.03438 * tempo / 2; Serial.println("Distanza: " + String(distanza) + "cm"); delay(500); } |
Ecco uno sketch per utilizzare il sensore HC-SR04 assieme ad un sensore di temperatura:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#define TRIG_PIN 10 #define ECHO_PIN 9 #define TEMPERATURA_PIN A0 void setup(){ Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); digitalWrite(TRIG_PIN, LOW); } void loop(){ int input = analogRead(TEMPERATURA_PIN); float temperatura = input / 2.046; //formula per convertire la tensione in gradi centigradi digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); unsigned long tempo = pulseIn(ECHO_PIN, HIGH); float velocita = 0.03314 + 0.000062 * temperatura; float distanza = velocita * tempo / 2; Serial.println("Distanza: " + String(distanza) + "cm"); delay(500); } |
Le specifiche tecniche complete sono le seguenti:
- Angolo di misurazione: 15º
- Peso: 8,7 g
- Dimensioni del sensore (esclusa la testata): 45,5 x 20 x 15,5 mm
- Segnale di ingresso trigger: impulso alto 10uS
- Alimentazione e tensione logica: DC 5 V.
- Frequenza ultrasonica: 40 KHz
- Corrente durante la misurazione: 15mA
Il sensore è ideale per progetti di robotica, sistemi di automazione, anti-intrusione e di rilevamento del movimento. Il prodotto in questione può essere acquistato sul sito ufficiale Adafruit e sui link Amazon di seguito specificati.
Link utili: