اطلاعیه

Collapse
No announcement yet.

ساخت سیگنال سینوسی مطلوب از PWM میکرو !

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

    ساخت سیگنال سینوسی مطلوب از PWM میکرو !

    با سلام خدمت دوستان.
    بنده نیاز به یک سیگنال تقریبا سینوسی با دامنه 80 تا 100 ولت نیاز دارم (شما فرض کنید میخام این سیگنال رو مواقع خاصی به یک آی سی بدم).
    برای اینکار اولین چیزی که به ذهنم رسید این بود که یه سیگنال با دامنه کم رو که جریانش تقویت شدست رو به یه ترانس افزاینده بدم.
    ولی خوب همین سیگنال ورودی ترانس ما از میکرو به شکل pwm تامین میشه. و ترانس هم نمیتونه کاری روی این شکل موج انجام بده.
    سوال بنده از اساتید محترم این است که چطور این PWM رو به سینوسی (یا تقریبا سینوسی) با همون دامنه تبدیل کنم تا بتونم به ترانسم اعمالش کنم.
    آیا از DAC استفاده کنم ... یا فیلتری چیزی.
    ممنون

    #2
    پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

    با سلام
    شما فقط باید در مدت زمان 10 میلی ثانیه مقدار pwmرو از صفر به 100 درصد و از 100 درصد یه صفر برسونی .بعد سیگنال خروجی میکرو رو با ماسفت بافر کن و خروجی ماسفت رو بده به ترانس.البته یادت باشه ماسفت رو به صورت پل h طراحی کن
    روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

    دیدگاه


      #3
      پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

      حل شد عزیز .
      مرسی

      دیدگاه


        #4
        پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

        سیگنال سینوسی مدوله شده به روش pwm رو میتونی با گذاشتن یه فیلتر پایین گذر ساده RC ظاهر کنی
        ضمنن وقتی به راه حلتون می رسین جواب رو بزارین تا سایر دوستان نیز از اون استفاده کنن :agree: بله
        خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
        [hr]

        دیدگاه


          #5
          پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

          حل شد که باید بگم حل نشد ...
          البته با تشکر از کمک آقای رضایی عزیز، حرکت پیشنهادی ایشون رو که فرمودند انجام دادم ولی بازم جواب نگرفتم ...
          از اونجایی که وقتم کم بود و نمی تونستم بیشتر از این با ترانس ور برم کاری که کردم ترانسم رو عوض کردم و توسط میکرو، رله ی سمته خروجی رو کنترل کردم... در واقع می خواستم 220 رو نیارم تو مدارم که نشد دیگه ه ه ه.
          این شد که گفتم حل شد مهندس 4850 عزیز.

          دیدگاه


            #6
            پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

            با سلام
            کجاش مشکل داشتی
            تغییر دادن مقدار pwm در زمان مربوطه ؟
            بافر کردن سیگنال خروجی؟
            تغییر پلاریته؟
            یا جای دیگه
            روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

            دیدگاه


              #7
              پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

              من به روش dds تونستم سیگنال سینوسی با میکرو تولید کنم با روش جدید و ابتکاری
              که شما می تونید دامنه - فرکانس رو به راحتی کنترل کنید و ان روش این است : اول متغییر ها رو تعریف کن و بعد از این دستورات استفاده بنما
              و با تغییر متغیر ها دامنه و فرکانس رو تغییر بده دامنه به درصد G و فرکانس B است. البته این روش ربطی به pwm ندارد ئ از آن خیلی بهتر است.
              :applause:
              کد:
               
              A = 1
              B = 200
              C = 50
              F = 500
              G = 99
                H = G
                G = G - 14
                G = G * 3                        'damne tabdil be hex
                F = F / B                        'mohasebe T *500
                D = F * C                        'mohasebe takhire 1
                E = 100 - C
                E = F * E                        'mohasebe takhire 2
                D = D / 10
                E = E / 10
                G = G / 2
                Do
                For I = 0 To 360 Step 3
                J = I
                J = Deg2rad(j)
                J = Sin(j)
                J = J * G
                J = Int(j)
                J = J + 128
                Portd = J
                For L = 1 To D
                nop
                Next L
                Next I
                Loop

              sigpic

              دیدگاه


                #8
                پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

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

                دیدگاه


                  #9
                  پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

                  نوشته اصلی توسط جعفر رضائی
                  با سلام
                  بهتون تبریک میگم شما به یه موفقیت بزرگ رسیدین
                  البته اگه در مورد این برنامه ای که گذاشتین و سخت افزار مدارتون هم توضیحاتی بفرمایید تا ما رو هم از علمتون بهرمند کنید .ازتون ممنون میشیم
                  این روش همون روش dds معروف هست که به ازای هر عدد یک مقدار دیجیتالی در خروجی ظاهر می کند و تمام کسانی که از این روش استفاده کرده اند به نوعی کد ها رو تولید کرده اند که این کار با نرم افزار مطلب به آسانی قابل انجام است و آنرا در برنامه وارد کرده اند.
                  اما من با استفاده از معادله ی دقیق هر شکل موج و محاسبات ریاضی توسط خود میکرو هر عدد را متناسب با فرکانس و دامنه و در بخش موج مربعی و مثلثی دیوتی سایکل محاسبه کرده و در پورت قرار داده ام .
                  اینم برنامه
                  کد:
                  $regfile = "m8def.dat"
                  $crystal = 16000000
                  
                  Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
                  
                  Config Lcd = 16 * 2
                  Cursor Off
                  
                  Config Portd = Output
                  
                  Dim A As Byte
                  Dim B As Word
                  Dim C As Byte
                  Dim D As Word
                  Dim E As Word
                  Dim F As Word
                  Dim G As Byte
                  Dim H As Byte
                  Dim I As Word
                  Dim J As Single
                  Dim K As Byte
                  Dim L As Byte
                  Dim M As Byte
                  
                  Ddrb.0 = 0 : Portb.0 = 1
                  Ddrb.1 = 0 : Portb.1 = 1
                  Ddrb.2 = 0 : Portb.2 = 1
                  Ddrb.3 = 0 : Portb.3 = 1
                  Ddrb.4 = 0 : Portb.4 = 1
                  Ddrb.5 = 0 : Portb.5 = 1
                  
                  Declare Sub A0
                  Declare Sub A1
                  Declare Sub A2
                  Declare Sub A3
                  Declare Sub A4
                  Declare Sub A5
                  Declare Sub A6
                  Declare Sub A7
                  Declare Sub A8
                  Declare Sub A9
                  Declare Sub A10
                  Declare Sub A11
                  Declare Sub A12
                  Declare Sub A13
                  Declare Sub A14
                  Declare Sub A15
                  Declare Sub A16
                  Declare Sub A17
                  
                  A = 1
                  B = 200
                  C = 50
                  F = 500
                  G = 99
                  
                  Config Debounce = 30
                  Cls
                  Main1:
                  Cls
                  Do
                    Debounce Pinb.2 , 0 , A1
                    Debounce Pinb.0 , 0 , A2
                    Home
                    Lcd "SELECT WAVEFORM?"
                    Lowerline
                    If A = 1 Then
                    Lcd "WAVE IS:SINE  "
                    Elseif A = 2 Then
                    Lcd "WAVE IS:SQUARE "
                    Else
                    Lcd "WAVE IS:TRIANGLE"
                    End If
                  Loop
                  
                  Main2:
                  Cls
                  Do
                    Debounce Pinb.2 , 0 , A3
                    Debounce Pinb.3 , 0 , A4
                    Debounce Pinb.4 , 0 , A5
                    Debounce Pinb.5 , 0 , A6
                    Debounce Pinb.0 , 0 , A7
                    Debounce Pinb.1 , 0 , A0
                    Home
                    Lcd "SET FREQUENCY ? "
                    Lowerline
                    Lcd "F is:" ; B ; "Hz NEXT>"
                  Loop
                  
                  Main3:
                  Cls
                  Do
                    Debounce Pinb.2 , 0 , A8
                    Debounce Pinb.3 , 0 , A9
                    Debounce Pinb.4 , 0 , A10
                    Debounce Pinb.5 , 0 , A11
                    Debounce Pinb.0 , 0 , A12
                    Debounce Pinb.1 , 0 , A0
                    Home
                    Lcd "SET DUTY CYCLE ?"
                    Lowerline
                    Lcd "D.C.is:" ; C ; "% NEXT>"
                  Loop
                  
                  Main4:
                  Cls
                  Do
                    Debounce Pinb.2 , 0 , A13
                    Debounce Pinb.3 , 0 , A14
                    Debounce Pinb.4 , 0 , A15
                    Debounce Pinb.5 , 0 , A16
                    Debounce Pinb.0 , 0 , A17
                    Debounce Pinb.1 , 0 , A0
                    Home
                    Lcd "SET AMPLITUDE ? "
                    Lowerline
                    Lcd "AMP.is:" ; G ; "% NEXT>"
                  Loop
                  
                  Main5:
                    H = G
                    G = G - 14
                    G = G * 3                        'damne tabdil be hex
                    F = F / B                        'mohasebe T *500
                    D = F * C                        'mohasebe takhire 1
                    E = 100 - C
                    E = F * E                        'mohasebe takhire 2
                    D = D / 10
                    E = E / 10
                    Cls
                    Lcd "WAVE F DC AMP"
                    Lowerline
                    If A = 1 Then
                    Goto Main6
                    Elseif A = 2 Then
                    Goto Main7
                    Else
                    Goto Main8
                    End If
                  Main6:
                    Lcd "SIN. " ; B ; " " ; "50 " ; H
                    G = G / 2
                    Do
                    For I = 0 To 360 Step 3
                    J = I
                    J = Deg2rad(j)
                    J = Sin(j)
                    J = J * G
                    J = Int(j)
                    J = J + 128
                    Portd = J
                    For L = 1 To D
                    Waitus 1
                    Next L
                    Next I
                    Loop
                  
                  Main7:
                    Lcd "SQU. " ; B ; " " ; C ; " " ; H
                    Do
                    Portd = G
                    For L = 1 To D
                    Waitus 240
                    Next L
                    Portd = 0
                    For L = 1 To E
                    Waitus 240
                    Next L
                    Loop
                  
                  Main8:
                    Lcd "TRI. " ; B ; " " ; C ; " " ; H
                    Do
                    For M = 1 To G
                    Portd = M
                    For L = 1 To D
                    Waitus 2
                    Next L
                    Next M
                    For M = G To 1 Step -1
                    Portd = M
                    For L = 1 To E
                    Waitus 2
                    Next L
                    Next M
                    Loop
                  
                  
                  
                  End                             'end program
                  
                  Sub A0:
                    Goto Main1
                  End Sub A0
                  
                  Sub A1:
                  If A < 3 Then
                    Incr A
                    Else
                    A = 1
                    End If
                    Goto Main1
                  End Sub A1
                  
                  Sub A2:
                    Goto Main2
                  End Sub A2
                  
                  
                  Sub A3:
                  If B < 500 Then
                    Incr B
                    Else
                    B = 500
                    End If
                    Goto Main2
                  End Sub A3
                  
                  Sub A4:
                  If B > 0 Then Decr B
                    Goto Main2
                  End Sub A4
                  
                  Sub A5:
                  If B < 480 Then
                    B = B + 20
                    Else
                    B = 500
                    End If
                    Goto Main2
                  End Sub A5
                  
                  Sub A6:
                  If B > 20 Then B = B - 20
                    Goto Main2
                  End Sub A6
                  
                  Sub A7:
                    Goto Main3
                  End Sub A7
                  
                  Sub A8:
                  If C < 99 Then
                    Incr C
                    Else
                    C = 99
                    End If
                    Goto Main3
                  End Sub A8
                  
                  Sub A9:
                  If C > 0 Then Decr C
                    Goto Main3
                  End Sub A9
                  
                  Sub A10:
                  If C < 90 Then
                    C = C + 10
                    Else
                    C = 99
                    End If
                    Goto Main3
                  End Sub A10
                  
                  Sub A11:
                  If C > 10 Then C = C - 10
                    Goto Main3
                  End Sub A11
                  
                  Sub A12:
                    Goto Main4
                  End Sub A12
                  
                  Sub A13:
                  If G < 99 Then
                    Incr G
                    Else
                    G = 99
                    End If
                    Goto Main4
                  End Sub A13
                  
                  Sub A14:
                  If G > 14 Then Decr G
                    Goto Main4
                  End Sub A14
                  
                  Sub A15:
                  If G < 90 Then
                    G = G + 10
                    Else
                    G = 99
                    End If
                    Goto Main4
                  End Sub A15
                  
                  Sub A16:
                  If G > 24 Then G = G - 10
                    Goto Main4
                  End Sub A16
                  
                  Sub A17:
                    Goto Main5
                  End Sub A17
                  اینم مدار و عکس ها
                  http://upir.ir/files/2c1e9e0750711.rar


                  sigpic

                  دیدگاه


                    #10
                    پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

                    با سلام
                    ایول ایول
                    واقعا قابل تقدیر هست
                    در داخل شماتیک مدارتون اون قسمتی که شبیه به مدار تقسیم ولتاژ هست توجهم رو جلب کرد چون برای بار اول هست این ارایش رو میبینم من قبلا روش R-2R رو دیده بودم و خودم از اون استفادهکردم .ولی این جالب هست .میشه کم در موردش توضیح بدید
                    روزی که درک کردیم همه چیز به خدا تعلق دارد . آن روز .روز طلوع دانش است

                    دیدگاه


                      #11
                      پاسخ : ساخت سیگنال سینوسی مطلوب از PWM میکرو !

                      نوشته اصلی توسط جعفر رضائی
                      با سلام
                      ایول ایول
                      واقعا قابل تقدیر هست
                      در داخل شماتیک مدارتون اون قسمتی که شبیه به مدار تقسیم ولتاژ هست توجهم رو جلب کرد چون برای بار اول هست این ارایش رو میبینم من قبلا روش R-2R رو دیده بودم و خودم از اون استفادهکردم .ولی این جالب هست .میشه کم در موردش توضیح بدید
                      بله یک مدار دیجیتال به انالوگ ساده مقاومتی است و چون در مدار اصلی به جای اسیلوسکوپ از یک تقویت کننده پ امپی استفاده می شود و مشکلی پیش نمی آید.

                      sigpic

                      دیدگاه

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