اطلاعیه

Collapse
No announcement yet.

یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

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

    یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

    سلام به دوستان عزیز .. :biggrin: من در حال ساخت یک روبات با پردازش تصویر هستم . الانم بوردشو اماده کردم . فقط برا تستش می خوام با کد ویژن یه برنامه بنویسم که 2تا موتور dc l298 رو به جلو حرکت کنن . که ببینم عملکرد بوردم و مکانیکش خوب هست یا نه . با کدویژن باشه خیلی بهتر چون برنامه نویسیشو می خوام با کدویژن انجام بدم.
    ممنون میشم کسی کمکم کنه .. راستی پورت d رو میخوام بدم به موتور a,b

    #2
    پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

    شما تو codewizard تنظیمات timer رو انجام بده و بعد
    OCR1A=125;
    OCR1B=125;
    PORTD.0=1;
    PORTD.1=0';
    PORTD.2=1;
    PORTD.3=0;
    روشن یا خاموش بودن پورتهای بالا مشخص کننده جهت چرخش و مقدار timer ها میزان سرعت رو نشون میدن!

    دیدگاه


      #3
      پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

      ممنون دوست عزیز . سپاس فراوان .

      پس از این برنامه که نوشتید نتیجه میگیرم که از تایمر یک استفاده کنم .. و از طرفی ocrA,B همون نقش enable را دارن ! دورس میگم ... و اگه همینو بنویسم به امید خدا رباتم حرکت می کنه دیگه ... یعنی باید این صفر و یک ها را
      تغییر بدم تا جهت مورد نیازم که رو به جلو هست رو پیدا کنم .

      دیدگاه


        #4
        پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

        بله دوست عزیز. اجباری در استفاده از timer 1 نیست.
        فقط همونطور که عرض کردم تنظیم codewizard یادتون نره! فرکانس timer رو هم اینقدر عوض کنید تا به بهترین حالت از نظر حرکت برسید!

        دیدگاه


          #5
          پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

          بله .. ممنون ... دروس شد .. خیلی خیلی تشکر ... زحمت کشیدن ... با کمک شما الان داره راه میره ...
          حالا اگه بخوام مثلا برا 30 ثانیه رو به جلو و بعد برا 30 ثانیه به چپ حرکت کنه .. برنامه رو چه جوری باید تغییر بدم ؟

          دیدگاه


            #6
            پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

            حالا من اینجا برنامه کاملشو که به کمک ادمین عزیز راه افتاد میزارم تا دوستان دیگه هم اگه مشکل منو داشتن برطرف شه ! :applause:

            #include <mega32.h>
            #include <delay.h>

            // Alphanumeric LCD Module functions
            #asm
            .equ __lcd_port=0x15 ;PORTC
            #endasm
            #include <lcd.h>

            // Timer 1 overflow interrupt service routine
            interrupt [TIM1_OVF] void timer1_ovf_isr(void)
            {
            // Place your code here

            }

            // Declare your global variables here

            void main(void)
            {

            PORTD=0x00;
            DDRD=0xFF;
            PORTD.0=1;
            PORTD.1=0;
            PORTD.2=1;
            PORTD.3=0;

            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            // Mode: Normal top=FFh
            // OC0 output: Disconnected
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=0x00;

            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: 125.000 kHz
            // Mode: Normal top=FFFFh
            // OC1A output: Set
            // OC1B output: Set
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer 1 Overflow Interrupt: On
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            TCCR1A=0xF0;
            TCCR1B=0x03;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x01;
            OCR1AL=0x25;
            OCR1BH=0x01;
            OCR1BL=0x25;

            // 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=0x04;

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

            // LCD module initialization
            lcd_init(16);

            // Global enable interrupts
            #asm("sei&quot

            while (1)
            {
            lcd_gotoxy(0,0);
            lcd_putsf("d989"
            delay_ms(900);
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("mohammad"
            delay_ms(900);
            lcd_clear();
            };
            }

            دیدگاه


              #7
              پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

              ممنون از ادمین عزیز .. حالا اگه بخوام به مدت مثلا 5 ثانیه رو به جلو و بعد 2 ثانیه مکث داشته باشه و بعد از مکث 5 ثانیه به سمت چپ حرکت کنه برنامه رو چه جوری باید بنویسیم ... چون با L298 دارم کار میکنم برای 2تا موتور کمی برای برنامه نویسیش گیج شدم ... دقیقا نمیدونم کدشو بنویسم هرچی هم می نویسم جواب مورد نظر رو نمیده ..

              دیدگاه


                #8
                پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

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

                دیدگاه


                  #9
                  پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

                  کد:
                  //////////////farz mi****m port d.0 va d.1 male yek motor va d.2 va d.3 ham male un yeki motor va ocr1a male motore aval va ocr1b ham motore dovom man chun hale tanzimate timer neveshtanesho nadaram unesho xodet zahmatesho bekesh
                  
                  // vase rahat shodane kar ye tabe vase harekate motora minivisim
                  
                  void motor(int pwmr,int pwml)
                  {
                  	if (pwmr>=0)
                  	{
                  		OCR1A=pwmr;
                  		PORTD.0=1;
                  		PORTD.1=0;	
                  	}
                  	else if(pwmr<0)
                  	{
                  		OCR1A=-pwmr;
                  		PORTD.0=0;
                  		PORTD.1=1;	
                  			
                  	}
                  	if (pwml>=0)
                  	{
                  		OCR1B=pwml;
                  		PORTD.2=1;
                  		PORTD.3=0;	
                  	}
                  	else if(pwmr<0)
                  	{
                  		OCR1B=-pwml;
                  		PORTD.2=0;
                  		PORTD.3=1;	
                  			
                  	}
                  }
                  
                  ////////////////hala har ja bexay motorato harekat bedi kafie motor ro faraxuni ****o 2 ta pwm morede nazareto besh bedi + vase jolo - vase agham (masalan)
                  
                  
                  ///hala to main
                  
                  
                  void main()
                  {
                  	while(1)
                  	{
                  		/////mixay bere jolo
                  		motor(255,255);
                  		delay_ms(1000);
                  		////aghab
                  		delay_ms(1000);
                  		motor(-255,-255);
                  		delay_ms(1000);
                  		////chap
                  		motor(0,255);
                  		delay_ms(1000);
                  		////rast
                  		motor(255,0);
                  		delay_ms(1000);
                  
                  
                  		//////////////hamin dg!! un 255 ham pwm ete ke daste xodete hamin ! 
                  	}
                  }
                  The truth is not true!!!! the Truth is your own if U think Its TRUTH and The TRUTH is written in blood because its Ur own & Ur dream is the Truth if U see A thing if U feel A thing U build it like a building(!!!) and there is no thing.

                  دیدگاه


                    #10
                    پاسخ : یک برنامه ساده کد ویژن برای راه اندازی موتور dc برای حرکت رو به جلو

                    محمد جان از کمک و راهنماییت ممنون .. الان میشنم پاش ... راش بندازم

                    دیدگاه

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