جستجو برای:
سبد خرید 0
  • خانه
  • فروشگاه
    • دوره های آموزشی
    • پروژه
    • بسته های آموزشی
      • رباتیک
      • آردوینو
  • هوافضا
    • آموزش هوافضا
      • فیلم های آموزش هوافضا
      • PDF های آموزش هوافضا
    • محصولات هوافضایی
    • نرم افزار های هوافضا
    • تازه های هوافضا
  • رباتیک
    • آموزش رباتیک
      • فیلم های آموزش رباتیک
        • PDF های آموزش رباتیک
    • دیتاشیت فارسی
    • نرم افزار های رباتیک
    • تازه های رباتیک
    • تاریخ مسابقات
  • پروژه
    • پروژه های رایگان
    • پروژه های آماده
    • پروژه های آردوینو
    • پروژه های رزبری پای
    • پروژه های بدون میکروکنترلر
    • پردازش تصویر
    • سفارش پروژه
  • دوره های آموزشی
    • کلاس های آموزشی
    • فیلم های آموزشی
    • جلسه های آموزشی
      • آموزش آردوینو
      • آموزش رسپبری پای
      • آموزش STM32
      • ربات پرنده
      • رباتیک مقدماتی
  • تماس با ما
  • درباره ما
  • مقالات
شروع ثبت نام دوره تابستانی آوات روبو
فرصت تکرار نشدنی ثبت نام در دوره های حضوری با 20% تخفیف!
ساعت
دقیقه
ثانیه
مشاهده دوره های آموزشی
رباتیک و هوافضا
ورود
با ایمیل با شماره موبایل
گذرواژه خود را فراموش کرده اید؟
عضویت
با ایمیل با شماره موبایل
  • 09152556924
  • sup@avatrobo.ir
رباتیک و هوافضا
  • خانه
  • فروشگاه
    • دوره های آموزشی
    • پروژه
    • بسته های آموزشی
      • رباتیک
      • آردوینو
  • هوافضا
    • آموزش هوافضا
      • فیلم های آموزش هوافضا
      • PDF های آموزش هوافضا
    • محصولات هوافضایی
    • نرم افزار های هوافضا
    • تازه های هوافضا
  • رباتیک
    • آموزش رباتیک
      • فیلم های آموزش رباتیک
        • PDF های آموزش رباتیک
    • دیتاشیت فارسی
    • نرم افزار های رباتیک
    • تازه های رباتیک
    • تاریخ مسابقات
  • پروژه
    • پروژه های رایگان
    • پروژه های آماده
    • پروژه های آردوینو
    • پروژه های رزبری پای
    • پروژه های بدون میکروکنترلر
    • پردازش تصویر
    • سفارش پروژه
  • دوره های آموزشی
    • کلاس های آموزشی
    • فیلم های آموزشی
    • جلسه های آموزشی
      • آموزش آردوینو
      • آموزش رسپبری پای
      • آموزش STM32
      • ربات پرنده
      • رباتیک مقدماتی
  • تماس با ما
  • درباره ما
  • مقالات
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

رباتیک و هوافضا > مقالات > پروژه > کنترل موتور دی سی با ریموت کنترل و آردوینو

کنترل موتور دی سی با ریموت کنترل و آردوینو

اسفند 17, 1396
ارسال شده توسط mjavad
پروژه، پروژه های آردوینو، پروژه های رایگان
کنترل موتور دی سی با ریموت کنترل و آردوینو

به نام خدا

کنترل موتور دی سی با ریموت کنترل و آردوینو

کنترل موتور دی سی با ریموت کنترل و آردوینو

 

در این آموزش کنترل سرعت و جهت گردش موتور DC را بوسیله ریموت کنترلر IR (اینفرارد) و آردوینو یاد خواهیم گرفت. در این آموزش از ریموت کنترل پخش کننده صوتی ماشین استفاده شده، این ریموت از پرتوکل NEC استفاده می کند.

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

 

کنترل موتور دی سی با ریموت کنترل و آردوینو

 

در این پروژه از 3 دکمه 1 ، 2 و 3 استفاده شده. کد های دکمه و کارکرد آنها را در زیر می بینید:(اندازه کد های ریموت کنترل NEC 32 بیتی است)

 

Button Number Function Code
1 Change direction 0x40BF30CF
2 Speed down 0x40BFB04F
3 Speed up 0x40BF708F

 

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

  • آردوینو UNO
  • درایور موتور L293D
  • موتور 12 ولت DC
  • ریموت کنترل (IR (NEC protocol
  • گیرنده IR
  • خازن 47 میکرو فاراد
  • منبع تغذیه 12 ولت
  • برد بورد
  • سیم برد بورد

شماتیک مدار کنترل موتور دی سی با ریموت کنترل و آردوینو :

شماتیک مدار پروژه را در زیر مشاهده می کنید.

 

کنترل موتور دی سی با ریموت کنترل و آردوینو

 

گیرنده اینفرارد (IR) برای دریافت سیگنال های ریموت کنترلر استفاده می شود. این گیرنده 3 پایه GNF , VCC , OUT دارد و به وسیله پایه 5 ولت آردوینو تغذیه می شود. پایه OUT نیز به پین 2 آردوینو متصل می شود.

درایور  L293D  از دو منبع متفاوت تغذیه می شود، اولی (VCC1) و از پایه 5 ولت آردوینو گرفته می شود و دومی (VCC2) که از منبع تغذیه 12 ولت می آید و ولتاژ نامی موتور است.

کد های کنترل موتور دی سی با ریموت کنترل و آردوینو:

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

اندازه سیگنال که به آردوینو فرستاده می شود 32 بیت است. در این پروژه از تایمر 1 برای اندازه گیری پالس ها استفاده شده و به گونه ای تنظیم شده است که هر میکروثانیه دو واحد افزایش پیدا می کند.

دانلود کد کنترل موتور دی سی با ریموت کنترل و آردوینو :

[maxbutton id=”205″ url=”http://avatrobo.ir/wp-content/uploads/2018/03/Arduino-based-remote-controlled-DC-motor.txt” ]

// Arduino remote controlled DC motor (speed and direction control)
// NEC IR remote control is used (Car MP3)

#define pwm1     5
#define pwm2     6

boolean nec_ok = 0, motor_dir = 0, repeated = 0;
byte  i, nec_state = 0, duty_cycle =  0;
unsigned long nec_code;

void setup() {
  pinMode(pwm1, OUTPUT);
  pinMode(pwm2, OUTPUT);
  // Timer1 module configuration
  TCCR1A = 0;
  TCCR1B = 0;                                    // Disable Timer1 module
  TCNT1  = 0;                                    // Set Timer1 preload value to 0 (reset)
  TIMSK1 = 1;                                    // enable Timer1 overflow interrupt
  attachInterrupt(0, remote_read, CHANGE);       // Enable external interrupt (INT0)
}

void remote_read() {
  unsigned int timer_value;
  if(nec_state != 0){
    timer_value = TCNT1;                         // Store Timer1 value
    TCNT1 = 0;                                   // Reset Timer1
  }
  switch(nec_state){
   case 0 :                                      // Start receiving IR data (we're at the beginning of 9ms pulse)
    TCNT1  = 0;                                  // Reset Timer1
    TCCR1B = 2;                                  // Enable Timer1 module with 1/8 prescaler ( 2 ticks every 1 us)
    nec_state = 1;                               // Next state: end of 9ms pulse (start of 4.5ms space)
    i = 0;
    return;
   case 1 :                                      // End of 9ms pulse
    if((timer_value > 19000) || (timer_value < 17000)){         // Invalid interval ==> stop decoding and reset
      nec_state = 0;                             // Reset decoding process
      TCCR1B = 0;                                // Disable Timer1 module
    }
    else
      nec_state = 2;                             // Next state: end of 4.5ms space (start of 562µs pulse)
    return;
   case 2 :                                      // End of 4.5ms space
    if((timer_value > 10000) || (timer_value < 3000)){
      nec_state = 0;                             // Reset decoding process
      TCCR1B = 0;                                // Disable Timer1 module
    }
    else{
      nec_state = 3;                             // Next state: end of 562µs pulse (start of 562µs or 1687µs space)
      if(timer_value < 6000)                     // Check if previous code is repeated
        repeated = 1;
    }
    return;
   case 3 :                                      // End of 562µs pulse
    if((timer_value > 1400) || (timer_value < 800)){           // Invalid interval ==> stop decoding and reset
      TCCR1B = 0;                                // Disable Timer1 module
      nec_state = 0;                             // Reset decoding process
    }
    else {
      // Check if the repeated code is for button 2 or 3
      if(repeated && (nec_code == 0x40BFB04F || nec_code == 0x40BF708F)){
        repeated = 0;
        nec_ok = 1;                              // Decoding process is finished with success
        detachInterrupt(0);                      // Disable external interrupt (INT0)
      }
      else
        nec_state = 4;                           // Next state: end of 562µs or 1687µs space
    }
    return;
   case 4 :                                      // End of 562µs or 1687µs space
    if((timer_value > 3600) || (timer_value < 800)){           // Time interval invalid ==> stop decoding
      TCCR1B = 0;                                // Disable Timer1 module
      nec_state = 0;                             // Reset decoding process
      return;
    }
    if( timer_value > 2000)                      // If space width > 1ms (short space)
      bitSet(nec_code, (31 - i));                // Write 1 to bit (31 - i)
    else                                         // If space width < 1ms (long space)
      bitClear(nec_code, (31 - i));              // Write 0 to bit (31 - i)
    i++;
    if(i > 31){                                  // If all bits are received
      nec_ok = 1;                                // Decoding process OK
      detachInterrupt(0);                        // Disable external interrupt (INT0)
      return;
    }
    nec_state = 3;                               // Next state: end of 562µs pulse (start of 562µs or 1687µs space)
  }
}

ISR(TIMER1_OVF_vect) {                           // Timer1 interrupt service routine (ISR)
  nec_state = 0;                                 // Reset decoding process
  TCCR1B = 0;                                    // Disable Timer1 module
}

void loop() {
  if(nec_ok) {
    nec_ok = 0;                                    // Reset decoding process
    nec_state = 0;
    TCCR1B = 0;                                    // Disable Timer1 module
    if(nec_code == 0x40BF30CF){                    // If button 1 is pressed (change motor direction of rotation)
      motor_dir = !motor_dir;                      // Toggle direction variable
      if(motor_dir)
        digitalWrite(pwm2, 0);
      else
        digitalWrite(pwm1, 0);
    }
    if(nec_code == 0x40BF708F && duty_cycle < 255)  // If button 3 is pressed (increase motor speed)
      duty_cycle++;
    if(nec_code == 0x40BFB04F && duty_cycle > 0)    // If button 2 is pressed (decrease motor speed)
      duty_cycle--;
    if(motor_dir)
      analogWrite(pwm1, duty_cycle);
    else
      analogWrite(pwm2, duty_cycle);
    attachInterrupt(0, remote_read, CHANGE);        // Enable external interrupt (INT0)
  }
}

 

 

برچسب ها: آردوینو یونوآموزش کنترل موتور دی سی با ریموت کنترل و آردوینوپروژه کنترل موتور دی سی با ریموت کنترل و آردوینوپروژه های آردوینودانلود پروژهدانلود کنترل موتور دی سی با ریموت کنترل و آردوینوروش کنترل موتور دی سی با ریموت کنترل و آردوینوکد برنامه کنترل موتور دی سی با ریموت کنترل و آردوینوکنترل موتور دی سی با ریموت کنترل و آردوینو
قبلی پروژه کنترل موتور دی سی با انکودر دوار و آردوینو به همراه کد برنامه
بعدی ساخت ساعت با نمایش زمان و تاریخ با استفاده از آردوینو و ماژول DS3231

پست های مرتبط

اردیبهشت 9, 1398

برنامه نویسی به زبان پایتون برای رزبری پای

mjavad
ادامه مطلب

اسفند 5, 1397

تشخیص رنگ با استفاده از رزبری پای

mjavad
ادامه مطلب

بهمن 10, 1397

راه اندازی ال سی 2 در 16 با استفاده رزبری پای قسمت دوم

mjavad
ادامه مطلب

بهمن 10, 1397

راه اندازی ال سی 2 در 16 با استفاده رزبری پای قسمت اول

mjavad
ادامه مطلب

بهمن 2, 1397

ساخت اسپیدکنترلر موتور براشلس 3 ( با سنسور )

Author Avatar
Admin
ادامه مطلب

2 دیدگاه

به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

  • علیرضا گفت:
    آذر 6, 1399 در 23:47

    با سلام
    چجوری کدهای ریموت رو پیدا کنیم

    پاسخ
    • Admin گفت:
      آذر 11, 1399 در 11:35

      سلام
      متوجه منظورتون نمیشم… کد ها که موجود هست توی صفحه سایت

      پاسخ

دیدگاهتان را بنویسید لغو پاسخ

دسته های محصولات
آخرین دیدگاه‌ها
  • Admin در پروژه ی ساخت یک ریموت کنترل 2.4 گیگا هرتز برای 10 کانال
  • Admin در درباره ما
  • Admin در پروژه ی ساخت یک ریموت کنترل 2.4 گیگا هرتز برای 10 کانال
  • Admin در رادیوکنترل 4 کاناله با قابلیت افزایش تا 10 کانال
  • امیر در رادیوکنترل 4 کاناله با قابلیت افزایش تا 10 کانال
ژوئن 2026
ش ی د س چ پ ج
 12345
6789101112
13141516171819
20212223242526
27282930  
« آوریل    
فهرست 1
  • عضویت
  • ویرایش حساب کاربری
  • ورود
  • خانه
فهرست 2
  • حمایت مالی
  • تبلیغات
  • فروشنده
  • داشبورد فروشندگان
  • سفارش پروژه
  • تماس با ما
  • درباره ما
فهرست 3
  • ویرایش حساب کاربری
  • فراموشی رمز عبور
  • ثبت نام
  • ویرایش حساب کاربری
محل کد نماد...
جستجو برای:
محصولات
  • دوره کوادکوپتر سرعتی FPV دوره آموزش ساخت کوادکوپتر مسابقاتی FPV
    نمره 4.00 از 5

    4,830,000 
  • دوره هواپیما مقدماتی تا پیشرفته دوره آموزش ساخت پهپاد بال ثابت ( هواپیما ) - مقدماتی تا پیشرفته
    10,480,000 
  • دوره کوادکوپتر مقدماتی دوره آموزش مقدماتی ساخت مولتی کوپتر (کوادکوپتر، هگزاکوپتر و ...)
    2,490,000 
  • دوره کوادکوپتر فیلم بردار دوره آموزش ساخت پهپاد فیلم بردار ( مولتی کوپتر )
    8,970,000 
  • دوره هواپیمای مدل موتور کشی دوره آموزش ساخت هواپیمای موتور کشی
    2,030,000 
نوشته‌های تازه
  • برنامه نویسی به زبان پایتون برای رزبری پای
  • تشخیص رنگ با استفاده از رزبری پای
  • راه اندازی ال سی 2 در 16 با استفاده رزبری پای قسمت دوم
  • راه اندازی ال سی 2 در 16 با استفاده رزبری پای قسمت اول
  • کنترل PID با آردوینو و دو موتور براشلس

درباره آوات روبو

 

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

دسترسی سریع

  • دوره های آموزشی
  • کیت
  • کلاس های حضوری
  • پروژه

کاوش

  • درباره ما
  • تماس با ما
  • مقالات

شبکه های اجتماعی

  • اینیستاگرام
  • یوتیوب
  • تلگرام

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