اطلاعیه

Collapse
No announcement yet.

اندازه گیری پهنای پالس

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

    #61
    پاسخ : اندازه گیری پهنای پالس

    سلام .................

    یکی از راههایی که وجود داره مون آیسی 555 هست خوبم جواب داده . اما از کریستال و اسیلاتور هم میتونید استفاده کنید .
    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #62
      پاسخ : اندازه گیری پهنای پالس

      سلام به اساتید محترم
      555 مولد پالس خوبیه ، ولی من یک مولد پالس میخوام با کریستال که خطاش در حد صفر یا خیلی پایین باشه کسی میتونه راهنمایی کنه مثلا فرکانس هزار هرتز

      با تشکر از همه اساتید :agree:

      من شنیدم باید یک کریستال فرکانس بالا گرفت و با مدار فرکانسشو تقسیم کرد و... ولی مداری ندیدم کی مدارشو داره؟
      هنوز وقت برای پیشرفت باقیست!

      دیدگاه


        #63
        پاسخ : اندازه گیری پهنای پالس

        دوستان اگر کسی توانسته با سنسور adxl330 کار کنه و به طور کامل با کارکرد اون در جهت زاویه سنجی آشنایی داره لطفا به من ایمیل بده که یه پروژه خوب براش سراغ دارم
        gladiator200350@yahoo.com
        بدنم را بدون مومیایی و تابوت به خاک سپارید تا اجزا بدنم ذرات خاک ایران را تشکیل دهد

        دیدگاه


          #64
          پاسخ : اندازه گیری پهنای پالس

          سلام بر همگی
          من سوالی در مورد اندازه گیری فرکانس داشتم که نخواستم تاپیک جدیدی ایجاد کنم و همینجا میپرسم

          هدف من اندازه گیری فرکانس یک پالس مربعی است. مطابق مطالبی که تو سایت بود، به نظرم اومد بهترین راه استفاده از Input capture باشه ولی متاسفانه فرکانس درست اندازه گیری نمیشه و هر دفعه یک عدد بدست میاد. کلی بررسی کردم ولی مشکل رو نتونستم پیدا کنم. این تنظیمات تایمر 1 است:
          TCCR1A=0x00;
          TCCR1B=0x43;
          TCNT1H=0x00;
          TCNT1L=0x00;
          ICR1H=0x00;
          ICR1L=0x00;
          OCR1AH=0x00;
          OCR1AL=0x00;
          OCR1BH=0x00;
          OCR1BL=0x00;

          و روتین وقفه Input capture بصورت زیر نوشته شده:
          کد:
          interrupt [TIM1_CAPT] void timer1_capt_isr(void)
          {
           
           if(!l1) 
           {
            t1=ICR1;
            l1=1;  
           }
           else
           {
            t2=ICR1;
            l1=0;
           }
          }
          و در نهایت فرکانس رو بصورت زیر محاسبه میکنم:
          کد:
          float frequencyCalc(void)
          {
           float frequency; 
           if(l1==0)
           {
           if(t2>t1) 
            if(t2!=0)
            frequency=(float) 230400/(t2-1);
           else
            frequency=(float) 230400/(t2+65535-t1);
           }
          
           return frequency;
          }
          نمیدونم مشکل کجاست خواهش میکنم راهنماییم کنین کلی بررسی کردم ولی مشکل حل نشد. اون شرط t2>t1 رو به این خاطر گذاشتم که به نظرم اومد ممکنه بعد از ذخیره مقدار ICR1 در t1 تا لبه بعدی تایمر سرریز بشه و در اینصورت مقدار t2 کمتر از t1 خواهد بود.

          دیدگاه

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