اطلاعیه

Collapse
No announcement yet.

فلاشر با 8051

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

    فلاشر با 8051

    سلام خدمت دوستان عزیز
    من دو تا مشکل در این مورد دارم
    1- اول اینکه میخوام با توجه به اینکه چه مدت وقفه خارجی(INT0 ) رو پایین نگه میدارم سرعت فلاشرم تغییر کنه
    2- دوم اینکه می خوام با این پروژه که 8 کاناله هستش جوری تنظیم بشه که هر کانالش یک ترایاک bt136 رو تریگر کنه لطفا راهنمایی کنید

    #2
    فلاشر با 8051

    سلام
    میشه یه خورده بیشتر توضیح بدی؟ از وقفه برای چه کاری استفاده می کنی؟

    دیدگاه


      #3
      فلاشر با 8051

      با سلام
      از وقفه برای تعیین سرعت خاموش و روشن شدن LED , بعدش لامپهایی که وصل میشن
      می خوام استفاده کنم
      یعنی بر اساس مدت زمانی که وقفه خارجی پایینه بشماره و با استفاده از یک حلقه
      یک وقفه درست کنه
      مثلا اگر وقفه خارجی به مدت5 ثانیه پایین باشه سرعت روشن و خاموش شدن 5 ثانیه باشه
      امیدوارم توضیحاتم بدرد بخوره

      دیدگاه


        #4
        فلاشر با 8051

        سلام امیدوارم متوجه شده باشم که دقیقا چی لازم داری! :roll:
        اگه تو برنامه نویسی مشکلی نداشته باشی ، احتمالا این توضیحات کارت رو راه میندازه.
        برای این کار اول باید یه وقفه خارجی حساس به سطح تعریف کنی. برنامه تو باید به این صورت باشه که وقتی وارد روال وقفه میشه ، یکی از تایمر ها مثلا تایمر 0 شروع کنه به شمردن از 0000 تا FFFF . و هر بار که تایمر به FFFF میرسه ، مقدار یکی از رجیستر ها ( به دلخواه خودت ) که اسمش رو R1 می ذاریم ، افزایش پیدا کنه. بعد از این که وقفه به پایان میرسه و برنامه از روال وقفه خارج میشه ، مقدار این رجیستر همین طور باقی بمونه و مقدارش رو فقط توی یه رجیستر دیگه ( که اسمش رو می ذاریم R2 ) کپی کن. حالا تایمر 0 ( یا تایمر 1 ) دوباره باید شروع کنه به شمردن و این بار با هر بار رسیدن تایمر به مقدار FFFF ، یک واحد از مقدار رجیستر R2 کم بشه تا اینکه به صفر برسه و حالا باید پین مورد نظرت رو CPL کنی و با load شدن مجدد R2 ( از روی مقدار R1 ) ، کار شمارش از سر گرفته بشه و به همین ترتیب ، با هر بار صفر شدن R2 ، پین مورد نظر رو CPLکن. با این چیزایی که من فهمیدم و گفتم که نیازی به وقفه تایمر دیده نشد!
        انشا ا... که مشکل شما با این توضیحات حل شده باشه.

        دیدگاه


          #5
          فلاشر با 8051

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

          دیدگاه


            #6
            فلاشر با 8051

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

            دیدگاه


              #7
              فلاشر با 8051

              سلام:
              منم دارم یه فلاشر درست می کنم امید وارم که بتونیم به هم کمک کنیم :
              من اومدم یه کار دیگه انجام دادم به این صورت که اول یه آرایه رو تعریف کردم سپس تایمر رو توی مد 2 به صورت زیر بار گذاری کردم و:




              void main(){
              sw1=1;
              sw2=1;
              i=0;
              a=4000;
              while (1){
              P0=arr[i];
              for (x=0;x<a;x++)
              if (sw1==0)
              a=a-100;
              if (sw2==0)
              a=a+200;
              i++;
              if (i>400)
              i=0;
              }
              }

              البته قبل از main وsw1,2رو تعریف کردم (sbit sw1=P1^0; sbit sw2=P1^1

              هالا هر بار بازدن کلید ها سرعت کم وزیا می شه
              اگر شما راه بهتری دارین لطفا بگین

              درمورد سوال دوم

              کافی هستش که خروجی ها رو با یه مقاومت 1K سری بکنی و به B یهترانزیستور مثلاBC337
              وصل بکنی C ترانزیستور رو با یهLED به 5ولت و E ترانزیستور رو بایه مقاومت 100 اهم به Gتریاک بدی هالا بهA1 برق بده و A2 رو وصل کن به به سر لامپ و سر دوم لامپ رو وصل کن رشته دوم برق راستی به A1 می بایست منفی مدار رو وصل کنی

              امید وارم به دردت بخوره

              دیدگاه


                #8
                فلاشر با 8051

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

                دیدگاه


                  #9
                  فلاشر با 8051

                  با سلام:
                  1) منم می خواستم با استفاده از وقفه سرعت فلاشری که ساخته بودم رو کنترل کنم ولی چون تازه کارم نشدبرای همین یه کار دیگه کردم به این صورت که تایمر رو بارگذاری کردم واون رو توی یه حلقه قرار دادم که این حلقه به اندازه a تکرار می شد در ابتدا به a مقدار دادم ولی میشد با 2 عددکلید که توی P1.0 و P1.1 قرار داده بودم مقدار aرو تغییر داد ولی عیب کار اینه که اگه سرعت خیلی کم باشه (مقدار a زیاد باشه ) برای کم کردن سرعت می بایست برای مدتی کلید مربوطه رو فشار داد تا سرعت کم بشه برای همین می خواستم اگه موفق شدی از وقفه استفاده کنی به منم یاد بدی


                  2) خروجی رو وصل کن به یه مقاومت 1K وبده به یه LED واون سر LED رو وصل کن به مثبت حالا دوباره ازهمون خروجی با یه مقاومت 2/2 K بده به B ترانزیستور و C رو مستقیم به مثبت وصل کن از E با یه مقاومت 220 اهم بده به G تریاک (مثبت=5ولت)
                  انشاء الله جواب می ده

                  دیدگاه


                    #10
                    فلاشر با 8051

                    لازم هستش که یه بخشی از پست قبلی رو اصلاح کنم

                    برای وصل تریاک به میکرو به روش زیر عمل کنید:

                    خروجی میکرو با یه مقاومت 2/2 کیلو وصل کنید به B ترانزیستور BC337 وCرو مستقیم به 5+ ولت وصل کنید E رو مستقیم به G تریاک وصل کنید حالا 2تا احتمال وجود داره یا لامپ متصل به تریاک خاموش و روشن می شه (که مدار درسته ) یا لامپ در زمانی که باید خاموش باشه با نور کم روشنه در این صورت می بایست که یه مقاومت 100 اهم توی مسیر E قرار بدین

                    (من یه7کانال ساختم که 6کانال کار کردش ولی 1کانل توی مسیر E یه مقاومت 100اهم قرار دادم) برای LED هم می بایست از خروجی میکرو به صورت مستقل از تریاک بگیرین .

                    دیدگاه


                      #11
                      پاسخ : فلاشر با 8051

                      سلام
                      برای ارتباط میکرو با ترایاک بهتر است از روش زیر استفاده کنید:
                      یک اپتو ترایاک مثل MOC3022 لازم دارید این یک قطعه DIP6 است پایه 1 آند LED ,پایه 2 کاتد LED و پایه هایی4و6 یک اپتو دیاک حساس به نور LED داخلی است. LED را با میکرو روشن کنید . پایه 6 اپتو را به گیت ترایاک اصلی و پایه 4 اپتو را با یک مقاومت 4.7 کیلو به پایه A1 ترایک اصلی وصل کنید.(A2 به برق اصلی) .این کار دو حسن دارد:
                      مدار میکرو از برق شهر ایزله می شود و ترایاک بعد از روشن شدن تحریک گیت خود را قطع می کند.

                      دیدگاه

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