ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2012/10/17
    1
    0

    مشکل در کنترل سروو موتور


    سلام
    من یک سروو موتور GWS مدل S03N D 2BB را با atmega16 راه اندازی کرده ام .(با برنامه ی codevision) دو کلید به میکرو متصل کرده ام که برای یک کلید به یک زاویه ی مشخص مثلا 90 درجه برود و با کلید دوم به صفر درجه برگردد . مشکل اینجاست که بعد از رفتن به زاویه ی 90 درجه دیگر با زدن کلید به صفر درجه برنمی گردد و مثلا به 50 درجه بر میگردد . به نظرتان مشکل از کجاست ؟
    این هم کد برنامه :
    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.05.3 Standard
    Automatic Program Generator
    © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 8/26/2014
    Author : PerTic@n
    Company : if you like this software,Buy it
    Comments:


    Chip type : ATmega16A
    Program type : Application
    AVR Core Clock frequency: 1.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega16a.h>

    #include <delay.h>

    #define ADC_VREF_TYPE 0x00

    int temp;
    float vol;
    char a;

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }

    // Declare your global variables here

    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=Out Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x08;

    // 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=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
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 0.977 kHz
    // Mode: Fast PWM top=0xFF
    // OC0 output: Non-Inverted PWM
    TCCR0=0x6B;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 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: Timer2 Stopped
    // Mode: Normal top=0xFF
    // 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;

    // USART initialization
    // USART disabled
    UCSRB=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC Clock frequency: 7.813 kHz
    // ADC Voltage Reference: AREF pin
    // ADC Auto Trigger Source: Free Running
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0xA7;
    SFIOR&=0x1F;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    PINA.0=1;
    PINA.1=1;

    while (1)
    {



    if (PINA.0==0)
    {
    OCR0=23;
    delay_ms(1000);
    }
    if (PINA.1==0)
    {
    OCR0=8;
    delay_ms(1000);
    //}
    }

    }
    }

    ممنون می شم اگه کمکم کنید . چند روزه که درگیرم با این قضیه .
  2. #2
    2009/12/26
    1,730
    263

    پاسخ : مشکل در کنترل سروو موتور

    معمولا مدار فيدبک اين سروو ها دقيق نيست -من هم مشکلات مشابه رو داشتم قبلا -
    دو مورد در اين امر تاثير گذار هستن- اگر ميخواهيد دقيق تر اندازه گيري کنيد مورد 1 رو اجرا کنيد و اگر براتون دقت خيلي مهم نيست مورد 2 بيشترين تاثير رو داره!
    1-مقدار تنظيمات موج PWM! تنظيمات موج PWM رو طوري تنظيم و مقدار دهي کنيد که از 500 تا 1000 يا 1000 تا 2000 باشه! در اين صورت مقدار 90 درحه در حالت اول حدودا 750 و در حالت دوم 1500 ميشه!
    2-توابع ديلي بعد از دستورات خيلي تاثير گذار هستند با اونا بازي کنيد(کمشون کنيد) و بهترين مقدار رو بدست اوريد لزوما نبايد هر دو تا ديلي يکي باشن!
  3. #3
    2009/12/26
    1,730
    263

    پاسخ : مشکل در کنترل سروو موتور

    حداقل بفرماييد مشکلت حل شد يا نشد! لااقل ما بدونيم همين بوده!
  4. #4
    2010/05/26
    53
    0

    پاسخ : مشکل در کنترل سروو موتور

    نقل قول نوشته اصلی توسط elham!!
    سلام
    من یک سروو موتور GWS مدل S03N D 2BB را با atmega16 راه اندازی کرده ام .(با برنامه ی codevision) دو کلید به میکرو متصل کرده ام که برای یک کلید به یک زاویه ی مشخص مثلا 90 درجه برود و با کلید دوم به صفر درجه برگردد . مشکل اینجاست که بعد از رفتن به زاویه ی 90 درجه دیگر با زدن کلید به صفر درجه برنمی گردد و مثلا به 50 درجه بر میگردد . به نظرتان مشکل از کجاست ؟
    این هم کد برنامه :
    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.05.3 Standard
    Automatic Program Generator
    © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 8/26/2014
    Author : PerTic@n
    Company : if you like this software,Buy it
    Comments:


    Chip type : ATmega16A
    Program type : Application
    AVR Core Clock frequency: 1.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega16a.h>

    #include <delay.h>

    #define ADC_VREF_TYPE 0x00

    int temp;
    float vol;
    char a;

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }

    // Declare your global variables here

    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=Out Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x08;

    // 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=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
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 0.977 kHz
    // Mode: Fast PWM top=0xFF
    // OC0 output: Non-Inverted PWM
    TCCR0=0x6B;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 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: Timer2 Stopped
    // Mode: Normal top=0xFF
    // 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;

    // USART initialization
    // USART disabled
    UCSRB=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC Clock frequency: 7.813 kHz
    // ADC Voltage Reference: AREF pin
    // ADC Auto Trigger Source: Free Running
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0xA7;
    SFIOR&=0x1F;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    PINA.0=1;
    PINA.1=1;

    while (1)
    {



    if (PINA.0==0)
    {
    OCR0=23;
    delay_ms(1000);
    }
    if (PINA.1==0)
    {
    OCR0=8;
    delay_ms(1000);
    //}
    }

    }
    }

    ممنون می شم اگه کمکم کنید . چند روزه که درگیرم با این قضیه .
    سلام.
    دوست عزیز به نظربنده شما اول به دیتا شیت موتور رجوع کنید و ببینید که موتور با چه فرکانس و مشخصاتی کار می کنه و در چه زمان هایی حر کت می کند و بازه فر کانسی را در ست محاسبه کنید.همچنین برق موتور را از برق میکرو جدا کنید.و در آخر سعی کنید فرکانس مورد نظر را با تایمر 1 بسازید تا توانایی بیشتری در تغییر فرکانس داشته باشد.
نمایش نتایج: از 1 به 4 از 4

موضوعات مشابه

  1. کنترل دو عدد سروو موتور همزمان
    توسط amiraghamohamadi در انجمن رباتيك و مكاترونيك
    پاسخ: 0
    آخرين نوشته: 2015/07/23, 18:01
  2. کنترل سروو موتور.
    توسط feshwari در انجمن رباتيك و مكاترونيك
    پاسخ: 41
    آخرين نوشته: 2014/08/21, 08:28
  3. کنترل سروو موتور از طریق PWM
    توسط nimrar در انجمن XMEGA
    پاسخ: 3
    آخرين نوشته: 2012/05/26, 17:15
  4. نحوی کنترل یک سروو موتور
    توسط SMGH در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2012/05/05, 15:32
  5. یک سوال: نحوه کنترل یک سروو موتور
    توسط omid soltani در انجمن میکروکنترلرهای AVR
    پاسخ: 6
    آخرين نوشته: 2011/04/06, 15:46

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

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

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