1.Ghid pentru senzor ultrasonic HC-SR04

Guide for Ultrasonic Sensor HC-SR04 with Arduino

Va explica modul în care funcționează, vă va arăta câteva caracteristici și un exemplu de proiect Arduino pe care îl puteți urma pentru a-l integra în proiectele dvs. Oferim o diagramă schematică privind modul de conectare a senzorului ultrasonic și o schiță exemplu pentru utilizarea cu Arduino.

Descriere

Senzorul HC-SR04 utilizează un sonar pentru a determina distanța față de un obiect, ca și liliecii. Oferă o detectare excelentă a gamei fără contact,de la 2 cm la 400 cm, cu o acuratețe ridicată și citiri stabile într-un pachet ușor de utilizat,

Funcționarea acestuia nu este afectată de lumina soarelui sau de materialul negru, cum ar fi telemetrele (deși material acustic moale, cum ar fi stofa, poate fi dificil de detectat). Acesta vine complet, cu modul de transmitere și recepție cu ultrasunete.

Caracteristici

    • Alimentare: + 5V DC

    • Curent static: < 2 mA

    • Curent de lucru: 15 mA

    • Unghiul efectiv: <15°

    • Distanță: 2 cm - 400 cm

    • Rezoluție: 0,3 cm

    • Unghiul de măsurare: 30 de grade

    • Trigger Input Lățimea impulsului de intrare declanșare: 10uS

    • Dimensiuni: 45 mm x 20 mm x 15 mm

Cum funcționează?

Senzorul ultrasonic utilizează sonarul pentru a determina distanța față de un obiect. Iată ce se întâmplă:

    1. Transmițătorul (pinul trig) trimite un semnal: un sunet de înaltă frecvență.

    2. Când semnalul găsește un obiect, acesta se reflectă și ...

    3. ... receptorul (pinul echo) îl primește.

Timpul dintre transmisia și recepția semnalului ne permite să cunoaștem distanța față de un obiect. Acest lucru este posibil deoarece știm viteza sunetului în aer.

Senzor

Pini

    • VCC: + 5 VDC

    • Trig: Trigger (INPUT)

    • Echo: Echo (OUTPUT)

    • GND: GND

De unde să cumpăr?

Puteți verifica senzorul Ultrasonic Sensor HC-SR04 pe Maker Advisor și puteți găsi cel mai bun preț.

Arduino cu senzor HC - SR04

Acest senzor este foarte mișto și popular printre meșterii Arduino. Vă prezentăm un exemplu cu privire la modul de utilizare a senzorului ultrasonic HC-SR04 cu Arduino. În acest proiect senzorul ultrasonic citește și scrie distanța față de un obiect în monitorul serial.

Scopul acestui proiect este de a vă ajuta să înțelegeți cum funcționează acest senzor. Apoi, puteți folosi acest exemplu în propriile proiecte.

Notă: Există o bibliotecă Arduino numită NewPing, care vă poate ușura viața atunci când utilizați acest senzor.

Componente necesare

Puteți utiliza link-urile precedente sau puteți merge direct la MakerAdvisor.com/tools pentru a găsi toate componentele pentru proiectele dvs. la cel mai bun preț!

Schema

Urmați următoarea diagramă schematică pentru a conecta senzorul ultrasonic HC-SR04 la Arduino.

Următorul tabel arată conexiunile pe care trebuie să le efectuați:

Ultrasonic Sensor HC-SR04 Arduino
VCC 5V
Trig Pin 11
Echo Pin 12
GND GND

Cod sursă

Încărcați următorul cod în IDE-ul dvs. Arduino.

/*

* created by Rui Santos, https://randomnerdtutorials.com

*

* Complete Guide for Ultrasonic Sensor HC-SR04

*

Ultrasonic sensor Pins:

VCC: +5VDC

Trig : Trigger (INPUT) - Pin11

Echo: Echo (OUTPUT) - Pin 12

GND: GND

*/

int trigPin = 11; // Trigger

int echoPin = 12; // Echo

long duration, cm, inches;

void setup() {

//Serial Port begin

Serial.begin (9600);

//Define inputs and outputs

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

}

void loop() {

// The sensor is triggered by a HIGH pulse of 10 or more microseconds.

// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:

digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

// Read the signal from the sensor: a HIGH pulse whose

// duration is the time (in microseconds) from the sending

// of the ping to the reception of its echo off of an object.

pinMode(echoPin, INPUT);

duration = pulseIn(echoPin, HIGH);

// Convert the time into a distance

cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343

inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135

Serial.print(inches);

Serial.print("in, ");

Serial.print(cm);

Serial.print("cm");

Serial.println();

delay(250);

}

Cum funcționează codul

Mai întâi, creați variabile pentru pinii trigger și ecou numiți trigPin și respectiv echoPin. Pinul de declanșare este conectat la pinul digital 11 și pinul echo este conectat la pinul digital 12:

int trigPin = 11;

int echoPin = 12;

De asemenea, creați trei variabile de tip long: duration, cm și inch. Variabila duration salvează intervalul de timp dintre emisia și recepția semnalului. Variabila cm va salva distanța în centimetri, iar variabila inch va salva distanța în inci.

long duration, cm, inches;

În setup (), inițializăm portul serial la o rată baud de 9600 și setăm pinul trigger ca ieșire și pinul echo ca intrare.

//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

În bucla (), declanșăm senzorul prin trimiterea unui puls HIGH de 10 microsecunde. Dar, înainte de aceasta, dăm un puls scurt LOW pentru a ne asigura că vom obține un puls HIGH curat:

digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

Apoi citim semnalul de la senzor - un puls HIGH a cărui durată este timpul în microsecunde de la trimiterea semnalului la recepția ecoului său de la un obiect.

duration = pulseIn(echoPin, HIGH);

În cele din urmă, trebuie doar să transformăm durata în distanță. Putem calcula distanța folosind următoarea formulă:

distanța = (timpul de deplasare / 2) x viteza sunetului

Viteza sunetului este: 343 m/s = 0,0343 cm/μs = 1/29,1 cm/μs

Trebuie să împărțim timpul de călătorie cu 2 deoarece trebuie să ținem seama că a fost trimisă unda, a lovit obiectul și apoi s-a întors înapoi la senzor.

cm = (duration/2) / 29.1;

inches = (duration/2) / 74;

În cele din urmă, tipărim rezultatele în Monitorul serial:

Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();

Codul sursă cu NewPing

De asemenea, puteți utiliza biblioteca NewPing. Descărcați biblioteca aici.

După instalarea bibliotecii NewPin, puteți încărca codul furnizat mai jos.

/*
* Posted on https://randomnerdtutorials.com
* created by http://playground.arduino.cc/Code/NewPing
*/

#include <NewPing.h>

#define TRIGGER_PIN 11
#define ECHO_PIN 12
#define MAX_DISTANCE 200

// NewPing setup of pins and maximum distance
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

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

void loop() {
delay(50);
unsigned int distance = sonar.ping_cm();
Serial.print(distance);
Serial.println("cm");

}

Cum funcționează codul

Obținerea distanței față de un obiect folosind biblioteca NewPing este mult mai simplă.

Începeți prin includerea bibliotecii NewPing:

#include <NewPing.h>

Apoi, definiți pinul trigger și pinul echo. Pinul trigger este conectat la pinul digital 11 Arduino și echo la pinul 12. De asemenea, trebuie să definiți variabila MAX_DISTANCE pentru a putea utiliza biblioteca.

#define TRIGGER_PIN 11
#define ECHO_PIN 12
#define MAX_DISTANCE 200

Apoi, creați un exemplu NewPing numit sonar:

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

În setup (), inițializați comunicația serială la o rată de transfer de 9600.

Serial.begin(9600);

În cele din urmă, în bucla (), pentru a obține distanța, trebuie doar să utilizați metoda ping_cm () pe obiectul sonar. Acest lucru vă va oferi distanța în centimetri.

unsigned int distance = sonar.ping_cm();

Depanare

NOTĂ: " Dacă HC-SR04 nu primește un ecou atunci ieșirea nu va deveni low niciodată. Senzorii Devantec și Parallax temporizează după 36 ms și cred că, respectiv, 28 ms. Dacă utilizați Pulsin ca mai sus, atunci fără ecou de întoarcere, programul va fi blocat timp de 1 secundă, care este temporizarea implicită pentru Pulsin. Trebuie să utilizați parametrul timeout.

http://arduino.cc/en/Reference/PulseIn

HC-SR04 funcționează abia la ~ 3 m, dând o lungime totală de 6 m și o durată de drum de aproximativ 20 ms, deci setați timpul de temporizare la ceva deasupra, de exemplu 25 sau 30 ms.

Dacă puneți un rezistor, să zicem 2k2 între E și T, apoi conectați doar la T puteți utiliza HC-SR04 de la un singur pin Arduino. Căutați o operație cu un singur pin al senzorilor ultrasonici.

De asemenea, dacă utilizați un HC-SR04 cu un PicAxe trebuie să măriți viteza de ceas la cel puțin 8MHz altfel ei nu văd pornirea pulsului ecou, ​​astfel încât pulsin nu pornește niciodată. HC-SR04 funcționează bine cu un BS2"de David Buckley.

Încheiere

În acest articol v-am arătat cum funcționează senzorul HC-SR04 și cum îl puteți utiliza cu Arduino. Pentru un exemplu de proiect, puteți construi un senzor de parcare cu LED-uri și buzzer.

Dacă sunteți începător la Arduino, vă recomandăm să urmăriți cursul Arduino Mini, care vă va ajuta să începeți rapid cu această placă uimitoare.

Dacă vă place Arduino, vă recomandăm:

Arduino Curs Programe pas cu pas

Ghid pentru modulul cardului SD cu Arduino

Ghid pentru DHT11 / DHT22 Senzor de umiditate și temperatură cu Arduino

Ghid pentru senzorul de culoare TCS230 / TCS3200 cu Arduino

Puteți găsi aici toate proiectele și tutorialele noastre Arduino.