آردوینو پروژه های آردوینو

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

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

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

 


برد آردوینو UNO


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

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

 

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

 


ماژول رله


رله یک سوییچ مکانیکی با قابلیت کنترل از طریق پالس الکترونیکی است. این سوییچ که در سال ۱۸۳۵ توسط جوزف هانری اختراع گردید، امروزه یکی از قطعات بسیار پرکاربرد در صنایع الکترونیک، اتوماسیون صنعتی، خودرو و…. به شمار می رود. در پروژه رله تایمر نیز پس از انجام تنظیمات، رله برای مدت تعیین شده از سوی شما فعال باقی مانده و سپس غیر فعال می شود.

ماژول رله تک کانال در طراحی برد هود آشپزخانه - دیجی اسپارک

 

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

 


ماژول نمایشگر سگمنت TM1637


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

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

 

ماژول نمایشگر سون سگمنت TM1637 دارای ۴ نمایشگر(۴دیجیت) جهت نمایش داده هاست.این نمایشگر از پروتکل I2C جهت ارتباط با میکروکنترلرها استفاده می کند. راه اندازی و کار با این نمایشگر با بردهای آردوینو بسیار ساده است. از آنجاییکه برای این ماژول کتابخانه آردوینو توسعه یافته است، لذا شما می توانید به سادگی از این نمایشگر استفاده نمایید. در این پروژه زمان تعیین شده توسط کاربر بر روی نمایشگر نمایش داده می شود. به عبارت دیگر کاربر می توان زمان تنظیم شده را به سادگی بر روی نمایشگر مشاهده کرده و سپس تایید نماید.

 


شماتیک و اتصالات


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

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

 

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

 


اتصالات بین نمایشگر و آردوینو


  • اتصال پایه VCC نمایشگر به ۵V آردوینو
  • اتصال پایه GND نمایشگر به GND آردوینو
  • اتصال پایه CLK به پایه ۷ آردوینو
  • اتصال پایه DIO به پایه ۸ آردوینو

 


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


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

 


اتصالات آردوینو و کلیدها


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


فایل PCB پروژه


 

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

در نهایت فایل PCB پروژه را با کلیک بر روی این لینک می توانید دانلود کنید. توجه داشته باشید که فوت پرینت آردوینو UNO را از این لینک می توانید دریافت نمایید.


کدهای پروژه


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

#include "SevenSegmentTM1637.h"
const byte PIN_CLK = 7;   // انتخاب پایه شماره ۷ آردوینو برای اتصال به پایه CLK ماژول نمایشگر
const byte PIN_DIO = 8; // انتخاب پایه شماره ۸ آردوینو جهت اتصال به پایه DIO ماژول نمایشگر
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);   //ایجاد یک شی و راه اندازی اولیه ماژول نمایشگر
#define output 5   //تنظیم پایه ۵ به عنوان خروجی جهت اتصال به رله
#define inc    2   //تنظیم پایه ۲ به عنوان ورودی جهت افزایش زمان
#define dec    3   //تنظیم پایه ۳ به عنوان ورودی جهت کاهش زمان
#define set_   4  //تنظیم پایه ۴ به عنوان  تایید و ذخیره تنظیمات
int tm = 0;  //متغیر جهت تنظیم و ذخیره زمان
void setup() {
  Serial.begin(9600);
  display.begin();
  display.setBacklight(100);  // تنظیم شدت نور نمایشگر بر روی ۱۰۰ درصد
  pinMode(output, OUTPUT);   //تعریف پایه به عنوان خروجی
  pinMode(inc, INPUT_PULLUP);  //تعریف پایه کلید افزایش به عنوان ورودی و با مقاومت داخلی پول آپ
  pinMode(dec, INPUT_PULLUP);  //تنظیم پایه کاهش به عنوان ورودی و با مقاومت داخلی پول آپ
  pinMode(set_, INPUT_PULLUP);  // تعریف پایه SET به عنوان ورودی با پول آپ داخلی
  display.print(tm);
  digitalWrite(output, LOW);  //پایه خروجی متصل به رله به صورت پیشفرض صفر است.
}

void loop() {
  while (digitalRead(set_) != LOW) {   //تا زمانیکه کلید SET فشرده نشود منتطر تنطیمات باقی می مانیم
    if (digitalRead(inc) == LOW) {  //در صورتیکه کلید افزایش زمان فشار داده شود، زمان یک واحد افزایش می یابد
      delay(200);
      tm++;
      display.print(tm);
    }
    if (digitalRead(dec) == LOW) {   //کلید کاهش زمان به اندازه یک واحد با هر فشرده شدن این کلید، زمان یک واحد کاهش می یابد
      delay(200);
      tm--;
      display.print(tm);
    }
  }
  digitalWrite(output,HIGH);   //فعال سازی رله
  for(int i=0; i< tm; i++)  //رله برای مدت زمان تعیین شده فعلا باقی مانده و سپس غیر فعال می شود. برای این مورد به اندازه زمان تعیین شده که در متغیر tm ذخیره شده، تایخر یک ثانیه ای ایجاد می کنیم
  //به عنوان مثال برای تاخیر ۱۰ ثانیه ای، ده تاخیر یک ثانیه ای تاخیر ده ثانیه ای ایجاد می کند. البته تایخر به کمک تابع delay چندان دقیق نیست، برای افزایش دقت از millis باید استفاده کنید.
  delay(1000);
  digitalWrite(output,LOW);
  tm=0;

  



}

 


اجرای پروژه


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

  • افزایش: به کمک این کلید می توانید زمان را افزایش دهید. با هر بار فشردن این کلید، زمان یک ثانیه افزایش می یابد.
  • کاهش: به کمک این کلید می توانید زمان را کاهش دهید. با هر بار فشردن این کلید، زمان یک ثانیه کاهش می یابد.
  • تنظیم: زمانیکه این کلید را فشار دهید، تنظیمات اعمال شده و رله برای مدت زمانی که تنظیم کرده اید، فعال باقی خواهد ماند.

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

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

 


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


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

 


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


برد آردوینو UNO

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

ماژول سون سگمنت TM1637

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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

۱۷ دیدگاه

  • سلام مهندس پروژه زیر را گفته بودید در این ماه منتشر میکنید میشه زمان دقیق بگید ؟
    منظورم پروژه ای است که
    مثلاً من با شماره ۲۰۲۰ تماس میگیرم و منو صوتی میخونه و با کلیک بر روی هر شماره به کارشناس مربوطه متصل میشویم

    • حقیقتا این ماه احتمالا منتشر نشود، روی آن کار کردم، کمی پیچیدگی دارد، انشالا روی آن کار می کنم و منتشر می کنم

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

    • سلام و متشکرم
      به کمک کلیدهای متصل به برد باید زمان را افزایش/کاهش داده و سپس تنظیم کنید. نحوه اتصال این کلید ها در بخش اتصالات پروژه شرح داده شده

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

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

  • سلام خسته نباشید.مهندس جان زمان به جای یک ثانیه بخوام ۳۰ دقیقه باشه یعنی هر بار فشار کلید ۳۰ دقیقه بره جلو دستورش چطوری میشه ؟

    • سلام و متشکرم
      در قسمت کدهای پروژه، جاییکه زمان یک ثانیه افزایش می یابد، شما باید به اندازه ۱۸۰۰ ثانیه افزایش اعمال کنید. البته در کد افزایش بر مبنای میلی ثانیه است.

      • برای تاخیر نیم ساعته به نیم ساعت چنتا نیم ساعت پشت سر هم از تابع delay باید استفاده شود یا millis

        • با تابع delay برنامه متوقف می شود. اما millis به صورت موازی با برنامه اصلی عمل میکند. پیشنهاد میکنم روی این لینک کلیک کرده و آموزش آن را مطالعه کنید.

  • سلام مهندس جان من میخام بعد از اینکه تایمر به پایان رسید رله که قطع میشه بازر به صدا در بیاد
    باید کجارو تغییر بدم