اطلاعیه

Collapse
No announcement yet.

چند سوال در مورد موج pwm و میکرو 16

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

    چند سوال در مورد موج pwm و میکرو 16

    با سلام خدمت همه دوستان

    میدونید که RGB LED ها با موج PWM کار میکنند . حالا دو تا سوال فعلا اول بپرسم بعدا سوال های بعدی ؟

    1- چون 3 پایه از میکرو برای هر LED میره میشه از 10 تا LED را به یک میکرو وصلش کرد و از همه پایه ها PWM گرفت ؟

    2- استفاده از موج PWM یاعث کاهش نور LED ها نمیشه ؟
    دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

    #2
    پاسخ : چند سوال در مورد موج pwm و میکرو 16

    فکر نکنم هیچ avr ای 30 تا PWM داشته باشه. پس شما باید از PWM نرم افزاری استفاده کنی.
    با این حساب می تونید 10 تا led را راه اندازی کنید. البته اینکار علاوه بر اینکه وقت میکرو را بشدت می گیرد . مقدار حداکثر رزولوشن* فرکانس را کاهش می دهد.

    دیدگاه


      #3
      پاسخ : چند سوال در مورد موج pwm و میکرو 16

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

      نمیشه از لچ یا چیز دیگه استفاده کرد ؟
      دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

      دیدگاه


        #4
        پاسخ : چند سوال در مورد موج pwm و میکرو 16

        نوشته اصلی توسط starsoheil
        می تونید بیشتر توضیح دهید ؟
        pwm نرم افزاری چیه و چه جوری کار میکنه ؟ (نمونه ای اگه دارید بذارید واسه دانلود )

        نمیشه از لچ یا چیز دیگه استفاده کرد ؟
        با اجازه ی آقای نجفیان :
        در مورد pwm نرم افزاری، یعنی همون ایده ای که در مورد ساخت pwm هست یعنی پالسی با دیوتی سایکل متفاوت، رو به کمک یکی از تایمرهای میکرو بر روی هرکدوم از پایه هایی که دلت میخواد، بسازی.
        خودم از این روش برای ساختن یک شارژ با 8 خروخی که روی عرکدوم pwm ساخته میشد، استفاده کردم و به خوبی جواب داد.
        اما همونطوری که محمد گفت، میکرو درگیر برخی کارها از قبیل محاسبات و ... میشه.
        در مورد استفاده از لچ یا چیز دیگه، یکی از دوستام برای رفرش از شیفت رجیستر استفاده میکرد. خیلی هم خوب بود و خیلی هم جواب میداد و فقط هم یک pwm میساخت و به همه ی ال ای دی هایی که نیاز بود میداد. البته برای داشتن جریان کافی، از آی سی UDN استفاده میکنه.
        اما در مورد ساخت pwm بر روی پایه های میکرو اینطور عمل کن که:
        ابتدا پایه هایی که میخوای روی اونا این موج رو بسازی، به صورت خروجی تعریف کن.
        وقفه ی یک تایمر رو فعال کن با مدت زمان مثلا 1 میلی ثانیه، یعنی هر 1 میکرو ثانیه وقفه بده تایمرت.
        از یک شمارنده استفاده کن مثلا یک متغیر به صورت int counter تعریف کن.
        حالا اجازه بده که در زیر برنامه ی وقفه، این شمارنده هر بار ++ بشه (بامقدار قبلیش جمع بشه)
        با اینکار اگه شمارنده 1000 تا بشماره، چون هر 1 میکروثانیه وقفه میاد، میشه 1 میلی ثانیه.
        حالا زمان تصمیم گیری درون وقفه ی تایمره.
        بعد از اینکه counter++ رو نوشتی باید مشخص کنی که مقدار pwm که میخوای به هر پایه اختصاص بدی چقدره.
        فرض کن میخوایم هر 1 میلی ثانیه یک بار، یک پالس با دیوتی سایکل 30 و 35 و 60 و 75 بر روی 4 تا پایه درست کنیم.
        در زیر برنامه ی وقفه بعد از counter++ از دستور if استفاده کن
        البته برای ساختن هرکدوم از اینا(پی دبلیو ام روی پایه ها)، جداگانه باید عمل کنی. یعنی در این مثال، 4تا if مینویسی
        مثلا برای دیوتی سایکل 30 درصد بر روی PORTB.0 اینطوری مینویسی :
        if(counter<300)
        PORTB.0=1;
        else
        PORTB.0=0;
        این کار رو برای همه ی پایه هایی که نیاز داری انجام میدی.
        در انتهای همی اونها هم مینویسی
        if(counter==1000)
        counter=0;
        به همین سادگی!!!
        موفق باشی...

        1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
        2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
        3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

        دیدگاه


          #5
          پاسخ : چند سوال در مورد موج pwm و میکرو 16

          با تشکر از آقای رستمی عزیز . :job:

          ممنون ولی من با بسکام کار میکنم .

          و یه چیز دیگه من قبل ار اینکه پاسخ شمارو ببینم یک کارایی کردم . من یک دی مالتی پلکستر (74154) استفاده کردم . واسه انتخاب خط منفی (gnd) لامپ هام .
          ورودی هم به پورت A وصل کردم و پورت A را هر لحظه شیفت میدم .

          ولی یک مشکل ؟ شماتیک و برنامه بسکامو میذارم ببینید مشکلم چیه .

          من فقط یک بار شیفت پورت A را دارم و دیگه حلقه تکرار نمیشه ؟؟؟؟؟

          کد:
          $regfile = "m16def.dat"
          $crystal = 16000000
          Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , Rs = Portb.3 , E = Portb.2
          Config Lcd = 16 * 2
          Config Timer1 = Pwm , Pwm = 8 , Prescale = 256 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
          Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Down
          Config Porta = Output
          
          Lcd "ali"
          
          Pwm1a = 0
          Pwm1b = 0
          Ocr2 = 0
          Lcd "ali"
          
          Dim Red As Byte
          Dim Green As Byte
          Dim Blue As Byte
          Red = 0
          Green = 0
          Blue = 0
          Porta = &H01
          Do
          Lcd "GO"
          Red = Red + 4
          Green = Green + 8
          Blue = Blue + 16
          Pwm1a = Red
          Pwm1b = Green
          Ocr2 = Blue
          Wait 1
          Lcd "SET1"
          Incr Porta
          Loop
          End

          http://www.4shared.com/photo/UBGCl3QJ/RGB.html
          دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

          دیدگاه


            #6
            پاسخ : چند سوال در مورد موج pwm و میکرو 16

            در مورد pwm نرم افزاری ، مهندس رستمی درست فرمودند، اما در مورد لچ و شیفت رجیستر و... .
            بنده شک دارم که بشه یک سیگنال pwm را اینطوری توزیع کرد.البته یه حدس هایی می زنم ولی نمی دونم درسته یا نه ، مهندس رستمی لطفا در مورد روش دوستتون یه توضیحی بدید.
            من خودم قبلا برای یک پروژه 300 تا pwm سخت افزاری (البته با FPGA) طراحی کرده بودم ، اما چون با محدودیت پایه رو به رو بودم این 300 تا pwm را به صورت فشرده به خارج FPGA فرستادم( 8 خط داده و 6 خط آدرس) اونجا با لچ و دکدر اونا را به 300 تا سیگنال مجزا تبدیل کردم.البته پروژه کنسل شد و من هیچوقت فرصت تست طرحم را نکردم.

            دیدگاه


              #7
              پاسخ : چند سوال در مورد موج pwm و میکرو 16

              در پاسخ محمد :
              الان که ازش پرسیدم (دوستم) گفت که از pwm استفاده نکرده و ال ایدی معمولی بوده و نورشون ثابت (البته سوپر ال ای دی). اما از شیفت رجیستر 74595 و 74164 استفاده میکنه.
              در مورد استفاده از pwm به صورت شیفت رجیستری، در حالتی امکانش هست که سرعت refresh بالا باشه، بنابراین حرفت کاملا درسته.
              در پاسخ سهیل :
              متاسفانه بسکام کار نکردم شرمنده...
              بچه ها یکی بیاد رنامه ی سهیل رو که گذاشته، یه نگاهی بکنه
              ایول! :nice:
              1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
              2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
              3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

              دیدگاه


                #8
                پاسخ : چند سوال در مورد موج pwm و میکرو 16

                با تشکر از همه دوستان .

                یک توضیح بدم من از دی مالتی پلکستر برای انتخاب شماره 1 تا 10 استفاده کردم --> که همون لامپ هام هستش . و به منفی اونا وصله و هر لحظه بخوام شماره مثلا 6 روشن باشه منفی خط 6 به زمین وصل بشه و بقیه لامپ هام پایه زمینشون به مثبت وصله .

                و پایه های همه ال ای دی هام (اون پایه های دیگه که نایز به pwm دارن) مستقیم به میکرو وصلن .
                فقط مشکل من اینه که خطی که موج اول میسازه رد نمیشه بره خط بعد برنامه :


                Pwm1a = Red
                Pwm1b = Green
                Ocr2 = Blue

                خط بعد از این سه خط اجرا نمیشه ؟
                دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

                دیدگاه


                  #9
                  پاسخ : چند سوال در مورد موج pwm و میکرو 16

                  مشکلم حل شد حالا بعد از 10 ثانیه اجرای صحیح پرتئوس این پیغامو میده ؟

                  TIME STEP TOO SMALL

                  ماله چیه ؟

                  می خوام از کریستال خارجی واسه برنامم استفاده کنم تو پروتئوس چه جوریه ؟ قبلا انجام دادم ولی الان کزریستالو می بندم ارور میده .
                  دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

                  دیدگاه


                    #10
                    پاسخ : چند سوال در مورد موج pwm و میکرو 16

                    با عرض معذرت از اساتید:
                    اون اولی که گفتی، warning ه یا error ه ؟
                    یعنی برنامتو قطع میکنه؟
                    اگه قطع نکنه که خب مشکلی نیست، و فقط بخاطر اینه که cpu کامپیوترت برای این شبیه سازی کم میاره (چیزی که خودم بارها باهاش مواجه شدم)
                    اگه هم قطع کنه که خی دیگه کاری نمیشه کرد، بچه توانش کمه، نمویتونه انجامش بده.
                    برای استفاده از کریستال هم، اگه قبلا کار کردی و الان مشکل داری، احتمال زیاد از پروتئوسه. کلا ورژن های جدیدی که میاد، در برخی جاها خوب کار نمیکنه (بخاطر کرک و این حرفا...) منم همچنین مشکلاتی دارم.
                    اگه مطمئنی که جواب میده، و میخوای عملی کار کنی، معطل نکن... بروببندش...
                    زمانی که دستت میره توی کار، تازه اول ماجراست!!! :read: خودت بهتر میدونی
                    خب دیگه بریم خوشحالی :wow:
                    1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                    2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                    3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                    دیدگاه


                      #11
                      پاسخ : چند سوال در مورد موج pwm و میکرو 16

                      ممنون و مرسی دوست عزیز

                      منم فکر کنم مشکل از سی پی یو هستش . ممنون

                      البته واسه کریستال باید بگم که قبلا با همین پروتئوس همین کارو کردم . جواب داده .

                      ولی دارم میرم که عملی ببندمش . اگه تموم شد و جواب داد خبرشا میدم .
                      یک فکری دارم اگه بتونم تمومش کنم حتما آموزششا میذارم واسه همه .
                      دنيا بر پايه برنامه هايي هست که خدا با زبان برنامه نويسي خودش مينويسد . کامپايل شده آن اين جهان و قوانين آن است . start آن تولد است و end آن مرگ . پر از گزينه هاي شرطي و دستورات حلقه و تکرار ...

                      دیدگاه

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