logo-site-sefid
Search
Close this search box.
راه اندازی التراسونیک با آردوینو

راه اندازی التراسونیک با آردوینو UNO

آموزش راه اندازی التراسونیک با آردوینو UNO

در این آموزش آردینو یاد می‌گیریم که چگونگی راه اندازی التراسونیک با آردوینو را یاد میگیریم.

سنسور التراسونیک HC-SR04 چگونه کار می‌کند

امواج فراصوت را در فرکانس ۴۰۰۰۰ هرتز منتشر می‌کند که در هوا حرکت می‌کند و اگر یک شی یا مانع در مسیر آن وجود داشته باشد به ماژول بازخواهد گشت. با در نظر گرفتن زمان حرکت و سرعت صوت می‌توانید فاصله را محاسبه کنید.

01-سنسور-التراسونیک-HC-SR04-چگونه-کار-می کند

ماژول التراسونیک HC-SR04 دارای ۴ پین، Ground،VCC، Trig و Echo است. پین‌های Ground و VCC ماژول باید به ترتیب به پین های Ground و ۵ ولت بر روی برد آردینو متصل شوند و پین‌های trig و echo به هر پین I / O دیجیتال بر روی برد آردینو متصل شوند.

20230207 192136

 

به منظور ایجاد فراصوت، شما باید پین Trig را بر روی یک حالت بالا برای 10μs تنظیم کنید. که ۸ سیکل پیوسته التراسونیک را ارسال خواهد کرد که با سرعت صوت حرکت خواهد کرد و در پین Echo دریافت خواهد شد. پین Echo زمان حرکت موج صوتی را بر حسب میکروثانیه نشان می‌دهد. ما در بخش های بعد در قسمت آموزش رباتیک از مطالب این مقاله استفاده خواهیم کرد.

03-سنسور-التراسونیک-HC-SR04-چگونه-کار-می کند

به عنوان مثال، اگر شی ۱۰ سانتیمتر از سنسور دور باشد، و سرعت صدا ۳۴۰ m / s یا ۰.۰۳۴ cm / μs باشد، موج صدا باید در حدود ۲۹۴ u ثانیه حرکت کند. اما چیزی که از پین Echo می‌گیرید دو برابر این عدد خواهد بود چون موج صدا باید به سمت جلو حرکت کند و به عقب برگردد. بنابراین برای رسیدن به فاصله در سانتی متر باید مقدار زمان حرکت دریافتی از پین echo را در ۰.۰۳۴ ضرب کرده و آن را بر ۲ تقسیم کنیم.

04-سنسور-التراسونیک-HC-SR04-چگونه-کار-می کند

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

ابتدا باید پین‌های Trig و Echo را تعریف کنید. در این مورد آن‌ها پین‌های شماره ۹ و ۱۰ در برد آردینو هستند و به آن‌ها trigPin و echoPin گفته می‌شود. سپس شما به یک متغیر طولانی به نام”duration” برای زمان حرکت نیاز دارید که از سنسور و یک متغیر صحیح برای فاصله به دست خواهید آورد.

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
// defines variables
long duration;
int distance;

در این راه‌اندازی شما باید trigPin را به عنوان یک خروجی و echoPin را به عنوان یک ورودی تعریف کنید و همچنین ارتباط سریال را برای نشان دادن نتایج روی نمایشگر سریال آغاز کنید.

void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}

در این حلقه ابتدا باید مطمئن شوید که trigPin واضح است بنابراین باید آن پین را بر روی یک حالت LOW تنها برای 2μs تنظیم کنید. در حال حاضر برای تولید موج فراصوت، ما باید trigPin را بر روی حالت HIGH برای 10μs قرار دهیم. با استفاده از تابع ()pulseIn شما باید زمان حرکت را بخوانید و آن مقدار را در متغیر “duration” قرار دهید، این تابع دارای ۲ پارامتر است، نام اولی پین echo و برای دومی می‌توانید HIGH یا LOW بنویسید.

// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

در این حالت، HIGH به این معنی است که تابع ()pulsIn منتظر خواهد ماند تا پین به HIGH ناشی از موج صدای بازتاب شده برود و زمانبندی را آغاز خواهد کرد، سپس منتظر خواهد ماند تا پین به LOW زمانی که موج صدا به پایان می‌رسد و زمان‌بندی را متوقف خواهد کرد، برود. در پایان این تابع طول پالس را در میکروثانیه باز می‌گرداند.
برای به دست آوردن فاصله ما duration را در ۰.۰۳۴ ضرب می‌کنیم و آن را بر ۲ تقسیم می‌کنیم همانطور که قبلاً این معادله را توضیح دادیم.

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);

در پایان مقدار فاصله را روی نمایشگر سریال چاپ خواهیم کرد.

این هم کد کامل:

/*
* Ultrasonic Sensor HC-SR04 and Arduino Tutorial
*
* by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
// defines variables
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
}

مثال سنسور التراسونیک آردینو و نمایشگر LCD

این یک مثال دیگر از نحوه استفاده از سنسور التراسونیک با آردینو و نمایش نتایج بر روی یک LCD است.

05-مثال-سنسور-التراسونیک-آردوینو-و نمایش-LCD

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

 

کدهایی که فاصله را اندازه‌گیری می‌کنند تقریباً شبیه به مثال اصلی هستند. در اینجا، به جای چاپ نتایج بر روی نمایشگر سریال، آن‌ها را بر روی LCD چاپ می‌کنیم.

ult sonic uno

 

همچنین برای درک بهتر این مطالب میتوانید ویدیوی زیر را مشاهده کنید:

کدهای مورد نیاز برای راه اندازی التراسونیک با ال سی دی و آردوینو UNO

#include <LiquidCrystal_I2C.h> 
// includes the LiquidCrystal Library
LiquidCrystal_I2C lcd(0x27 ,16,2);
// Creates an LCD object.(0x27)

const int trigPin = 9;
//پین شماره ی 9 را trigpin نامگذاری کن

const int echoPin = 10;
//پین شماره ی 10 را echo pin نام گذاری کن

long duration;
//duration را از نوع لانگ تعریف میکنیم

int distanceCm, distanceInch;
//برای فاصله به سانتی متر و متر نیز پارامترهایی تعریف میکنیم

void setup() {
  Serial.begin(9600);
  lcd.init(); 
  // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
  //ال سی دی را راه اندازی کن

  lcd.backlight();
  pinMode(trigPin, OUTPUT);
  //نوع پین شماره ی 9 را خروجی تعریف میکنیم
  
  pinMode(echoPin, INPUT);
  //نوع پین شماره 10 را ورودی تعریف میکنیم
}
void loop()
{
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  //چند دستور بالا به این منظور به کار میرود که پین شماره ی 10 با قرار گرفتن در حالت بالا  یا high 
  //فرکانسی را ارسال کند و مدت زمانی که echopin در حالت high قرار میگیرد در واقه زمانی است که موج به مبدا باز میگردد
  
  distanceCm = duration * 0.034 / 2;
  //در اینجا برای به دست اوردن فاصله به سانتی متر سرعت صوت را در زمان ضرب میکنیم و به این دلیل که مدت زمان ما
  //در حقیقت زمانی است که صوت از مبدا تا جسم میرود و از جسم تا مبدا باز میگردد آن را بر دو تقسیم میکنیم تا زمان مبدا تا جسم مشخص شده باشد
  
  distanceInch = duration * 0.0133 / 2;
  //همان محاسبات بالا راانجام میدهیم با این تفاوت که سرعت صوت را بر حسب اینچ حساب میکنیم
  
  
  lcd.setCursor(0, 0);
  // Sets the location at which subsequent text written to the LCD will be displayed
  //محل قلم را سطر صفر و ستون صفر قرار بده
  
  lcd.print("Distance: "); 
  // Prints string "Distance" on the LCD
  //کلمه ی فاصله را تایپ کن
  
  lcd.print(distanceCm); 
  // Prints the distance value from the sensor
  //مقدار فاصله ای ک بر حسب سانتی متر به دست آورده ایم را تایپ کن
  
  lcd.print(" cm");
 //cm را در ال سی دی تایپ کن

  delay(10);
 //ده میلی ثانیه صبر کن
 
  lcd.setCursor(0, 1);
  //محلقلم را سطر 1 و ستون صفر قرار بده
  lcd.print("Distance: ");
  //کلمه ی فاصله را تایپ کن
  
  lcd.print(distanceInch);
  //مقدار فاصله ای ک بر حسب اینچ بدست آورده ایم را تایپ کن
 
  lcd.print(" inch");
  //کلمه ی اینچ را تایپ کن
  
  delay(10);
  //10 میلی ثانیه صبر کن
  
}

 

امیدوارم از این آموزش آردوینو لذت برده و چیز جدیدی یاد گرفته باشید. لطفاً در زیر بخش نظرات هر سؤالی دارید بپرسید.

 

 

رضا قنبری
متخصص آموزش رباتیک

رضا قنبری هستم متخصص آموزش رباتیک با بیش از 10 سال سابقه فعالیت در ایران

این مطلب را به اشتراک بگذارید

دسته بندی نشده

ماژول سنسور مجاورت نوری

ماژول سنسور مجاورت نوری قبل از خواندن این مقاله بهتر است در نظر داشته باشید مقالاتی که با عنوان ماژول در سایت قرار گرفته اند

ماژول کاهنده

ماژول كاهنده قبل از خواندن مقاله ماژول كاهنده بهتر است در نظر داشته باشید مقالاتی که با عنوان ماژول در سایت قرار گرفته اند از

دیدگاه‌ خود را بنویسید

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