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

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

معرفی

بنابراین. ربات چیست؟ در بیشتر موارد این دستگاه اتوماتیک، که به هر گونه اقدام محیطی واکنش نشان می دهد. ربات ها می توانند توسط انسان ها کنترل شوند یا اقدامات از پیش برنامه ریزی شده انجام دهند. به طور معمول، ربات به انواع حسگرها (فاصله، زاویه چرخش، شتاب)، دوربین های فیلمبرداری و دستکاری مجهز است. بخش الکترونیکی ربات از یک میکروکنترلر (MC) تشکیل شده است - یک ریز مدار که شامل یک پردازنده، یک ژنراتور ساعت، تجهیزات جانبی مختلف، عملیاتی و حافظه دائمی. تعداد زیادی میکروکنترلر مختلف در دنیا برای کاربردهای مختلف وجود دارد و بر اساس آنها می توانید ربات های قدرتمندی را مونتاژ کنید. آنها به طور گسترده ای برای ساختمان های آماتور استفاده می شوند. میکروکنترلرهای AVR. آنها به مراتب در دسترس ترین هستند و در اینترنت می توانید نمونه های زیادی بر اساس این MK ها پیدا کنید. برای کار با میکروکنترلرها باید بتوانید در اسمبلر یا C برنامه نویسی کنید و دانش اولیه الکترونیک دیجیتال و آنالوگ را داشته باشید. در پروژه ما از C استفاده خواهیم کرد. برنامه نویسی برای MK تفاوت چندانی با برنامه نویسی در رایانه ندارد، نحو زبان یکسان است، اکثر توابع عملاً تفاوتی ندارند و یادگیری موارد جدید بسیار آسان است و استفاده از آنها راحت است.

چه چیزی نیاز داریم

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

ساخت تابلو با MK



نمودار ربات

در مورد ما، میکروکنترلر وظایف مغز را انجام می دهد، اما ما با آن شروع نمی کنیم، بلکه با قدرت دادن به مغز ربات شروع می کنیم. تغذیه مناسب کلید سلامتی است، بنابراین ما با نحوه تغذیه صحیح ربات خود شروع می کنیم، زیرا در اینجاست که ربات سازان تازه کار معمولا اشتباه می کنند. و برای اینکه ربات ما به طور معمول کار کند، باید از تثبیت کننده ولتاژ استفاده کنیم. من تراشه L7805 را ترجیح می دهم - برای خروجی طراحی شده است ولتاژ پایدار 5 ولت، چیزی که میکروکنترلر ما به آن نیاز دارد. اما با توجه به اینکه افت ولتاژ روی این میکرو مدار حدود 2.5 ولت است، باید حداقل 7.5 ولت به آن داده شود. همراه با این تثبیت کننده، از خازن های الکترولیتی برای صاف کردن موج های ولتاژ استفاده می شود و یک دیود برای محافظت در برابر معکوس شدن قطبیت الزاماً در مدار قرار می گیرد.
اکنون می توانیم به سراغ میکروکنترلر خود برویم. کیس MK DIP است (لحیم کاری راحت تر است) و دارای چهل پین است. روی هواپیما یک ADC، PWM، USART و موارد دیگر وجود دارد که فعلا از آنها استفاده نخواهیم کرد. بیایید به چند گره مهم نگاه کنیم. پایه RESET (پایه نهم MK) توسط مقاومت R1 به سمت "بعلاوه" منبع برق کشیده می شود - این باید انجام شود! در غیر این صورت، MK شما ممکن است ناخواسته بازنشانی شود یا به بیان ساده تر، دچار مشکل شود. یکی دیگر از اقدامات مطلوب، اما نه اجباری، اتصال RESET از طریق خازن سرامیکی C1 به زمین است. در نمودار شما همچنین می توانید یک الکترولیت 1000 uF را مشاهده کنید؛ این الکترولیت شما را از افت ولتاژ در هنگام کار کردن موتورها نجات می دهد، که همچنین تأثیر مفیدی بر عملکرد میکروکنترلر خواهد داشت. تشدید کننده کوارتز X1 و خازن های C2، C3 باید تا حد امکان نزدیک به پایه های XTAL1 و XTAL2 قرار گیرند.
من در مورد نحوه فلش کردن MK صحبت نمی کنم، زیرا می توانید در مورد آن در اینترنت بخوانید. ما برنامه را به زبان C خواهیم نوشت؛ من CodeVisionAVR را به عنوان محیط برنامه نویسی انتخاب کردم. این یک محیط نسبتا کاربرپسند است و برای مبتدیان مفید است زیرا دارای یک جادوگر ایجاد کد داخلی است.


برد ربات من

کنترل موتور

یک جزء به همان اندازه مهم در ربات ما، محرک موتور است که کنترل آن را برای ما آسان‌تر می‌کند. هرگز و تحت هیچ شرایطی نباید موتورها مستقیماً به MK متصل شوند! به طور کلی، بارهای قدرتمند را نمی توان مستقیماً از میکروکنترلر کنترل کرد، در غیر این صورت می سوزد. از ترانزیستورهای کلیدی استفاده کنید. برای مورد ما، یک تراشه ویژه - L293D وجود دارد. در چنین پروژه های ساده، همیشه سعی کنید از این تراشه خاص با شاخص "D" استفاده کنید، زیرا دارای دیودهای داخلی برای محافظت در برابر اضافه بار است. کنترل این میکرو مدار بسیار آسان است و به راحتی در فروشگاه های رادیویی به دست می آید. در دو بسته DIP و SOIC موجود است. به دلیل سهولت در نصب روی برد از DIP در بسته بندی استفاده خواهیم کرد. L293D دارای منبع تغذیه جداگانه برای موتورها و منطق است. بنابراین، ما خود ریز مدار را از تثبیت کننده (ورودی VSS) و موتورها را مستقیماً از باتری ها (ورودی VS) تغذیه می کنیم. L293D می تواند بار 600 میلی آمپر را در هر کانال تحمل کند و دو تا از این کانال ها را دارد یعنی دو موتور را می توان به یک تراشه وصل کرد. اما برای حفظ امنیت، کانال ها را با هم ترکیب می کنیم و سپس برای هر موتور به یک میکرا نیاز داریم. به این ترتیب L293D قادر به مقاومت در برابر 1.2 A خواهد بود. برای دستیابی به این، باید پایه های Micra را همانطور که در نمودار نشان داده شده است ترکیب کنید. ریز مدار به شرح زیر عمل می کند: وقتی یک "0" منطقی به IN1 و IN2 اعمال می شود و یک منطقی به IN3 و IN4 اعمال می شود، موتور در یک جهت می چرخد ​​و اگر سیگنال ها معکوس شوند و یک صفر منطقی اعمال شود، سپس موتور شروع به چرخش در جهت دیگر می کند. پین های EN1 و EN2 وظیفه روشن کردن هر کانال را بر عهده دارند. ما آنها را وصل می کنیم و آنها را به "به علاوه" منبع تغذیه از تثبیت کننده متصل می کنیم. از آنجایی که ریز مدار در حین کار گرم می شود و نصب رادیاتور روی این نوع کیس مشکل ساز است، حذف گرما توسط پایه های GND تضمین می شود - بهتر است آنها را روی یک پد تماس گسترده لحیم کنید. این تنها چیزی است که برای اولین بار باید در مورد درایورهای موتور بدانید.

سنسورهای مانع

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


اولین نسخه از سنسورهای ربات من

سیستم عامل ربات

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

#عبارتند از
#عبارتند از

خطوط زیر مشروط هستند زیرا مقادیر PORTC به نحوه اتصال درایور موتور به میکروکنترلر بستگی دارد:

PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;

مقدار 0xFF به این معنی است که خروجی ثبت خواهد شد. "1" و 0x00 ورود به سیستم است. "0".

با ساختار زیر بررسی می کنیم که آیا مانعی در مقابل ربات وجود دارد و در کدام سمت قرار دارد:

اگر (!(PINB & (1< {
...
}

اگر نور یک دیود IR به فوتوترانزیستور برخورد کند، یک سیاهه روی پایه میکروکنترلر نصب می شود. "0" و ربات شروع به حرکت به سمت عقب می کند تا از مانع دور شود، سپس به دور خود می چرخد ​​تا دوباره با مانع برخورد نکند و سپس دوباره به جلو حرکت می کند. از آنجایی که ما دو سنسور داریم، وجود یک مانع را دو بار بررسی می کنیم - در سمت راست و در سمت چپ، و بنابراین می توانیم بفهمیم که مانع در کدام طرف است. دستور "delay_ms(1000)" نشان می دهد که یک ثانیه قبل از شروع اجرای دستور بعدی می گذرد.

نتیجه

من بیشتر جنبه هایی را که به شما در ساختن اولین ربات کمک می کند پوشش داده ام. اما روباتیک به همین جا ختم نمی شود. اگر این ربات را مونتاژ کنید، فرصت های زیادی برای گسترش آن خواهید داشت. می‌توانید الگوریتم ربات را بهبود ببخشید، مثلاً اگر مانع در سمتی نیست، درست جلوی روبات باشد، چه کاری انجام دهید. همچنین نصب یک رمزگذار - یک دستگاه ساده که به شما کمک می کند تا موقعیت ربات خود را در فضا به طور دقیق تعیین کنید و بدانید، ضرری ندارد. برای وضوح، امکان نصب یک نمایشگر رنگی یا تک رنگ وجود دارد که می تواند اطلاعات مفیدی را نشان دهد - سطح شارژ باتری، فاصله تا موانع، اطلاعات مختلف اشکال زدایی. بهبود سنسورها ضرری ندارد - نصب TSOP (این گیرنده های IR هستند که سیگنال را فقط با یک فرکانس خاص درک می کنند) به جای فوتوترانزیستورهای معمولی. علاوه بر سنسورهای مادون قرمز، سنسورهای اولتراسونیک نیز وجود دارند که قیمت بیشتری دارند و همچنین دارای معایبی هستند، اما اخیراً در بین سازندگان ربات محبوبیت پیدا کرده اند. برای اینکه ربات بتواند به صدا پاسخ دهد، نصب میکروفون با تقویت کننده ایده خوبی است. اما چیزی که به نظر من واقعا جالب است نصب دوربین و برنامه نویسی ماشین بینایی بر اساس آن است. مجموعه ای از کتابخانه های OpenCV ویژه وجود دارد که با آنها می توانید تشخیص چهره، حرکت مطابق با چراغ های رنگی و بسیاری چیزهای جالب دیگر را برنامه ریزی کنید. همه چیز فقط به تخیل و مهارت شما بستگی دارد.
لیست اجزاء:
  • ATmega16 در بسته DIP-40>
  • L7805 در بسته بندی TO-220
  • L293D در محفظه DIP-16 x2 عدد.
  • مقاومت با قدرت 0.25 وات با درجه بندی: 10 کیلو اهم در 1 عدد، 220 اهم در 4 عدد.
  • خازن های سرامیکی: 0.1 µF، 1 µF، 22 pF
  • خازن های الکترولیتی: 1000 µF x 16 V، 220 µF x 16 V x 2 عدد.
  • دیود 1N4001 یا 1N4004
  • تشدید کننده کوارتز 16 مگاهرتز
  • دیودهای IR: هر دو تا از آنها انجام می دهند.
  • فوتوترانزیستورها، همچنین هر کدام، اما تنها به طول موج پرتوهای مادون قرمز پاسخ می دهند
کد سیستم عامل:
/*****************************************************
سیستم عامل برای ربات

نوع MK: ATmega16
فرکانس ساعت: 16.000000 مگاهرتز
اگر فرکانس کوارتز شما متفاوت است، باید این را در تنظیمات محیط مشخص کنید:
Project -> Configure -> "C Compiler" Tab
*****************************************************/

#عبارتند از
#عبارتند از

اصلی خالی (باطل)
{
//پورت های ورودی را پیکربندی کنید
//از طریق این پورت ها سیگنال های سنسورها را دریافت می کنیم
DDRB=0x00;
//مقاومت های pull-up را روشن کنید
PORTB=0xFF;

//پورت های خروجی را پیکربندی کنید
//از طریق این پورت ها موتورها را کنترل می کنیم
DDRC=0xFF;

//حلقه اصلی برنامه. در اینجا مقادیر را از سنسورها می خوانیم
//و موتورها را کنترل کنید
در حالی که (1)
{
//بریم جلو
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
اگر (!(PINB & (1< {
//1 ثانیه به عقب بروید
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (1000);
//جمعش کن
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (1000);
}
اگر (!(PINB & (1< {
//1 ثانیه به عقب بروید
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (1000);
//جمعش کن
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 0;
delay_ms (1000);
}
};
}

درباره ربات من

در حال حاضر ربات من تقریباً کامل است.


مجهز به دوربین بی سیم، سنسور فاصله (هم دوربین و هم این سنسور بر روی یک برج دوار نصب شده اند)، یک سنسور مانع، یک رمزگذار، یک گیرنده سیگنال از کنترل از راه دور و یک رابط RS-232 برای اتصال به یک کامپیوتر. این دوربین در دو حالت کار می کند: خودکار و دستی (سیگنال های کنترلی را از کنترل از راه دور دریافت می کند)، همچنین دوربین را می توان از راه دور یا توسط خود ربات برای صرفه جویی در مصرف باتری روشن/خاموش کرد. من در حال نوشتن سیستم عامل برای امنیت آپارتمان هستم (انتقال تصاویر به رایانه، تشخیص حرکات، قدم زدن در اطراف محل).

با توجه به خواسته شما، من یک ویدیو ارسال می کنم:

UPD.عکس ها را دوباره آپلود کردم و اصلاحات جزئی روی متن انجام دادم.

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

10 منبع برای رباتیک مشتاق

اطلاعات موجود در سایت به شما امکان می دهد به طور مستقل یک ربات با رفتار پیچیده ایجاد کنید. در اینجا می توانید نمونه های برنامه، نمودارها، مواد مرجع، نمونه های آماده، مقالات و عکس ها را بیابید.

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

این وب سایت دارای یک دوره ویژه "گام به گام" است که فرآیند ایجاد ساده ترین ربات های BEAM و همچنین سیستم های خودکار مبتنی بر میکروکنترلرهای AVR را با جزئیات شرح می دهد.

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

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

سایتی در مورد نحوه ساخت ربات BEAM با دستان خود. یک بخش کامل به مبانی و همچنین نمودارهای منطقی، مثال ها و غیره اختصاص داده شده است.

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

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

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

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

انتخاب یک میکروکنترلر برای ایجاد ربات ابتدا باید مفهوم میکروکنترلر چیست و چه کاری انجام می دهد را درک کنید؟

میکروکنترلریک دستگاه محاسباتی است که قادر به اجرای برنامه ها (یعنی دنباله ای از دستورالعمل ها) است.

اغلب از آن به عنوان "مغز" یا "مرکز کنترل" ربات یاد می شود. به طور معمول، میکروکنترلر مسئول تمام محاسبات، تصمیم گیری و ارتباطات است.

به منظور برقراری ارتباط با دنیای خارج، میکروکنترلر دارای یک سری پین یا پین برای حس الکتریکی سیگنال است. بنابراین سیگنال را می توان با استفاده از یک دستورالعمل برنامه نویسی به حداکثر (1/C) یا حداقل (0/off) تبدیل کرد. از این پین ها می توان برای خواندن سیگنال های الکتریکی نیز استفاده کرد. آنها از سنسورها یا دستگاه های دیگر می آیند و تعیین می کنند که سیگنال ها بالا یا پایین هستند.

اکثر میکروکنترلرهای مدرن می توانند ولتاژ سیگنال های آنالوگ را نیز اندازه گیری کنند. اینها سیگنال هایی هستند که می توانند به جای دو سطح کاملاً مشخص، طیف کاملی از مقادیر را داشته باشند. این با استفاده از مبدل دیجیتال آنالوگ (ADC) اتفاق می افتد. در نتیجه میکروکنترلر می تواند یک مقدار عددی را به صورت ولتاژ آنالوگ به سیگنال اختصاص دهد که این ولتاژ نه زیاد است و نه کم و معمولاً در محدوده 0 تا 10 ولت است.

میکروکنترلر چه کاری می تواند انجام دهد؟

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

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


به همین ترتیب می توان از میکروکنترلرها برای کنترل سایر وسایل الکتریکی استفاده کرد. عمدتاً مانند درایوها (هنگامی که به یک کنترل کننده موتور متصل می شوند)، دستگاه های ذخیره سازی (مانند کارت های SD)، رابط های WiFi یا بلوتوث و غیره. در نتیجه این تطبیق پذیری باور نکردنی، میکروکنترلرها را می توان در زندگی روزمره یافت.

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

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

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

وظایف تخصصی تر میکروکنترلر چیست؟

سخت‌افزار ویژه‌ای که در میکروکنترلرها تعبیه شده است به این دستگاه‌ها اجازه می‌دهد تا بیش از I/O دیجیتال ساده، محاسبات اولیه و تصمیم‌گیری انجام دهند. بسیاری از میکروکنترلرها به راحتی از محبوب ترین پروتکل های ارتباطی مانند UART (RS232 یا موارد دیگر)، SPI و I2C پشتیبانی می کنند. این ویژگی هنگام برقراری ارتباط با دستگاه های دیگر مانند رایانه، سنسور یا سایر میکروکنترلرها بسیار مفید است.

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


مبدل های آنالوگ به دیجیتال (ADC) برای تبدیل سیگنال های ولتاژ آنالوگ به دیجیتال استفاده می شود. در آنجا مقدار متناسب با بزرگی ولتاژ است و سپس می توان از این عدد در برنامه میکروکنترلر استفاده کرد. برای اینکه انرژی خروجی متوسط ​​از زیاد و کم متفاوت باشد، برخی از میکروکنترلرها توانایی استفاده از مدولاسیون عرض پالس (PWM) را دارند. به عنوان مثال، این روش به شما اجازه می دهد تا به آرامی روشنایی LED را تغییر دهید.

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

آنالوگ یا دیجیتال؟

اینکه کدام سیگنال ورودی و خروجی باید استفاده شود به وظیفه و شرایط بستگی دارد. به عنوان مثال، اگر وظیفه شما صرفاً روشن یا خاموش کردن چیزی است، تنها چیزی که نیاز دارید این است که سیگنال در پایه ورودی میکروکنترلر دیجیتال باشد. حالت باینری سوئیچ 0 یا 1 است. سطح بالای سیگنال می تواند 5 ولت و سطح پایین 0 باشد. اگر برای مثال نیاز به اندازه گیری دما دارید، پس به سیگنال ورودی آنالوگ نیاز دارید. سپس، ADC روی میکروکنترلر، ولتاژ را تفسیر کرده و آن را به مقدار عددی تبدیل می کند.


چگونه میکروکنترلرها را برنامه ریزی کنیم؟

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

امروزه میکروکنترلرها را می توان به انواع زبان های سطح بالا برنامه ریزی کرد. اینها زبان هایی مانند C، C++، C#، Java، Python، Basic و غیره هستند. البته همیشه می توانید برنامه ای را به زبان اسمبلی بنویسید. اگرچه این برای کاربران پیشرفته تر با شرایط خاص (با اشاره ای به مازوخیسم) است. از این نظر، هر کسی باید بتواند زبان برنامه نویسی را پیدا کند که به بهترین وجه مطابق با سلیقه و تجربه برنامه نویسی قبلی باشد.

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


استفاده از بردهای میکروکنترلر توسعه یافته بسیار راحت است. و استفاده از آنها برای مدت طولانی آسان تر است. آنها همچنین رابط های مناسب برای تغذیه و برنامه نویسی USB را ارائه می دهند. بنابراین امکان اتصال به هر کامپیوتر مدرنی وجود دارد.

چرا از یک کامپیوتر استاندارد استفاده نمی کنید؟

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


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

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

چگونه میکروکنترلر مناسب را انتخاب کنیم؟

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

  • آردوینو
  • BasicATOM
  • BasicX
  • Lego EV3
  • و خیلی های دیگر

برای انتخاب میکروکنترلر مناسب، سوالات زیر را از خود بپرسید:

محبوب ترین میکروکنترلر برای برنامه من چیست؟

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

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

آیا ربات شما شرایط خاصی دارد؟

میکروکنترلر باید بتواند تمام اعمال خاص ربات شما را انجام دهد تا عملکردها به درستی اجرا شوند. برخی از ویژگی ها برای همه میکروکنترلرها مشترک است (به عنوان مثال، وجود ورودی و خروجی دیجیتال، توانایی انجام عملیات ساده ریاضی، مقایسه مقادیر و تصمیم گیری).

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

چه اجزایی برای یک میکروکنترلر خاص موجود است؟

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

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

آینده برای ما چه خواهد بود؟

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

علاوه بر این، رایانه‌ها می‌توانند به دستگاه‌های خارجی مانند دستگاه‌های USB، نمایشگرهای LCD و غیره متصل شوند. برخلاف اجدادشان، این رایانه‌های تک بردی تمایل به مصرف انرژی بسیار کمتری دارند.

بخش عملی

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

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

این معیارها را برآورده می کند ماژول EV3از مجموعه Lego Mindstorms EV3.


نمای کلی آجر EV3

26.01.2011, 09:18
منبع:

معمولاً در مقالات سعی می کنم مطالب را به ترتیب پیشرفت آن ارائه کنم، اما فکر می کنم اینطور نیست. بنابراین از مراحل طراحی نمودار مدار، چیدمان PCB و هر چیز دیگری می گذریم. در شکل 1 ما می بینیم که چه نوع "ننگ" به من رسید.

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

حالا همه چیز مرتب است. میکروکنترلر Attiny2313 یک سیگنال مانع (منطقی یک یا صفر) از دو سنسور مادون قرمز دریافت می کند. سپس، با توجه به سیستم عامل، میکروکنترلر تراشه درایور موتور L293D را کنترل می کند (کنترل جریان تا 1 آمپر). شکل 3 عکسی از یک ربات وارونه را نشان می دهد.

اساس طراحی یک ربات خانگی یک نوار فلزی است که به شکل ذوزنقه خم شده است. زاویه خمش حدود 120 درجه است. اساساً مهم است که در هر دو طرف خمش یکسان باشد، در غیر این صورت ربات در یک خط مستقیم حرکت نمی کند. اگرچه، از سوی دیگر، کاری که یک مهندس مکانیک یا الکترونیک ضعیف انجام داده است، گاهی اوقات می تواند توسط یک برنامه نویس اصلاح شود، مثلاً با استفاده از PWM برای دستیابی به حرکت خطی ربات.

همه ما از درس هندسه مدرسه می دانیم که یک صفحه یا توسط سه نقطه یا توسط یک خط مستقیم و یک نقطه در فضا تشکیل می شود. نکته سوم چرخ غلتکی است که آزادانه می چرخد.

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

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

P.S. پاداش اتلاف وقت برای ایجاد یک دستگاه بیهوده، شاید وضوح عملکرد میکروکنترلر و حافظه آن باشد که گرد و غبار را روی قفسه جمع می کند تا زمانی که فرزند کسی به آن علاقه مند شود.




بالا