اطلاعیه

Collapse
No announcement yet.

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

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

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

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

    باز هم به همراهی دوستان نیازمندم تا بتونم ادامه ی ماجرا رو بای stop کردن موتور سر یه پالس خاص پی بگیرم.
    از لطف همه متشکرم.

    اضافه شده در تاریخ :
    سلام و عرض ادب.
    روزتون بخیر دوستان.
    آقا این برنامه ای هست که برای ایستادن موتور سر پالس 30 ام نوشته شده، میشه دوستان لطف کنن و یه نگاهی بهش بندازن؟ :redface:

    کد:
    
    @ 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
    
    DEFINE CCP1_REG PORTC
    DEFINE CCP1_BIT 2
    
    TRISA = 0
    
    A VAR WORD
    
    ON INTERRUPT GOTO lable
    
    OPTION_REG = $7F
    INTCON = %10010000
    
    loop1:
      A = 0
      LOW portA.0
      
      hpwm 1, 100, 1000
      pause 50
    
    
    loop2:
      pause 100
      
      LCDOUT $FE, 1
      LCDOUT "A="
      LCDOUT $FE, $14
      LCDOUT #A
      pause 500
      
      if A >= 30 then tormoz
      
      goto loop2
      
    tormoz:
      low portA.0
      hpwm 1, 0, 1000
      pause 2000
      
      LCDOUT $FE, 1
      LCDOUT "A="
      LCDOUT $FE, $14
      LCDOUT #A
      pause 10000
      
      goto loop1
      
        
      DISABLE
    lable:
      A = A + 1
      PAUSE 100
      INTCON.1 = 0
    RESUME
      ENABLE    
    END
    دوستان جدای از کاری که باید انجام بشه، تو اساس برنامه نوشتن و قرار دادن لوپها اشتباهی نکردم؟
    باز هم از همتون متشکرم.
    زندگی برگ بودن در مسیر باد نیست
    امتحان ریشه هاست
    ریشه هم هرگز اسیر باد نیست
    زندگی چون پیچک است
    انتهایش میرسد پیش خدا!

    دیدگاه


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

      این برنامه شما الان وقتی 30 دور زد می ایسته و بعد 10 ثانیه دوباره راه میفته...
      میتونستی شرط a>=30 و کل tormoz رو تو همون روال اینتراپتت پیاده کنی که lable اضافه نشه...

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

      دیدگاه


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

        نوشته اصلی توسط سید محمد جعفری
        این برنامه شما الان وقتی 30 دور زد می ایسته و بعد 10 ثانیه دوباره راه میفته...
        سلام.
        بسیار متشکرم از حضور و پاسخ دوبارتون.
        بله دقیقا همینطوره که میفرمائید.
        الان تست کردم برنامه رو، بعد از اینکه 30 تا زد موتور وایستاد و بعد 10 ثانیه دوباره این روال تکرار شد...
        نظر شما چیه دوست من؟ چکارش کنم بهتره؟

        نوشته اصلی توسط سید محمد جعفری
        میتونستی شرط a>=30 و کل tormoz رو تو همون روال اینتراپتت پیاده کنی که lable اضافه نشه...
        ok

        نوشته اصلی توسط سید محمد جعفری
        البته ترمز به این شکلی که نوشتی بستگی به مدارت داره که واقعا ترمز میکنه یا فقط بیخیال موتور میشه تا خودش واسته، واسه ترمز کردن باید ولتاژ دو سر موتور صفر نگه داشته بشه...
        یعنی این کاری که کردم، نمیتونه ضریب اطمینان خوبی داشته باشه برای اینکه موتور تا زمانی که ما میخوایم تو این پالس وایسته و بعد با شرط بعدی حرکت کنه و سر پالس بعدی دوباره بایسته؟
        میشه لطفا یه کم بیشتر راجع به اینکه میفرمائید ولتاژ دو سر موتور باید صفر نگه داشته بشه، توضیح بدید؟

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

        دیدگاه


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

          وقتی به پایه های IN0 و IN1 آی سی درایور ولتاژ های یکسان داده بشه (یا هردو صفر-یا هردو یک)دستور ترمز به موتورها داده میشه.

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

          میشه موتور خیلی سریع تر توقف کنه.فقط باید اونموقع از دیودهرزگزدها تون مطمئن باشین که اصطلاحا Fast باشن تا احیانا آی سی درایور بدرود حیات نگه! (البته اگه دیودها

          Fast نباشن تو این پروژه شما بعید میدونم ایراد اساسی ای پیش بیاد.) پیشنهادم استفاده از دیود 1N4148 هست که خیلی راحت گیر میاد.

          دیدگاه


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

            سلام.
            متشکرم جناب شاهرخ از حضور مجددتون.

            نوشته اصلی توسط شاهرخ
            وقتی به پایه های IN0 و IN1 آی سی درایور ولتاژ های یکسان داده بشه (یا هردو صفر-یا هردو یک)دستور ترمز به موتورها داده میشه.

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

            میشه موتور خیلی سریع تر توقف کنه.فقط باید اونموقع از دیودهرزگزدها تون مطمئن باشین که اصطلاحا Fast باشن تا احیانا آی سی درایور بدرود حیات نگه! (البته اگه دیودها

            Fast نباشن تو این پروژه شما بعید میدونم ایراد اساسی ای پیش بیاد.) پیشنهادم استفاده از دیود 1N4148 هست که خیلی راحت گیر میاد.
            ok.
            پس جدای از اینکه pwm چی هست، اگه 2 تا پایه ی IN درایور که مسئول چپگرد راستگرد موتور هست، همزمان 1 یا 0 بشند، موتورمون ترمز میشه...

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

            دیدگاه


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

              ترمز اصلی با اعمال ورودی یکسان به IN0 و IN1 یا IN3 و IN4 اتفاق میفته. طبق دیتاشیت اگه پایه ENA یا ENB صفر بشه موتور به حالت Free runing در میاد و هیچگونه ترمز یا جهت چرخشی نداره.(موتور ول گرد میشه! :mrgreen
              اما وقتی ما میخوایم موتور ترمز کنه و این ترمز هم سریع اتفاق بیفته میتونیم برای مدت کوتاهی جهت چرخش رو معکوس اعمال کنیم و بعد دستور ترمز(ورودی یکسان به INها) رو بدیم.
              (از دیدگاهی دیگه با اینکار سازنده ی موتور + اجداد موتور رو میاریم جلوی چشمش!! )

              نوشته اصلی توسط pama
              1N4148 رو هم به وفور مورد استفاده قرار میدم و دارمشون
              عالیه؛فقط دقت کنین که جریان موتورها بیشتر از جریان ماکزیمم لحظه ای دیودها نباشه.(تو دیتاشیت دیود، IFSM رو نگاه کنین)

              دیدگاه


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

                نوشته اصلی توسط شاهرخ
                ترمز اصلی با اعمال ورودی یکسان به IN0 و IN1 یا IN3 و IN4 اتفاق میفته. طبق دیتاشیت اگه پایه ENA یا ENB صفر بشه موتور به حالت Free runing در میاد و هیچگونه ترمز یا جهت چرخشی نداره.(موتور ول گرد میشه! :mrgreen
                اما وقتی ما میخوایم موتور ترمز کنه و این ترمز هم سریع اتفاق بیفته میتونیم برای مدت کوتاهی جهت چرخش رو معکوس اعمال کنیم و بعد دستور ترمز(ورودی یکسان به INها) رو بدیم.
                (از دیدگاهی دیگه با اینکار سازنده ی موتور + اجداد موتور رو میاریم جلوی چشمش!! )
                بسیار متشکرم.
                ok، دقیقا متوجه قضیه شدم

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


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

                دیدگاه


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

                  آقا حواست باشه اگر ترمزو با in 0 , 1 انجام میدی به هیچچچچچ وجه در اون زمان، پایین پل اچ رو روشن نکن که میره هوا درایورت(in2,3) و برعکس...
                  مشغول در این دنیای آکل و ماکول .......

                  دیدگاه


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

                    نوشته اصلی توسط سید محمد جعفری
                    آقا حواست باشه اگر ترمزو با in 0 , 1 انجام میدی به هیچچچچچ وجه پایین پل اچ رو روشن نکن که میره هوا درایورت(in2,3) و برعکس...
                    آقا چی شد؟!
                    نفهمیدم متاسفانه! باید چی کار نکنم جناب جعفری؟!
                    زندگی برگ بودن در مسیر باد نیست
                    امتحان ریشه هاست
                    ریشه هم هرگز اسیر باد نیست
                    زندگی چون پیچک است
                    انتهایش میرسد پیش خدا!

                    دیدگاه


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

                      نوشته اصلی توسط سید محمد جعفری
                      آقا حواست باشه اگر ترمزو با in 0 , 1 انجام میدی به هیچچچچچ وجه در اون زمان، پایین پل اچ رو روشن نکن که میره هوا درایورت(in2,3) و برعکس...
                      جناب جعفری جسارتا فرمایش شما تو حالتی صادق هست که ما کنترل تک به تک ترانزیستورهای پل H رو در اختیار داشته باشیم؛که در اونصورت مثل اینه که دوسر منبع تغذیه رو اتصال کوتاه کرده باشیم.اینجا درایور مورد استفاده L298 هست که قابلیت درایو دوتا موتور DC رو داره و ورودی های IN1 , IN2 در اصل هرکدومش به دوتا از ترانزیستورهای پل H شماره یک وصله. IN3 , IN4 هم به پل H دوم فرمان میدن... :redface:

                      دیدگاه


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

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

                        دیدگاه


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

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

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

                          مشکلی که الان وجود داره اینه که دقیقا نمیدونم این خوندن فرکانس رو در کجای برنامه باید انجام بدم، وهم اینکه چجوری میشه جریان موتور رو خوند؟

                          بسیار متشکرم.


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

                          دیدگاه


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

                            یه لحظه صبر کنین ببینم!

                            فرکانس خروجی سنسور؟ یا پالس خروجی سنسور؟

                            برای اندازه گیری جریان موتورها از پایه ی ISENA (برای پل A) یا ISENB(برای پل B) میتونین استفاده کنین(که توی اون شکلی که گذاشته بودم به زمین وصلشون کرده بودم) و با یه مقاومت نسبتا پر وات با مقدار خیلی کم به زمین وصلشون کنین و با تبدیل ADC ولتاژی که روی اون مقاومت میفته رو اندازه بگیرین و براش شرط تعیین کنین که از فلان مقدار بیشتر بود فلان کار رو بکن و...

                            دیدگاه


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

                              نوشته اصلی توسط شاهرخ
                              یه لحظه صبر کنین ببینم!

                              فرکانس خروجی سنسور؟ یا پالس خروجی سنسور؟
                              پالس خروجی سنسور، معذرت میخوام :redface:
                              که قبلا این پالس رو با فرکانس متر خوندیم، و حالا میخوایم سر یه خروجی خاص این سنسور، موتورمون شروع به حرکت کنه و سر پالس 30 امی که انکدر از خروجی موتور میشمره، موتورمون وایسته...

                              نوشته اصلی توسط شاهرخ
                              برای اندازه گیری جریان موتورها از پایه ی ISENA (برای پل A) یا ISENB(برای پل B) میتونین استفاده کنین(که توی اون شکلی که گذاشته بودم به زمین وصلشون کرده بودم) و با یه مقاومت نسبتا پر وات با مقدار خیلی کم به زمین وصلشون کنین و با تبدیل ADC ولتاژی که روی اون مقاومت میفته رو اندازه بگیرین و براش شرط تعیین کنین که از فلان مقدار بیشتر بود فلان کار رو بکن و...
                              متشکرم.
                              ok، در نتیجه میتونیم از پایه های 1 و 15 استفاده کنیم، و با a/d میکرو ولتاژ سر مقاومتها رو بخونیم و با کمک اونها شرط تعیین کنیم برای ایستادن موتورها...
                              فقط اینکه هر کدوم از پایه ها برای خوندن جریان یه موتور هست و فرقی نمیکنه از کدوم یکی از اونها واسه یه موتور استفاده کنم؟ و پایه ی دیگه باید کماکان زمین باشه؟

                              اضافه شده در تاریخ :
                              راستی مقاومته، یه مقاومت زیر 5 اهم باشه خوبه؟
                              زندگی برگ بودن در مسیر باد نیست
                              امتحان ریشه هاست
                              ریشه هم هرگز اسیر باد نیست
                              زندگی چون پیچک است
                              انتهایش میرسد پیش خدا!

                              دیدگاه


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

                                هر پایه برای اندازه گیری جریان یکی از موتورها هست.(ISENA جریان عبوری موتور A و ISENB جریان عبوری موتور B )

                                مقدار مقاومت حدود 0.22 اهم! (چون این مقاومت در اصل تو مسیر عبور جریان موتور قرار میگیره و اگه مقدارش زیاد باشه، جریان موتور رو محدود میکنه.)

                                دیدگاه

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