اطلاعیه

Collapse
No announcement yet.

چگونه همه پایه های میکروکنترلر AVR را PWM کنیم ؟؟

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

    #46
    پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

    نوشته اصلی توسط shima and pariya
    مرسی بابت اینکه وقت میزارید و پاسخ کاربرا رو میدید
    منظورم اسکپ بود!!!!!!!!! oo: :sad:
    نرم افزار دیگه ای هست که بشه باهاش این تغییر شدت نور رو مشاهده کرد و نیازی نباشه واسه تست مدار ببندم؟
    مدار سختی نیستاااا
    خیلی سادست ...
    روی عمل تستش کن ... خیلی بهتره ... به دو دلیل مهم :
    1. ولتاژ گامای هر LED فرق میکنه ... بنابراین نورش هم با توجه به جریانش فرق میکنه
    2. برنامه شبیه سازی سرعتش پایینه و به عملی نمیرسه ... پس زمان تاخیر و سرعت تغییر شدت نور از دست ما خارج میشه

    یه مداری هست که میتونید PWM رو به ولتاژ تبدیل کنید ...
    البته برای هر خروجی اگر قرار باشه این مدار رو بگذاریم باز هم پردازش کم میاره ...
    این هم مدار

    این مدار مربوط میشه به مبدل PWM به ولتاژ
    با این میشه شدت نور رو توی پروتئوس دید ...
    خروجی این مدار رو وصلش کنید به LED و ورودی این مدار رو وصلش کنید به خروجی PWM میکرو ...
    موفق باشید
    [hr]

    نوشته اصلی توسط مجتبی باغبانزاده
    سلام داداش
    این برنامه رو من برداشتم
    http://www.eca.ir/forum2/index.php?topic=90246.msg574592#msg574592
    بعد پروگرم کردم
    ال ای دی ها پر پر میکنه
    نورش یکدست کو زیاد نمیشه
    فک کنم از فرکانسشه
    من فرکانس رو روی
    8 مگ داخلی تنظیم کردم
    مشکل چیه؟
    سلام
    بله درسته ... فرکانس اسیلاتور داخلی باید روی 8 مگا هرتز باشه ...
    http://www.eca.ir/forum2/index.php?topic=90246.msg576250#msg576250
    این برنامه رو تستش کن ...
    ببین باز هم همینطوره
    مقدار مقاومتها رو چقدر گرفتید ؟؟؟
    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
    معرفی نرم افزار Codewizard PWM
    با من بیشتر آشنا شوید

    دیدگاه


      #47
      پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

      نوشته اصلی توسط Saman.Asadi
      سلام
      بله درسته ... فرکانس اسیلاتور داخلی باید روی 8 مگا هرتز باشه ...
      http://www.eca.ir/forum2/index.php?topic=90246.msg576250#msg576250
      این برنامه رو تستش کن ...
      ببین باز هم همینطوره
      مقدار مقاومتها رو چقدر گرفتید ؟؟؟
      مقدار مقاومتی که وصله به ال ای دی 330 اهم
      نورپردازان باران نور شهرستان آران وبیدگل
      barannoor69@yahoo.com

      دیدگاه


        #48
        پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

        نوشته اصلی توسط مجتبی باغبانزاده
        مقدار مقاومتی که وصله به ال ای دی 330 اهم
        مقدارش رو بیشتر کنید مثلا 560 اهم ...
        من مقدار 330 اهم گذاشتم ... مشکلی هم نداشت ...
        داخل حلقه while رو حذف کنید و قبل از while به یکی از pwm ها مقدار بدهید ...
        مثلا
        کد:
        pwm[1]=50;
          while(1)
          {
          }
        و ولتمتر DC رو روی پایه ای که قبلا [1]pwm نام گذاری کردید بگذارید ...
        باید 2.5 ولت باشد ...
        اگر 2.5 ولت باشد مشکل شما مقدار مقاومتهاست ....
        موفق باشید
        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
        معرفی نرم افزار Codewizard PWM
        با من بیشتر آشنا شوید

        دیدگاه


          #49
          پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

          سلام مهندس
          ممنون بابت کار زیبایی که انجام دادی
          برای میکروatmega 8بر نامه با زبان بیسیک ندارن بزارین ممنون میشم این کار اونجام بدید
          خدایا!
          چنان زمینگیر دنیامان مکن که وقت ظهور حضرت حجت توان برخواستن نداشته باشیم.

          دیدگاه


            #50
            پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم ا

            نوشته اصلی توسط farrokh electronic
            سلام مهندس
            ممنون بابت کار زیبایی که انجام دادی
            برای میکروatmega 8بر نامه با زبان بیسیک ندارن بزارین ممنون میشم این کار اونجام بدید
            سلام

            بفرمایید این هم کد ...

            سورس کد برای ATmega8 به زبان بیسیک(بسکام)
            کد:
            $regfile = "m8def.dat"
             $crystal = 8000000
            
             Led1 Alias portd.0
             Led2 Alias portd.1
             Led3 Alias portd.2
             Led4 Alias portd.3
             Led5 Alias portd.4
             Led6 Alias Portb.6
             Led7 Alias Portb.7
             Led8 Alias Portd.5
             Led9 Alias Portd.6
             Led10 Alias Portd.7
             Led11 Alias Portb.0
             Led12 Alias Portb.1
             Led13 Alias Portb.2
             Led14 Alias Portb.3
             Led15 Alias Portb.4
             Led16 Alias Portb.5
             Led17 Alias Portc.0
             Led18 Alias Portc.1
             Led19 Alias Portc.2
             Led20 Alias Portc.3
             Led21 Alias Portc.4
             Led22 Alias Portc.5
            
             Max_var_pwm Alias 99
             Max_led Alias 22
             Delay1 Alias 20
             'ms
             Delay2 Alias 200
             'ms
             Dim Pwm(35) As Byte , A As Byte , _
             Y2 As Byte , _
             X1 As Byte , X2 As Byte , X3 As Byte
             Y2 = Max_led + Max_led
             A = Max_var_pwm
            
              'Config All =============================================
              'Config Timers
              'Config Ports
               Config Timer0 = Timer , Prescale = 8
               Enable Interrupts
               Enable Timer0
               On Ovf0 T0
               Tcnt0 = 105
               Start Timer0
               Ddrb = 255
               Ddrc = 63
               Ddrd = 255
              'End Config ============================================
            
              Do
               X1 = 0
               While X1 < Y2
                 X2 = Max_led
                 While X2 > 1
                  X3 = X2 - 1
                  Pwm(x2) = Pwm(x3)
                  Decr X2
                 Wend
                 Pwm(1) = Lookup(x1 , Rain)
                 Waitms Delay1
                 Incr X1
               Wend
               Waitms Delay2
              Loop
            End                             'end program
            
            
            T0:
              Tcnt0 = 105
              If A > 0 Then
               If A = Pwm(1) Then Led1 = 1
               If A = Pwm(2) Then Led2 = 1
               If A = Pwm(3) Then Led3 = 1
               If A = Pwm(4) Then Led4 = 1
               If A = Pwm(5) Then Led5 = 1
               If A = Pwm(6) Then Led6 = 1
               If A = Pwm(7) Then Led7 = 1
               If A = Pwm(8) Then Led8 = 1
               If A = Pwm(9) Then Led9 = 1
               If A = Pwm(10) Then Led10 = 1
               If A = Pwm(11) Then Led11 = 1
               If A = Pwm(12) Then Led12 = 1
               If A = Pwm(13) Then Led13 = 1
               If A = Pwm(14) Then Led14 = 1
               If A = Pwm(15) Then Led15 = 1
               If A = Pwm(16) Then Led16 = 1
               If A = Pwm(17) Then Led17 = 1
               If A = Pwm(18) Then Led18 = 1
               If A = Pwm(19) Then Led19 = 1
               If A = Pwm(20) Then Led20 = 1
               If A = Pwm(21) Then Led21 = 1
               If A = Pwm(22) Then Led22 = 1
            
              End If
              Decr A
              If A = 255 Then
               A = Max_var_pwm
               Portb = 0
               Portc = 0
               Portd = 0
              End If
            Return
            
             Rain:
             Data 99 , 80 , 70 , 60 , 40 , 20 , 15 , 9 , 7 , 5 , _
                3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , _
                0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,_
                0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,_
                0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
            ولی نظر من اینه که بهتره با زبان سی کار کنید ...
            چون حجم کدها کمتر میشه در نتیجه افکتهای بیشتری میتوانید طراحی کنید ...
            موفق و پاینده باشید
            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
            معرفی نرم افزار Codewizard PWM
            با من بیشتر آشنا شوید

            دیدگاه


              #51
              پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

              نوشته اصلی توسط Saman.Asadi
              سلام
              طبق وعده ای که داده بودم برنامه بیسیک هم گذاشتم ، البته در پست سوم همین تاپیک اضاف کردم ...
              بفرمایید این هم کد ...

              سورس کد برای ATmega8 به زبان بیسیک(بسکام)
              کد:
              $regfile = "m8def.dat"
               $crystal = 8000000
              
               Led1 Alias portd.0
               Led2 Alias portd.1
               Led3 Alias portd.2
               Led4 Alias portd.3
               Led5 Alias portd.4
               Led6 Alias Portb.6
               Led7 Alias Portb.7
               Led8 Alias Portd.5
               Led9 Alias Portd.6
               Led10 Alias Portd.7
               Led11 Alias Portb.0
               Led12 Alias Portb.1
               Led13 Alias Portb.2
               Led14 Alias Portb.3
               Led15 Alias Portb.4
               Led16 Alias Portb.5
               Led17 Alias Portc.0
               Led18 Alias Portc.1
               Led19 Alias Portc.2
               Led20 Alias Portc.3
               Led21 Alias Portc.4
               Led22 Alias Portc.5
              
               Max_var_pwm Alias 99
               Max_led Alias 22
               Delay1 Alias 20
               'ms
               Delay2 Alias 200
               'ms
               Dim Pwm(35) As Byte , A As Byte , _
               Y2 As Byte , _
               X1 As Byte , X2 As Byte , X3 As Byte
               Y2 = Max_led + Max_led
               A = Max_var_pwm
              
                'Config All =============================================
                'Config Timers
                'Config Ports
                 Config Timer0 = Timer , Prescale = 8
                 Enable Interrupts
                 Enable Timer0
                 On Ovf0 T0
                 Tcnt0 = 105
                 Start Timer0
                 Ddrb = 255
                 Ddrc = 63
                 Ddrd = 255
                'End Config ============================================
              
                Do
                 X1 = 0
                 While X1 < Y2
                   X2 = Max_led
                   While X2 > 1
                    X3 = X2 - 1
                    Pwm(x2) = Pwm(x3)
                    Decr X2
                   Wend
                   Pwm(1) = Lookup(x1 , Rain)
                   Waitms Delay1
                   Incr X1
                 Wend
                 Waitms Delay2
                Loop
              End                             'end program
              
              
              T0:
                Tcnt0 = 105
                If A > 0 Then
                 If A = Pwm(1) Then Led1 = 1
                 If A = Pwm(2) Then Led2 = 1
                 If A = Pwm(3) Then Led3 = 1
                 If A = Pwm(4) Then Led4 = 1
                 If A = Pwm(5) Then Led5 = 1
                 If A = Pwm(6) Then Led6 = 1
                 If A = Pwm(7) Then Led7 = 1
                 If A = Pwm(8) Then Led8 = 1
                 If A = Pwm(9) Then Led9 = 1
                 If A = Pwm(10) Then Led10 = 1
                 If A = Pwm(11) Then Led11 = 1
                 If A = Pwm(12) Then Led12 = 1
                 If A = Pwm(13) Then Led13 = 1
                 If A = Pwm(14) Then Led14 = 1
                 If A = Pwm(15) Then Led15 = 1
                 If A = Pwm(16) Then Led16 = 1
                 If A = Pwm(17) Then Led17 = 1
                 If A = Pwm(18) Then Led18 = 1
                 If A = Pwm(19) Then Led19 = 1
                 If A = Pwm(20) Then Led20 = 1
                 If A = Pwm(21) Then Led21 = 1
                 If A = Pwm(22) Then Led22 = 1
              
                End If
                Decr A
                If A = 255 Then
                 A = Max_var_pwm
                 Portb = 0
                 Portc = 0
                 Portd = 0
                End If
              Return
              
               Rain:
               Data 99 , 80 , 70 , 60 , 40 , 20 , 15 , 9 , 7 , 5 , _
                  3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , _
                  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,_
                  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,_
                  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
              ولی نظر من اینه که بهتره با زبان سی کار کنید ...
              چون حجم کدها کمتر میشه در نتیجه افکتهای بیشتری میتوانید طراحی کنید ...
              موفق و پاینده باشید
              ممنون از مطلب جالبی که در این پست قرار دادین
              اما من وقتی این کدی را که نوشتید کامپایل می کنم ارور میده
              در خط 80 ارور 42 و 377 می ده

              دیدگاه


                #52
                پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                نوشته اصلی توسط sadeghelect
                سلام من با بیسیک کار می کنم وخیلی دلم می خواد بسکام شروع کنم اما نمی دونم از کجا شروع کنم اگه امکان داره راهنماییم کنید
                سلام
                این تاپیک عالیه .......
                http://www.eca.ir/forum2/index.php?topic=64441.0

                نوشته اصلی توسط sadeghelect
                ممنون از مطلب جالبی که در این پست قرار دادین
                اما من وقتی این کدی را که نوشتید کامپایل می کنم ارور میده
                در خط 80 ارور 42 و 377 می ده
                همین الان یک فایل جدید ساختم و برنامه ای که گذاشتم رو کپی پست کردم و کامپایل کردم و هیچ مشکلی هم نداشت ...
                شاید کرکتون نا مرغوب بوده
                برنامه ای که من دارم استفاده میکنم اینه
                http://s5.picofile.com/file/8120870600/BASCOM_AVR_2_0_7_3_Techno_Electro_COM_.zip.html
                برنامه را دانلود کنید و حالشو ببرید
                ولی خداییش هیچ زبانی شیرین تر از زبان سی نیست ...
                اگر میخواهید با سی کار کنید ابتدا زبان سی رو خوب یاد بگیرید و بعد برید دنبال کامپایلرهای سی ...
                برای شروع با کدویژن کار کنید بعد که خوب راه افتادید با اتمل استودیو کار کنید ...
                این لینک هم مطالعه کنید خوبه ...
                http://www.eca.ir/forum2/index.php?topic=92883.0
                موفق باشید
                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                معرفی نرم افزار Codewizard PWM
                با من بیشتر آشنا شوید

                دیدگاه


                  #53
                  پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                  ممنون داداش
                  گجاش میشه افکت اضافه کرد
                  خدایا!
                  چنان زمینگیر دنیامان مکن که وقت ظهور حضرت حجت توان برخواستن نداشته باشیم.

                  دیدگاه


                    #54
                    پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                    نوشته اصلی توسط farrokh electronic
                    ممنون داداش
                    گجاش میشه افکت اضافه کرد
                    افکت های زیادی میشه طراحی کرد ...
                    نمونش توی پست سوم این تاپیک گذاشتم
                    البته با مگا 16 و 32
                    کد:
                     $regfile = "m16def.dat"
                     $crystal = 8000000
                     Led1 Alias Porta.0
                     Led2 Alias Porta.1
                     Led3 Alias Porta.2
                     Led4 Alias Porta.3
                     Led5 Alias Porta.4
                     Led6 Alias Porta.5
                     Led7 Alias Porta.6
                     Led8 Alias Porta.7
                     Led9 Alias Portc.7
                     Led10 Alias Portc.6
                     Led11 Alias Portc.5
                     Led12 Alias Portc.4
                     Led13 Alias Portc.3
                     Led14 Alias Portc.2
                     Led15 Alias Portc.1
                     Led16 Alias Portc.0
                     Led17 Alias Portd.7
                     Led18 Alias Portd.6
                     Led19 Alias Portd.5
                     Led20 Alias Portd.4
                     Led21 Alias Portd.3
                     Led22 Alias Portd.2
                     Led23 Alias Portd.1
                     Led24 Alias Portd.0
                     Led25 Alias Portb.7
                     Led26 Alias Portb.6
                     Led27 Alias Portb.5
                     Led28 Alias Portb.4
                     Led29 Alias Portb.3
                     Led30 Alias Portb.2
                     Led31 Alias Portb.1
                     Led32 Alias Portb.0
                     Max_var_pwm Alias 99
                    
                     Dim Pwm(35) As Byte , A As Byte , X1 As Byte , X2 As Byte , X3 As Byte , X As Byte
                     A = Max_var_pwm
                      'Config All =============================================
                      'Config Timers
                      'Config Ports
                       Config Timer0 = Timer , Prescale = 8
                       Enable Compare0
                       On Compare0 T0
                       Ddra = 255
                       Ddrb = 255
                       Ddrc = 255
                       Ddrd = 255
                       ' Timer/Counter 0 initialization
                       ' Clock source: System Clock
                       ' Clock value: 1000.000 kHz
                       ' Mode: CTC top=OCR0
                       Tccr0 = &H0A
                       Ocr0 = 150
                       ' Global enable interrupts
                       Enable Interrupts
                      'End Config ============================================
                      Do
                       For X1 = 0 To 24
                         Pwm(1) = Lookup(x1 , Rain1)
                         For X2 = 17 To 1 Step -1
                          X = X2 + 1
                          Pwm(x) = Pwm(x2)
                         Next X2
                         Waitms 40
                       Next X1
                       For X1 = 0 To 34
                         Pwm(1) = Lookup(x1 , Rain2)
                         For X2 = 17 To 1 Step -1
                          X = X2 + 1
                          Pwm(x) = Pwm(x2)
                         Next X2
                         Waitms 40
                       Next X1
                       For X1 = 0 To 24
                         Pwm(1) = Lookup(x1 , Rain3)
                         For X2 = 17 To 1 Step -1
                          X = X2 + 1
                          Pwm(x) = Pwm(x2)
                         Next X2
                         Waitms 40
                       Next X1
                       For X1 = 1 To 24
                         Pwm(17) = Lookup(x1 , Rain1)
                         For X2 = 1 To 16
                          X = X2 + 1
                          Pwm(x2) = Pwm(x)
                         Next X2
                         Waitms 40
                       Next X1
                       For X1 = 0 To 34
                         Pwm(17) = Lookup(x1 , Rain2)
                         For X2 = 1 To 16
                          X = X2 + 1
                          Pwm(x2) = Pwm(x)
                         Next X2
                         Waitms 40
                       Next X1
                       For X1 = 0 To 24
                         Pwm(17) = Lookup(x1 , Rain3)
                         For X2 = 1 To 16
                          X = X2 + 1
                          Pwm(x2) = Pwm(x)
                         Next X2
                         Waitms 40
                       Next X1
                       For X3 = 1 To 3
                         For X1 = 0 To 13
                          For X2 = 1 To 7
                            X = X2 + 1
                            Pwm(x2) = Pwm(x)
                          Next X2
                          For X2 = 17 To 10 Step -1
                            X = X2 - 1
                            Pwm(x2) = Pwm(x)
                          Next X2
                          Pwm(8) = Lookup(x1 , Rain1)
                          Pwm(9) = Lookup(x1 , Rain1)
                          Waitms 40
                         Next X1
                       Next X3
                       For X3 = 1 To 3
                         For X1 = 0 To 13
                          For X2 = 8 To 2 Step -1
                            X = X2 - 1
                            Pwm(x2) = Pwm(x)
                          Next
                          For X2 = 9 To 16
                            X = X2 + 1
                            Pwm(x2) = Pwm(x)
                          Next
                          Pwm(17) = Lookup(x1 , Rain1)
                          Waitms 40
                          Pwm(1) = Lookup(x1 , Rain1)
                         Next
                       Next
                       For X3 = 0 To 3
                         For X1 = 0 To 18
                          For X2 = 1 To 7
                            X = X2 + 1
                            Pwm(x2) = Pwm(x)
                          Next
                          For X2 = 17 To 10 Step -1
                            X = X2 - 1
                            Pwm(x2) = Pwm(x)
                          Next
                          Pwm(8) = Lookup(x1 , Rain4)
                          Pwm(9) = Lookup(x1 , Rain4)
                          Waitms 40
                         Next
                       Next
                       For X3 = 0 To 3
                         For X1 = 0 To 18
                          For X2 = 8 To 2 Step -1
                            X = X2 - 1
                            Pwm(x2) = Pwm(x)
                          Next
                          For X2 = 9 To 17
                            X = X2 - 1
                            Pwm(x2) = Pwm(x2 + 1)
                          Next
                          Pwm(1) = Lookup(x1 , Rain2)
                          Pwm(17) = Lookup(x1 , Rain2)
                          waitms 40
                         Next
                       Next
                    
                      Loop
                    End                             'end program
                    
                    
                     T0:
                      If A > 0 Then
                       If A = Pwm(1) Then Led1 = 1
                       If A = Pwm(2) Then Led2 = 1
                       If A = Pwm(3) Then Led3 = 1
                       If A = Pwm(4) Then Led4 = 1
                       If A = Pwm(5) Then Led5 = 1
                       If A = Pwm(6) Then Led6 = 1
                       If A = Pwm(7) Then Led7 = 1
                       If A = Pwm(8) Then Led8 = 1
                       If A = Pwm(9) Then Led9 = 1
                       If A = Pwm(10) Then Led10 = 1
                       If A = Pwm(11) Then Led11 = 1
                       If A = Pwm(12) Then Led12 = 1
                       If A = Pwm(13) Then Led13 = 1
                       If A = Pwm(14) Then Led14 = 1
                       If A = Pwm(15) Then Led15 = 1
                       If A = Pwm(16) Then Led16 = 1
                       If A = Pwm(17) Then Led17 = 1
                       If A = Pwm(18) Then Led18 = 1
                       If A = Pwm(19) Then Led19 = 1
                       If A = Pwm(20) Then Led20 = 1
                       If A = Pwm(21) Then Led21 = 1
                       If A = Pwm(22) Then Led22 = 1
                       If A = Pwm(23) Then Led23 = 1
                       If A = Pwm(24) Then Led24 = 1
                       If A = Pwm(25) Then Led25 = 1
                       If A = Pwm(26) Then Led26 = 1
                       If A = Pwm(27) Then Led27 = 1
                       If A = Pwm(28) Then Led28 = 1
                       If A = Pwm(29) Then Led29 = 1
                       If A = Pwm(30) Then Led30 = 1
                       If A = Pwm(31) Then Led31 = 1
                       If A = Pwm(32) Then Led32 = 1
                      End If
                      Decr A
                      If A = 255 Then
                       A = Max_var_pwm
                       Porta = 0
                       Portb = 0
                       Portc = 0
                       Portd = 0
                      End If
                    Return
                    
                     Rain1:
                     Data 0 , 99 , 70 , 40 , 20 , 10 , 5 , 4 , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
                     Rain2:
                     Data 0 , 1 , 2 , 3 , 4 , 5 , 10 , 20 , 40 , 70 , 99 , 70 , 40 , 20 , 10 , 5 , 4 , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
                     Rain3:
                     Data 0 , 1 , 2 , 3 , 4 , 5 , 10 , 20 , 40 , 70 , 99 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
                     Rain4:
                     Data 1 , 2 , 3 , 4 , 5 , 10 , 20 , 40 , 70 , 99 , 70 , 40 , 20 , 10 , 5 , 4 , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
                    دیگه خودتون زحمت افکتهای دیگه رو بکشید ...
                    اگه افکتهای دیگری طراحی کردید ممنون میشم کدش رو در اختیار انجمن قرار بدهید ...

                    موفق باشید
                    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                    معرفی نرم افزار Codewizard PWM
                    با من بیشتر آشنا شوید

                    دیدگاه


                      #55
                      پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                      خوب ما اومدیم
                      خوب میخوام pwm شمارو تو یک بازه مثلا 50% نگه دارم ویا در 10% و یا هرچی.
                      خوب نظرتون چیه؟
                      میخوام موتور کنترل کنم. ( 9تاموتور)
                      شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
                      [img width=400 height=100]http:///uploads/140623781981451.png[/img]
                      [glow=green,2,100]یاحسین تشنه لب[/glow]

                      دیدگاه


                        #56
                        پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                        نوشته اصلی توسط عمو LED
                        خوب ما اومدیم
                        خوب میخوام pwm شمارو تو یک بازه مثلا 50% نگه دارم ویا در 10% و یا هرچی.
                        خوب نظرتون چیه؟
                        میخوام موتور کنترل کنم. ( 9تاموتور)
                        خوش اومدی ...
                        9تا موتور که چیزی نیست
                        بیشتر هم میشه ...
                        اگر با مگا 64 کار کنید تا 53 کانال PWM میشه تعریف کرد ... چشمات گرد شد ... نه :biggrin:
                        از اونجایی که همیشه با بسکام کار می کنید حدس میزنم که برنامه با بسکام میخواهید ...
                        درسته؟؟؟
                        با چه میکروی میخواستید؟ مگا 8 خوبه؟
                        پایه هایی که میخواهید PWM کنید را مشخص کنید ...
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


                          #57
                          پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                          بله دیگه ما بسکامی هستیم.چند بار سمت C رفتم ولی باز نشد
                          پایه d0-d7 , b0
                          میخوام pwmاش کم و زیادش با خودم باشه ها .اون برنامش مینویسم یه کیپد دارم و عدد میدم ولی درگیر این تعداد pwm ها هستم.
                          هر کدوم از موتور ها جدا کنترل میشن.

                          شهابی نباشه (شوخی کردم)
                          شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
                          [img width=400 height=100]http:///uploads/140623781981451.png[/img]
                          [glow=green,2,100]یاحسین تشنه لب[/glow]

                          دیدگاه


                            #58
                            کنترل سرعت چندین موتور DC به طور همزمان (قابل ارتقاع تا ۵۳ موتور)

                            نوشته اصلی توسط عمو LED
                            بله دیگه ما بسکامی هستیم.چند بار سمت C رفتم ولی باز نشد
                            پایه d0-d7 , b0
                            میخوام pwmاش کم و زیادش با خودم باشه ها .اون برنامش مینویسم یه کیپد دارم و عدد میدم ولی درگیر این تعداد pwm ها هستم.
                            هر کدوم از موتور ها جدا کنترل میشن.
                            بفرمایید این هم برنامه موتور :
                            کد:
                             $regfile = "m8def.dat"
                             $crystal = 8000000
                            
                             Motor1 Alias Portd.0
                             Motor2 Alias Portd.1
                             Motor3 Alias Portd.2
                             Motor4 Alias Portd.3
                             Motor5 Alias Portd.4
                             Motor6 Alias Portd.5
                             Motor7 Alias Portd.6
                             Motor8 Alias Portd.7
                             Motor9 Alias Portb.0
                            
                             Max_var_pwm Alias 99
                             Dim Pwm(10) As Byte , A As Byte
                             A = Max_var_pwm
                            
                              'Config All =============================================
                              'Config Timers
                              'Config Ports
                               Config Timer0 = Timer , Prescale = 8
                               Enable Interrupts
                               Enable Timer0
                               On Ovf0 T0
                               Tcnt0 = 105
                               Start Timer0
                               Ddrb = 1
                               Ddrd = 255
                              'End Config ============================================
                              Pwm(1) = 10
                              Pwm(2) = 20
                              Pwm(3) = 30
                              Pwm(4) = 40
                              Pwm(5) = 50
                              Pwm(6) = 60
                              Pwm(7) = 70
                              Pwm(8) = 80
                              Pwm(9) = 20
                            
                              Do
                            
                            
                              Loop
                            End                             'end program
                            
                            
                            T0:
                              Tcnt0 = 105
                              If A > 0 Then
                               If A = Pwm(1) Then Set Motor1
                               If A = Pwm(2) Then Set Motor2
                               If A = Pwm(3) Then Set Motor3
                               If A = Pwm(4) Then Set Motor4
                               If A = Pwm(5) Then Set Motor5
                               If A = Pwm(6) Then Set Motor6
                               If A = Pwm(7) Then Set Motor7
                               If A = Pwm(8) Then Set Motor8
                               If A = Pwm(9) Then Set Motor9
                              End If
                              Decr A
                              If A = 255 Then
                               A = Max_var_pwm
                               Portb = Portb And 254
                               Portd = 0
                              End If
                            Return
                            فقط کافیه هم موقع که خواستید PWM مورد نظرتون رو از طریق آرایه (Pwm(x موتور مورد نظرتون رو تغییر سرعت بدید
                            محدوده این که میتونید به این آرایه بدهید صفر تا 99 است که نشان دهنده دیوتی سایکل است ...
                            برای شروع یک سری مقادیر قبل از حلقه اصلی برنامه گذاشتم ...
                            پس اگر خواستید که موتور 6 را با دیوتی سایکل 40 درصد تنظیم کنید کافیه که بنویسید
                            40 = (6)Pwm

                            موفق باشید

                            ==================================اضاف شد
                            مدار خوبیه ...

                            ==================================اضاف شد
                            اگر ولتاژ منبع تغذیه موتور شما زیر 35 ولت باشد با PC817 کار کنید ولی اگر بین 35 تا 55 ولت بود به جای اپتوکوپلر PC817 از اپتوکوپلر TLP521 استفاده کنید ...
                            [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                            معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                            معرفی نرم افزار Codewizard PWM
                            با من بیشتر آشنا شوید

                            دیدگاه


                              #59
                              پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                              هنوز رو برد نزدم ولی خروجی رو ببینید. ثابت نیست. شبیه سازی اینجوریه؟
                              شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
                              [img width=400 height=100]http:///uploads/140623781981451.png[/img]
                              [glow=green,2,100]یاحسین تشنه لب[/glow]

                              دیدگاه


                                #60
                                پاسخ : چگونه همه پایه های ATmega16-32-64-128 را PWM کنیم؟؟ ATmega8 هم اضاف شد

                                نوشته اصلی توسط عمو LED
                                هنوز رو برد نزدم ولی خروجی رو ببینید. ثابت نیست. شبیه سازی اینجوریه؟
                                مگر باید ثابت باشه؟؟؟
                                PWM پالسی با فرکانس ثابت است که نسبت یک بودن به پهنای پالس آن تغییر میکند ...
                                همون برنامه ای که گذاشتم خروجی پایه ها این پالسها رو تولید میکنه ...




                                باز هم این نکته رو یاد آوری میکنم که اگر خواستید به آرایه مقدار بدهید محدوده آن باید از صفر تا 99 باشد
                                برای خاموش کردن موتورها هم فقط کافیه که مقدار صفر به آرایه مورد نظر بدهید ...

                                سوالی بود در خدمتم ...
                                موفق باشید
                                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                                معرفی نرم افزار Codewizard PWM
                                با من بیشتر آشنا شوید

                                دیدگاه

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