این مقاله راهنمای کاملی در مورد سنسور آلتراسونیک HC-SR04 است. نحوه عملکرد آن را توضیح می دهیم، برخی از ویژگی های آن را به شما نشان می دهیم و نمونه پروژه آردوینو را به اشتراک می گذاریم که می توانید برای ادغام در پروژه های خود استفاده کنید. ما یک شماتیک در مورد نحوه سیم کشی حسگر اولتراسونیک و یک نمونه برنامه با آردوینو ارائه می دهیم.

راه اندازی سنسور آلتراسونیک HC-SR04

توضیحات سنسور آلتراسونیک HC-SR04

سنسور آلتراسونیک HC-SR04 از امواج سونار برای تعیین فاصله تا یک جسم استفاده می کند. این سنسور از 2 سانتی‌متر تا 400 سانتی‌متر (0.8 اینچ تا 157 اینچ) با دقت 0.3 سانتی‌متر (0.1 اینچ) می‌خواند که برای اکثر پروژه‌های الکترونیک خوب است. علاوه بر این، این ماژول خاص با ماژول های فرستنده و گیرنده اولتراسونیک ارائه می شود.

تصویر زیر سنسور آلتراسونیک HC-SR04 را نشان می دهد.

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

تصویر بعدی سمت دیگر سنسور را نشان می دهد.

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

خصوصیات سنسور آلتراسونیک HC-SR04

در اینجا لیستی از برخی از ویژگی‌ها و مشخصات سنسور اولتراسونیک HC-SR04 آمده است—برای اطلاعات بیشتر، باید به دیتاشیت سنسور مراجعه کنید:

  • تغذیه: + 5 ولت DC
  • جریان خاموش: <2 میلی آمپر
  • جریان کاری: 15 میلی آمپر
  • زاویه اثر: <15 درجه
  • فاصله: 2 سانتی متر – 400
  • سانتی متر / 1 اینچ – 13 فوت
  • وضوح: 0.3 سانتی متر
  • زاویه اندازه گیری: 30 درجه
  • عرض پالس ورودی تریگر: پالس TTL 10uS
  • سیگنال خروجی اکو: پالس TTL متناسب با محدوده فاصله
  • ابعاد: 45mm x 20mm x 15mm

نحوه کار

سنسور اولتراسونیک از سونار برای تعیین فاصله تا یک جسم استفاده می کند. این چیزی ست که اتفاق می افتد:

  • فرستنده اولتراسوند (پین trig) صدایی با فرکانس بالا (40 کیلوهرتز) منتشر می کند.
  • صدا در هوا حرکت می کند. اگر به یک شی برخورد کند، به ماژول باز می گردد و اکو اتفاق میافتد.
  • گیرنده اولتراسوند (پین اکو) صدای منعکس شده (اکو) را دریافت می کند.
راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

زمان بین ارسال و دریافت سیگنال به ما امکان می دهد فاصله تا یک جسم را محاسبه کنیم زیرا ما سرعت صوت در هوا را می دانیم. فرمول به این صورت است:

distance to an object = ((speed of sound in the air)*time)/2

سرعت صوت در هوا در 20 درجه سانتیگراد (68 درجه فارنهایت) = 343 متر بر ثانیه

پین اوت سنسور آلتراسونیک HC-SR04

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

در اینجا پین اوت سنسور اولتراسونیک HC-SR04 آمده است.

VCCPowers the sensor (5V)
TrigTrigger Input Pin
EchoEcho Output Pin
GNDCommon GND

آردوینو با سنسور آلتراسونیک HC-SR04

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

این سنسور برای استفاده در آردوینو بسیار محبوب است. بنابراین، در اینجا مثالی از نحوه استفاده از سنسور اولتراسونیک HC-SR04 با آردوینو ارائه می دهیم. در این پروژه سنسور اولتراسونیک فاصله یک جسم را در مانیتور سریال می خواند و می نویسد.

هدف این پروژه کمک به شما در درک نحوه عملکرد این سنسور است. سپس، شما باید بتوانید از این مثال در پروژه های خود استفاده کنید.

اتصال سنسور آلتراسونیک HC-SR04 به آردوینو

برای اتصال سنسور آلتراسونیک HC-SR04 به آردوینو، شماتیک بعدی را دنبال کنید.

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

جدول زیر اتصالاتی را که باید ایجاد کنید نشان می دهد:

Ultrasonic Sensor HC-SR04Arduino
VCC5V
TrigPin 11
EchoPin 12
GNDGND

کد

کد زیر را در آردوینو IDE خود آپلود کنید.

/*
 * 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);
}

نحوه کار کد

ابتدا متغیرهایی را برای تریگر و پین اکو ایجاد می کنید که به ترتیب trigPin و echoPin نامیده می شوند. پین تریگر به پین دیجیتال 11 و پین اکو به پین 12 وصل می شود:

int trigPin = 11;
int echoPin = 12;

شما همچنین سه متغیر از نوع long ایجاد می کنید: مدت زمان و فاصله. متغیر مدت زمان بین انتشار و دریافت سیگنال ذخیره می کند. متغیر cm فاصله را بر حسب سانتی متر و متغیر اینچ فاصله را بر حسب اینچ ذخیره می کند.

long duration, cm, inches;

در setup()، پورت سریال را با نرخ باود 9600 مقداردهی کنید و پایه تریگر را به عنوان OUTPUT و پین اکو را به عنوان ورودی تنظیم کنید.

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

در loop()، با ارسال یک پالس HIGH به مدت 10 میکروثانیه، سنسور را فعال کنید. اما قبل از آن، یک پالس LOW کوتاه بدهید تا مطمئن شوید که یک پالس HIGH مناسب دریافت خواهید کرد:

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

ما از تابع pulseIn () برای دریافت زمان موج صوتی استفاده می کنیم:

duration = pulseIn(echoPin, HIGH);

سپس فاصله یک جسم را با در نظر گرفتن سرعت صدا محاسبه می کنیم.

distance = (traveltime/2) x speed of sound

The speed of sound is: 343m/s = 0.0343 cm/uS = 1/29.1 cm/uS

Or in inches: 13503.9in/s = 0.0135in/uS = 1/74in/uS

باید زمان را بر 2 تقسیم کنیم زیرا باید در نظر بگیریم که موج ارسال شده، به جسم برخورد کرده و سپس به سنسور برگشته است.

cm = (duration/2) / 29.1;
inches = (duration/2) / 74;

در نهایت نتایج را در مانیتور سریال چاپ می کنیم:

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

کد با کتابخانه NewPing

همچنین می توانید از کتابخانه NewPing استفاده کنید. کتابخانه را از اینجا دانلود کنید.

پس از نصب کتابخانه NewPing، می توانید کد ارائه شده در زیر را آپلود کنید.

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

#include

#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");
}

نحوه کار کد

بدست آوردن فاصله تا یک شی با استفاده از کتابخانه NewPing بسیار ساده تر است.

شما با اضافه کردن کتابخانه NewPing شروع می کنید:

#include <NewPing.h>

سپس، تریگر و پین اکو را مشخص کنید. پین تریگر به پین دیجیتال آردوینو 11 و اکو به پین 12 وصل شده است. همچنین باید متغیر MAX_DISTANCE را تعریف کنید تا بتوانید از کتابخانه استفاده کنید.

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

سپس، یک شی NewPing به نام sonar ایجاد می کنید:

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

در setup()، ارتباط سریال را با نرخ باود 9600 مقداردهی اولیه می کنید.

Serial.begin(9600);

در نهایت، در loop() فقط باید از متد ping_cm() روی شی sonar استفاده کنید تا فاصله را بر حسب سانتی متر بدست آورید.

unsigned int distance = sonar.ping_cm();

اگر می خواهید فاصله را به اینچ دریافت کنید، می توانید به جای آن از ()sonar.ping_in استفاده کنید.

نتیجه

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

کد را روی برد آردوینو خود آپلود کنید. سپس سریال مانیتور را با نرخ باود 9600 باز کنید.

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو

فاصله تا نزدیکترین شی در پنجره Serial Monitor چاپ می شود.

راهنمای کامل سنسور آلتراسونیک HC-SR04 با آردوینو
برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *