پروژه الکترونیکپروژه های آردوینوپروژه های اندازه گیریپروژه های ربات

آموزش ساخت ربات جوی استیک با آردوینو و نمایش سرعت ، مسافت طی شده و زاویه

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

آموزش ساخت ربات با آردوینو

آموزش ساخت ربات با آردوینو

این روز ها ربات ها با استفاده از فناوری های مختلف مانند GPS ، RF ، شتاب سنج ، ژیروسکوپ و … امکانات فراوانی را در اختیار میگذارند. ما در این پروژه آردوینو ما از سنسور سنجش سرعت LM393 استفاده خواهیم کرد تا برخی از پارامترهای حیاتی مانند سرعت ، مسافت  و زاویه حرکت ربات را با استفاده از میکروکنترلر Arduino اندازه گیری کنیم. Arduino محبوب ترین گزینه در بین علاقمندان به ساخت ربات ها است ، از ربات دنبال کننده خط گرفته تا روبات های پیچیده تر.

ما یک ربات کوچک میسازیم که توسط باتری لیتیوم تغذیه می شود و با استفاده از جوی استیک کنترل میشود. در طول زمان حرکت می توانیم سرعت ، فاصله طی شده و زاویه ربات را اندازه گیری کنیم و آن ها را در زمان واقعی روی صفحه نمایش LCD کاراکتری متصل به آردوینو نمایش دهیم.

قطعات مورد نیاز پروژه

  1. برد آردوینو نانو
  2. ال سی دی کاراکتری
  3. موتور درایور L298N
  4. جوی استیک
  5. باتری لیتیومی 2000mA 7.4V
  6. موتور DC – دو عدد
  7. سنسور سرعت LM393 (یا همان H206)

ماژول سنسور سرعت LM393 – H206

قبل از شروع توضیح کد و مدار ، اجازه دهید شما را با ماژول سنسور سرعت LM393 آشنا کنم. سنسور سرعت H206 دارای یک سنسور مادون قرمز و یک مقایسه کننده ولتاژ LM393 است. به این دلیل که LM393 نقش مهمی در این سنسور ایفا میکند ، این سنسور هم با نام سنسور سرعت H206 و هم با نام سنسور سرعت H206 عرضه میشود.

ماژول سنسور سرعت LM393 - H206

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

نحوه اتصال سنسور سرعت سنج LM393 H206

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

نحوه اتصال سنسور سرعت سنج LM393 H206 

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

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

توضیحات مدار پروژه ربات جوی استیک با آردوینو

فایل شماتیک کامل این پروژه در فایل دانلودی قرار داده شده است. روبات ماشین ما از آردوینو Nano به عنوان مغز خود استفاده میکند. همچنین موتور های DC توسط ماژول درایور موتور L298N H-Bridge رانده میشوند. برای کنترل سرعت و جهت ربات از جوی استیک JoyStick استفاده میکنیم. از دو سنسور H206 برای اندازه گیری سرعت ، مسافت طی شده و زاویه استفاده میکنیم. مقادیر اندازه گیری شده توسط ال سی دی کاراکتری 16*2 نمایش داده میشوند. از پتانسیومتر برای تنظیم کنتراست LCD استفاده میکنیم. همچنین از مقاومت برای برای تنظیم جریان ورودی به نور پس زمینه ال سی دی استفاده میکنیم.

حتما ببینید :  آموزش ساخت مدار نمونه برداری و نگهداری سیگنال با آپ امپ

توضیحات مدار پروژه ربات جوی استیک با آردوینو

مدار را توسط یک باتری لیتیوم 7.5 ولت تغذیه میکنیم. این 7.4 ولت به پین 12 ولت ماژول درایور متصل میشود. تنظیم کننده ولتاژ 7805 ، 7.4 ولت را به 5+ ولت تبدیل میکند که برای تغذیه برد Arduino Nano ، ال سی دی کاراکتری ، سنسور ها و جوی استیک استفاده میشود.

موتور ها توسط پین های دیجیتالی 8،9،10 و 11 آردوینو کنترل میشوند. از آنجا که سرعت موتور ها نیز باید کنترل شود باید سیگنال های PWM را به ترمینال + موتور متصل کنیم. پین های 9 و 10 آردوینو قادر به تولید موج PWM هستند. مقادیر X و Y جوی استیک به ترتیب با استفاده از پین های آنالوگ A2 و A3 خوانده میشوند.

نحوه محاسبه سرعت توسط سنسور H206

پس از نصب سنسور مطمئن بشید که صفحه Grid و موتور با سرعت یکسان بچرخند. اگر شما فقط بخواهید که سرعت و مسافت را اندازه گیری کنید میتوانید از یک سنسور استفاده کنید.

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

در آردوینو می توانیم به راحتی با استفاده از عملکرد millis () سرعت را محاسبه کنیم.  هنگامی که وقفه اول اتفاق می افتد می توانیم مقدار millis () را در یک متغیر ساختگی ذخیره کنیم (مانند کد زیر) و سپس هنگامی که وقفه دوم رخ می دهد می توانیم با کم کردن مقدار pevtime مقدار millis () را محاسبه کنیم.

Time taken = current time – previous time
timetaken = millis()-pevtime; // زمان صرف شده

پس از محاسبه زمان صرف شده ، می توانیم به راحتی rpm را با استفاده از فرمول های زیر محاسبه کنیم ، 1000 تقسیم بر زمان صرف شده به ما RPS می دهد و برای تبدیل RPS به RPM در 60 ضرب می شود (چرخش در دقیقه).

rpm=(1000/timetaken)*60;

پس از محاسبه دور در دقیقه می توان سرعت (v) وسیله نقلیه را با استفاده از فرمول های زیر محاسبه کرد به شرط آنکه شعاع چرخ را بدانیم.

v = 2π × RPS × شعاع چرخ
>>>> v = شعاع چرخ * rpm * 0.104

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

صفحه مشبک دارای 20 عدد شکاف است و از این رو برای اندازه گیری زمان بین دو شکاف ، میکروکنترلر بار اضافی زیادی را متحمل میشود. از آنجا که برای هر اندازه گیری سرعت دو وقفه ایجاد می شود (یکی در شروع و دیگری در انتهای شکاف) ما در مجموع 40 وقفه برای چرخ ایجاد خواهیم کرد تا یک چرخش کامل را انجام دهد. بنابراین ما منتظر 40 وقفه قبل از محاسبه سرعت چرخ هستیم. کد این قسمت در زیر نشان داده شده است :

if(rotation>=40)
{
  timetaken = millis()-pevtime; // زمان صرف شده ms
  rpm=(1000/timetaken)*60;    //فرمول محاسبه rpm
  pevtime = millis();
  rotation=0;
}

نقطه ضعف این روش این است که ، مقدار سرعت به صفر نمی رسد زیرا میکروکنترلر همیشه در انتظار برای انجام یک چرخش برای محاسبه مقدار rpm است. این اشکال را می توان با اضافه کردن یک کد ساده که فاصله زمانی بین دو وقفه را مانیتور می کند برطرف کرد و اگر از حد طبیعی بیشتر باشد ، می توانیم مقدار rpm و سرعت را صفر کنیم. در کد زیر ما از متغیر dtime استفاده کرده ایم تا اختلاف زمان را بررسی کنیم و اگر از 500 میلی ثانیه بیشتر باشد مقدار سرعت و rpm صفر می شود.

if(millis()-dtime>500)
{
 rpm= v = 0; // سرعت و دور بر دقیقه را برابر صفر قرار میدهیم
 dtime=millis();
}

آموزش نحوه محاسبه مسافت توسط سنسور LM393

ما قبلاً می دانیم که آردوینو در هنگام چرخش کامل چرخش ، 40 وقفه را حس خواهد کرد. بنابراین برای هر چرخش توسط چرخ ، بدیهی است که مسافت طی شده توسط چرخ برابر با محیط چرخ است. از آنجا که شعاع چرخ را از قبل می دانیم می توانیم با استفاده از فرمول زیر مسافت را بدست بیاوریم. (Distance = فاصله و مسافت)

Distance = 2πr * تعداد چرخ
distance = (2*3.141*شعاع چرخ) * (left_intr/40)

نحوه محاسبه زاویه توسط سنسور LM393

همانطور که قبل تر هم گفتم اگر نمیخواهید زاویه را بدست آورید استفاده از تنها یک سنسور H206 هم کفایت میکند.

حتما ببینید :  آموزش ساخت مدار منبع جریان کنترل شونده با ولتاژ آپ امپ (پروژه Op-amp)

روش های زیادی برای تعیین زاویه ربات وجود دارد. معمولاً برای تعیین این مقادیر از شتاب سنج و ژیروسکوپ استفاده می شود. اما استفاده از سنسور H206 در هر دو چرخ یک روش ارزان تر است. از این طریق می دانیم که هر چرخ چند چرخش انجام داده است. شکل زیر نحوه محاسبه زاویه را نشان می دهد.

نحوه محاسبه زاویه توسط سنسور LM393
هنگامی که ربات روشن شود در حالتی که قرار دارد زاویه 0 درجه در نظر گرفته می شود. از آنجا به سمت چپ می چرخد ​​زاویه در منفی افزایش می یابد و اگر به راست بچرخد زاویه در مثبت افزایش می یابد. برای درک ، محدوده -90 تا +90 را مطابق شکل ترسیم دهید. در چنین چیدمان از آنجا که هر دو چرخ از قطر یکسان برخوردار هستند ، اگر هر یک از چرخ ها چرخش کاملی را انجام دهند ربات با زاویه 90 درجه می چرخد.

به عنوان مثال اگر چرخ چپ یک چرخش کامل را انجام دهد (80 وقفه) انجام میشود و ربات 90 درجه به سمت چپ می چرخد ​​و به همین ترتیب اگر چرخ راست یک چرخش کامل (80 وقفه) ایجاد کند ، ربات -90 درجه به سمت راست می چرخد. اکنون می دانیم که اگر آردوینو 80 وقفه را در یک چرخ تشخیص دهد ، بات 90 درجه چرخیده است و بر اساس اینکه کدام چرخ چرخیده است می توانیم بگوییم که آیا ربات به سمت مثبت (راست) یا منفی (سمت چپ) چرخیده است. بنابراین می توان زاویه چپ و راست را با استفاده از فرمول های زیر محاسبه کرد.

int angle_left = (left_intr % 360) * (90/80) ;
int angle_right = (right_intr % 360) * (90/80) ;

هنگامی که هر دو زاویه چپ و راست را محاسبه کردیم می توان با کم کردن زاویه سمت چپ از زاویه سمت راست ، زاویه ای را که ربات با آن روبرو است ، به دست آورد. (angle = زاویه)

angle = angle_right - angle_left;

توضیحات کد پروژه در نرم افزار آردوینو

در این قسمت از کد ما پین هایی را که در قسمت توضیحات مدار گفتیم را تعریف میکنیم :

#define LM_pos 9       // موتور چپ
#define LM_neg 8       // موتور چپ
#define RM_pos 10       // موتور راست
#define RM_neg 11       // موتور راست
#define joyX A2
#define joyY A3

در این قسمت از کد شما باید شعاع چرخ مورد استفاده خود را بر حسب سانتی متر وارد کنید :

float radius_of_wheel = 0.033;  //برای اندازه گیری های بعدی

فیلم عملکرد مدار : کلیک کنید !

موارد موجود در فایل : شماتیک ، فایل Hex ، فایل آردوینو ، و …
برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

close
امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید مشاهده لیست پروژه های آردوینو
برچسب ها

محمد رحیمی

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

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

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

دکمه بازگشت به بالا
بستن
بستن