اندازه گیری سرعت صوت از طریق آردوینو

0

مقدمه

چندین کتابخانه برای سنسور تشخیص فاصله آلتراسونیک HC-SR04 وجود دارد و کتابخانه NewPing نوشته شده توسط Tim Eckel پیشنهاد می‌شود. کتابخانه NewPing‌ را می توانید با استفاده از روش 3 در پست نصب کتابخانه در IDE Arduino نصب کنید. کدهای نشان داده شده در زیر با دستور کتابخانه NewPing را در برمی‌گیرند. توجه داشته باشید که بعد از نام کتابخانه ; وجود ندارد. توابع انتقال صدا و فاصله‌یابی با دستور NewPing sonar(trigPin, echoPin, maxdist) مقداردهی اولیه می‌شوند، این دستور پایه‌های تریگر، اکو و حداکثر فاصله اندازه‌گیری مورد انتظار برای اجتناب از نویز را تعریف می‌کند. فاصله بین نقطه شروع و هدف برابر است با نصف زمان انعکاس ضربدر سرعت صوت (343m/s) و تقسیم بر 104، زمان انعکاس بر حسب میکروثانیه و فاصله برحسب سانتی‌متر است.

 


include  // include NewPing library#
int trigPin = 6; // trigger pin
int echoPin = 7; // echo pin
int maxdist = 100; // set maximum scan distance (cm)
int echoTime; // echo time
float distance; // distance (cm)

NewPing sonar(trigPin, echoPin, maxdist); // associate sonar with
// NewPing library
 ()void setup
}
Serial.begin(9600); // set baud rate for Serial Monitor
{
 ()void loop
}
echoTime = sonar.ping(); // echo time (μs)
distance = (echoTime/2.0)*0.0343; // distance between sensor and target
Serial.print("echo time: "); // print text "echo time
Serial.print(echoTime); // print echo time
Serial.print(" microsecs\t"); // print text " microsecs" and tab
Serial.print("distance: "); // print text "distance
Serial.print(distance,2); // print distance with 2 DP
Serial.println(" cm"); // " cm" followed by a new line
delay(500);
}
 

در زیر دیگر توابع انتقال صدا و فاصله‌یابی بیان شده اند:

  • ()ping_cm: فاصله بین سونار و نقطه هدف را باز می‌گرداند، که مقداری صحیح است.
  • convert_cm(echotime): مقدار میکروثانیه را به مقدار فاصله برحسب سانتی‌متر تبدیل می‌کند.
  • ping_median(number of ob : پس از حذف مقادیر خارج از محدوده زمان انعکاس متوسط را برای تعداد مشاهده‌ها، حداقل 5 مشاهده، باز می‌گرداند.

سرعت صوت

 سرعت صوت به دمای هوا بستگی دارد و می‌تواند بصورتm/s (331.3+0.606temp) ، تخمین زده شود، که در آن temp دما برحسب درجه سلیسیوس است. اگر یک سنسور دما به پایه آنالوگ آردوینو A5 متصل شود، سپس سرعت صوت براساس زمان اکو در یک فاصله مشخص تخمین زده می‌شود. این فاصله در ابتدای کد تعریف می‌شود.

سرعت صوت
شکل 1. سنسورهای دما و آلتراسونیک
#include  // include NewPing library
int pinTrig = 6; // trigger pin
int pinEcho = 7; // echo pin
int maxdist = 100; // max scan distance (cm)
int echoTime;
float distance = 15; // known distance to scan (cm)
NewPing sonar(pinTrig, pinEcho, maxdist); // associate sonar with
// NewPing library
int tempPin = A5; // temperature sensor on analog pin A5
float speed, temp, predict;
void setup()
{
Serial.begin(9600); // define Serial output baud rate
analogReference(INTERNAL); // set ADC voltage to 1.1V rather than 5V
}
void loop()
{
echoTime = sonar.ping_median(5); // median echo time (μs)
speed = distance*2.0*pow(10,4)/echoTime; // speed of sound (m/s)
Serial.print(echoTime);Serial.print(" microsecs\t"); // print echo time
Serial.print("speed "); // print text "speed"
Serial.print(speed,1); Serial.print("\t"); // print speed to 1DP and tab
temp = (analogRead(tempPin)*110.0)/1023; // read temperature
predict = 331.3 + 0.606 * temp; // calculate speed of sound
Serial.print("predict ");
Serial.print(predict,1);Serial.println(" m/s"); // print prediction to 1DP
delay(500);
}
 

با استفاده از  دستور sonar.ping_median(تعداد پژواک ها [, max_cm_distance])  پژواک های چندگانه (پیش فرض 5 پینگ) صورت می گیرند و پژواک های خارج از محدوده حذف شده و حد وسط آنها برحسب میکروثانیه محاسبه می شود. با استفاده از آرگومان [max_cm_distance] می توان به صورت اختیاری  حداکثر فاصله جدیدی را تعیین کرد.

دستور pow(x,y) متغیر x را به توان y می‌رساند لذا pow(10,4) برابر با 104 است.

 تیم ردرونیک (redronic) مجموعه ای از آموزش ها و پروژه های مرتبط با آردوینو را برای شما علاقمندان به الکترونیک و برنامه نویسی  فراهم کرده است. جهت مشاهده این پروژه ها اینجا کلیک کنید

Choose your Reaction!
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

آخرین پست ها

redronic.com