اطلاعیه

Collapse
No announcement yet.

رفع عیب برنامه فرکانس متر

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

    رفع عیب برنامه فرکانس متر

    سلام بر اساتید محترم انجمن
    یه برنامه ای به دستم رسیده به این صورت:
    $regfile = "m32def.dat"
    $crystal = 8000000
    '----------
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = _
    Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
    Cursor Off
    '-----------
    Config Timer1 = Counter , Edge = Rising
    Ddrb.1 = 0
    Portb.1 = 1
    '-------
    Config Timer0 = Timer , Prescale = 1024
    '---------------
    Enable Timer1
    Enable Timer0
    Enable Interrupts

    '---------------------
    On Ovf1 Pulse_counter
    On Ovf0 Displays
    '-------------------
    Dim A As Long , B As Byte , I As Long
    B = 0
    '----------------------------
    Cls
    Locate 1 , 1
    Lcd "Frequency meter"
    Locate 2 , 1
    Lcd "avrprojects.info"
    Wait 5
    Cls
    '-----------------------
    Start Timer0
    '------------
    Do
    Loop
    End 'end program
    '--------------
    Displays:
    Incr I
    If I > 30 Then
    Stop Timer0
    Cls
    Home
    A = B * 65536
    A = A + Counter1
    Lcd "Frequency:"
    Locate 2 , 1
    Lcd A ; " HZ"

    B = 0
    I = 0
    Counter1 = 0
    Start Timer0
    End If
    Return
    '----------------------
    Pulse_counter:
    Incr B
    Counter1 = 0
    Return
    طبق اطلاعاتی که من دارم برای به دست آوردن فرکانس پالس ورودی به میکرو اول باید با تایمر یک ثانیه دقیق ساخت(احتمالا با کریسال ساعت)بعد تو این یک ثانیه پالس هارو با کانتر شمرد و....ولی در مور این برنام من متوجه نمیشم چی شده.اون قسمت چرا ifگزاشته بعد مگه میشه اینطوری نوشت؟A=A*counter کلا این برنامه جواب میده؟درسته؟کلا اگه ممکنه زیربرنامه های اینتراپت ها رو واسم توضیح بدین.
    ممنون

    #2
    پاسخ : رفع عیب برنامه فرکانس متر

    دوستان ممنون میشم راهنمایی کنید

    دیدگاه


      #3
      پاسخ : رفع عیب برنامه فرکانس متر

      سلام
      جونم واست بگه که استفاده کردن از تایمر 1 واسه زمان سنجی کار تو این پروژه کار بسیار بسیار اشتباهیه ....
      اون تایمری که کریستال ساعت بهش میخوره و باهاش میشه "یک ثانیه دقیق " رو ساخت ، تایمر دو هست ...
      با prescale 128 . واسه شمردن پالس تو هر ثانیه میتونی از هر تایمری که کانتر داشته باشه استفاده کنی ...
      حالا واسه بهتر شدن پاسخ سیستم ، شما میتونی با تایمر دو ، زمان 0.5 ثانیه رو در بیاری و رو این مانور بدی ..
      حالا طبق رابطه فرکانس شما میتونی مقدار دقیق فرکانس رو بدست بیاری
      (من خودم یه بار این کار رو کردم )
      اگه بدردت خورد "تشکر" رو اشارتی بنما ...................
      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

      دیدگاه


        #4
        پاسخ : رفع عیب برنامه فرکانس متر

        واقعا ممنون از جوابتون
        در مورد اون if تو برنامه چی؟اونو چرا گزاشته؟
        درضمن نهایت فرکانس مورد نیاز من 150 هرتز هست نه بیشتر.در حقیقت من اینو واسه نمایش rpmرو lcdاستفاده کردم

        دیدگاه


          #5
          پاسخ : رفع عیب برنامه فرکانس متر

          خواهش میکنم ..
          ببینید ، من اگه جای شما بودم برنامه رو از بیخ خودم مینوشتم ..
          چون این میشه "یه تجربه + تجربه های قبلیم" ...
          شروع کن تا کمکت کنم ...
          برنامه رو تا یه جاهایی پیش ببر ، بقیه ش رو هم باهم مینویسیم ...
          این روندی که گفتم میتونه تا فرکانسهای بالاتر رو هم با دقت مناسب بخونه ...
          تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
          علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

          دیدگاه


            #6
            پاسخ : رفع عیب برنامه فرکانس متر

            سلام دوست عزیز و واقعا ممنون از راهنمایی و پیشنهاد شما
            من برنامه رو بازنویسی کردم برای میکرو مگا8 و تایمر2 و با توجه به استفاده از کریستال ساعت و تولید 1ثانیه دقیق پس نیازی به اون ضرب و if نیست.کلی فکر کردم تا فهمیدم برای تنظیم زمانش اومده اون if و ضرب رو انجام داده. :redface:البت اگه درست فهمیده باشم!و درضمن من چون میخوام دوران در دقیقه رو تو lcdنمایش بدم.و rpm=freq*60 پس اینطوری نوشتم.ممنون میشم نظر بدین و اگه عیبی داره راهنماییم کنید.
            این علامت "ها به هم ریختن اینجا!rpm ای که تو خط اول lcdزاشتم متنه نه متغیر!
            پیشاپیش ممنون
            $regfile = "m8def.dat"
            $crystal = 8000000
            Config Lcd = 16 * 2
            Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
            Cursor Off
            Config Timer1 = Counter , Edge = Rising
            Config Portd.5 = Input
            Portd.5 = 1
            Config Timer2 = Timer , Async = On , Prescale = 128
            Dim F As Long , Rpm As Long
            F = 0
            Rpm = 0
            '---------------
            Enable Timer1
            Enable Timer2
            Enable Interrupts
            '---------------------
            On Ovf1 Pulse_counter
            On Ovf2 1s
            '---------------------
            Cls
            Locate 1 , 3
            Lcd "TACHOMETER"
            Locate 2 , 4
            Lcd "H.SALARI"
            Wait 5
            Cls
            '---------------------
            Start Timer2
            '------------
            Do
            Loop
            End
            '------------
            1s:
            Stop Timer2
            Cls
            Home
            F = Counter1
            Rpm = F * 60
            Lcd " RPM:"
            Locate 2 , 5
            Lcd Rpm ; " R/M"
            Counter1 = 0
            Rpm = 0
            F = 0
            Start Timer2
            Return
            '------------
            Pulse_counter:
            Counter1 = 0
            Return

            دیدگاه


              #7
              پاسخ : رفع عیب برنامه فرکانس متر

              ببخشید ، من یه جاشو متوجه نمیشم :eek: :eek: :eek:
              پالسها دقیقا کجا دارن شمارش میشن؟؟
              من فقط تو زیر برنامه کانتر(تایمر 1) میبینم که اومدین متغیر مربوط به پالسها رو 0 کردین !!!
              تو این زیر برنامه باید پالسها باهم جمع بشن و در آخر زیر روال تایمر 2 باید مقدارش 0 بشه ...
              اصلاح کن ...
              بسم الله ...
              تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
              علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

              دیدگاه


                #8
                پاسخ : رفع عیب برنامه فرکانس متر

                نوشته اصلی توسط pars_paya
                ببخشید ، من یه جاشو متوجه نمیشم :eek: :eek: :eek:
                پالسها دقیقا کجا دارن شمارش میشن؟؟
                من فقط تو زیر برنامه کانتر(تایمر 1) میبینم که اومدین متغیر مربوط به پالسها رو 0 کردین !!!
                تو این زیر برنامه باید پالسها باهم جمع بشن و در آخر زیر روال تایمر 2 باید مقدارش 0 بشه ...
                اصلاح کن ...
                بسم الله ...
                دقیقا مشکل من هم همینه من اصلا اینجاهاشو متوجه نشدم !کورکورانه از قبلی کپی کردم.برد بورد هم بستم مقدار رو درست نشون نمیده
                مشکل من اینه که یکم کارم تعجیلیه.برنامه نمیسیم هم خیلی ضعیفه.ممنون میشم بهتر راهنماییم کنید.
                وقتی که تایمر2 سر ریز میکنه یعنی 1 ثانیه شده.باید تو این یک ثانیه مقدار ورودی کانتر رو به دست بیاریم.که همون فرکانسه.مشکل من اینه که نمیدونم چطور باید اینکار رو انجام بدم.میدونم تایمر رو 1 ثانیه میپره به زیر برنامه.و میدونم کانتر هر 255 پالسی که گرفت سر ریز میشه.ما که به تعداد 255کاری نداریم پس باید صفرش کنیم تا باز بشماره دیگه.ما کلا به سر ریز کانتر کاری نداریم.(داریم؟)کلا وقتی تایمر سر ریز کرد یعنی 1 ثانیه بای مقدار کانتر رو بدیم به lcd!
                بازم ممنون از جوابتون

                دیدگاه


                  #9
                  پاسخ : رفع عیب برنامه فرکانس متر

                  ببینید کانتر کارش اینه که میاد پالسهای وارد شده به پین مشخص شده ش رو میشمره ....
                  حالا وقتی تایمر 2 سرریز میشه (یک ثانیه بدست میاد) در ابتدای زیر روال تایمر 2 باید تعداد پالسها رو بخونی ،خط بعدی فرکانس رو حساب کنی ، خطوط بعدی هر زیر روالی که خودتون دارین رو اضافی میکنین ، در خط آخر میاین و مقدار کانتر 1 رو صفر میکنین تا از اول بشماره ......
                  تو زیر روال کانتر کاری نخواهید کرد جز افزایش یه متغییر(همون تعداد پالسها)
                  راهنمایی از این شفاف تررررررررررررررررررررر؟؟؟؟
                  تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                  علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                  دیدگاه


                    #10
                    پاسخ : رفع عیب برنامه فرکانس متر

                    نوشته اصلی توسط pars_paya
                    ببینید کانتر کارش اینه که میاد پالسهای وارد شده به پین مشخص شده ش رو میشمره ....
                    حالا وقتی تایمر 2 سرریز میشه (یک ثانیه بدست میاد) در ابتدای زیر روال تایمر 2 باید تعداد پالسها رو بخونی ،خط بعدی فرکانس رو حساب کنی ، خطوط بعدی هر زیر روالی که خودتون دارین رو اضافی میکنین ، در خط آخر میاین و مقدار کانتر 1 رو صفر میکنین تا از اول بشماره ......
                    تو زیر روال کانتر کاری نخواهید کرد جز افزایش یه متغییر(همون تعداد پالسها)
                    راهنمایی از این شفاف تررررررررررررررررررررر؟؟؟؟
                    بازم ممنون از راهنماییتون
                    خوب خوندن تعداد پالس ها یعنی همون مساوی قرار دادن کانتر با یه متغیر!دیگه محاسبه فرکانس نداره که.تعداد پالس هایی که تو یه ثانیه شمرده شده میشه همون فرکانس پالس.تعداد لبه های بالا رونده در هر ثانیه!کانتر هم که صفر کردم.تو زیر برنامه کانتر هم که یکی به متغیری که کانتر رو میریختم توش اضافه کردم.حالا چطوره؟
                    حالا چطوری؟
                    در کل من زیاد با میکرو راحت نیستم.
                    1s:
                    Stop Timer2
                    Cls
                    Home
                    F = Counter1
                    Rpm = F * 60
                    Lcd " RPM:"
                    Locate 2 , 5
                    Lcd Rpm ; " R/M"
                    Counter1 = 0
                    Start Timer2
                    Return
                    '------------
                    Pulse_counter:
                    Incr F
                    Counter1 = 0
                    Return

                    دیدگاه


                      #11
                      پاسخ : رفع عیب برنامه فرکانس متر

                      مهندس با چی کار میکردی قبل از این (گفتی با میکرو راحت نیستی)؟؟
                      خب..
                      تا اینجاشو خوب اومدیم جلو ..
                      برنامه نهایی رو میذارم واست ..

                      [code=c]
                      1s:
                      Stop Timer2
                      Cls
                      Home
                      F = Counter1
                      Rpm = F * 60
                      Lcd " RPM:"
                      Locate 2 , 5
                      Lcd Rpm ; " R/M"
                      Counter1 = 0
                      f=0
                      Start Timer2
                      Return
                      '------------
                      Pulse_counter:
                      Incr F

                      Return[/code]
                      همین ....
                      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                      دیدگاه


                        #12
                        پاسخ : رفع عیب برنامه فرکانس متر

                        آقا یه دنیا ممنون.زحمت کشیدین
                        والا من رشتم الکترونیکه(کاردانی به کارشناسی)ولی با طراحی مکانیک و پنوماتیک هیدرولیک خیلی راحت ترم.طراحی ساختار.با میکرو یکم !مشکل دارم
                        بازم ممنون

                        دیدگاه


                          #13
                          پاسخ : رفع عیب برنامه فرکانس متر

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

                          دیدگاه

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