اطلاعیه

Collapse
No announcement yet.

ساخت فرکانس متر

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

    ساخت فرکانس متر


    یه فرکانس متر با مگا 8 دیدم که تا فرکانس نزدیک 1 گیگا رو میگرفت .البته با تقسیم کنندهای سخت افزاری

    میخوام در ابتدای کار یه فرکانس متر درست کنم تا 8 مگا رو بگیره .نیاز به محاسبات واظلاعات اولیه دارم

    1. اگر کریستال میکرو 8 مگا باشه ایا امکان داره که بتونه فرکانس 9 مگا (بدون تقسیم کننده) بگیره.اصلا ربطی به کریستال داره یا فقط مربوط به حداکثر فرکانس ایسی میکرو وابسته هست.

    الان اگر من تایم 1 ثانیه بگیرم وبعدش پالس رو بشمارم دقت 1 هرتز .واگر کانتر ما 16 بیتی باشه حداکثر فرکانس کاری میشه 65535 هرتز.وبیشتر از این سرریز میشه .

    اگر فرضا تایم 100 میلی ثانیه باشه دراون صورت دقت میشه 10 هرتز .یعنی هر پالس برابر 10 هرتز میشه درسته.حداکثر فرکانس میشه 65535/1.

    پس در کل برای اینکه بتونم فرکانس 1تا 8 مگ رو دقیق بگیرم چکار کنم .اگه میشه بگید چکار کنم
    ادمهای خوب تو eca خیلی پیدا میشه

    #2
    پاسخ : ساخت فرکانس متر

    نیاز به محاسبات واظلاعات اولیه دارم
    ببین کلا از این حساب کتابی که برا خودت کردی هیچ سر در نیاوردم ولی یه توضیح اجمالی می دم امیدوارم کارت راه بیافته
    نگا کن در حالت کلی قائده این هست که یه میای تایمر صفر رو فرکانسش رو از طریق پایه to (حساس به سطح پایین رونده )می زاری بعد میای میگی به مدت یک ثانیه تایمر صفر رو روشن می کنی و در قسمت وقفه تایمر صفر یه متغیری رو زیاد می کنی (با هر پالس یک عدد زیاد می شه) بعد عدد بعدد عدد اون متغیر رو ضرب در 256 می کنی بعلاوه عدد داخل tcnt می کنی می شه فرکانننننننننننننننننس

    دیدگاه


      #3
      پاسخ : ساخت فرکانس متر

      نوشته اصلی توسط mmh1
      ببین کلا از این حساب کتابی که برا خودت کردی هیچ سر در نیاوردم ولی یه توضیح اجمالی می دم امیدوارم کارت راه بیافته
      نگا کن در حالت کلی قائده این هست که یه میای تایمر صفر رو فرکانسش رو از طریق پایه to (حساس به سطح پایین رونده )می زاری بعد میای میگی به مدت یک ثانیه تایمر صفر رو روشن می کنی و در قسمت وقفه تایمر صفر یه متغیری رو زیاد می کنی (با هر پالس یک عدد زیاد می شه) بعد عدد بعدد عدد اون متغیر رو ضرب در 256 می کنی بعلاوه عدد داخل tcnt می کنی می شه فرکانننننننننننننننننس
      oo:شما که نگرفتی .دیگه چرا اشتباه میگی. اگه تایم 1 ثانیه باشه .تعداد پالس در 256 ضرب بشه oo:

      در تایم یک ثانیه تعداد پالس برابر با مقدار فرکانسه.
      ادمهای خوب تو eca خیلی پیدا میشه

      دیدگاه


        #4
        پاسخ : ساخت فرکانس متر

        سیستم کلا همونه که گفتا البته من یه بار دیگه میگم واسه محکم کاری :mrgreen:
        شما دو تا تایمر لازم داری.
        تایمر 1 که 16 بیتی هست و تایمر بعدی مثلا 0.
        حالا میای تایمر 0 رو یه طوری راه میندازی که مثلا هر 10 میلی ثانیه وقفه بده.
        تایمر 1 رو هم کلاک خارجی میدی. یعنی مد 6و 7
        بعد میای تو هر وقفه مقدار تایمر 1 رو میخونی و درجا صفرش میکنی و با توجه به اون 10 میلی ثانیه محاسبه میکنی. مثلا اگه 5763 باشه باید ضرب در 100 بشه.
        مشکل اول اینه که ممکنه فرکانس زیاد باشه و تایمر 1 سرریز بشه. در این صورت باید تو وقفه سرریز بیای یکی از این کارا رو بکنی:
        الف ) مدت زمان وقفه تایمر 0 رو کم کنی.
        ب ) یه متغییر تعریف کنی که تعداد سرریزهای تایمر 1 رو بین دو سرریز تایمر 0 بشمره و اون رو تو محاسباتت تاثیر بدی. مثلا اگه تو همون مثال مقدار تایمر 1 تو لحظه سرریز تایمر 0 برابر 27500 بود و اون متغییر هم برابر 11 بود پس داریم :

        F=((65536*11)+27500)*100


        مشکل بعدی تو فرکانس های پایینه که مثلا 5 هرتز رو شما تو بازه های 10 میلی ثانیه ای نباید اندازه بگیری چون دقت خیلی کم میشه.
        برای رفع این مشکل یه شرط میزاری که اگه مقدار تایمر 1 کمتر از مثلا 30 بود محاسبه انجام نگیره و بجاش یه متغییر دیگه یه دونه بهش اضافه بشه.
        وقتی که بالاخره بعد از مثلا 400 بار وقفه بالاخره تایمر 1 از 30 بیشتر شد (مثلا شد 42 ) اینطور محاسبه میکنی

        F=(((65536*0)+42)*100)/400
        بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
        اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

        دیدگاه


          #5
          پاسخ : ساخت فرکانس متر

          من که حسابی گیج شدم. الان اگر در تایم 10 میلی ثانیه 1 پالس بگیریم فرکانس میشه 100 هرتز .اونوقت اگر 2 داشته باشیم 200 هرتز .یعنی دقت بشه 100 هرتز .پس فرضا فرکانس150 هرتز رو چجوری بگیریم .در کل 100 تا 100 میره جلو.یا من اشتباه میکنم.
          ادمهای خوب تو eca خیلی پیدا میشه

          دیدگاه


            #6
            پاسخ : ساخت فرکانس متر

            سلام بالا بری پایین بیای باید همین طریقی که دوستمون گفته پیش بگیری و باید
            حتمی عدد خونده شده رو ضرب در 256 کنی
            حتمیحاصل ضرب رو بعلاوه عدد tcnt کنی
            حتمی کریستال بزاری (بهتر 16 مگ باشه )
            حتمی پروژه ای رو که برات می زارم نگا کنی
            این پروژه ای رو که می بینی به همین روشی که گفتم نمونه برداری می کنه جواب می ده و یک ثانیه از پالس نمونه می گیره می تونی این زمان رو کم کنی و میزان کم کردن رو ضرب در عدد فرکانس کنی
            http://newdamghan1.persiangig.com/fr%20meter.rar

            دیدگاه


              #7
              پاسخ : ساخت فرکانس متر

              نوشته اصلی توسط SAMIN20
              من که حسابی گیج شدم. الان اگر در تایم 10 میلی ثانیه 1 پالس بگیریم فرکانس میشه 100 هرتز .اونوقت اگر 2 داشته باشیم 200 هرتز .یعنی دقت بشه 100 هرتز .پس فرضا فرکانس150 هرتز رو چجوری بگیریم .در کل 100 تا 100 میره جلو.یا من اشتباه میکنم.
              اشکال نداره آدم تا گیج نشه بزرگ نمیشه.
              من تو مثال آخرم فرکانس 10.5 هرتز رو اندازه گرفتم. متن رو به دقت بخون اخوی.
              بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
              اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

              دیدگاه


                #8
                پاسخ : ساخت فرکانس متر

                شرمنده . الان تو مثال بالایی که تایمر 10 میلی ثانیه هست .عدد فرضی پالس رو که 5763 بود در 100 ضرب شده که درسته .حالا اگر پالس ما بشه 5764 میشه 576400 .که دقت میشه 100 تایی .پس فرکانس بین 576300 و576400 را چطوری بگیریم
                ادمهای خوب تو eca خیلی پیدا میشه

                دیدگاه


                  #9
                  پاسخ : ساخت فرکانس متر

                  دقت یا سرعت. مسئله این است
                  میتونی تایمر رو 20 ثانیه بزاری و با دقتی در حد لالیگا اندازه گیری کنی.
                  اگه میخوای خیلی کاربردی بشه باید از الگوریتم های پیچیده تر استفاده کنی که هر 100 میلی ثانیه تعداد پالسها رو بشمری و محاسبه کنی و نمایش بدی ولی شمارنده رو ریست نکنی تا n ثانیه که خیلی دقیق تر به جواب میرسی. به هر حال یه نکته معلومه. هر چی مدت زمان شمارش پالسها بیشتر بشه دقت بالاتر میره مثلا اگه 10 ثانیه پالسها رو بشمری خیلیییییی دقیق میشه تا 10 میلی ثانیه.
                  معمولا میان و از الگوریتم هایی استفاده میکنن که به طور اتوماتیک میفهمه برای این فرکانس بهتره چه بازه زمانی رو برای شمارش انتخاب کنه.
                  شما باید بازه زمانی رو متغییر بگیری و همونطور که گفتم تا تعداد پالسها به تعداد قابل قبولی نرسیده فرکانس رو محاسبه نکنی

                  بزار یه طور دیگه بگم
                  شما با ضرب اول همون طور که گفتی میتونی محدوده فرکانس رو که حدود 576400 هستش رو با دقت 100 هرتز نشون بدی که دقت شما میشه 0.1% که به این دقت میگن اندازه گیری نظامی. ولی اگه بازم دقیقتر میخوای باید برنامه رو طوری بنویسی که شمارندش رو ریست نکنه مدام به شمارش پالسها ادامه بده و زمان رو هم اندازه بگیره اینطوری قدم به قدم به فرکانس واقعی نزدیک تر میشی و در عرض یکی دو ثانیه برای فرکانسهای بالا و 6-7 ثانیه برای فرکانسهای پایین جواب دقیق دقیق بدست میاد.
                  ولی دقت 0.1% رو همه جا قبول دارن. شما به عدد 100 هرتز تنهایی نگاه نکن این عدد رو در کنار فرکانس 576 کیلوهرتز قرار بده تا بفهمی چقدر 100 هرتز تو این فرکانس دقت بالایی به شمار میاد.
                  بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                  اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                  دیدگاه


                    #10
                    پاسخ : ساخت فرکانس متر

                    گرفتم :applause:

                    من فقط میخواستم بدونم که در صورت درست کردن فرکانسمتر دراین تایم ( 100 تا 100 تا جلو رفتن)

                    پس در حالت تایم 10 میلی ثانیه حداقل فرکانسی که میتونیم بگیریم100 هرتز هست.

                    پس باید تایم من 1 ثانیه باشه که اگه سرریز رو حساب نکنم میتونم تا فرکانس65536 رو بگیرم (با دقت 1 هرتز)

                    فقط مشکل این زبان اسمبلی که محاسبات ضعیفی داره. که محاسبات ریاضی مثلا عدد 65536 چجوری تو LCD نمایش بدم .
                    ادمهای خوب تو eca خیلی پیدا میشه

                    دیدگاه


                      #11
                      پاسخ : ساخت فرکانس متر

                      خوب کامل نگرفتی چون میشه با همین روش تا 0.1 هرتز رو هم اندازه گرفت.
                      ولی همین قدر که گرفتی بسه کار رو شروع کن.
                      برای فرکانسهای بالاتر از 20 مگا هم باید یک شمارنده cd4040 بزاری تا فرکانس رو برات تقسیم کنه و بعد با یه مالتی پلکسر بدی ورودی تایمر و... که البته اینها رو برای فاز بعدی پروژه در نظرت باشه.

                      این اسمبلی رو هم ول کن دیگه پدرش رو درآوردی برو سراغ C اونم با avrstudio 5
                      بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                      اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                      دیدگاه


                        #12
                        پاسخ : ساخت فرکانس متر

                        ایکیوسان .بله. :biggrin:



                        الان تو تایم 1 ثانیه .یک دونه پالس یعنی 1 هرتز و 2 دونه پالس یعنی 2 هرتز و به همین ترتیب .در این رنج حد فرکانسی بین 1 و2 نداریم . پس چجوری میشه تا1. هرتز را اندازه گرفت
                        ادمهای خوب تو eca خیلی پیدا میشه

                        دیدگاه


                          #13
                          پاسخ : ساخت فرکانس متر

                          :redface:
                          ادمهای خوب تو eca خیلی پیدا میشه

                          دیدگاه


                            #14
                            پاسخ : ساخت فرکانس متر

                            خوب گفتم که باید الگوریتم طوری باشه که اول یه جواب در محدوده نزدیک پیدا کنه و مرتبا به سمت جواب دقیق تر بره و مثلا اگه 10 ثانیه طول کشید با دقت 0.1 هرتز جواب رو بده
                            بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
                            اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

                            دیدگاه

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