کنترل استپر موتور توسط آردوینو و ماژول گيرنده مادون قرمز

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

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

مواد اولیه :
# عنوان تعداد لینک
0 بورد آردوینو 1 لینک خرید
1 ریموت کنترل مادون قرمز و ماژول گیرنده 1 لینک خرید
2 استپر موتور 1 لینک خرید
3 درایور استپر موتور 1 لینک خرید
4 برد بورد 1 لینک خرید
5 منبع تغذیه 1 لینک خرید
6 سیم و کابل و متعلقات 1 لینک خرید

مرحله 1 : اتصالات و دیاگرام مداری

همانطور که در دیاگرام نشان داده شده است، چهار پین برای اتصال استپر (پین های 8-11) و یک پین (پین 6) برای اتصال سنسور مادون قرمز اختصاص داده شده است. تغذیه‌ی ماژول از آردوینو و تغذیه‌ی درایور استپر موتور از منبع تغذیه جداگانه باید تامین شود.

مرحله 2 : کدنویسی و تنظیمات نرم‌افزاری

در این برنامه از دو کتابخانه‌ی "IRremote" و "Stepper" استفاده شده است. کتابخانه "Stepper" به صورت  پیش‌فرض در کامپایلر آردوینو IDE قرار دارد. کتابخانه "IRremote" نیز باید به کتابخانه‌های آردوینو اضافه شود. برنامه زیر فقط 2 حالت از DOWN و UP ریموت IR را تشخیص می‌دهد. با فشار دادن دکمه‌ی UP ریموت، موتور به صورت ساعتگرد و با  فشار دادن DOWN به صورت پادساعتگرد می‌چرخد.

/*
Partineh
Arduino Tutorial Series
Author: Shokoufeh Davarzani
Website: www.Partineh.com
*/

#include "Stepper.h"
#include "IRremote.h"

/*----- Variables, Pins -----*/
#define STEPS  32   // Number of steps per revolution of Internal shaft
int  Steps2Take;  // 2048 = 1 Revolution
int receiver = 6; // Signal Pin of IR receiver to Arduino Digital Pin 6

/*-----( Declare objects )-----*/
// Setup of proper sequencing for Motor Driver Pins
// In1, In2, In3, In4 in the sequence 1-3-2-4

Stepper small_stepper(STEPS, 8, 10, 9, 11);
IRrecv irrecv(receiver);    // create instance of 'irrecv'
decode_results results;     // create instance of 'decode_results'

void setup()
{ 
  irrecv.enableIRIn(); // Start the receiver
}

void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?

  {
    switch(results.value)

    {

      case 0xFF629D: // UP button pressed
                      small_stepper.setSpeed(500); //Max seems to be 700
                      Steps2Take  =  2048;  // Rotate CW
                      small_stepper.step(Steps2Take);
                      delay(2000); 
                      break;

      case 0xFFA857: // DOWN button pressed
                      small_stepper.setSpeed(500);
                      Steps2Take  =  -2048;  // Rotate CCW
                      small_stepper.step(Steps2Take);
                      delay(2000); 
                      break;
                      
    }
    
      irrecv.resume(); // receive the next value
  }  


}/* --end main loop -- */

فایل های ضمیمه