آردوینو میکروکنترلر AVR پروژه های آردوینو

پروژه رله تایمر با تایمرهای داخلی AVR و دریافت فرمان از سریال مانیتور

create-timer-relay-with-arduino-avr-inside-timer-function-digispark
نوشته شده توسط معین صابری

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

 


ساز و کار رله تایمر


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

نمونه ای از پروژه رله تایمر آردوینو - دیجی اسپارک

 

در این آموزش قصد داریم تا از تایمر داخلی میکروکنترلر ATMEGA328P استفاده کنیم. همانطور که اطلاع دارید، میکروکنترلر ATMEGA328P هسته پردازشی برد آردوینو UNO محسوب می گردد.  این میکروکنترلر دارای سه تایمر داخلی  بوده که می توانند به صورت موازی با برنامه اصلی شمارش نمایند. دو تایمر شماره ۰ و ۲ از نوع ۸ بیتی و تایمر شماره ۱ دارای توانایی شمارش تا ۱۶ بیت است. شایان ذکر است که تابع millis نیز از تایمر شماره ۰ برای شمارش استفاده می نماید. در این آموزش هم ما از تایمر شماره ۰ جهت شمارش استفاده می کنیم.

رله تایمر داخلی AVR - دیجی اسپارک

 

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

عملکرد تایمر داخلی آردوینو در پروژه رله تایمر - دیجی اسپارک

 

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

 


قطعات پروژه رله تایمر


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

برد آردوینو uno در ساخت رله تایمر Timer - دیجی اسپارک

 

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

ماژول رله تک کانال در ساخت رله تایمر - دیجی اسپارک

 

ماژول رله جهت راه اندازی تنها دارای سه پایه در ورودی است. از این سه پایه دو پایه مخصوص تغذیه و یک پایه مخصوص سیگنال دریافتی از آردوینو است.  در خروجی رله هم سه کانکتور برای NC، NO و COM جهت کنترل تغذیه وسیله برقی وجود دارد. جهت مطالعه بیشتر در رابطه با راه اندازی رله، می توانید روی این لینک کلیک کنید.  پس از آشنایی با نقش قطعات، نوبت به ارایه شمایتک و اتصالات می رسد. قسمت بعد مربوط به این موضوع است.

 


شماتیک و اتصالات پروژه رله تایمر


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

شماتیک پروژه رله تایمر آردوینو - دیجی اسپارک

 

در ادامه نیز اتصالات بین رله و آردوینو به شکل زیر صورت می گیرد.

  • اتصال پایه VCC رله به پایه ۵ ولت آردوینو
  • اتصال پایه GND رله به پایه GND آردوینو
  • اتصال پایه IN رله به پایه ۱۳ آردوینو

 


کدهای پروژه رله تایمر


پس از برقراری اتصالات، نوبت به کدهای پروژه رله تایمر می رسد. این کدها برای برد آردوینو UNO توسعه یافته است. آن ها را کپی و بر روی برد خود آپلود نمایید.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


اجرای پروژه رله تایمر آردوینو


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

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

فرمان به رله تایمر از طریق سریال مانیتور آردوینو - دیجی اسپارک

 

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

نمونه ی پروژه رله تایمر آردوینو - دیجی اسپارک

 


تحلیل کدهای پروژه رله تایمر


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

شرح تابع
تنظیمات رجیستری تایمر set_timer
روتین وقفه تایمر ISR(TIMER0_COMPA_vect)
روتین دریافت کاراکتر از سریال serialEvent()

 


لوازم مورد نیاز


برد آردوینو UNO

ماژول رله ۵ ولت

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه