اطلاعیه

Collapse
No announcement yet.

بدست آوردن فرکانس با ADC

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

    #16
    پاسخ : بدست آوردن فرکانس با ADC

    جناب گیلانی سرچ کردم چیز زیادی دستگیرم نشد البته مفهوم دسته بندی خانوادگیه که فکر کنم در مواردی به کار بیاد که فرکانسها با ضریب ثابتی باشن ولی دامنه ها متغیر
    میشه لطف کنین یه راهنمایی کلی به ما بدین خیلی جالبه
    بعدا یه جمله قشنگ مینویسم

    دیدگاه


      #17
      پاسخ : بدست آوردن فرکانس با ADC

      با سلام.
      دوستان اگر بخواهیم مثلا یه فرکانس 10KHz رو با A2D نمونه برداری کنیم و فرضا روی LCD گرافیکی نشون بدیم با A2D خود میکرو میشه این کارو کرد ؟
      اگه از A2D خارجی استفاده کنیم چی ؟
      اگه چیزی بلدیم به بقیه هم یاد بدیم ....

      دیدگاه


        #18
        پاسخ : بدست آوردن فرکانس با ADC

        سلام آقا نوید
        لطفا اگه ممکن اندازگیری فرکانس با تایمر رو کمی توضییح بدین ؟
        من هم همین چیزی میخوام بسازم
        ممنون از همه دوستان :agree:
        بدون امضاء

        دیدگاه


          #19
          پاسخ : بدست آوردن فرکانس با ADC

          سلام آقا نوید
          لطفا اگه ممکن اندازگیری فرکانس با تایمر رو کمی توضییح بدین ؟
          من هم همین چیزی میخوام بسازم
          ممنون از همه دوستان :agree:
          ببین دوست عزیز درمورد اندازه گیری فرکانس با تایمر ، چیزه خیلی راحتیه
          اول شما میای از تایمر/کانتر 1 (حتما میبایست تایمر/کانتر 16 بیتی باشد) روی مد کانتر استفاده میکنی و سپس با استفاده از تایمر 2(در بعضی میکرو ها مثل مگا128 تایمر 0 روی مد اسنکرون کار میکنه) روی مد آسنکرون زمان یک ثانیه رو تولید و سپس هر یک ثانیه یک بار مقدار کانتر 1 رو خوانده و سپس صفرش کنید ، نیاز به ضرب و تقسم هم نداره
          به همین سادگی :mrgreen:
          دلا خو کن به تنهایی که از تنها بلا خیزد

          دیدگاه


            #20
            پاسخ : بدست آوردن فرکانس با ADC

            سلام دوست عزیز
            یه سوال دیگه : من میخوام از یک کانال A2D یه سیگنال آنالوگ رو بخونم و اون رو تو بافر ذخیره کنم بعد با استفاده از گذر مقدار فرکانس اون رو اندازگیری کنم میخواستم کمک ام کنید برنامه اش رو نوشتم ولی درست جواب نمیده ، با گذر از صفر اول تایمر روشن بشه و با گذر از صفر دومی تایمر استپ بشه و.لی نمی دونم چرا درست جواب نمیده شما راه حل بهتری به غیر از کانتر داری ؟ :read:
            بدون امضاء

            دیدگاه


              #21
              پاسخ : بدست آوردن فرکانس با ADC

              ببینید بهترین راه اندازه گیری فرکانی با A2D تبدیل اون به ولتاژه
              با ای سی LM2907
              که تو کیلومتر ماشینا و ECU استفاده میشه .
              خیلی عالیه
              دلا خو کن به تنهایی که از تنها بلا خیزد

              دیدگاه


                #22
                پاسخ : بدست آوردن فرکانس با ADC

                ممنون از راهنمایی ، ولی مشکل چیز دیگه است برنامه ای که نوشتم به ظاهر درست ولی نمی دونم چرا تایمر 1 خودش شروع به کار می کن من گفتم که با گذر از صفر اول روشن بشه و با گذر از صفر دوم خاموش بشه و بعد این مدت زمان رو اندازگیری کنم و تبدیل به فرکانس کنم ولی این تایمر حالم رو گرفته ؟؟؟؟؟؟؟ :angry:
                این هم برنامه :
                [][le]$regfile = "m32def.dat"ft
                $crystal = 11059200
                $sim
                Dim N As Word , M As Word , Odd(300) As Integer , Even(300) As Integer , _
                , T As Word , F As Integer , Full_odd As Bit , Full_even As Bit , Vp As Word , _
                X As Word , Z As Single , Vp1 As Integer , Vp_olld As Integer , Vp2 As Single , _
                Vp3 As String * 5 , Tim_fre As Single , Frequnce(50) As Word , Cun_fer As Byte , _
                Tim_fre1 As String * 4

                Config Pind.7 = Output
                Portd.7 = 0
                Config Lcd = 16 * 2
                Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 _
                , E = Pind.6 , Rs = Pinc.3
                Config Adc = Single , Prescaler = Auto , Reference = Avcc
                Start Adc
                Config Timer0 = Timer , Prescale = 8
                Config Timer1 = Timer , Prescale = 64
                Enable Interrupts
                Enable Timer0
                On Ovf0 Tim_isr
                Declare Sub Fercunce1 '{}

                Declare Sub Vmax {z As Single , Vp1 As Integer , Vp_olld As Integer , 'Full_even As Bit , Full_odd As Bit , Vp2 As Single , Vp3 As Single}
                Timer0 = &HA5 : M = 0 : N = 0 : Full_even = 0 : Full_odd = 1
                Cls : Cursor Blink
                '-------------------------------------------------------------------------------
                Main:
                Start Timer0

                Do


                Loop

                End

                '-------------------------------------------------------------------------------
                Tim_isr:
                If Full_even = 0 And Full_odd = 1 Then
                Even(m) = Getadc(7)
                Incr M
                Timer0 = &HA5
                If M >= 300 Then
                Full_even = 1 : Full_odd = 0 : M = 0 : N = 0
                Cls : Home : Call Vmax : Call Fercunce1 : Lcd "no"
                End If
                End If
                If Full_odd = 0 And Full_even = 1 Then
                Odd(n) = Getadc(7)
                Incr N
                Timer0 = &HA5
                If N >= 300 Then
                Full_odd = 1 : Full_even = 0 : M = 0 : N = 0
                Cls : Home : Call Vmax : Call Fercunce1 : Lcd "yes"
                End If

                End If
                Return
                '----------------------------------------------------------------
                Sub Fercunce1:

                Cun_fer = 0 : Timer1 = 0
                If Full_even = 1 Then
                For M = 1 To 300
                If Even(m) = 0 Then
                If Cun_fer = 2 Then
                Stop Timer1
                Else
                Incr Cun_fer
                Start Timer1
                End If

                End If
                Next
                Else
                For N = 1 To 300
                If Odd(n) = 0 Then
                If Cun_fer = 2 Then
                Stop Timer1
                Else
                Incr Cun_fer
                Start Timer1
                End If
                End If
                Next
                End If

                Tim_fre = Timer1
                Tim_fre = 1 / Tim_fre
                Tim_fre1 = Fusing(tim_fre , "#.##&quot
                Locate 2 , 1 ': Lcd Tim_fre
                Lcd Tim_fre1
                End Sub

                '--------------------------------------------------
                Sub Vmax :
                Z = 0.0048875855
                If Full_even = 1 Then
                Vp1 = Abs(even(1))
                For M = 2 To 300
                Vp_olld = Abs(even(m))
                If Vp1 < Vp_olld Then
                Vp1 = Abs(vp_olld)
                End If
                Next
                Else
                Vp1 = Abs(odd(1))
                For N = 2 To 300
                Vp_olld = Abs(odd(n))
                If Vp1 < Vp_olld Then
                Vp1 = Abs(odd(n))
                End If
                Next
                End If


                Cls : Home
                Vp2 = Vp1 * Z
                Vp3 = Fusing(vp2 , "#.##&quot 'vp3 string*5
                Cls : Home : Lcd "Vmax="
                Lcd Vp3
                End Sub
                '----------[/left][/left]----------------------------

                Sub Fercunce1 زیر برنامه محاسبه فرکانس است اگه امکانش هست یه بررسی بکنید اعصابم رو خورده کرده
                بدون امضاء

                دیدگاه


                  #23
                  پاسخ : بدست آوردن فرکانس با ADC

                  دوست من شما وقتی تو بسکام تایمر رو تعریف میکنی بلافاصله بعدش باید تایمر رو STOP کنی :nerd:
                  دلا خو کن به تنهایی که از تنها بلا خیزد

                  دیدگاه


                    #24
                    پاسخ : بدست آوردن فرکانس با ADC

                    خیلی ممنوع از راهنمایی شما ولی علت این کار چی ؟ بازم ممنون :applause:
                    بدون امضاء

                    دیدگاه


                      #25
                      پاسخ : بدست آوردن فرکانس با ADC

                      ببینید شما وقتی تایمر رو کانفیگ میکنید یه مقداری توی رجیستر تایمر ریخته میشه ، و هنگامی که رجیستر تایمر دارای مقدار شد خوب معلومه دیگه START میشه ، و وقتی اون رو STOP میکنید مقدار در پشته ذخیره میشه و مقدار صفر در اون رجیستر Load میشه ، و هنگامی که دوباره استارتش میکنید اون مقدار از پشته خونده میشه و دوباره در تایمر/کانتر Load میشه .................................................. ........ :nerd:
                      دلا خو کن به تنهایی که از تنها بلا خیزد

                      دیدگاه


                        #26
                        پاسخ : بدست آوردن فرکانس با ADC

                        باfft نرم افزاری تو میکرو نمیشه بهترین راه اینه که با 32 فیلترrc میان گذر و حذف سخت افزاری دامنه خروجی رو به میکرو بدی

                        فیلتر smd کوچکتر در میاد الیته من خیلی در این زمینه تلاش کردم تقریبا هم موفق شدم در ضمن اول فرکانس هر حرف رو
                        باید بدست بیارب مثلا مال حرف "ا" یک فرکانس اصلی 1کیلو و 4 فرکانس فری با هارمونیک هستش

                        دیدگاه


                          #27
                          پاسخ : بدست آوردن فرکانس با ADC

                          از لطف دوستان خیلی ممنون :applause:
                          این فیلتر ها رو میشه کمی بیشتر توضییح بدین ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
                          fft رو هم همین طور ؟
                          بدون امضاء

                          دیدگاه


                            #28
                            پاسخ : بدست آوردن فرکانس با ADC

                            آقا نوید یه مشکل دیگه !!!!!!!!!!!
                            من تو برنامه گفته بودم با گذر از صفر اول تایمر روشن بشه و با گذر از صفر بعدی خاموش بشه ولی تو شبیه ساز یه فرکانس 45 هرتز بهش میدم ولی تایمر همش عدد 3 یا 4 رو می شماره ، فکر کنم که دقت ADC خیلی خوبه نیست و به محض صفر شدن نمونه بعدی رو هم صفر می بینه ؟؟؟؟؟؟؟؟؟؟

                            این روش FFT چی ؟

                            شما با اون تونستید کار کنید ؟

                            راستش من میخوام یه آنالایزر انرژی بسازم فعلا تو برنامه فرکانس متر گیر کردم :agree:
                            بدون امضاء

                            دیدگاه

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