اطلاعیه

Collapse
No announcement yet.

شمارنده با میکرو حساس به لبه ی بالا رونده

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

    شمارنده با میکرو حساس به لبه ی بالا رونده

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

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

    سلام
    دوست من اینکه خیلی ساده هست می تونستی خودت بنویسی
    در هر صورت من برات نوشتم
    برنامه میکرو کنترلر به زبان بیسیک هست و فایل شبیه سازی هم در پروتیوس 7.7 شبیه سازی شده است

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

    اینهم برنامه



    $regfile = "m8def.dat"
    $crystal = 1000000

    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

    Config Int1 = Falling

    Enable Interrupts
    Enable Int1

    On Int1 My_count


    Dim A As Word

    Do


    Cls
    lcd "count: "
    Lcd A
    Waitms 500

    Loop


    End


    My_count:

    A = A + 1

    Waitus 100



    Return

    و اینهم شماتیک :

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



    دیدگاه


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

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

      http://www.4shared.com/file/KTrEUeKa/int.html

      دیدگاه


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

        دوست عزیز خدایی خیلی ممنون از کاری که کردی ( پروژه ی شمارنده رو میگم )
        چون من کلا توی کار برنامه نویسی صفر هستم دارم میگم که برای من کارتون خیلی ارزش داشت . اما خواسته ی دیگری داشتم اونم این بود که اگه لطف بکنید و یک مقدار برنامه رو برام ویرایش بکنید خیلی ممنون میشم ( البته اگه وقت دارید چون تا همین جاش هم خیلی ازتون ممنونم
        چون سنسور ورودی میکرو ( که تولید پالس میکنه ) به طوری تنظیم کردم که به ازای هر سانتی متر 1 پالس تولید میکنه میخوام بعد از شمارش عدد 100 که به عنوان یک متر محسوب میشه عدد 100 صفر بشه و در جایی از LCD عبارت 1m نمایش داده بشه و شمارش سانتی متر دباره شروع بشه و مادامی که مجددا به 100 رسید یک رقم رو به قسمت متر اضافه کنه ( چون من به نوعی متراژ برام تهمیت داره )
        ( میگم اگه برنامش سخته خودتونو زحمت نندازید . تا همین جاش هم بهم لطف داشتید)
        پیشاپیش ازتون تشکر میکنم
        در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

        دیدگاه


          #5
          شمارنده با میکرو حساس به لبه ی بالا رونده

          سلام دوست عزیز برای این کار در قسمت شمارش یعنی my -count یه شرط if میزاری به این صورت که وقتی a=100 شد اون رو صفر کنه و یه واحد به یه متغیر دیگه اضافه کنه .برای نمایش اون هم اگه رو lcd باشه یه cls می خوای و نمایش مقدار متغیر جدید.
          My_count:

          A = A + 1

          Waitus 100
          if a=100 then
          a=0
          incr b
          cls
          lcd b;"m"
          return
          چرا ناراحتی پاتریک!
          + امروز ی بچه دیدم سرچهارراه گل میفروخت
          - از دیدنش ناراحت شدی؟
          + نه
          پس چی ناراحتت کرده
          + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
          ------------------------------------------------------------------------------------------------------
          تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
          ------------------------------------------------------------------------------------------------------
          محصولات

          دیدگاه


            #6
            پاسخ : شمارنده با میکرو حساس به لبه ی بالا رونده

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




            $regfile = "m8def.dat"
            $crystal = 1000000

            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

            Config Int1 = Falling

            Enable Interrupts
            Enable Int1

            On Int1 My_count


            Dim A As Word
            Dim B As Word

            Do


            Cls
            Lcd "cm: "
            Lcd A
            Locate 2 , 1
            Lcd "metr: "
            Lcd B
            Waitms 500

            If A >= 100 Then B = 1
            If A >= 200 Then B = 2
            If A >= 300 Then B = 3
            If A >= 400 Then B = 4
            If A >= 500 Then B = 5
            If A >= 600 Then B = 6
            If A >= 700 Then B = 7
            If A >= 800 Then B = 8
            If A >= 900 Then B = 9
            If A >= 1000 Then B = 10





            Loop


            End


            My_count:

            A = A + 1

            Waitus 100



            Return

            اضافه شده در تاریخ :
            و اینهم شماتیک

            دیدگاه


              #7
              پاسخ : شمارنده با میکرو حساس به لبه ی بالا رونده

              سلام دوست عزیز خیلی ممنون از کمکت کلی کارم رو جلو انداختی
              من که ز برنامه نویسی ( بیسیک ) چیزی بلد نبودم با خوندن برنامه ات چیزایی رو متوجه شدم و تونستم دقیقا اون چیزی رو که میخوام به دست بیارم
              ولی یه سری سوال در حاشیه برام به وجود اومد . این مدار از کریستال داخلی استفاده شده ؟ و من فرکانس مدار به 100k تغییر دادم ایا در عمل در عملکرد مدار من نویز به وجود می اد؟ ( چون شنیدم که میگن با استفاده کردن از کریستال داخلی میکرو مدار منجر به نویز میشه)
              بعد سوال دیگه اینه که ایا مولد پالس ورودی میرو باید ولتاژ خاصی رو داشته باشه؟ اخه مولد پالس من حدود 1 ولت رو میده میکرو میتونه با این ولتاژ کار کنه؟
              بازم ممنون از لطفت
              در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

              دیدگاه


                #8
                پاسخ : شمارنده با میکرو حساس به لبه ی بالا رونده

                نوشته اصلی توسط سروش اکرمی
                سلام دوست عزیز خیلی ممنون از کمکت کلی کارم رو جلو انداختی
                من که ز برنامه نویسی ( بیسیک ) چیزی بلد نبودم با خوندن برنامه ات چیزایی رو متوجه شدم و تونستم دقیقا اون چیزی رو که میخوام به دست بیارم
                ولی یه سری سوال در حاشیه برام به وجود اومد . این مدار از کریستال داخلی استفاده شده ؟ و من فرکانس مدار به 100k تغییر دادم ایا در عمل در عملکرد مدار من نویز به وجود می اد؟ ( چون شنیدم که میگن با استفاده کردن از کریستال داخلی میکرو مدار منجر به نویز میشه)
                بعد سوال دیگه اینه که ایا مولد پالس ورودی میرو باید ولتاژ خاصی رو داشته باشه؟ اخه مولد پالس من حدود 1 ولت رو میده میکرو میتونه با این ولتاژ کار کنه؟
                بازم ممنون از لطفت
                سلام
                خواهش می کنم عزیزم
                بله برای این مدار از کریستال داخلی استفاده شده ... شما اگر از بازار یک مگا 8 نو بخرید به صورت پیش فرض کلاک اش روی یک مگاهرتز داخلی قابل تنظیم هست.............
                من قبول دارم کلاک داخلی دارای خطا هست و نویز پذیر و وابسته به دمای محیط هست ولی اون طور نیست که دیگه پروزه اصلا کار نکنه ....... فقط روی تاخیر های زمانی تاثیر مثبت یا منفی میگذاره................ من تو این چند سال کلا از یک مگ داخلی استفاده کردهام . مگر به ندرت از کرستال خارجی آن هم برای کار های فوق العاده دقیق..............
                علت اینکه من کریستال خارجی را برای شما پیشنهاد نمی کم این هست که کار با فیوزبیت ها کمی دنگ فنگ دارد و باید با فیوربیت های داخلی avr ور بری ................ که در صورت تنظیم اشتباهی فیوزبیت ها میکروکنترلر اصلا کار نمی کنه .... و باید با پروگرمر های حرفه ای برش گردونی ................ ولی اگر مایل بودی بگو تا برات توضیح دهم..............
                اینم بگم در کامپایلر بسکام زمان ها دقیق نیست ولی در کد ویژن کم و بیش میشه زمان درستی تخمین زد................

                اما در مورد سوال بعدی و لتاژه وروی به میکرو....
                دوست گلم بعیده این حرف از شما .............. میکروکنترلر 0 یا 1 دیجیتال را میشناسه که ولتاژه 0 الی 0.7 به معنای صفر دیجیتال و ولتاژه 4 تا 5.5 هم به معنای 1 دیجیتال می باشد یعنی اینکه شما باید ولتاژ خروجی مدارتون را تقویت کنید تا اینتراپت میکروکنترلر بتواند آن را شناسایی کند.......... با ترانزیستور و پ امپ امکانپذیر می باشد.........

                دیدگاه


                  #9
                  پاسخ : شمارنده با میکرو حساس به لبه ی بالا رونده

                  سلام
                  دوست من ان طور که من فهمیدم این مدار شما خروجی آنالوگ 1 ولت را میده و باید روی ال سی یک واحد افزایش یابد
                  پس برا همین باید از یک مبدل انالوگ به دیجیتال استفاده کرده که من از اپ امپ 741 استفاده کرده ام که پنتاسیومتر هم جهت تنظیم حد ولتاژ وروی هست....... که من از ولت متر هم جهت نمایش بهتر استفاده کرده ام تا کاملا نمایان باشد ............
                  من فرضا به جای ولتاژ یک ولت مدار از باتری و یک کلید جهت شمارش استفاده کرده ام که در مدار اصلی باید حذف شود و در اینجا فقط جهت شبیه سازی هست و بس
                  اگر در تحلیل مدار مشکل داری بگو تا بگم نحوه کار ان و انتخاب مقاومت های آن را ............


                  دیدگاه


                    #10
                    پاسخ : شمارنده با میکرو حساس به لبه ی بالا رونده

                    سلام دوست عزیز ممنون از کمکت
                    در مورد اون سوال باید بگم بی سوادی ماست دیگه داداش اخه این اولین پروژه ی من هستش و تا حالا کار عملی به اون صورت نکردم ( علی رغم اینکه من بیشتر کارهام هم توی زمینه ی ادبیات و سینما هستش :biggrin: چون بیشتر به اون علاقه دارم ) .
                    بله مولد پالس من یه انکودر نوری هست که با قطع شدن نور یک پالس به ورودی میکرو میده حالا نمیدونم جزو انالوگ حساب میشه یا نه؟ که با توجه به تقویت کننده ی 741 میشه اون رو به 5 ولت رسوند .مرسی از مدارت ترسیمش کردم و البته نفهمیدم پتانسیومتر و مقاومت روی پایه ی 2 ( 741 ) برای چی بود . ما میخوایم که به اشباع منفی نرم که میتونیم پایه ی 3 رو به زمین وصل کنیم و اگه میشه بگو که به چه منظور پتانسیومتر رو اونجا گذاشتی؟
                    توی پروژه ی شما برنامه طوری نوشته شده بود که اگه سانتی متر به 100 رسید متر 1 بشه و اگه به 200 رسید متر 2 مشه و ... من با اجاز تون این رو دستکاری کردم البته با خوندن برنامه ی شما بود که یه چیزایی حالیم شد و اینظور نوشتمش:
                    If A >= 100 Then B = B + 1
                    If A >= 100 Then A = 0
                    چون اینطوری باید برای صد متر و دویست متر هم برنامه مینوشتی و این رح حالی بود که من تنها دهگان سانتی متر برام مهم بود و میخواستم وقتی به صد رسید سانتی متر صفر و یک رقم به متر اضافه شه ( خیلی فکر کردم چطور برنامه تون رو ویرایش کنم دسخ اخر با توجه به نوشته های خودتون این دستگیرم شد )

                    مورد سوم اینکه 741 رو همین طور وصل کنیم مشکلی نداره یعنی پایه های ازاد اون ( 1 و 5 ) رو به جایی وصل نمیکنیم؟
                    منون از لطفت دوست عزیز
                    در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

                    دیدگاه


                      #11
                      پاسخ : شمارنده با میکرو حساس به لبه ی بالا رونده

                      نوشته اصلی توسط سروش اکرمی
                      سلام دوست عزیز ممنون از کمکت
                      در مورد اون سوال باید بگم بی سوادی ماست دیگه داداش اخه این اولین پروژه ی من هستش و تا حالا کار عملی به اون صورت نکردم ( علی رغم اینکه من بیشتر کارهام هم توی زمینه ی ادبیات و سینما هستش :biggrin: چون بیشتر به اون علاقه دارم ) .
                      بله مولد پالس من یه انکودر نوری هست که با قطع شدن نور یک پالس به ورودی میکرو میده حالا نمیدونم جزو انالوگ حساب میشه یا نه؟ که با توجه به تقویت کننده ی 741 میشه اون رو به 5 ولت رسوند .مرسی از مدارت ترسیمش کردم و البته نفهمیدم پتانسیومتر و مقاومت روی پایه ی 2 ( 741 ) برای چی بود . ما میخوایم که به اشباع منفی نرم که میتونیم پایه ی 3 رو به زمین وصل کنیم و اگه میشه بگو که به چه منظور پتانسیومتر رو اونجا گذاشتی؟
                      توی پروژه ی شما برنامه طوری نوشته شده بود که اگه سانتی متر به 100 رسید متر 1 بشه و اگه به 200 رسید متر 2 مشه و ... من با اجاز تون این رو دستکاری کردم البته با خوندن برنامه ی شما بود که یه چیزایی حالیم شد و اینظور نوشتمش:
                      If A >= 100 Then B = B + 1
                      If A >= 100 Then A = 0
                      چون اینطوری باید برای صد متر و دویست متر هم برنامه مینوشتی و این رح حالی بود که من تنها دهگان سانتی متر برام مهم بود و میخواستم وقتی به صد رسید سانتی متر صفر و یک رقم به متر اضافه شه ( خیلی فکر کردم چطور برنامه تون رو ویرایش کنم دسخ اخر با توجه به نوشته های خودتون این دستگیرم شد )

                      مورد سوم اینکه 741 رو همین طور وصل کنیم مشکلی نداره یعنی پایه های ازاد اون ( 1 و 5 ) رو به جایی وصل نمیکنیم؟
                      منون از لطفت دوست عزیز

                      سلام
                      در مورد برنامه باید بگم هر طور که بخواهی می تونی ویرایش کنی اخه مدار که جلو دست من نیست که... من فقط از روی گفته های شما برنامه را نوشتم کم و کبفش را می توانید خودتان انجام دهید..........راه حل شما هم درسته
                      اما اون پایه هایی را که ازاد گذاشتم لازم نیست به جایی وصل کنید در ضمن به خروجی 741 یک نات هم گذاشتم تا 1 را به 0 تبدیل کند.........
                      اما کاربرد پنتاسیومتر چیست؟؟؟
                      شما می توانستید مستقیما مقاومت و پنتاسیومتر را به کار نبرید در اون صورت به ازای ولتاز کمی بیشتر از صفر الی 5 خروجی میکرو 5 یا یک دیجیتال می شد..........
                      ولی با اضافه کردن مقاومت و پنتاسیومتر من این قابلیت را اضافه کردم که بتوانید حد ولتاژ مقایسه را تغییر دهید مثلا در مثال قبلی ولتاژ 1 ولت شما با 0 مقایسه می شد و دیگر امکان تغییر نبود ولی در این مثال می توانی ولتاژ پایه منفی را تغییر دهی بلفرض اگر ولتاژ انالوگ خروجی میکرو اگر 2 می شد اون وقت می تونی حد مقایسه را به کمی کمتر از 2ولت تنظیم کنی که خروجی 1 دیجیتال بشود..........
                      در این مثال هم من نمی خواستم ولتاژ 1 ولت شما با صفر مقایسه بشه من می خواستم ولتاژ مورد مقایسه نزدیک 1 باشه
                      در هر صورت ولتاژ پایه منفی کمتر از 0.45 نمیره و بیشتر از 5 ولت نمیره

                      ولتاژ روی پایه منفی یا همون ولتاژ روی مقاومت 100 اهم (فرمول تقسیم ولتاژ) : مقاومت 100 اهم ضزبدر 5ولت کلهم تقسیم بر مجموع مقاومت 1 کیلو و 100 اهم که می شود 0.45
                      شما می توانید خودتان رنج مقاومت ها را تغییر دهید

                      دیدگاه

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