اطلاعیه

Collapse
No announcement yet.

دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!

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

    دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!

    سلام:
    دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!
    1) برای تغییر وضعیت پایه ها از آرایه استفاده کردم حالا می خوام که وضعیت هر پرورت رو روی LCD نمایش بدم چی کار کنم
    2) در قسمتی ار برنامه می خوام نور تمامی لامپ ها ( متصل به PORTA ) کم بشه دو باره زیاد بشه ( البته مدت زمانی که طول میکشه نور لامپ کم و سپس زیاد بشه قابل کنترل باشه ) به نظرم باید از PWM استفاده کنم ولی راستش تا حالا با این مد کار نکردم و نیاز به راهنمایی دارم

    #2
    پاسخ : دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!

    سلام:
    در مورد سئوال اول توی پست پایین به نتیجه رسیدیم (با کمک دوستان)
    http://www.eca.ir/forum2/index.php/t...5.new.html#new
    در مورد سوال دوم کسی نظری نداره

    دیدگاه


      #3
      پاسخ : دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!

      با سلام

      برای شروع بهتره که اصول کار مدولاسیون پهنای پالس PWM رو بدونید

      منبع : http://www.ir-micro.com

      مدولاسیون پهنای باند یا Pulse Width Modulation - PWM یک روش برای تولید پالس هایی با زماتن وظیفه های متغیر هست .
      زمان وظیف هم به نسبت 1 بودن پالس ، به عرض کل پالس هست . به عبارت دیگه توسط PWM میشه پالس های متغیر از نظر سطح 1 بودن پالس تولید کرد . مثلا پالسی تولید کرد که 10% از عرض پالس 1 باشه (فعال) و باقی 0 باشه (غیر فعال) و یا 20% و ...


      حالا این متغیر بودن سطح 1 بودن پالس واسه چه جاهایی کاربرد داره ؟
      PWM یکی از بهترین و ساده ترین روش های تولید ولتاژ DC متغیر هست . مزیتی هم که داره اینه که بدون اینکه لازم باشه سطح ماکزیمم پالس رو تغییر بدیم ، میشه ولتاژ متغیر ایجاد کرد . به این صورت که مثلا سطح ماکزیمم پالس 5 ولت هست ، اما با تغییر زمان وظیفه میشه تو عمل ولتاژ بین 0 تا 5 ولت متغیر تولید کرد .
      همونطور که می دونید سطح متوسط یا DC با توجه به فرمول زیر تعیین میشه :

      که با تغییر زمان فعال بودن پالس میشه سطح متوسط یک تابع رو کنترل کرد . PWM هم با این روش عمل می کنه .
      بیشترین کاربردی هم که داره تو کنترل دور موتورها هست که با تغییر زمان وظیفه میشه ولتاژ اعمالی به موتور رو تغییر داد و در نتیجه دور موتور رو کنترل کرد .
      یکی دیگه از کاربردهای این روش هم تو ارتباط با ماژول ها مادون قرمز هست .
      ِِDie for Life, Not Live to Die
      Freedom Fighter
      " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

      دیدگاه


        #4
        پاسخ : دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!

        حالا این یه برنامه واسه AVR که از تایمر 1 به عنوان PWM میکرو استفاده شده

        خروجی اینجا OC1 یا PORTB.1 هستش که یکی از خروجیها هستش که با دستور Compare1a=x کنترل میشه

        اون یکی هم PORTB.2 هستش که با دستور Compare1b=x کنترل میشه


        حالا تو میتونی این پایه رو با بافر و تقویت کردن به صورت قدرت استفاده کنی



        کد:
        'And the TIMER can be used in PWM mode
        $regfile = "m8def.dat"
        $crystal = 8000000
        'You have the choice between 8,9 or 10 bit PWM mode
        
        'Also you can specify if the counter must count UP or down after a match
        
        'to the compare registers
        
        'Note that there are two compare registers A and B
        
        Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
        
        
        
        
        'to set the PWM registers, just assign a value to the compare A and B registers
        
        Compare1a = 100
        
        Compare1b = 200
        
        
        
        
        'Or for better reading :
        
        Pwm1a = 100
        
        Pwm1b = 200
        
        
        
        
        End
        موفق باشید
        ِِDie for Life, Not Live to Die
        Freedom Fighter
        " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

        دیدگاه


          #5
          پاسخ : دارم برنامه فلاشر مینویسم مشکلاتی دارم کسی میتونه کمک کنه!

          اینم یه برنامه واسه کنترل خودکار

          اگه به تایمر مقدار 255 رو بدیم تو خروجی حداقل دامنه رو داریم و با عدد 0 حداکثر دامنه

          تو این برنامه با 255 پله و برای هر پله 20 میلی ثانیه تاخیر گذاشته شده

          که خودت میتونی تغییرش بدی

          بفرمایید خدمت شما :biggrin:
          کد:
          $regfile = "m8def.dat"
          $crystal = 8000000
          
          Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
          
          Dim X As Byte
          
          
          
          Do
          
           For X = 0 To 255
          
            Pwm1a = X
          
            Waitms 20
          
           Next X
          
          Loop
          
          
          
          
          End
          ِِDie for Life, Not Live to Die
          Freedom Fighter
          " ناخود گاه، هريك از ما ، از ناميرائي خود يقين دارد " . فروید

          دیدگاه

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