اطلاعیه

Collapse
No announcement yet.

کمک در پروژه ی یک شمارنده ی ساده با میکرو

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

    کمک در پروژه ی یک شمارنده ی ساده با میکرو

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

    اینم برنامش(بیسیک):
    http://www.pic.iran-forum.ir/images/oz6v70s2hsw16x9u4yd9.zip
    از کمک دوستان پیشاپیش ممنونم
    در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

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

    سلام دوست من
    شما میتونی یه کلید اضافه کنی به یه قسمت از قسمتهای مکانیکی دستگاه بطوری که اگه چرخش برعکس شد اون کلید زده بشه و شما تو برنامه کلید رو طوری تعریف میکنی که اگه زده شد شمارش برعکس بشه
    این ساده ترین راهی بود که به ذهنم رسید
    البته یه پروژه متر دیجیتال متعلق به آقای نصرالله زاده دارم که با شفت انکودر هست و قابلیت کاهشی و افزایشی هم داره
    میتونی از اینجا دانلود کنی
    http://www.mediafire.com/?u0fclwuk8gd7e9i
    موفق باشی

    دیدگاه


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

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

      دیدگاه


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

        آقای اکرمی عزیز
        اگر به فایلی که برات پلود کردم توجه کنی برنامه کامل به زبان بسکام و توضیحات پروژه به صورت پی دی اف وجود داره
        ولی مثل اینکه شما انتظار دارید کسی براتون برنامه کامل رو بنویسه و اینجا قرار بده
        فکر میکنم کمی هم تلاش کردن بد نباشه
        به هر حال این تنها کاری بود که از من برمیومد
        در ضمن پسورد فایل هم www.bargh20.com هست

        دیدگاه


          #5
          پاسخ : کمک در پروژه ی یک شمارنده ی ساده با میکرو

          نوشته اصلی توسط hemati01
          آقای اکرمی عزیز
          اگر به فایلی که برات پلود کردم توجه کنی برنامه کامل به زبان بسکام و توضیحات پروژه به صورت پی دی اف وجود داره
          ولی مثل اینکه شما انتظار دارید کسی براتون برنامه کامل رو بنویسه و اینجا قرار بده
          فکر میکنم کمی هم تلاش کردن بد نباشه
          به هر حال این تنها کاری بود که از من برمیومد
          در ضمن پسورد فایل هم www.bargh20.com هست
          دوست عزیز من اون پروژه ی اقای نصر الاه زاده رو یک ماه پیش دانلود کردم و مطالعه کردم و در مورد اون پروژه تاپیک زدم و سوالام رو پرسیدم حتی نظرات خصوصی به برخی دوستان دادم که بیان در مورد مشکلم یه کمکی بکنن اما کسی نیومد
          نمیدونم چرا بعضی دوستان تو این انجمن اینقدر عصبانی هستند
          من تازه کار هستم و نا وارد این برنامه رو هم کم میبینید یکی از دوستان زحمتش رو کشید و بعد از کلی فکر کردن من فقط تونستم اونجوری که خودم میخوام برنامه رو ویرایش کنم چون کلا بیسیک کار نکردم
          ادم تنبلی هم نیستم اما چون برای تحویل پروژه تا اخر شهریور فرصت دارم ترجیح دادم اینجا مطرح کنم ولی فکر نکنم اینجوری که پیش میره جوابی بگیرم
          بازم ممنون اینا رو هم گفتم که بدونی ادم حاظری خوری نیستم وقت ندارم اگه کمکی هم از دستت نمیاد ممنونم بابت پستت عصبانیت لازم نیست برادر من
          در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

          دیدگاه


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

            با سلام
            آقا یک چیزی به ذهنم رسید گفتم بگم شاید کمکتون کرد
            اگر موتور تون dc هست بیاییم یک مدار مقایسه کننده یا اشمیت تریگر بزاریم که ورودیش یکی از ترمینال های موتور باشه و سر دیگش زمین ، به این ترتیب اگر ولتاژ ترمینال مثبت بود (مثلا دور راست گرد) خروجی مقایسه گر on بشه و اگر زمین بود (مثلا دور چپ گرد ) خروجی مقایشه گر off بشه حالا بیاییم با میکرو خروجی مقایسه گر رو در هر لحظه بسنجیم اگر مقدار 1 بود شمارش به صورت صعودی و اگر صفر بود شمارش به صورت نزولی !

            دیدگاه


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

              نوشته اصلی توسط mojtaba_led
              با سلام
              آقا یک چیزی به ذهنم رسید گفتم بگم شاید کمکتون کرد
              اگر موتور تون dc هست بیاییم یک مدار مقایسه کننده یا اشمیت تریگر بزاریم که ورودیش یکی از ترمینال های موتور باشه و سر دیگش زمین ، به این ترتیب اگر ولتاژ ترمینال مثبت بود (مثلا دور راست گرد) خروجی مقایسه گر on بشه و اگر زمین بود (مثلا دور چپ گرد ) خروجی مقایشه گر off بشه حالا بیاییم با میکرو خروجی مقایسه گر رو در هر لحظه بسنجیم اگر مقدار 1 بود شمارش به صورت صعودی و اگر صفر بود شمارش به صورت نزولی !
              سلام دوست عزیز
              نه عزیز من موتوری در پروژم ندارم . یه شفت انکودر هست
              نمیشه اینجوری طراحی کرد که : با توجه به دو خروجی بودن انکورد و داشتن 90 در جه اختلاف فاز بین دو خروجی . و دادن دو خروجی به میکرو بدین صورت تعریف کنیم که زمانی که اولین خروجی انکودر (ورودی اول میکرو ) پیش فاز بود شمارش به صورت صعودی و زمانی که خروجی دوم انکدر پیش فاز بود شمارش به صورت نزولی ادامه پیدا کند؟
              در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

              دیدگاه


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

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

                دیدگاه


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

                  سلام دوست عزیز
                  نه عزیز من موتوری در پروژم ندارم . یه شفت انکودر هست
                  نمیشه اینجوری طراحی کرد که : با توجه به دو خروجی بودن انکورد و داشتن 90 در جه اختلاف فاز بین دو خروجی . و دادن دو خروجی به میکرو بدین صورت تعریف کنیم که زمانی که اولین خروجی انکودر (ورودی اول میکرو ) پیش فاز بود شمارش به صورت صعودی و زمانی که خروجی دوم انکدر پیش فاز بود شمارش به صورت نزولی ادامه پیدا کند؟
                  بله ؛ ببخشید من باز مثل همیشه یه چیزی پروندم که توش موندم :redface:

                  من یه سرچی کردم این لینکا رو دیدم فکر میکنم کمکتون کنن :
                  http://www.eca.ir/forum2/index.php?topic=19473.0

                  http://www.eca.ir/forum2/index.php?topic=15858

                  http://mechatronic-lab.com/index.php?newsid=60

                  راستی اگر نتیجه گرفتید ما رو هم بی نصیب نزارید!

                  دیدگاه


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

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

                    دیدگاه


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

                      آقا تا اونجا که از صحبت های جناب آقا زاده و اونچه که توی تاییک هایی که اشاره کردم برمیاد ، شفت انکودر دوتا خروجی داره که با هم 90 درجه اختلاف فاز دارندکه با توجه به جهت حرکت اگر مبنای ما یکی از این خروجی ها باشه خروجی دیگه مثلا اگر انکودر در جهت راست بچرخه 90 درجه پس فاز و اگر به سمت چپ بچرخه 90 درجه پیش فازه خوب این یعنی دو تا حالت رو ایجاد میکنه :
                      1. در لبه بالا رونده خروجی مرجع (مثلا خروجی A) در جهت راستگرد خروجی دوم (یعنی خروجی B) برابر با 0 هست
                      2. در لبه بالا رونده خروجی مرجع (مثلا خروجی A) در جهت چپ گرد خروجی دوم (یعنی خروجی B) برابر با 1 هست

                      خوب حالا با این تفاسیر اگر بیایید (مثلا خروجی A) رو به یک وقفه خارجی (مثلا INT0)متصل و اون رو حساس به لبه بالا رونده تنظیم کنید و خروجی دوم رو مثلا بدید به PB0 حالا بیایید توی روتین وقفه یک ساختار IF تعریف کنید و توش بگید که اگر PB0 یک بود یک متغیر مثلا I رو یک واحد زیاد کنه و در غیر این صورت(اگر PB0 صفر بود) متغیر I رو یک واحد کاهش بده!

                      دیدگاه


                        #12
                        پاسخ : کمک در پروژه ی یک شمارنده ی ساده با میکرو

                        آقا تا اونجا که از صحبت های ....
                        بیخود نیست میگن "العاقل یکفی بالاشاره".
                        خوشم میاد آقا مجتبی خوب تیزه.
                        زدن تشکر کم بود.

                        (مطمئنم همشهری خودمونه)
                        :mrgreen:

                        دیدگاه


                          #13
                          پاسخ : کمک در پروژه ی یک شمارنده ی ساده با میکرو

                          سلام دوست عزیز
                          من نه کیم خیلی استاد هستم دیر میگیرم
                          ولی بالاخره فهمیدم چی شد
                          من توی برنامه نویسی ناوارد هستم اما در کل این برنامه ی پروژه ی منه ( همین جا نوشتم که مشکل دانلود نداشته باشید ) لطف کنید بگید برای انجام درخواست فوق باید کجای برنامه رو تغییر بدم و اگه لطف کنید و قسمت اصلاح شده رو برام بنویسید ممنون میشم . اخه خیلی کارم گیره
                          پیشاپیش ممنون
                          اینم برنامه ی حال حاظر پروژه ی من:
                          $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 = Rising

                          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 "meter: "
                          Lcd B
                          Waitms 500

                          If A >= 100 Then B = B + 1
                          If A >= 100 Then A = 0




                          Loop


                          End


                          My_count:

                          A = A + 1

                          Waitus 100



                          Return
                          در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

                          دیدگاه


                            #14
                            پاسخ : کمک در پروژه ی یک شمارنده ی ساده با میکرو

                            نوشته اصلی توسط رضا آقازاده
                            بیخود نیست میگن "العاقل یکفی بالاشاره".
                            خوشم میاد آقا مجتبی خوب تیزه.
                            زدن تشکر کم بود.

                            (مطمئنم همشهری خودمونه)
                            :mrgreen:
                            آقا خیلی مخلصیییییییییییییییییییییییییییییییییییییییییییییی یییییم
                            آقا ما هر چقدر هم که تیز باشیم ذره ای از دانش شما رو هم نمیتونیم بدست بیاریم
                            والا ما که تو تهران(اسلامشهر) بدنیا امدیم اصلیت مون هم ....


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

                            My_count:
                            '================================
                            If Pinb.0 = 0 Then
                            Incr A
                            Else
                            Decr A
                            End If
                            '================================
                            Return

                            به این ترتیب که خروجی a به اینتراپت 1 و خروجی b به پایه pb0 متصل شده باشند

                            دیدگاه


                              #15
                              پاسخ : کمک در پروژه ی یک شمارنده ی ساده با میکرو

                              نوشته اصلی توسط mojtaba_led
                              آقا خیلی مخلصیییییییییییییییییییییییییییییییییییییییییییییی یییییم
                              آقا ما هر چقدر هم که تیز باشیم ذره ای از دانش شما رو هم نمیتونیم بدست بیاریم
                              والا ما که تو تهران(اسلامشهر) بدنیا امدیم اصلیت مون هم ....


                              دوست عزیز من نفهمیدم دقیقا میخواهید چکاری انجام بدید ولی منظورم این بود که روتین وقفه رو به صورت زیر بنویسید

                              My_count:
                              '================================
                              If Pinb.0 = 0 Then
                              Incr A
                              Else
                              Decr A
                              End If
                              '================================
                              Return

                              به این ترتیب که خروجی a به اینتراپت 1 و خروجی b به پایه pb0 متصل شده باشند
                              دوست عزیز من میخوام در یک جهت چرخش انکدر شمارش بالا شمار بشه و در جهت معکوس چرخش شمارش پایین شمار
                              حالا در برنامه ای که نوشتم متغیر a رو برای سانتی متر و متغیر B رو برای متر در نظر گرفتم که درجهت بالا شمار که الان مشکلی درش ندارم و خوب برنامه به نحوی هست که با هر پالس ورودی مقدار متغر A یک عدد اضافه میشه و وقتی مقدار A به 100 رسید مقدار ان صفر شه و همزمان با به صد رسیدن A یه دونه به متغیر B اضافه بشه که همون مقدار متر هست و در کل روی ال سی دی نمایش داده بشه که خوب تا اینجا مشکلی نیست و مدار جواب میده
                              حالا تغییر در برنامه باید به صورتی باشه که در جهت معکوس چرخیدن شفت انکدر ( مولد پالس ورودی میکرو ) از مقدار شمارش کاسته بشه و خوب مسلما ابتدا از مقدار A کاسته بشه و با به صفر رسیدن A مقدار B هم یه دونه کم شه
                              و به طور کلی اگر انکودر ورودی میکرو در چرخش مثلا ساعت گرد 250 پالس تولید کنه باید مقدار به صورت زیر باشد
                              CM:50
                              Meter:2
                              و خوب اگر در جهت معکوس 250 پالس انکودر را بچرخانیم و 250 پالس در جهت معکوس چتولید شود مطمعنا باید مقدار صفر شود
                              ( من شفت انکودرم در هر سانتی متر 1 پالس میده خودم اون رو اینجوری درستش کردم)
                              و میخوام با توجه به دو خروجی بودن شفت انکودر با 90 درجه اختلاف فاز اگر خروجی اول A پیشفاز بود شمارش بالا رونده و اگر خروجی b پیش فاز بود شمارش پایین رونده شود ( چون در صورت چرخش در جهت معکوس مسلما خروجی دوم پیش فاز میشود)
                              و در کل میخوام هر خروجی انکودر رو به یکی از ورودی های میکرو بدم که بتونه پیشقاز بودن هر رو خروجی رو تشخیص بده و مشکل من در برنامه ی اونه که چطور میکرو میفهمه که کدوم پیشفاز هستش که بالا شمار بشه یا پیین شمار
                              دیگه ساده تر از این رو نمیتونستم بگم
                              دوستان کمک کنن
                              در کشوری که تنها دولت حق حرف زدن دارد هیچ حرفی را باور نکنید

                              دیدگاه

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