پاسخ : من یک تازه کار با برد آردوینو UNO هستم !!
راه اندازی ماژول مسافت سنج SR04
سلام خدمت دوستان عزیز
در ادامه کار با آردوینومون میخوایم تقریبا یه متر دیجیتال رو راه اندازی کنیم
جهت این کار ماژول های مختلفی وجود داره که ما چون تازه کار هستیم میخوایم از ساده ترین و ارزان ترین ماژول فاصله سنج با عنوان ماژول آلتراسونیک سنجش مسافت sr04 استفاده کنیم:
لینک زیر از صفحات انجمنمون هست که راجب این ماژول بحث شده دیدنش خالی از لطف نیست:

ویژگی های ماژول:
ولتاژ کاری ۵ ولت
فرکانس ۴۰Hz
زاویه قابل اندازه گیری ۱۵ درجه
سیگنال تریگر ورودی ۱۰ میکرو ثانیه است.
سیگنال Echo سیگنال خروجی TTL PWL
طول پالس دریافتی بین ۱۰۰ میکروثانیه و ۱۸ میلی ثانیه می باشد.اگر پالس دریافتی در محدوده ی ۳۶ میلی ثانیه و یا بیشتر باشد بدین معنی است که در مقابل ماژول مانعی وجود ندارد.
ابتدا باید یک پالس با طول حداقل ۱۰ میکرو ثانیه به پایه TRIG اعمال شود. ماژول به صورت اتوماتیک ۸ عدد پالس با فرکانس ۴۰ کیلو هرتز ارسال میکند. وقتی که پالس ها ارسال شد پایه ECHO یک میشه و تا زمانی که برگشت پالس ها از جسم را دریافت نکند این پایه یک باقی میماند. پس با اندازه گیری مدت زمانی که این پایه در سطح منطقی ۱ بوده است میتوان زمان رفت و برگشت صوت را بدست آورد. برای اندازه گیری پالس روی پایه ECHO باید از تایمر استفاده کرد. بعد از اطلاع از زمان رفت و برگشت سیگنال اولتراسونیک با استفاده از رابطه زیر فاصله سنسور تا مانع به راحتی محاسبه می شود.
راه اندازی ماژول با پایه ی مشترک برای Trigger و Echo
در این حالت از یک پایه برای تریگر و اکو استفاده می شود این حالت برای صرفه جویی در پایه های I/O ی میکروکنترلر یا هر سیستم دیگری طراحی شده است. برای استفاده از این باید پایه ی OUT به زمین وصل شود. و از پایه ی Echo برای تریگر و گرفتن پالس اکو استفاده می شود.
مدار رو طبق عکس زیر میبندیم:

برنامه راه اندازی:
تو این برنامه از کنسول خود آردوینو به عنوان نمایشگر استفاده میکنیم نمایشگر برا چی؟
برای نشون دادن فاصله مون از ماژول ...
تابع pulsein
;
این تابع زمان پالسی که به ورودی پین تعیین شده داده میشه رو برمیگردونه.(برحسب میکروثانیه)
pin
این پارامتر پایه مورد نظری که قراره پالس ورودی به اون اندازه گیری بشهرو مشخص میکنه
value
ممکنه بخوایم زمان یک شدن یک پایه هارو اندازه بگیریم و یا میزان صفر شدن اون پایه رو نیاز داشته باشیم بدونیم. با مقدار دهی HIGH و LOW برای آردوینو مشخص میکنیم که کدوم حالت رو اندازه گیری بکنه.
timeout
این پارامتر مقدار زمان شروع شدن پالس رو معین میکنیم؛
در حالت عادی این مقدار 1 ثانیه خواهد بود .
برناممون دارای شرط (if) هستش
بدین صورت تعریف کردیم که وقتی فاصله جسممون کمتر از 7 سانتی متر شد led قرمز روشن شه و وقتی از 7 سانتی متر بیشتر شد led سبز
در صورتی که جسم از فاصله 200 سانتی متر بیشتر رفت جمله out of range در کنسول به نمایش درمیاد
فیلمی از نتیجه کار:
راه اندازی ماژول مسافت سنج SR04
سلام خدمت دوستان عزیز
در ادامه کار با آردوینومون میخوایم تقریبا یه متر دیجیتال رو راه اندازی کنیم
جهت این کار ماژول های مختلفی وجود داره که ما چون تازه کار هستیم میخوایم از ساده ترین و ارزان ترین ماژول فاصله سنج با عنوان ماژول آلتراسونیک سنجش مسافت sr04 استفاده کنیم:
لینک زیر از صفحات انجمنمون هست که راجب این ماژول بحث شده دیدنش خالی از لطف نیست:


ولتاژ کاری ۵ ولت
فرکانس ۴۰Hz
زاویه قابل اندازه گیری ۱۵ درجه
سیگنال تریگر ورودی ۱۰ میکرو ثانیه است.
سیگنال Echo سیگنال خروجی TTL PWL
طول پالس دریافتی بین ۱۰۰ میکروثانیه و ۱۸ میلی ثانیه می باشد.اگر پالس دریافتی در محدوده ی ۳۶ میلی ثانیه و یا بیشتر باشد بدین معنی است که در مقابل ماژول مانعی وجود ندارد.
ابتدا باید یک پالس با طول حداقل ۱۰ میکرو ثانیه به پایه TRIG اعمال شود. ماژول به صورت اتوماتیک ۸ عدد پالس با فرکانس ۴۰ کیلو هرتز ارسال میکند. وقتی که پالس ها ارسال شد پایه ECHO یک میشه و تا زمانی که برگشت پالس ها از جسم را دریافت نکند این پایه یک باقی میماند. پس با اندازه گیری مدت زمانی که این پایه در سطح منطقی ۱ بوده است میتوان زمان رفت و برگشت صوت را بدست آورد. برای اندازه گیری پالس روی پایه ECHO باید از تایمر استفاده کرد. بعد از اطلاع از زمان رفت و برگشت سیگنال اولتراسونیک با استفاده از رابطه زیر فاصله سنسور تا مانع به راحتی محاسبه می شود.

در این حالت از یک پایه برای تریگر و اکو استفاده می شود این حالت برای صرفه جویی در پایه های I/O ی میکروکنترلر یا هر سیستم دیگری طراحی شده است. برای استفاده از این باید پایه ی OUT به زمین وصل شود. و از پایه ی Echo برای تریگر و گرفتن پالس اکو استفاده می شود.
مدار رو طبق عکس زیر میبندیم:


[LEFT]
#define trigPin 13
#define echoPin 12
#define led 11
#define led2 10
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 7) { // This is where the LED On/Off happens
digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off
digitalWrite(led2,LOW);
}
else {
digitalWrite(led,LOW);
digitalWrite(led2,HIGH);
}
if (distance >= 200 || distance <= 0){
Serial.println("Out of range");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}
[/LEFT]
تو این برنامه از کنسول خود آردوینو به عنوان نمایشگر استفاده میکنیم نمایشگر برا چی؟
برای نشون دادن فاصله مون از ماژول ...
تابع pulsein
pulseIn(pin, value);
pulseIn(pin, value, timeout)
این تابع زمان پالسی که به ورودی پین تعیین شده داده میشه رو برمیگردونه.(برحسب میکروثانیه)
pin
این پارامتر پایه مورد نظری که قراره پالس ورودی به اون اندازه گیری بشهرو مشخص میکنه
value
ممکنه بخوایم زمان یک شدن یک پایه هارو اندازه بگیریم و یا میزان صفر شدن اون پایه رو نیاز داشته باشیم بدونیم. با مقدار دهی HIGH و LOW برای آردوینو مشخص میکنیم که کدوم حالت رو اندازه گیری بکنه.
timeout
این پارامتر مقدار زمان شروع شدن پالس رو معین میکنیم؛
در حالت عادی این مقدار 1 ثانیه خواهد بود .
برناممون دارای شرط (if) هستش
بدین صورت تعریف کردیم که وقتی فاصله جسممون کمتر از 7 سانتی متر شد led قرمز روشن شه و وقتی از 7 سانتی متر بیشتر شد led سبز
در صورتی که جسم از فاصله 200 سانتی متر بیشتر رفت جمله out of range در کنسول به نمایش درمیاد
دیدگاه