NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4529 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 7 از 7

موضوع: کنترل موتور

  1. #1
    عضو جدید
    تاریخ عضویت
    Mar 2010
    نوشته ها
    18
    تشکر
    1
    تشکر شده 2 بار در 2 پست

    پیش فرض کنترل موتور

    سلام
    برنامه ی نوشتم برای حرکت موتورها
    دوتا موتور روشن بشود حرکت به راست و چپ داشته باشد
    برنامه اش ناقصه اجرا نمیشه لطفا راهنمایی کنید
    زمین و در proteus پیدا نمیکنم؟
    موج pwm رو میخوام به پایه 4و5 میکرو اعمال کنم که به enable درایور وصله چه جوری اینکارو انجام بدهم؟
    کد:
    /  
    
    
    #include <mega16.h>
     #include<delay.h>
    // Declare your global variables here
    
    
    void MOTOR_FRONT()//MOVE MOTOR FRONT
    {
    //PORTD.0=1;
    //PORTD.1=1;
    //PORTD.2=0;
    //PORTD.3=1;
    //PORTD.4=1;
    //PORTD.5=0;
    }
    
    
    void MOTOR_RIGHT()//MOVE MOTOR RIGHT
    {
    PORTD.0=1;
    PORTD.1=0;
    PORTD.2=0;
    PORTD.3=1;
    } 
    
    void MOTOR_LEFT()//MOVE MOTOR LEFT
    {
    PORTD.0=0;
    PORTD.1=1;
    PORTD.2=0;
    PORTD.3=1;
    }
    
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTA=0x00;
    DDRA=0x00;
    
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x00;
    
    // Port D initialization
    // Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
    // State7=T State6=T State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
    PORTD=0x00;
    DDRD=0x3F;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 15.625 kHz
    // Mode: Fast PWM top=FFh
    // OC0 output: Disconnected
    TCCR0=0x63;
    TCNT0=0x00;
    OCR0=10;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    while (1)
          {
          // Place your code here
     int i=0;
          for(i=0; i<10000; i++)
          { MOTOR_FRONT();}
           delay_ms(5000);
          
          for(i=0; i<10000; i++)
          { MOTOR_RIGHT();}
          delay_ms(5000); 
          
        
          for(i=0;i<10000;i++)
          {MOTOR_LEFT();}
          delay_ms(5000);
          };
    }
    ویرایش توسط yalda88 : 07-04-2010 در ساعت 20:28

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2009
    نام
    مشهد
    نوشته ها
    22
    تشکر
    5
    تشکر شده 8 بار در 3 پست

    پیش فرض

    از تایمر ها استفاده کن

  4. #3
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    برای اطلاعات بیشتر به تاپیک زیر یه سر بزنید. من توی پست 202 یه برنامه گذاشتم. با فایل شبیه سازی.

    http://iranmicro.ir/forum/showthread...C%D8%B1&page=6
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  5. #4
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    توی ادرس زیر هم میتونید اموزش کامل نرم افزار پروتوس رو دانلود کنید :
    http://iranmicro.ir/دانلود-پروتوس-7-...موز-81.html

  6. تشکرها از این نوشته :


  7. #5
    تازه وارد
    تاریخ عضویت
    Oct 2009
    نوشته ها
    4
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    New

    سلام
    برنامه ای برای کنترل موتور سرو با این تنظیمات دارم
    TCCR1A=0x80;
    TCCR1B=0x12;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0xFF;
    ICR1L=0x20;
    OCR1AH=0x03;
    OCR1AL=0xE8;
    OCR1BH=0x00;
    OCR1BL=0x00;
    و اصل برنامه
    while (1)
    {
    for(OCR1A=1000;OCR1A<5000; OCR1A++)
    {
    delay_ms(1);
    }
    }
    از تنظیمات رجیسترهای تایمر 1 سر در نمی اورم این برنامه حدودا 40 درجه موتور را میچرخاند هرچقدر مقادیر رجیستر
    ocr1
    را تغییر میدهم نتیجه ی خاصی نمیدهد
    نوع کارکرد رجیستر
    icr
    را در برنامه نمیدانم
    لطفا راهنمایی کنید

  8. #6
    عضو جدید ljah آواتار ها
    تاریخ عضویت
    Oct 2011
    نوشته ها
    10
    تشکر
    4
    تشکر شده 4 بار در 3 پست

    پیش فرض

    سلام خسته نباشید میخواستم بپرسم ارتباط بین موتور و چرخ ها چگونه برقرار میشه یا به عبارتی چطوری چرخ ها حرکت میکنند؟
    باتشکر

  9. #7
    عضو جدید ljah آواتار ها
    تاریخ عضویت
    Oct 2011
    نوشته ها
    10
    تشکر
    4
    تشکر شده 4 بار در 3 پست

    پیش فرض

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

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •