اطلاعیه

Collapse
No announcement yet.

راه اندازی موتور dc

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

    #31
    پاسخ : راه اندازی موتور dc

    نوشته اصلی توسط سید محمد جعفری
    سلام
    َََ-A رو مقدار دهی اولیه نکردی.
    قبل از main مقدار صفرو به A بده که تو لوپتم نباشه.
    -حواست باشه بدلیل OPTION_REG = $7F وقفه رو لبه بالارونده اتفاق میفته پس برای تست به جای 555 یه پول داون ببند رو b0 ات و با کلید فشاری که به vcc وصله به b0 دستی پالس بالارو بده.
    باقیش درسته...

    سلام از بنده است.
    بسیار بسیار متشکرم جناب جعفری.
    تا اینجا رو ok.

    نوشته اصلی توسط سید محمد جعفری
    - با توجه به این که برای برنامه نهاییت نیاز به دو شمارنده داری که با هر پالس اینتراپت شن و اگر میکروت 1 ext-intr داره هم میتونی از کانترها با ورودی کلاک پالس خارجی استفاده کنی که مقدار اولیه تایمرو مثلا اگه 8 بیتییه 254 بزاری...
    موفق باشی.
    ok...
    اگر درست متوجه شده باشم چون میکرو 877a ما یه دونه اینت اکسترنال بیشتر نداره برای اینکه خروجی 2 تا موتورامون رو با یه میکرو بخونیم باید برای خوندن دومی از تایمرهای میکرو استفاده کنم، اونم اینکه از سر ریز یه تایمر استفاده کنم و ثباتهاش رو با max مقداری که اون تایمر میتونه بشمره پر کنم، درست عرض میکنم؟!
    منتها متاسفانه دقیقا منطقش برام جا نیفتاد که بعدش باید چکار کنم :redface:
    زندگی برگ بودن در مسیر باد نیست
    امتحان ریشه هاست
    ریشه هم هرگز اسیر باد نیست
    زندگی چون پیچک است
    انتهایش میرسد پیش خدا!

    دیدگاه


      #32
      پاسخ : راه اندازی موتور dc

      سلام.یه خرده دیر اومدم معذرت؛ درست و حسابی اینترنت دسترسی نداشتم! :redface:

      شما واسه شمردن تعداد پالسها تون خروجی پ - امپ ها رو به ورودی تایمر صفر(پایه A.4) و تایمر یک(پایه C.0 ) وصل میکنین.تو تنظیمات رجیستر های مربوط به این ماژولها؛ ورودی پالس رو اون پایه انتخاب میکنین.

      مثلا از رجیسترT1CON بیت یک( TMR1CS: Timer1 Clock Source Select bit) مقدارش رو یک انتخاب میکنین.

      وبرای تایمر صفر از رجیستر OPTION_REG REGISTER بیت پنجم یعنی (T0CS: TMR0 Clock Source Select bit) مقدارش رو برابر 1 قرار بدین.

      سعی کنین دیتاشیت رو خوب مطالعه کنین.تمامی این اطلاعات رو از صفحات 56 و 59 برداشتم.(البته تو دیتاشیت هایی که از سایت های مختلف دانلود میکنین شاید 1 یا 2 صفحه تفاوت داشته باشه)

      دیدگاه


        #33
        پاسخ : راه اندازی موتور dc

        ثباتهاش رو با max مقداری که اون تایمر میتونه بشمره پر کنم،
        درسته اینجوری وقتی با 255 پرش کنی با هر پالس خارجی اعمالی اینتراپت میده بعد دوباره تو زیر روال وقفت مقدار 255 رو بهش بده. تو زیر روال وقفتم از روی پرچم اینتراپتا تشخیص میدی که منبع وقفه تایمر بوده یا اکسترنال(با یه if ) و بقیه کارای مربوط به شمارشو انجام میدی...
        برنامرو بنویس اجرا کن اگر مشکلی داشت مطرح کن. :job:
        مشغول در این دنیای آکل و ماکول .......

        دیدگاه


          #34
          پاسخ : راه اندازی موتور dc

          نوشته اصلی توسط شاهرخ
          سلام.یه خرده دیر اومدم معذرت؛ درست و حسابی اینترنت دسترسی نداشتم! :redface:

          شما واسه شمردن تعداد پالسها تون خروجی پ - امپ ها رو به ورودی تایمر صفر(پایه A.4) و تایمر یک(پایه C.0 ) وصل میکنین.تو تنظیمات رجیستر های مربوط به این ماژولها؛ ورودی پالس رو اون پایه انتخاب میکنین.

          مثلا از رجیسترT1CON بیت یک( TMR1CS: Timer1 Clock Source Select bit) مقدارش رو یک انتخاب میکنین.

          وبرای تایمر صفر از رجیستر OPTION_REG REGISTER بیت پنجم یعنی (T0CS: TMR0 Clock Source Select bit) مقدارش رو برابر 1 قرار بدین.

          سعی کنین دیتاشیت رو خوب مطالعه کنین.تمامی این اطلاعات رو از صفحات 56 و 59 برداشتم.(البته تو دیتاشیت هایی که از سایت های مختلف دانلود میکنین شاید 1 یا 2 صفحه تفاوت داشته باشه)
          سلام، تمنا میکنم، شما لطف دارید.
          ok، متشکرم.

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

          دیگه واقعا کم آوردم، خیلی این پروژه لعنتی داره اذیتم میکنه، امیدوارم بتونم به یه جائیش برسونم....

          اضافه شده در تاریخ :
          سلام دوستان.
          طبق برنامه ی اخیر واسه خوندن تعداد پالسها، سعی کردم با یه موتور dc و اینت اکسترنال، پالسها رو بشمرم، اما متاسفانه تو lcd یه سره فقط A=0 رو میدیدم!!
          یعنی عملا هیچ پالسی شمرده نمیشد...
          به نظر شما چه اتفاقی افتاده؟
          زندگی برگ بودن در مسیر باد نیست
          امتحان ریشه هاست
          ریشه هم هرگز اسیر باد نیست
          زندگی چون پیچک است
          انتهایش میرسد پیش خدا!

          دیدگاه


            #35
            پاسخ : راه اندازی موتور dc

            سلام.چرا اینت اکسترنال؟ چرا از ورودی تایمر استفاده نکردین؟

            سورس برنامه لطفا؟ (انگار اتاق عمل هست! تیغ و پنس لطفا...! :mrgreen: )

            البته سورس ظاهرا همون بالایی هست؟

            دیدگاه


              #36
              پاسخ : راه اندازی موتور dc

              نوشته اصلی توسط شاهرخ
              سلام.چرا اینت اکسترنال؟ چرا از ورودی تایمر استفاده نکردین؟

              سورس برنامه لطفا؟ (انگار اتاق عمل هست! تیغ و پنس لطفا...! :mrgreen: )

              البته سورس ظاهرا همون بالایی هست؟
              سلام.
              آخه همون اول با اینت اکسترنال نوشته بودم، برنامه رو هم گذاشتم اینجا و دیدم ایرادی نداره، گفتم تست کنم ببینم چطور میشه، که اینطور شد :angry:
              بله جناب شاهرخ، همون بالاییه، فقط A رو هم اولش 0 کردم:

              کد:
              @ DEVICE PIC16F877A ,WDT_OFF ,LVP_OFF ,PROTECT_OFF ,PWRT_ON ,BOD_OFF
               
              DEFINE LCD_DREG PORTD
              DEFINE LCD_DBIT 4
              DEFINE LCD_RSREG PORTD
              DEFINE LCD_RSBIT 2
              DEFINE LCD_EREG PORTD
              DEFINE LCD_EBIT 3
              DEFINE LCD_BITS 4
              DEFINE LCD_LINES 2
              
              A VAR WORD
              A = 0
              ON INTERRUPT GOTO lable
              OPTION_REG = $7F
              INTCON = %10010000
              
              main:
                LCDOUT $FE, 1
                LCDOUT "A="
                LCDOUT $FE, $14
                LCDOUT #A
                pause 500
                goto main
                
                DISABLE
              lable:
                A = A + 1
                PAUSE 100
                INTCON.1 = 0
              RESUME
                ENABLE    
              END
              به نظرتون برنامه ایرادی داره؟
              البته الان میشینم با تایمر مینویسم...

              کی باشه که من از دست این موتورا سکته کنم؟!
              آخه مجبورم همزمان رو سروو هم کار کنم...
              زندگی برگ بودن در مسیر باد نیست
              امتحان ریشه هاست
              ریشه هم هرگز اسیر باد نیست
              زندگی چون پیچک است
              انتهایش میرسد پیش خدا!

              دیدگاه


                #37
                پاسخ : راه اندازی موتور dc

                برنامه رو اینطور تغییر بدین:

                کد:
                @ DEVICE PIC16F877A ,WDT_OFF ,LVP_OFF ,PROTECT_OFF ,PWRT_ON ,BOD_OFF
                 
                DEFINE LCD_DREG PORTD
                DEFINE LCD_DBIT 4
                DEFINE LCD_RSREG PORTD
                DEFINE LCD_RSBIT 2
                DEFINE LCD_EREG PORTD
                DEFINE LCD_EBIT 3
                DEFINE LCD_BITS 4
                DEFINE LCD_LINES 2
                
                A VAR WORD
                A = 0
                OPTION_REG = $7F
                INTCON = %10010000
                
                ON INTERRUPT GOTO lable
                
                
                main:
                  LCDOUT $FE, 1
                  LCDOUT "A="
                  LCDOUT $FE, $14
                  LCDOUT #A
                  pause 500
                  goto main
                  
                  DISABLE
                lable:
                  INTCON.7 = 0
                  A = A + 1
                  PAUSE 100
                  INTCON.7 = 1
                  INTCON.1 = 0
                RESUME
                  ENABLE    
                END
                مختصر نگاه کنین میبینین که کجاش رو تغییر دادم.واضحه ولی اگه توضیح خواستین بگین تا بگم چرا؟

                البته این برنامه رو تو محیط تکست تغییر دادم،کامپایلر PBP تو ویندوز64بیتی کار نمیکنه.نتونستم تست بکنم ببینم ایراد داره؟نداره؟درست کار میکنه یا نه؟

                انشاالله که درست باشه.

                دیدگاه


                  #38
                  پاسخ : راه اندازی موتور dc

                  بسیار متشکرم.
                  فکر میکنم تو روال مربوط به وقفه اول بیت فعالسازی کلیه وقفه ها رو غیر فعال کردید، و بعد از اینکه متغیرمون یه دونه زیاد شد، اونو دوباره فعال کردید، درست عرض میکنم؟
                  چشم الان تست میکنم و خبر میدم....
                  زندگی برگ بودن در مسیر باد نیست
                  امتحان ریشه هاست
                  ریشه هم هرگز اسیر باد نیست
                  زندگی چون پیچک است
                  انتهایش میرسد پیش خدا!

                  دیدگاه


                    #39
                    پاسخ : راه اندازی موتور dc

                    دستور DISABLE و ENABLE چیکار میکنن؟ حسش نیست برم نگاه کنم!
                    نوشته اصلی توسط pama
                    فکر میکنم تو روال مربوط به وقفه اول بیت فعالسازی کلیه وقفه ها رو غیر فعال کردید، و بعد از اینکه متغیرمون یه دونه زیاد شد، اونو دوباره فعال کردید، درست عرض میکنم؟
                    درسته؛علاوه بر این فعال سازی اینتراپت رو باید قبل از On interrupt بنویسیم...

                    دیدگاه


                      #40
                      پاسخ : راه اندازی موتور dc

                      DISABLE غیر فعال کردن کلیه ی وقفه ها موقعی که زیر برنامه ی وقفه در حال اجراست، و ENABLE برای فعال کردن دوباره ی وقفه هاست.

                      نوشته اصلی توسط شاهرخ
                      علاوه بر این فعال سازی اینتراپت رو باید قبل از On interrupt بنویسیم...
                      ok

                      با این برنامه هم نشد متاسفانه....
                      کامپایل که کردم error نداد، منتها بازم یه سره A=0 رو نشون میده....
                      هر چند خیلی برام جالبه بدونم ایراد برنامه از چیه، منتها با تایمرها مینویسم...
                      زندگی برگ بودن در مسیر باد نیست
                      امتحان ریشه هاست
                      ریشه هم هرگز اسیر باد نیست
                      زندگی چون پیچک است
                      انتهایش میرسد پیش خدا!

                      دیدگاه


                        #41
                        پاسخ : راه اندازی موتور dc

                        :angry: حیف این کامپایلر رو سیستمم نصب نمیشه....

                        راستی اگه ممکنه شماتیک مدار رو بزارین اینجا شاید یه جایی از شماتیک موردی داشته باشه؟؟

                        و اگه میخواین برنامه رو با تایمرها بنویسین به تنظیمات رجیسترها دقت کنین...(رجیسترهای PIR , Intcon , Option_reg )

                        دیدگاه


                          #42
                          پاسخ : راه اندازی موتور dc

                          نوشته اصلی توسط شاهرخ
                          و اگه میخواین برنامه رو با تایمرها بنویسین به تنظیمات رجیسترها دقت کنین...(رجیسترهای PIR , Intcon , Option_reg )
                          متشکرم از لطفتون.
                          ok حتما.
                          منتها قبلش چون فعلا پروتئوس رو ندارم و نمیتونم شماتیک رو بذارم یه توضیحی از مداری که دارم رو بدم:
                          راستش بنده برای قسمت سنسور ماجرا یه دونه از این led های فرستنده گیرنده ی 3 میلیمتری دم دستم بود، اونو بستم به مدار، طوری که فرستنده رو کاتدشو با 330 اهم بردم زمین، آندشو به 5 ولت
                          گیرنده هم کاتدش رو با 2.2 کیلو و یه pot 10 کیلو بردم به 5 ولت و آندش رو به gnd
                          از سر کاتد گیرنده هم اومدم به اینت اکسترنال
                          این میشه کل مدار سنسور واسه دیدن پالسها...

                          مدار موتور و l298 هم که ok هست و موردی نداره خدا رو شکر...

                          ممکن هست جایی از مدارم ایراد داشته باشه؟؟
                          زندگی برگ بودن در مسیر باد نیست
                          امتحان ریشه هاست
                          ریشه هم هرگز اسیر باد نیست
                          زندگی چون پیچک است
                          انتهایش میرسد پیش خدا!

                          دیدگاه


                            #43
                            پاسخ : راه اندازی موتور dc

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

                            دیدگاه


                              #44
                              پاسخ : راه اندازی موتور dc

                              نوشته اصلی توسط شاهرخ
                              پ امپ طبق مدار بالا....
                              حتما بذارین. ضمنا پتانسیومتر به پایه مثبت پ امپ وصل میشه و جهت تنظیم حساسیت سنسور استفاده میشه. راستی الان کجا دارین اینو تست میکنین؟ تو اونجایی که هستین لامپی که روشنه چیه؟ مهتابی؟کم مصرف؟ لامپ رشته ای؟(خنده داره ولی خیلی مهمه!)
                              دوسر گیرنده مادون قرمز رو با مولتی متر اندازه بگیرین(اهم متر)بدون وصل کردن به هیچ تغذیه جانبی؛ سنسور رو تو یه موقعیت کم نور ببرین؛مقدار مقاومت دوسر گیرنده مادون قرمز باید زیاد بشه.(اگه نشد سیمهای مولتی متر رو جابجا بزنین) وقتی هم که سنسور رو به طرف نور(ترجیحا لامپ رشته ای یا خود فرستنده مادون قرمز) میگیرین باید مقدار اهمی سنسور کم بشه.غیر از این بود سنسور به رحمت خدا رفته! (البته خیلی بعید میدونم گیرنده مادون قرمز راحت بسوزه)
                              پ امپ رو چشم.
                              تو اتاق هم لامپ کم مصرف روشن هست هم مهتابی.
                              okبقیه موارد رو هم چشم، تست میکنم و خبرش رو میدم.

                              یک دنیا متشکرم از لطفتون.

                              اضافه شده در تاریخ :
                              سلام دوستان.
                              روز بخیر.
                              نتیجه ی تست مقاومتی این شد:
                              در شرایط تاریکی مقاومتش حدود 14.9 کیلو بود و کنار لامپ رشته ای حدود 7.8 کیلو...
                              البته نمیدونم نتیجه ی تست درست هست یا خیر؟ و میشه نتیجه گرفت که گیرنده سوخته یا سالمه؟

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

                              چون عرض کردم اصلا وقتیکه با ولتمتر میخونم ولتاژ سر گیرنده رو با زمین، ولتاژهایی که باید رو نشون نمیده (همون 1.8 ولت در صورت نبودن مانع و 2.5 ولت در صورت بودن مانع)

                              و گمون میکنم دلیل اینکه من یه سرهA=0 رو تو خروجی میبینم به نظرم میاد که همش از این سنسوره باشه.....
                              به نظر دوستان چه کاری انجام بدم بهتره؟



                              اضافه شده در تاریخ :
                              سلام دوستان.
                              حل شد، شکر خدا...
                              با کمک یک دوست بزرگواری سوتی عظمایی که تو مدار داده بودم، پیدا شد و رفع شد.
                              بگذریم...
                              بالاخره تعداد پالسها رو تو خروجی lcd خوندم، تو مرحله ی بعد باید سر یک پالس مشخصی اقدام به stop کردن موتور کنم...
                              زندگی برگ بودن در مسیر باد نیست
                              امتحان ریشه هاست
                              ریشه هم هرگز اسیر باد نیست
                              زندگی چون پیچک است
                              انتهایش میرسد پیش خدا!

                              دیدگاه


                                #45
                                پاسخ : راه اندازی موتور dc

                                نوشته اصلی توسط pama
                                سلام دوستان.
                                حل شد، شکر خدا...
                                با کمک یک دوست بزرگواری سوتی عظمایی که تو مدار داده بودم، پیدا شد و رفع شد.
                                بگذریم...
                                بالاخره تعداد پالسها رو تو خروجی lcd خوندم، تو مرحله ی بعد باید سر یک پالس مشخصی اقدام به stop کردن موتور کنم...
                                :applause: :applause:
                                :wow: :wow: :wow:

                                فکر کنم دیگه کل پروژه حل شد...

                                راستی میشه بگین ایراد از چی بود؟

                                دیدگاه

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