اطلاعیه

Collapse
No announcement yet.

راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

    سلام . من میخوام با میکرو atmega8 با زبان کدویژن دو عدد سروو موتور رو کنترل کنم بدین صورت که مقدار زاویه رو از بیرون خودم بهش بدم(با ولوم مثلا). اگه کسی برنامه ای مناسب این پروژه داره به اشتراک بذاره که خیلی از دوستان دنبال همچین پروژه ای هستن و همچنین از توضیحات مختلف برای رفع اشکال کار استقبال میکنم . ایشالا به صورت یه pdf کوچیک با توضیحات کافی درش بیاریم و داخل سایت بذاریم که این مشکل یبار برای همیشه حل بشه.

    #2
    پاسخ : راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

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

    دیدگاه


      #3
      پاسخ : راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

      نوشته اصلی توسط ariahope
      این خیلی بده که دوستان تو این سایت عادت کردند لقمه حاضر آماده کسی تحویلشون بده. کسانی که اینجا میان بیکار نیستند هیچ کدوم. من خودم به شخصه اگه ببینم طرف تلاشی کرده و داره میکنه خیلی خوشحال هم میشم در راستای تلاشش کمکش کنم. اما وقتی میبینم چیزهای بسیار ساده که با یک سرچ کوچیک هم میشه بهش رسید رو دوستان می پرسند جواب دادن بهشون رو توهین به شعور جواب دهنده می دونم.
      در این پست سعی بر این هستش که تمام روش های کنترل و تولید pwm رو بررسی کنیم، ممکننه هر کسی از یک روش استفاده کنه، بنده در این تلاش هستم که تمام این روش ها رو در قالب یک pdf جمع اوری کنم( اشتباه نکنم چهار روش برای راه تولید pwm وجود داره) . اگه شما با این موضوع مخالفی نیازی به نظر دادن و توهین کردن نبود، لقمه حاضر هم ...


      اضافه شده در تاریخ :
      36 بازدید وفقط یک پاسخ؟؟؟؟!!!!!!!!!!!!!! oo:

      دیدگاه


        #4
        پاسخ : راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

        خسته نباشید خدمت همگی..من با atmega16 میخوام که دو تا سروو رو درایو کنم...کدشو نوشتم و به نظرم مشکلی نباید داشته باشه...اما مشکلی که هست اینه که وقتی یکی از سروو هارو وصل میکنم به میکرو کد کامل و بی عیب اجرا میشه و سروو درست کار میکنه اما وقتی که جفت سرووهامو وصل میکنم این طور نیست....به کسی نشون دادم گفتن که انگار وقتی دو تا سروو رو به میکرو وصل میکنم جریان کشی از میکرو زیاد میشه و باعث میشه میکرو هی ریست شه...ولی اون بنده خدا هم راه حلی برای این مشکل نداشت...دیدم این تاپیک بی ربط نیس به مشکل من واسه همین اینجا مشکلمو نوشتم....خیلی ممنون میشم اگر تجربه ای اینچنینی دارید تو حل مشکلش به من کمک کنید
        اینم کد برنامه ام:
        کد:
        [CPP]
        [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL]  <mega16a.h>
        [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL]  <delay.h>
        
        
        
        
        void main(void)
        {
        // Declare your local variables hereunsigned int pwm1 , pwm2;   
        
        
        
        
        pwm1=750; pwm2=750;
        // Input/Output Ports initialization
        // Port A initialization
        // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
        DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
        // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=P Bit2=P Bit1=P Bit0=P 
        PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (1<<PORTA3) | (1<<PORTA2) | (1<<PORTA1) | (1<<PORTA0);
        
        
        // Port B initialization
        // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
        DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
        // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
        PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
        
        
        // Port C initialization
        // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
        DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
        // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
        PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
        
        
        // Port D initialization
        // Function: Bit7=In Bit6=In Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In 
        DDRD=(0<<DDD7) | (0<<DDD6) | (1<<DDD5) | (1<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
        // State: Bit7=T Bit6=T Bit5=0 Bit4=0 Bit3=T Bit2=T Bit1=T Bit0=T 
        PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
        
        
        
        
        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: 1000.000 kHz
        // Mode: Ph. & fr. cor. pwm top=ICR1
        // OC1A output: Non-Inverted pwm
        // OC1B output: Non-Inverted pwm
        // Noise Canceler: Off
        // Input Capture on Falling Edge
        // Timer Period: 19.998 ms
        // Output Pulse(s):
        // OC1A Period: 19.998 ms Width: 0 us
        // OC1B Period: 19.998 ms Width: 0 us
        // Timer1 Overflow Interrupt: Off
        // Input Capture Interrupt: Off
        // Compare A Match Interrupt: Off
        // Compare B Match Interrupt: Off
        TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
        TCCR1B=(0<<ICNC1) | (0<<ICES1) | (1<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
        TCNT1H=0x00;
        TCNT1L=0x00;
        ICR1H=0x27;
        ICR1L=0x0F;
        
        
        OCR1AH=0x00;
        OCR1AL=0x00;
        OCR1BH=0x00;
        OCR1BL=0x00;
        
        
        
        
        
        
        // Timer(s)/Counter(s) Interrupt(s) initialization
        TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
        
        
        OCR1AH=pwm1>>8;
        OCR1AL=pwm1&0xff;
        OCR1BH=pwm2>>8;
        OCR1BL=pwm2&0xff;
        
        
        while (1)
              {
        
        
              if(PINA.0&&PINA.1&&PINA.2&&PINA.3){if(OCR1A<750)OCR1A++; if(OCR1A>750)  OCR1A--;if(OCR1B<750)OCR1B++; if(OCR1B>750)  OCR1B--; delay_ms(10);}
              if(PINA.0==0){
              if(OCR1A>300) OCR1A--;
              if(OCR1B>300) OCR1B--;
              delay_ms(10);
              }
              if(PINA.1==0){
              if(OCR1A>300) OCR1A--;
              if(OCR1B<1200) OCR1B++;
              delay_ms(10);
              }  
        
        
              if(PINA.2==0){
              if(OCR1A<1200) OCR1A++;
              if(OCR1B>300) OCR1B--;
              delay_ms(10);
              }  
        
        
              if(PINA.3==0){
              if(OCR1A<1200) OCR1A++;
              if(OCR1B<1200) OCR1B++;
              delay_ms(10);
              }[/CPP]
        جدیدترین ویرایش توسط اشکان غفارزاده; ۲۳:۳۹ ۱۳۹۶/۰۵/۱۷.

        دیدگاه


          #5
          پاسخ : راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

          سلام من میخوام یک سروو موتور را با اتمگا 328 راه اندازی کنم
          و یک برنامه بدم که هر یک ساعت 45درجه ازچه به راست و 45 درجه از راست به چپ بچرخه
          لطفا راهنمایی کنید

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          سلام
          لطفا کمک کنید

          سلام من میخوام یک سروو موتور را با اتمگا 328 راه اندازی کنم
          و یک برنامه بدم که هر یک ساعت 45درجه ازچه به راست و 45 درجه از راست به چپ بچرخه
          لطفا راهنمایی کنید

          دیدگاه


            #6
            پاسخ : راه اندازی کامل سروو موتور(servo motor) با میکرو avr به زبان کدویژن

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

            اره واقعا.....


            دلیل: ادغام دو پست برای جلوگیری از اسپم

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

            اره واقعا.....

            دیدگاه

            لطفا صبر کنید...
            X