اطلاعیه

Collapse
No announcement yet.

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

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

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

    آخ آخ آخ!! تو پستهای قبلی گفته بودین....شرمنده :redface:

    یه سوال اساسی! چندتا موتور رو باید با PWM کنترل کنیم؟ اگه فقط یه موتور باشه میتونین از خروجی دوم همون ماژول CCP تو حالت Compare استفاده کنین که دقیقا همین کار رو با اینتراپت انجام میده(شمارش پالسها و وقوع اینتراپت در صورت تساوی با مقدار از پیش تعیین شده)

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

    اینکه اینجا موتور کار نمیکنه، اون تست که چندتا پست پایین تر عرض کردم رو انجام دادین؟

    دیدگاه


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

      نوشته اصلی توسط شاهرخ
      یه سوال اساسی! چندتا موتور رو باید با PWM کنترل کنیم؟ اگه فقط یه موتور باشه میتونین از خروجی دوم همون ماژول CCP تو حالت Compare استفاده کنین که دقیقا همین کار رو با اینتراپت انجام میده(شمارش پالسها و وقوع اینتراپت در صورت تساوی با مقدار از پیش تعیین شده)
      در حال حاضر موتورم یه دونه ست، اما این دونه واسه تست کارها و درست شدن برنامه ست، تو کار اصلی ما حداقل 4 تا موتور dc داریم.

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

      نوشته اصلی توسط شاهرخ
      اینکه اینجا موتور کار نمیکنه، اون تست که چندتا پست پایین تر عرض کردم رو انجام دادین؟
      راستش سوتیه رخ داده در مدار کشف شد! پایه 1 l298 رو مستقیما با اون مقاومت 0.22 برده بودم به in+ آیسی 324، دریغ از اینکه باید زمینشم میکردم خوب! تا موتور راه بیافته، مشکل موتور شکر خدا حل شد...
      اما اون سیستمی که دوستان مکانیکی طراحی کردن برای اینکه فعلا برخورد به مانع رو شبیه سازی کنیم، اصلا کارآمد نیست و پره ای که به این منظور به شافت موتور کوپل شده تا بعد از برخورد به مانع ، از حرکت بایسته، همچنان به حرکت خودش ادامه میده، یا به عبارتی مانع شبیه سازی شده باعث از حرکت ایستادن شافت نمیشه و باید یه تمهیداتی رو بیاندیشیم واسه این ماجرا! تا بتونیم جریانو بفهمیم کی زیاد میشه....

      اضافه شده در تاریخ :
      عرض کردم متاسفانه اصلا سیستم شبیه سازی شده برا متوقف کردن شافت موتور مناسب نیست، فعلا هم نمیشه کاریش کرد، بهترین راه به نظرم این بود که با دست شافت موتور رو نگه دارم، این کار رو هم کردم، بعد از اینکه شرط خروجی سنسورمون رسید و موتور روشن شد خواستم بدونم که وقتی موتور به مانع بخوره چه عکس العملی از خودش نشون میده!
      برا همین بعد از روشن شدن موتور با دست شافتشو نگه داشتم، اما 324 ام هیچ عکس العملی نشون نداد! و اون پایه که led بهش وصل بود و قرار بود با زیاد شدن جریان high بشه، همچنان ساکت ایستاده!
      به نظرتون مشکل از کجاست؟!
      پیشنهادتون چیه؟
      زندگی برگ بودن در مسیر باد نیست
      امتحان ریشه هاست
      ریشه هم هرگز اسیر باد نیست
      زندگی چون پیچک است
      انتهایش میرسد پیش خدا!

      دیدگاه


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

        وقتی حرکت شفت موتور رو با دست محدود میکردین؛افت ولتاژ دوسر اون مقاومت چند ولت میشد؟

        از اونجایی که LM324 قابلیت تقویت ولتاژهای DC رو هم داره میتونین قبل از بلوک مقایسه کننده، یه طبقه تقویت انجام بدین.

        دیدگاه


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

          سلام
          جریان موتورت در حالت عادی چقدره؟در زور چقدره؟
          مشغول در این دنیای آکل و ماکول .......

          دیدگاه


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

            نوشته اصلی توسط شاهرخ
            وقتی حرکت شفت موتور رو با دست محدود میکردین؛افت ولتاژ دوسر اون مقاومت چند ولت میشد؟

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


            اضافه شده در تاریخ :
            نوشته اصلی توسط سید محمد جعفری
            سلام
            جریان موتورت در حالت عادی چقدره؟در زور چقدره؟
            سلام از بنده است جناب مهندس.
            بسیار سپاسگذارم از حضورتون.
            در حالت عادی و no load جریانش 130 میلی آمپره، در حالت STALL جریانه 1.8 میلی آمپر داره، اما در حالت زور رو نمیدونم مهندس...
            زندگی برگ بودن در مسیر باد نیست
            امتحان ریشه هاست
            ریشه هم هرگز اسیر باد نیست
            زندگی چون پیچک است
            انتهایش میرسد پیش خدا!

            دیدگاه


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

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

              دیدگاه


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

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

                دیدگاه


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



                  تقویت ولتاژ روی مقاومت سری با موتور...

                  دیدگاه


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

                    نوشته اصلی توسط سید محمد جعفری
                    موتورتونو به هر شکلی که راحتی راه اندازی کن،با درایور،مستقیم منبع تغذیه، باتری،هرچی... بعد با مولتی متر جریانشو اندازه بگیر، شفت موتورو با انبردست ببر تو فشار ببین حداکثر جریانت چقدر میشه،البته در مدت زمان زیاد و خیلییی محکم نگیرش که یه وقت خدایی نکرده نسوزه موتورت...
                    حداکثر جریانشو بدست اوردی اعلام کن...
                    در حالت عادی جریانم دور و بر 128.5 میلی آمپره و وقتی شافت رو نگه میدارم max مقداری که داره 196.8 میلی آمپر هست، البته در حالتی که مستقیما موتورو دادم به 12 ولت و روشنش کردم...

                    اضافه شده در تاریخ :
                    سلام.
                    مشکل دقیقا همون مقاومت 0.22 اهم سر پایه 1 l298 بود، مقدارش خیلی کم بود، با تغییر اون مساله حل شد و با اعمال فشار به شافت موتور، 324 عمل کرد و led سر پایه خروجی روشن شد، یا به عبارتی پینمون تو میکرو با زیاد شدن جریان high شد، حالا مساله سر اینه که وقتی این پین high شد به موتور دستور stop بدیم...

                    و یه نکته ای که وجود داره اینه که چرا جریان max ما وقتی با آمپر متر خوندمش، اینقده کم بود؟!
                    اصلا باید این ریختی باشه یا نه؟!
                    زندگی برگ بودن در مسیر باد نیست
                    امتحان ریشه هاست
                    ریشه هم هرگز اسیر باد نیست
                    زندگی چون پیچک است
                    انتهایش میرسد پیش خدا!

                    دیدگاه


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

                      مقداری که الان قرار دادین چند اهم هست؟دقت کنین که مبادا مقدارش طوری باشه که عملکرد عادی موتور رو تحت تأثیر قرار بده.

                      اگه موتور مثل بچه آدم داره کار میکنه، که هیچی! هر مقاومتی که گذاشتین بذارین همون بمونه. اگه نه؛ میتونین همون تقویت کننده رو استفاده کنین.

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

                      دیدگاه


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

                        نوشته اصلی توسط شاهرخ
                        مقداری که الان قرار دادین چند اهم هست؟دقت کنین که مبادا مقدارش طوری باشه که عملکرد عادی موتور رو تحت تأثیر قرار بده.
                        10 اهم 5 وات هست جناب مهندس.

                        نوشته اصلی توسط شاهرخ
                        اگه موتور مثل بچه آدم داره کار میکنه، که هیچی! هر مقاومتی که گذاشتین بذارین همون بمونه. اگه نه؛ میتونین همون تقویت کننده رو استفاده کنین.

                        جریانش مگه انتظار دارین چقدر باشه؟!! موتور 12 ولت هست ها!! انتظار ندارین که زیر بار 1 آمپر جریان بکشه!! معمولا همین حدودها میشه....خیالتون راحت.درسته.
                        بله موتور با همین مقاومت داره کار میکنه...
                        ok، خوب خدا رو شکر که جریانه درسته ...

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

                        دیدگاه


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

                          سلام
                          به اینترنت دسترسی نداشتم.
                          شما اصلا نیازی به تقویت ولتاژ نداری، با موتورت یه مقاومت 0.1 اهم 1وات یا نیم وات سری کن (با اون سری از موتور که یه ورش زمینه) و از ولتاژ اون سر غیر زمین مقاومته بده به ADC میکروت، سورس ولتاژ ADC رو هم با یه LM317 مقدار 1 ولت دقیق بساز و در نظر بگیر، اینطوری با 10 بیت : 1/1024=0.0009765625 ولت دقت اندازه گیری خواهی داشت که به راحتی میتونی ولتاژ های متناظر 0.196 آمپر و 0.128 آمپر رو از هم تمیز بدی.
                          مشغول در این دنیای آکل و ماکول .......

                          دیدگاه


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

                            سلام و عرض احترام.
                            دوستان بزرگوار؛ در این تایپیک با کمک جمعی از دوستان، این کار انجام شده بود که وقتی شافت موتورمون به مانعی برخورد میکرد، با کمک آیسی LM324 و کامپایلر pic basic pro جریان رو در لحظه ای که high میشد، تشخیص میدادیم، این کار برای این هست که در اون لحظه به موتورمون فرمان ایستادن بدیم و یا به عبارتی ما میخوایم وقتی شافت موتورمون به یه مانعی برخورد کرد و جریانش زیاد شد، اون موقع وایسته...
                            برنامه ای هم که به این منظور نوشته شده بود از این قرار بود:

                            کد:
                            
                            @ 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 = 0
                            TRISc.3 = 1
                            TRISc.0 = 1
                            
                            f var word
                            
                            T1CON = $03
                            
                            
                            loop1:
                            
                            
                             TMR1L=0
                             TMR1H=0
                             PIR1.0 = 0
                             T1CON.0 = 1
                             PAUSE 800
                             T1CON.0 = 0
                             f.byte1=TMR1H
                             f.byte0=TMR1l
                             
                             lcdout $fe, 1
                             lcdout #f
                             lcdout $fe, $14
                             lcdout "hz"
                             pause 500
                             
                             
                             if f >= 20 and f <=40 then 
                              
                              LOW portA.0
                              hpwm 1, 205, 300
                              
                              
                            
                             endif 
                              goto loop1
                                  
                            END
                            که خوب شکر خدا جواب هم داد، یعنی وقتی ما شافت موتور رو میگرفتیم led ای که به یکی از پایه های میکرو بود و بنا بود زیاد شدن جریان رو آلارم بده، روشن میشد، در ادامه هدف این هست که به موتور هم فرمان بدیم که حالا وایستا، که تو این برنامه این مورد اضافه نشده، و فقط موتورمون با یه شرطی که از فرکانس متر میاد راه میافته، وایستادنش باید با همین high شدن جریان باشه...

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

                            برای همین از دوستان بزرگوارم تقاضا دارم که در صورتی که براشون ممکنه بنده رو یاری بفرمایند، از لطف همه بینهایت سپاسگذارم.


                            اضافه شده در تاریخ :
                            سلام و عرض ادب مجدد.
                            دوستان بزرگوار توی پستهای قبلی عرض کرده بودم که یکی از شرایط حرکت موتورهامون، فرکانس خروجی یه سنسور هست که با فرکانس متر میخونیمش، تو همین راستا بنده برای اینکه این کار رو (خوندن فرکانس رو) با میکروی 18f452 انجام بدم، از برنامه ای که دوست بزرگوارمون، لطف کردن، کمک گرفتم، منتها باز هم متاسفانه تو یه جایی از برنامه Error دارم، که هر چقدر سعی کردم اینم برطرف نشد...

                            تو جایی از برنامه باید تعداد سر ریزهای تایمر صفر تو 256 ضرب بشه و با آخرین مقداری که تایمر داره جمع بشه تا در اصل مقدار فرکانسمون مشخص بشه، و در اخر هم TMR0 رو خالی کنیم، که این اعمال داره تو یه زیر برنامه انجام میشه که بنا هست فرکانس رو بخونه و بعد ما تو حلقه ی while زیر برنامه رو صداش کنیم، تمام کارهای مربوط به تنظیم رجیستر تایمر صفر و وقفه سر ریز اون و غیره و ذلک انجام شده، کما اینکه این دوستمون تونستن با یه میکروی دیگه و همین برنامه جواب بگیرن، اما وقتی بنده میخوام با 452 این برنامه رو کامپایل کنم، متاسفانه رو 2 تا خط زیر که توضیحشو عرض کردم، بهم Error میده، که فکر میکنم همه ی گیرش سر TMR0 باشه! اما نمیدونم چرا و باید چی کارش کنم؟!

                            کد:
                            frequency=(cnt*256)+TMR0;
                            .
                            .
                            .
                            TMR0=0;
                            از دوستان بزرگوار ممنون میشم بنده رو راهنمائی بفرمایند، که آیا با توجه به اینکه ثبات option_reg درست تنظیماتش انجام شده، (OPTION_REG=0b10100001 کار دیگه ای هم باید بکنم که مشکل ماجرا با TMR0 حل بشه؟!

                            دوستان سوالهای بنده رو ببخشید، متاسفانه بنده بسی! تو کامپایلر میکروسی آماتورم و محتاج کمک دوستان :nerd:
                            زندگی برگ بودن در مسیر باد نیست
                            امتحان ریشه هاست
                            ریشه هم هرگز اسیر باد نیست
                            زندگی چون پیچک است
                            انتهایش میرسد پیش خدا!

                            دیدگاه


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

                              متن Error چی هست؟ متغیرهای مربوطه رو درست تعریف کردین؟ ( هم از نظر نوع char - int و... هم از نظر local , global ) یکی هم واسه شروع شمارش باید با INTCON اینتراپت رو که قبلا خاموش بوده؛ 1 ثانیه روشن کنین و الی آخر...

                              دیدگاه


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

                                نوشته اصلی توسط شاهرخ
                                متن Error چی هست؟ متغیرهای مربوطه رو درست تعریف کردین؟ ( هم از نظر نوع char - int و... هم از نظر local , global ) یکی هم واسه شروع شمارش باید با INTCON اینتراپت رو که قبلا خاموش بوده؛ 1 ثانیه روشن کنین و الی آخر...
                                بسیار متشکرم.
                                خوب صاحابشم حلال زاده بودن و سر رسیدن :nerd: با اجازتون جناب شاهرخ برنامتون رو میذارم:

                                کد:
                                  long cnt=0;
                                
                                
                                sbit LCD_RS at RB2_bit;
                                sbit LCD_EN at RB3_bit;
                                sbit LCD_D4 at RB4_bit;
                                sbit LCD_D5 at RB5_bit;
                                sbit LCD_D6 at RB6_bit;
                                sbit LCD_D7 at RB7_bit;
                                
                                sbit LCD_RS_Direction at TRISB2_bit;
                                sbit LCD_EN_Direction at TRISB3_bit;
                                sbit LCD_D4_Direction at TRISB4_bit;
                                sbit LCD_D5_Direction at TRISB5_bit;
                                sbit LCD_D6_Direction at TRISB6_bit;
                                sbit LCD_D7_Direction at TRISB7_bit;
                                
                                
                                void Interrupt()
                                {
                                  if(INTCON.T0IF==1)
                                  {
                                   INTCON.GIE=0;
                                   cnt++;
                                   INTCON.T0IF=0;
                                   INTCON.GIE=1;
                                  }
                                }
                                
                                void s1_lcd()
                                {
                                char welcome1[]=" IN THE NAME OF ";
                                char welcome2[]="  << ALLAH >> ";
                                
                                   lcd_out(1,1,welcome1);
                                   lcd_out(2,1,welcome2);
                                
                                delay_ms(800);
                                Lcd_Cmd(_LCD_CLEAR);
                                }
                                
                                void s2_lcd()
                                {
                                char disp1[]=  "Frequency Meter";
                                
                                   lcd_out(1,1,disp1);
                                delay_ms(800);
                                Lcd_Cmd(_LCD_CLEAR);
                                }
                                
                                
                                void Get_frq()
                                {
                                long frequency;
                                long vv[8];
                                INTCON=0b11100000;
                                delay_ms(1000);
                                INTCON=0;
                                frequency=(cnt*256)+TMR0;
                                frequency=frequency*4;
                                longtostr(frequency,vv);
                                lcd_out(1,1,"FREQUENCY=");
                                lcd_out(2,1,vv);
                                cnt=0;
                                TMR0=0;
                                }
                                
                                
                                void main()
                                {
                                Lcd_Init();
                                Lcd_Cmd(_LCD_CURSOR_OFF);
                                TRISA=0;
                                PORTA=0;
                                TRISA.B4=1;
                                TRISB=1;
                                OPTION_REG=0b10100001;
                                INTCON=0b00000000;
                                CCP1CON=0;
                                
                                
                                s1_lcd();
                                s2_lcd();
                                
                                Lcd_Cmd(_LCD_CLEAR);
                                while(1)
                                  {
                                   Get_frq();
                                  }
                                }
                                متن Error:

                                کد:
                                59 324 Undeclared identifier 'TMR0' in expression fr meter2.c
                                61 1505 Suspicious pointer conversion fr meter2.c
                                63 1505 Suspicious pointer conversion fr meter2.c
                                65 324 Undeclared identifier 'TMR0' in expression fr meter2.c
                                77 324 Undeclared identifier 'OPTION_REG' in expression fr meter2.c
                                0 102 Finished (with errors): 28 ÇæÊ 2012, 00:54:18 fr meter2.mcppi


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

                                دیدگاه

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