نمودار سنسور فاصله اولتراسونیک DIY. نحوه ساخت حسگر فاصله اولتراسونیک در آردوینو: فاصله یاب DIY

سنسور مجاورت اولتراسونیک HC-SR04 (و ماژول های مشابه) از امواج اولتراسونیک برای تعیین فاصله تا یک جسم استفاده می کند.

به طور کلی، ما باید فاصله تا جسم را مشخص کنیم، زیرا خود سنسور به سادگی زمان لازم برای دریافت پژواک امواج صوتی را که می فرستد در نظر می گیرد. اینجوری میشه:

  1. این ماژول امواج صوتی را ارسال می کند و در عین حال ولتاژ را به یک پین اکو خاص اعمال می کند.
  2. ماژول سیگنال منعکس شده را می گیرد و ولتاژ را از پین حذف می کند.

این تمام کاری است که یک فاصله یاب اولتراسونیک انجام می دهد. ما خودمان می‌توانیم فاصله را تعیین کنیم، زیرا می‌دانیم چقدر طول می‌کشد تا صدا از ماژول به عقب برگردد (طبق مدت زمان روشن شدن پین اکو)، و همچنین سرعت صوت در هوا را می‌دانیم. اما ما زیاد وارد جزئیات نمی شویم و به آردوینو اجازه می دهیم همه محاسبات را انجام دهد.

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

مرحله 1: مونتاژ سخت افزار DIY

مونتاژ بسیار ساده است (هر چیزی که از ولتاژ جدا شده است را جمع آوری کنید):

  1. 5 ولت را از آردوینو به پین ​​VCC روی ماژول وصل کنید
  2. GND را از آردوینو به GND روی ماژول وصل کنید
  3. پایه دیجیتال 7 آردوینو را به پایه Trig روی ماژول وصل کنید
  4. ماژول دیجیتال 8 آردوینو را به پین ​​اکو روی ماژول وصل کنید

مرحله 2: برنامه نویسی ماژول HC-SR04

برای دیدن نتایج برنامه باید مانیتور سریال را روی آردوینو اجرا کنید. اگر با این ویژگی آشنا نیستید، اکنون زمان آن است که آن را باز کنید و در مورد آن اطلاعات بیشتری کسب کنید - این یک ابزار عالی برای کمک به شما در رفع اشکال کدتان است. در رابط آردوینو، گوشه سمت راست را نگاه کنید، در آنجا دکمه ای پیدا می کنید که مانیتور سریال را راه اندازی می کند، شبیه ذره بین است، روی آن کلیک کنید و مانیتور باز می شود (یا TOOLS/Serial Monitor را انتخاب کنید، یا Ctrl+ را فشار دهید. Shift+M).

در اینجا پیش نویس برنامه کاری آمده است:

// شروع طرح برای آروینو -
// ثابت ها را تعریف کنید (ثابت ها تغییر نمی کنند و اگر بخواهید دوباره آنها را تعریف کنید با خطای زمان کامپایل مواجه خواهید شد)
const int triggerPin = 7; // یک ثابت به نام "triggerPin" ایجاد می کند و پین دیجیتال 7 را به آن اختصاص می دهد
const int echoPin = 8; // یک ثابت به نام "echoPin" ایجاد می کند و پین دیجیتال 8 را به آن اختصاص می دهد
// تعریف متغیرها (متغیرها می توانند و معمولاً در طول برنامه تغییر می کنند، ممکن است حاوی مقادیر محاسبه شده باشند)
int duration = 0; // یک متغیر به نام "دوره" ایجاد می کند تا مقدار بازگردانده شده توسط pulseIn را نگه دارد، در ابتدا روی "0" تنظیم شده است.
فاصله int = 0; // یک متغیر ایجاد می کند تا مقداری را که به صورت فاصله تا شی جلوی حسگر محاسبه می شود، ذخیره کند، در ابتدا مقدار روی "0" تنظیم می شود.
void setup() // در این بخش می توانید برد و سایر پارامترهای لازم برای اجرای برنامه خود را پیکربندی کنید.
{
Serial.begin(9600); // ارتباط سریال از طریق USB بین آردوینو و کامپیوتر را راه اندازی می کند، ما به این نیاز خواهیم داشت
//حالت های پین را تعریف کنید
pinMode (triggerPin، OUTPUT)؛ // "triggerPin" برای OUTPUT استفاده خواهد شد، شماره پین ​​در بالا در بخش "تعریف متغیرها" اعلام شده است.
pinMode (echoPin، INPUT)؛ // "echoPin" برای INPUT استفاده خواهد شد، شماره پین ​​در بالا در بخش "تعریف متغیرها" اعلام شده است.
) // پایان راه اندازی
// هر آنچه در بالا نوشته شده بود توسط برنامه فقط یک بار خوانده می شود - در راه اندازی یا تنظیم مجدد
void loop() // کد برنامه در قسمت حلقه شده به طور مداوم خوانده می شود و تکرار می شود تا زمانی که برق خاموش شود یا تا زمانی که تنظیم مجدد انجام شود.
{
digitalWrite (triggerPin، HIGH); // شروع به ارسال امواج اولتراسونیک از ماژول HC-SR04 می کند
تاخیر (5); // یک مکث کوتاه، برای عملکرد صحیح ماژول لازم است (شما می توانید این مقدار را کاهش دهید، برنامه های دیگر من با مقدار 1 کار می کنند)
digitalWrite (triggerPin، LOW)؛ // امواج اولتراسونیک که از ماژول HC-SR04 می آیند را متوقف می کند
duration = pulseIn (echoPin، HIGH); //عملکرد ویژه ای که به شما امکان می دهد مدت زمان اعمال ولتاژ به پین ​​اکو را در آخرین چرخه سونوگرافی تکمیل شده تعیین کنید.
تاخیر (10); // دوباره یک مکث کوتاه. برای ثبات لازم است؛ مکثی که خیلی کوتاه است ممکن است نتیجه ای نداشته باشد.
فاصله = (مدت/2) / 58; //تبدیل مدت زمان به فاصله (مقدار ذخیره شده در "دوره" بر 2 تقسیم می شود، سپس این مقدار بر 58** تقسیم می شود) ** برای سانتی متر
تاخیر (500); // مکث دیگری برای ثبات - می توانید با مقدار بازی کنید، اما ممکن است برنامه را خراب کند، بنابراین به طور پیش فرض از 500 استفاده کنید
Serial.print(distance); //مقدار فاصله محاسبه شده را به مانیتور سریال ارسال می کند
Serial.println("cm"); // کلمه "cm" را بعد از مقدار فاصله اضافه می کند و کارت را در مانیتور سریال به یک خط جدید منتقل می کند.
Serial.println(); //یک خط خالی روی مانیتور سریال اضافه می کند (برای خوانایی)
) // پایان حلقه

_________________________________________________

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

// برنامه ماژول سنسور فاصله اولتراسونیک HC-SC04
const int triggerPin = 7; //ماشه برای 7
const int echoPin = 8; // ECHO در 8
int duration = 0; // مقدار pulseIn را ذخیره می کند
فاصله int = 0; // مقدار فاصله محاسبه شده را ذخیره می کند
void setup()
{
Serial.begin(9600);
pinMode (triggerPin، OUTPUT)؛ //حالت های پین را تعریف می کند
pinMode (echoPin، INPUT)؛
}
حلقه خالی()
{
digitalWrite (triggerPin، HIGH); // شروع به ارسال اولتراسوند می کند
تاخیر (5); //فرمان مورد نیاز، قابل تنظیم (اما نه کمتر از 10 میکروثانیه)
digitalWrite (triggerPin، LOW)؛ // ماژول ارسال اولتراسوند را متوقف می کند
duration = pulseIn (echoPin، HIGH); // تعیین می کند که پین ​​ECHO چه مدت روشن شده است
تاخیر (10); //فرمان ضروری، قابل تنظیم، اما با دقت
فاصله = (مدت/2) / 58; // فاصله تا شی را بر حسب سانتی متر محاسبه کنید
تاخیر (500); // مکث برای ثبات
Serial.print(distance); //مقدار فعلی ذخیره شده در فاصله را به مانیتور سریال ارسال می کند
Serial.println("cm"); // کلمه "cm" را بلافاصله پس از فاصله نمایش می دهد
Serial.println(); // یک خط خالی در مانیتور سریال ایجاد می کند (برای خوانایی)
}

من همچنین فایل های .ino را به دستورالعمل ها پیوست خواهم کرد

فایل ها

  1. HCSR04BareBones.ino - این فایل به شدت مورد نظر قرار گرفته و حاوی اطلاعاتی در مورد ماژول HC-SR04 و همچنین اطلاعات اسمبلی است.
  2. BareBonesLight.ino - یک ماژول با تعداد کمی از نظرات

در اینجا توصیه من است. می‌دانم که کد کار می‌کند، اما قبل از پیوست کردن فایل‌ها به دستورالعمل‌ها، همه چیز را دوباره بررسی کردم و مانیتور سریال به طور مداوم "0 سانتی‌متر" را نشان داد. معلوم شد که مشکل یک ماژول سوخته است و با تعویض آن وضعیت اصلاح شد.

اگر تصمیم دارید با مقادیر دستورات تاخیر بازی کنید، به نحوه پاسخ برنامه نگاه کنید. از طریق تجربه، من متوجه شدم که کاهش مقادیر تاخیر یا تنظیم آنها روی 0 می تواند برنامه را به حالت غیرفعال برساند.

هنگامی که دستگاه خود را راه اندازی کردید، تنها محدودیت تخیل شماست. می توانید بررسی کنید که اجسام ساکن در همان فاصله قرار دارند و ثابت می مانند. می‌توانید از مانیتور برای دریافت اعلان‌ها زمانی که جسمی از کنار سنسور عبور کرده و غیره استفاده کنید.

من از نمودار بالا استفاده کردم تا مشخص کنم همه اشیا بیشتر از 60 سانتی متر از سنسور فاصله دارند.در پروژه از سه دیود و یک توییتر استفاده شده است. وقتی همه اشیا بیشتر از 60 سانتی متر بودند، LED سبز روشن بود. وقتی چیزی به کمتر از 60 سانتی متر نزدیک شد، دیود سبز خاموش شد و چراغ قرمز روشن شد. اگر جسم برای مدتی در فاصله نزدیک باقی می ماند، دیود قرمز دوم روشن می شود و بیپر شروع به بیپ می کند. هنگامی که جسم 60 سانتی متر دور شد، بیپر خاموش شد، دیودهای قرمز خاموش شدند و چراغ سبز دوباره روشن شد. این از همه هشدارهای کاذب جلوگیری نکرد، اما در بیشتر مواردی که پرنده ای از کنار سنسور عبور کرد یا سنجاب کنجکاو از کنار آن دوید، کارساز بود.

مرحله 4: مسائل شناخته شده

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

  1. US-105
  2. DYP-ME007TX

ماژول US-105

ماژول اولتراسونیک US-105 از یک پین GPIO روی پین ECHO استفاده می کند که به معنی محاسبات مختلف برای تعیین فاصله است. با سنجاق کردن GPIO به پین ​​ECHO، هنگام ارسال موج، پین فعال نمی ماند. در عوض، هنگامی که اولتراسوند بازتابی دریافت می‌شود، ولتاژ خاصی به پین ​​ECHO اعمال می‌شود که متناسب با زمانی است که طول می‌کشد تا موج اولتراسوند حرکت کند و به حسگر بازگردد. کد زیر با این ماژول کار می کند:

// کد ماژول اولتراسونیک US-105 بدون علامت EchoPin = 2; int بدون امضا TrigPin = 3; طولانی بدون امضا Time_Echo_us = 0; //Len_mm_X100 = طول * 100 بدون علامت بلند Len_mm_X100 = 0; طولانی بدون علامت Len_Integer = 0; // int بدون علامت Len_Fraction = 0; void setup() (Serial.begin(9600)؛ pinMode(EchoPin, INPUT)؛ pinMode(TrigPin, OUTPUT)؛ ) void loop() (digitalWrite(TrigPin, HIGH); delayMicroseconds(50); digitalWrite(TrigPin, LOW) ؛ Time_Echo_us = pulseIn(EchoPin، HIGH); if((Time_Echo_us 1)) (Len_mm_X100 = (Time_Echo_us*34)/2؛ Len_Integer = Len_mm_X100/100; Len_Fraction = "Len_mm_00;D"; Serial.print(Len_Integer، DEC); Serial.print("."); if(Len_Fraction< 10) Serial.print("0"); Serial.print(Len_Fraction, DEC); Serial.println("mm"); delay(1000); } // Конец программы

ماژول DYP-ME007TX

// کد ماژول اولتراسونیک DYP-ME007TX /* دستورالعمل های اتصال * 5 ولت از آردوینو به VCC در ماژول * GNG از آردوینو به GND در ماژول * خروجی از ماژول به پایه دیجیتال 7 در آردوینو */ #شامل #define RXpin 7 #define TXpin 7 نرم افزار سریال mySerial (RXpin, TXpin); میلی بلند = 0; بایت mybuffer = (0); bite bitpos = 0; void setup() ( Serial.begin(9600); mySerial.begin(9600); ) void loop() (bitpos = 0; while (mySerial.available()) ( if (bitpos< 4) { mybuffer = mySerial.read(); } else break; } mySerial.flush(); mili = mybuffer << 8 | mybuffer; Serial.print("Distance: "); Serial.print(mili / 25.4); Serial.print (" inches"); Serial.println(); delay(500); } Некоторые замечания:
تمام قطعات مورد نیاز برای ایجاد فاصله یاب اولتراسونیک طبق این طرح در chipidip فروخته می شود ، برای همه چیز حدود 500-900 روبل هزینه دارد (دقیقاً به خاطر ندارم - پول زیادی وجود داشت ، من آن را حساب نکردم:- ). (مسکن، توییتر، کانکتور و غیره)
برخی از نظرات در مورد مدار مسافت یاب اولتراسونیک:
1. می تونید از هر توییتری استفاده کنید، انواع مختلف برای کارهای مختلف بهتر هستند... برای کار من - هر چه ابعاد بزرگتر باشد، بهتر است، زاویه 50 باشد.
2. می توانید سعی کنید فقط از یک AD822 نسبتاً گران قیمت و به جای مقایسه کننده از چیزی ارزان تر استفاده کنید (من اصلاً چیز دیگری در دسترس نداشتم)
3. در مگا، می توانید از یک تایمر برای تولید 40 کیلوهرتز استفاده کنید؛ برای این کار باید تشدیدگر دیگری انتخاب کنید. (من فقط 16 و 12 داشتم... جا نمیشن)
4. سرعت صوت در هوا در واقع به دما بستگی دارد - اگر دقت بسیار مهم است (به آن اهمیتی نمی دهم)، پس این را در نظر بگیرید.
5. توجه داشته باشید که در تصویر فاصله یاب داخل کیس - توییترها به پلاستیک دست نمی زنند - یک نفر گفته که با تنظیمات بسیار دقیق (این مدار این قابلیت را دارد) صدای توییتر به میکروفون می شود. از طریق بدن منتقل می شود، بنابراین بهتر است آن را ایمن کنید
6. نمونه ای از ساده ترین مگا فریمور در C (زیر این نمودار) قابل مشاهده است
7. بهتر است از پروگرامر STK200/300 که با نام avreal نیز شناخته می شود استفاده شود - نرم افزار و مدار قابل کشیدن است.
8. طبق ذهن، در فریمور باید هم ابتدا و هم انتهای "پک" را دنبال کرد، در مثال فقط ابتدا (دقت به طور خاص افزایش می یابد) ... شاید اضافه کنم و آن را پست کنید
9. توییتر واقعاً 40 کیلوهرتز را دوست دارد - کمی به سمت کناری اصلاً یکسان نیست ... احتمالاً آنچه در دفترچه راهنما می گویند درست است که طنین انداز است :-)
10. بی دلیل نیست که ترانزیستورها در امیتر در نمودار جمع شده اند - برای کسانی که می خواهند بیشتر از 12 ولت بدهند - خوش آمدید - یک نفر گفت که صدای جیر جیر بلندتر خواهد شد (بیشتر بشمارید). من این کار را به سه دلیل انجام ندادم: اولاً 24 ولت هنوز باید جایی پیدا شود و دوم اینکه نسخه فعلی هنگام تنظیم مقاومت مطابق با آن ، دیواری را در فاصله 4 متری می بیند ، یعنی. من جایی برای آزمایش آن ندارم و به آن نیازی ندارم. خب، سومین دلیلی که همین شخص گفت این است که توییترها در این ولتاژ می میرند
11. توصیه کلی: شما می توانید تمام مقاومت ها و خازن ها را در یک منبع تغذیه غیرفعال از رایانه ATX پیدا کنید (همه آنها حدود 1/8 وات هستند) - در هزینه صرفه جویی خواهید کرد!
12. این تصور غلط وجود دارد که سونوگرافی منتشر شده توسط یک جیغ به نوعی توسط سگ ها و موجودات دیگر شنیده می شود، تأثیر بدی روی آنها می گذارد: سگ من یک شب آمد و جلوی جیغی که روشن بود خوابش برد.
13. همچنین - صرفا جهت اطلاع شما - مگا و سایر کنترلرهای 8 بیتی اتمل عالی کار می کنند ... در بعضی کارها به جای 16 مورد نیاز، 24 کار می کنند و خوب هستند.
14. هنگامی که R5 را بالای یک کیلو اهم (10، 50، 100) قرار دهید، یک بهره بسیار بزرگ دریافت خواهید کرد و به احتمال زیاد به شاخ نیاز خواهید داشت، اما دامنه اندازه گیری بسیار افزایش می یابد.
15. به جای برداشتن بوق ها (با یک R5 بزرگ)، به بالا نگاه کنید، می توانید سیستم عامل را ارتقا دهید تا در لحظه اولیه منتظر سیگنال مفید نباشد. اما پس از آن اندازه گیری فواصل حدود 10 سانتی متر یا کمتر غیرممکن خواهد بود.

توضیح نکته 8 - رنگ زرد لحظه ای را نشان می دهد که وقفه فاصله یاب اولتراسونیک MK در هنگام دریافت ایجاد می شود؛ در واقع، می توانید خود را به همین لحظه اول محدود کنید، کمی صبر کنید و اندازه گیری بعدی را انجام دهید و پالس های بعدی را ایجاد کنید - و زمان پرواز صدا، زمان از اولین پالس ارسالی (یا آخرین آن مهم نیست) تا زمان پذیرش اول در نظر گرفته می شود.
گزینه دوم - که با رنگ قرمز نشان داده شده است - دقیق تر است - زیرا بسته پالس ها، به عنوان یک قاعده، به شکل کامل و به طور کامل نمی رسد (ممکن است چند پالس اول یا آخرین وجود نداشته باشد)، در واقع، حتی در تصویر می بینید که در لبه ها "مسطح" است ، اگرچه یک مستطیل ایده آل از پالس ها ارسال شده است - بنابراین: نکته این است که وسط بسته باید در جای خود باقی بماند علیرغم اینکه ممکن است لبه های آن دیگر نباشد. توسط مقایسه کننده احساس می شود. بنابراین دقت چند است.. (باید به میلی متر فکر کرد) بستگی به این دارد که در فریمور فاصله یاب اولتراسونیک هنگام دریافت آن وسط یا فقط ابتدای بسته در نظر گرفته شده باشد.

این وسیله که هنوز هم منحصر به فرد به حساب می آید تقریباً در تمام عرصه های زندگی بشر توانسته کاربرد پیدا کند. امروزه مسافت یاب های لیزری در دست زمین شناسان و نقشه برداران قابل مشاهده است. به عبارت دیگر، در مناطقی از فعالیت های انسانی که اندازه گیری فاصله با دقت بسیار بالا ضروری است. بنابراین، اندازه گیری های نوار لیزری محبوبیت بالایی به دست آورده اند که با دقت بالا، افزایش قابلیت اطمینان و قیمت بسیار مقرون به صرفه مشخص می شود. کاملاً طبیعی است که بپرسیم آیا می توان با دست خود یک مسافت یاب لیزری ساخت.

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

اندازه‌گیری‌ها با فاصله‌یاب لیزری بر اساس شار نور انجام می‌شود؛ حامل سیگنال تابش الکترومغناطیسی است که در سایه مناسب رنگ‌شده است. در بیشتر موارد از نور قرمز به عنوان پایه استفاده می شود.

طبق قوانین فیزیک، سرعت نور بسیار بیشتر از سرعت صوت است، بنابراین زمان اندازه‌گیری همان فاصله متفاوت خواهد بود.

دلایل اصلی نصب فاصله یاب لیزری

استفاده از یک متر مکانیکی همیشه راحت نیست. گاهی اوقات تاثیر مثبتی ندارد. طی 10 سال گذشته، مسافت یاب های الکترونیکی به طور فزاینده ای ترجیح داده شده اند. این گروه از دستگاه هایی که فاصله را با استفاده از وسایل الکترونیکی اندازه گیری می کنند عبارتند از:

  • فاصله یاب لیزری;
  • فاصله یاب اولتراسونیک

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

فاصله یاب لیزری DIY از چندین بخش تشکیل شده است:

  • پرداخت؛
  • میکروکنترلر؛
  • تقویت کننده سیگنال لیزری؛
  • لیزر؛
  • آشکارساز نور؛
  • فیلتر کنید.

اساساً تابش لیزر با استفاده از سیگنال سینوسی رخ می دهد.

به دست آوردن چنین سیگنالی با فرکانس 10 مگاهرتز بسیار دشوار است. یک کنترلر ساده در اینجا مناسب نیست. برای این کار بهتر است از پیچ و خم هایی استفاده کنید که فرکانس لازم را داشته باشد. هنگامی که سیگنال دریافتی از ردیاب نوری تقویت می شود، هارمونیک های غیر ضروری توسط یک فیلتر باند گذر ویژه که در فرکانس 10 مگاهرتز کار می کند حذف می شود. سیگنالی در خروجی ظاهر می شود که به شدت شبیه سیگنال سینوسی است.

بازگشت به مطالب

برای ساختن فاصله یاب با دستان خود، می توانید از مدار ارتباط لیزری به عنوان پایه استفاده کنید. در این مورد، انتقال داده بسیار سریع اتفاق می افتد، سرعت 10 مگابیت است. این مقدار با فرکانس مدولاسیون موجود مطابقت دارد.

برای چنین دستگاه لیزری از ساده ترین تقویت کننده قدرت استفاده می شود. این شامل یک تراشه 74HC04 است که از شش اینورتر مونتاژ شده است. منبع فعلی توسط مقاومت های ویژه محدود شده است. با این حال، صنعتگران می توانند مقاومت ها را با قطعات قابل اطمینان تری جایگزین کنند.

برد راه اندازی به منبع ولتاژ 5 ولت تبدیل می شود. آمپلی فایر به این ترتیب توان دریافت می کند. برای حذف تداخل سیگنال به قسمت دیگری از مدار الکتریکی، محفظه تقویت کننده از فولاد ساخته شده است، هر سیم محافظ است.

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

گیرنده شامل:

  • فتودیود؛
  • تقویت کننده

تقویت کننده شامل یک ترانزیستور اثر میدان، یک ریز مدار ویژه است. با افزایش فاصله، نور فتودیود کاهش می یابد. بنابراین لازم است که تقویت قدرتمندی داشته باشیم. مدار مونتاژ شده به شما امکان می دهد به 4000 واحد برسید.

با افزایش فرکانس، سیگنال های فتودیود شروع به کاهش می کنند. آمپلی فایر این طرح جزء اصلی و بسیار آسیب پذیر است. تنظیم آن به دقت بسیار بالایی نیاز دارد. توصیه می شود بهره را به گونه ای تنظیم کنید که حداکثر مقادیر را بدست آورید. ساده ترین راه تامین ولتاژ 3 ولت به ترانزیستور است.می توانید یک باتری معمولی نصب کنید.

برای شروع کار گیرنده، باید 12 ولت را تامین کنید. برای این، یک منبع تغذیه ویژه نصب شده است.

چنین تقویت کننده ای حساسیت بالایی به هرگونه تداخل دارد، بنابراین باید محافظ شود. برای این کار می توانید از محفظه سنسور نوری استفاده کنید. محافظ فتودیود را می توان از فویل معمولی ساخت.

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


گاهی برای خودم یک مسافت یاب اولتراسونیک HC-SR04 خریدم. این دستگاه یک ماژول با دو ساطع کننده پیزو است که یکی از آنها به عنوان امیتر و دومی به عنوان گیرنده موج اولتراسونیک عمل می کند. به علاوه کنترل الکترونیکی برای کنترل امیتر و گیرنده. برای اتصال، ماژول دارای یک کانکتور 4 پین است: دو تای آن برق (5 ولت مورد نیاز) و دو تای دیگر برای ارتباط با میکروکنترلر تامین می‌کند.

رابط ارتباطی در اینجا بسیار ساده سازماندهی شده است: ما یک پالس کوتاه با مدت زمان 10-15 میکروثانیه به ورودی اعمال می کنیم و منتظر یک پالس در خروجی هستیم. به محض اینکه موج منعکس شده به گیرنده می رسد، ماژول خود فاصله را محاسبه می کند و یک ضربه سطح بالا تا 25 میلی ثانیه به پای اکو ارسال می کند. طول پالس خروجی متناسب با فاصله تا مانعی است که موج اولتراسونیک از آن منعکس شده است. تنها کاری که باید انجام دهیم این است که این ضربه را بگیریم، طول آن را محاسبه کنیم و این مقدار را به فاصله تبدیل کنیم.

مشخصات فنی:

  • ولتاژ تغذیه: 5 ولت
  • جریان خاموش:< 2 мА
  • زاویه دید موثر:< 15 °
  • محدوده فاصله: 2 سانتی متر - 500 سانتی متر
  • وضوح: 0.3 سانتی متر

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

S=F/58 ; جایی که S فاصله بر حسب سانتی متر است، F طول پالس بر حسب میکروثانیه است

همانطور که می بینید، حتی نیازی به دانستن سرعت صوت نیست.

برای آزمایش، مدار زیر را مونتاژ کردم:

ماژول به طور مستقیم به میکروکنترلر متصل می شود. نیازی به نصب مقاومت های کششی نیست، آنها از قبل روی برد ماژول قرار دارند.

و بنابراین، ما باید فقط یک ضربه را بگیریم و سپس طول آن را محاسبه کنیم. در ابتدا می خواستم از یکی از وقفه های خارجی میکروکنترلر برای این منظور استفاده کنم و وقفه باید هم در لبه جلو (انتقال از حالت کم به بالا) و هم در لبه سقوط (از زیاد به پایین) رخ می داد. یعنی باید پیکربندی این وقفه را در لحظه تغییر دهید. به علاوه، باید از یکی از تایمرها استفاده کنید که باید طول پالس را اندازه گیری کند. برای یک عملیات تثبیت سیگنال کوچک بسیار پیچیده است. Bascom-AVR یک فرمان ویژه برای این مورد دارد نبض . در اینجا مثالی از نحوه گرفتن سیگنال با استفاده از این دستور آورده شده است:

نبض آ, پیند, 5 , 1

اینجا در متغیرآ مقدار طول پالس در آن نوشته خواهد شد ده ها میکروثانیهاز پا گرفته شده پیند.5. یکی در انتهای دستور می گوید که شما باید یک سیگنال سطح بالا بگیرید. اگر به 0 تغییر کند، کنترل کننده سیگنال سطح پایین را دریافت می کند.

این دستور از وقفه یا تایمر سخت افزاری استفاده نمی کند، اما قادر است وقوع یک پالس را تشخیص داده و طول آن را با وضوح 10 میکرو ثانیه ثبت کند. این دستور از نوع متغیر 2 بایتی برای ذخیره طول پالس استفاده می کند، بنابراین حداکثر طول سیگنال دریافتی می تواند 655.35 میلی ثانیه باشد. این برای کار در دست کافی است، اما در صورت لزوم، می توانید فایل کتابخانه mcs.lib را ویرایش کنید و حداکثر مدت زمان پالس ضبط شده را تغییر دهید.

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

$regfile = "m8def.dat"

کریستال دلار = 8000000

"پیکربندی اتصال نمایشگر به پورت های MK

پیکربندی ال سی دی = 16 * 2

پیکربندی ال سی دی پین= سنجاق, روپیه= پورتک. 5 , E= پورتک. 4 , Db4= پورتک. 3 , Db5= پورتک. 2 , Db6= پورتک. 1 , Db7= پورتک. 0

پیکربندی پورت. 4 = خروجی "خروجی برای اتصال پایه ماشه

ماشهنام مستعار پورت. 4

ماشه= 0

پیکربندی پورت. 5 = ورودی "ورودی برای ایمپالس اکو

پیکربندی پورت. 7 = خروجی "پیکربندی برای اتصال LED

رهبرینام مستعار پورت. 7

رهبری= 0

کم نور آمانند کلمه "مقدار طول سیگنال در اینجا کپی شده است

کم نور اسمانند تنها "متغیر برای ذخیره فاصله

Const ک= 0 . 1725 ضریب تبدیل طول پالس به فاصله

منتظر می ماند 50

مکان نما خاموش

Cls

ال سی دی سونار HC-SR04

مکان یابی کنید 2 , 1

ال سی دی "سایت اینترنتی"

رهبری= 1

منتظر می ماند 100

رهبری= 0

صبر کن 3

انجام دادن

ماشه= 1 "ما یک ضربه به پا Portd.4 با مدت زمان 15 میکرو ثانیه می دهیم

منتظر 15

ماشه= 0

منتظر 10

نبض آ, پیند, 5 , 1 "ما یک ضربه سطح بالا را در PinD.5 دریافت می کنیم



همچنین بخوانید: