اطلاعیه

Collapse
No announcement yet.

اندازه گیری سرعت موتور با سنسور on2179

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

    اندازه گیری سرعت موتور با سنسور on2179

    سلام
    میخواستم دور یک موتور حداکثر 4000 rpm رو اندازه بگیرم . سرعت این موتور از 500 rpm تا 4000 تا قابل تنظیم هستش. برای اینکار خروجی سنسور رو به پایه وقفه صفر میکرو وصل کردم و با تایمر یک توی زمان 500 میلی ثانیه تعداد دفعاتی رو که پره موتور از جلوی سنسور رد میشه رو می شمرم بعد عدد شمرده شده رو در 2 ضرب میکنم بعد در 60 ضرب میکنم تا rpm بدست بیاد ولی نمیدونم چرا سنسور نمیتونه بیشتر از 2000 rpm رو بشمره . اینم شماتیک مدار


    Chip type : ATmega16
    Program type : Application
    Clock frequency : 11.059200 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega16.h>
    #include <delay.h>
    #include <stdlib.h>

    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x15 ;PORTC
    #endasm
    #include <lcd.h>
    int a=0;
    char str[10];

    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {

    a++;
    }

    // Timer 1 overflow interrupt service routine
    interrupt [TIM1_OVF] void timer1_ovf_isr(void) //500ms timer defined//////////////
    {

    itoa(a,str);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_puts(str);
    a=0;
    TCNT1H=0xEA;
    TCNT1L=0xc5;




    }

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

    // 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: 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: 10.800 kHz
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // 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=0x00;
    TCCR1B=0x05;
    TCNT1H=0xEA;
    TCNT1L=0xc5;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0xff;
    OCR1AL=0xff;
    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: On
    // INT0 Mode: Falling Edge
    // INT1: Off
    // INT2: Off
    GICR|=0x40;
    MCUCR=0x02;
    MCUCSR=0x00;
    GIFR=0x40;

    // 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);
    lcd_clear();
    lcd_gotoxy(0,0);

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

    (while (1
    }

    {
    {


    لطفا راهنمایی کنید.

    ممنون

    #2
    پاسخ : اندازه گیری سرعت موتور با سنسور on2179

    خروجی های lcd رو از تو اینتراپت بکش بیرون
    فرکانس میکرو رو ببر رو 16
    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

    تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

    دیدگاه


      #3
      پاسخ : اندازه گیری سرعت موتور با سنسور on2179

      سلام ممنون از جوابتون

      ولی فکر کنم 11.0592 مگاهرتز خیلی زیاد هم باشه. چون اگه حداکثر سرعت 4000 تا رو در نظر بگیریم. یعنی 4000 دور در 60 ثانیه ویعنی 66 وقفه در 1 ثانیه و یعنی 33 وقفه در 500 میلی ثانیه و هر یک وقفه در زمان 15 میلی ثانیه اتفاق می افته و از اونجایی که فرکانس 11.0592 مگاهرتز هستش یعنی میشه 0.090 میکروثانیه!! پس فکر کنم خوب باشه . نظر شما چیه؟


      ممنونم

      دیدگاه


        #4
        پاسخ : اندازه گیری سرعت موتور با سنسور on2179

        من واسه یه پروژه ( فرکانس متر ) از پایه وقفه استفاده کردم و اصلا در فرکانس های بالا دقت نداشت . به نظر من از کانتر استفاده کنی بهتره .
        [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

        دیدگاه


          #5
          پاسخ : اندازه گیری سرعت موتور با سنسور on2179

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

          ممنون میشم در این مورد با هم گفتگو کنیم. :rolleyes:

          دیدگاه


            #6
            پاسخ : اندازه گیری سرعت موتور با سنسور on2179

            متاسفانه من بیسیک کار میکنم . اگه یه سرچ بزنی در مورد کانتر / تایمر ها خیلی توضیحات هست .
            [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

            دیدگاه

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