اطلاعیه

Collapse
No announcement yet.

راه اندازی موتور براشلس (BLDC)

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

    پاسخ : راه اندازی موتور براشلس (BLDC)

    نوشته اصلی توسط ahmad1000
    سلام دوستان .چرا تایپیک ادامه پیدا نکرد تا درایور کامل بشه.خیلی همه زحمت کشیدن مخصوصا جناب نور بخش.حیفه. من خودم هم تازه این موتور رو خریدم و دارم روش کار میکنم :applause:
    با درود . . .
    بابا PCB اش هم که اوس شهرام گذاشته دیگه! :biggrin:
    فعلا سفر هستند. برگردند مطمئن باشید تاپیک رو به انتها میرسونن.

    درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

    به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
    بدرود . . .

    دیدگاه


      پاسخ : راه اندازی موتور براشلس (BLDC)

      با سلام خدمت همگی و عذرخواهی از دوست بزرگوارم atm8 به علت ارسال سریع وبدون مطالعه قبلی
      لازم دیدم اینها رو پست کنم البته اگر قبلا پست شده عذرخواهی میکنم
      http://www.nxp.com/documents/application_note/AN10661.pdf
      http://www.atmel.com/dyn/resources/prod_documents/doc8138.pdf
      http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824& appnote=en012037

      بدرود
      بعدا یه جمله قشنگ مینویسم

      دیدگاه


        پاسخ : راه اندازی موتور براشلس (BLDC)

        با سلام خدمت دوستان محترم :bye

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

        و اما داشتم در زیر زمین خانه پدری کنکاش میکردم ( همون فضولی خودمون ) که چشمم خورد به اسیلوسکوپ روسی بابام، مربوط به عهد تزار، لذا روشنش کردم، دیدم هنوزم کار میکنه :surprised: پس دست بکار شدم و چند تا سیگنال مهم رو گرفتم و عکسش رو براتون سوغاتی آوردم ........ :mrgreen:



        زمین اسکوپ روی پائین ترین خط صفحه اش تنظیم شده، Vdiv از سمت راست، برای اولی و دومی روی 0.5 و برای سومی روی 2 ولت هستش و Tdiv هم برای همه یکی هست.

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

        Sh_Nourbakhsh@Yahoo.com

        http://s2.picofile.com/file/7170362468/_Wall_e_.jp

        دیدگاه


          پاسخ : راه اندازی موتور براشلس (BLDC)

          یک انتخاب اسان
          http://www.datasheetcatalog.org/datasheet/sanyo/ds_pdf_e/LB1921.pdf
          بعدا یه جمله قشنگ مینویسم

          دیدگاه


            پاسخ : راه اندازی موتور براشلس (BLDC)

            با سلام،

            بنابه درخواست دوستان، تغییراتی در برنامه به این شرح ایجاد کردم، اول اینکه به محض زدن کلید Start/Stop موتور با PWM ی به مقدار 200 شروع میکنه به روشن شدن، پس اگر روی موتور ملخی سوار کردید، حتما مراقب خودتون باشید و دوم اینکه جهت بهینه شدن روند برنامه، تغییراتی در کلیات برنامه دادم که دیگه نمیشه با CV کامپایلش کرد! ولی سایر موارد مثل قبله، دو تا کلید UP و DOWN و یک کلید ST/SP و ارتباط سریال با PC و .........

            http://s2.picofile.com/file/7253513438/SHN_BLMC2_uart.rar.html

            در دایرکتوری Prepared HEX هم میتونید فایلهای هگز آماده شده برای ماسفت های با درایور Active_LOW و Active_HIGH رو پیدا کنید. :biggrin:
            مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

            Sh_Nourbakhsh@Yahoo.com

            http://s2.picofile.com/file/7170362468/_Wall_e_.jp

            دیدگاه


              پاسخ : راه اندازی موتور براشلس (BLDC)

              با سلام مجدد،

              دوستانی که قصد دارند PWM رو بطور کامل حذف کنند و ماسفت ها رو فقط روشن و خاموش کنند ( بدون کنترل سرعت ) اول در فایل BLMC.c و روتین BLMC_init این PWM_init رو حذف کنند و بعد هم در فایل BLMCconfig.h این قسمت رو به شکل زیر تغییر بدند و نیازی به تغییر سایر قسمت ها نیست و عملکرد هم مشابه برنامه ارسالی اخیر هست و تنها تفاوت، روشن شدن موتور با حداکثر سرعت هست، و باز هم تاکید میکنم، بچه ها مواظب باشید :mrgreen:

              کد:
              .
              .
              .
              	//-----------------------
              	#define UH_ON()								sbi(UH_PRT, UH_BIT)		//sbi(UH_PWM_CTRL, UH_PWM_MOD)
              	#define UH_OFF()							cbi(UH_PRT, UH_BIT)		//cbi(UH_PWM_CTRL, UH_PWM_MOD)
              
              	#define VH_ON()								sbi(VH_PRT, VH_BIT)		//sbi(VH_PWM_CTRL, VH_PWM_MOD)
              	#define VH_OFF()							cbi(VH_PRT, VH_BIT)		//cbi(VH_PWM_CTRL, VH_PWM_MOD)
              
              	#define WH_ON()								sbi(WH_PRT, WH_BIT)		//sbi(WH_PWM_CTRL, WH_PWM_MOD)
              	#define WH_OFF()							cbi(WH_PRT, WH_BIT)		//cbi(WH_PWM_CTRL, WH_PWM_MOD)
              .
              .
              .
              مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

              Sh_Nourbakhsh@Yahoo.com

              http://s2.picofile.com/file/7170362468/_Wall_e_.jp

              دیدگاه


                پاسخ : راه اندازی موتور براشلس (BLDC)

                سلام
                با تشکر ویژه از جناب aivhl عزیز و خسته نباشید به همه دوستان
                من دیشب موتور براشلس سنسور دار CDROM رو بصورت سخت افزاری راه انداختم :wow:
                http://www.aparat.com/v/da25966bd774c92db44fa205498c6a34107570
                این موتورها دارای سه عدد سنسور هال چهار پین هستند نمی دونم موتورهای مخصوص
                کوادکوپتر هم از همین مدل سنسور استفاده میکنند یا نه بعد از بررسی انیمیشن موتور
                به این نتیجه رسیدم حالا که در مدل سنسوردار از bemf استفاده نمیشه میشه سیم پیچ
                سوم هم در ایجاد گشتاور سهیم باشه که این باعث شد مدار خیلی ساده بصورت سخت افزاری
                درایو بشه در خروجی از bjt استفاده شده بعد از تغییر به ماسفت نقشه رو برای دوستان قرار
                میدم .
                این مدعیان در طلبش بی خبرانند
                آن را که خبر شد خبری باز نیامد

                دیدگاه


                  پاسخ : راه اندازی موتور براشلس (BLDC)

                  نوشته اصلی توسط Babak1367
                  سلام
                  با تشکر ویژه از جناب aivhl عزیز و خسته نباشید به همه دوستان
                  من دیشب موتور براشلس سنسور دار CDROM رو بصورت سخت افزاری راه انداختم :wow:
                  این موتورها دارای سه عدد سنسور هال چهار پین هستند نمی دونم موتورهای مخصوص
                  کوادکوپتر هم از همین مدل سنسور استفاده میکنند یا نه بعد از بررسی انیمیشن موتور
                  به این نتیجه رسیدم حالا که در مدل سنسوردار از bemf استفاده نمیشه میشه سیم پیچ
                  سوم هم در ایجاد گشتاور سهیم باشه که این باعث شد مدار خیلی ساده بصورت سخت افزاری
                  درایو بشه در خروجی از bjt استفاده شده بعد از تغییر به ماسفت نقشه رو برای دوستان قرار
                  میدم .
                  با سلام،

                  شما هم خسته نباشید برادر :bye

                  در موتورهایی که برای مدل های پروازی و همینطور کوادکوپترها استفاده میشه، از سنسور خبری نیست و ولتاژ کاریشون هم معمولا از 7.4 ولت تا 24 ولته و جریان مصرفی هم کمتر از 10 آمپر نیست. لذا استفاده از روش Back EMF تقریبا اجباریه ....

                  نوشته اصلی توسط شهرام کشت پور
                  یک انتخاب اسان
                  http://www.datasheetcatalog.org/datasheet/sanyo/ds_pdf_e/LB1921.pdf
                  و یک نکته هم اینکه، بعنوان یه انتخاب آسان ( به قول برادر کشت پور ) به فرض اینکه آی سی درایوری هم وجود داشته باشه و باز هم به فرض اینکه این آی سی درایور در ایران یافت بشه، با توجه به پارامترهای مورد نیاز، استفاده از اونها در مدلهای پروازی امکان نداره!

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

                  Sh_Nourbakhsh@Yahoo.com

                  http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                  دیدگاه


                    پاسخ : راه اندازی موتور براشلس (BLDC)

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

                    دیدگاه


                      پاسخ : راه اندازی موتور براشلس (BLDC)

                      سلام خدمت همه براشلس بازای عزیز 3 نکته به زهنم رسید گفتم اینجا مطرح کنم. :rolleyes:
                      اولا آیا میشود قسمت b emf را حذف کرد ؟ در زمانی که موتور بدون پروانه کار میکنه (یعنی عوامل خارجی بر موتور تاثیر نگذارد) مثلا بیاییم بگیم موتور می خواهد با سرعت 6000 rpm کار کنه در این حالت خوب در هر 10ms یک دور میزنه اگر بتونیم تعداد استپ موتور در یک دور را بدست آوریم می توانیم آنرا بر 10 ms تقسیم کنیم و زمان تغییر فاز را بدست آوریم چرا که در سرعت بالا حرکت موتور تقریبا یکنواخت است و زمان تغییر از هر پله به پله دیگر برابر است.
                      دوما نمیشه روشی ارائه کرد که با خازن های ظرفیت بالا (توپول موپول) و دیود یک اسپید طراحی کرد ؟
                      سوما تفاوت استپ موتور با براشلس در این است که استپ موتور در هر استپ باید روی هر پله مکث کند در حالی که براشلس برای تغییر از هر پله به پله دیگر علاوه بر اینکه فاز ها باید تغییر کنند باید روتور ( یا استاتور) دارای یک حرکت اولیه داشته باشد به بیان دیگر در طراحی براشلس هیچگاه یک پله روتور بر پله استاتور منطبق نمی شود بلکه پله روتور و استاتور نسبت به هم زمان جابه جایی دارند اگر یک استپ را باز کرده باشید می بینید که در یک پله روتور و استاتور دقیقا بر هم منطبق می شوند در حالا که در براشلس انطباق روتور و استاتور در یک بازه با جابه جایی در حدود چند در صد طول پله می باشد . این همه گفتم تا به این نتایج برسم که اولا براشلس را نمی توان مانند استپ موتور با دادن پالس به صورت دستی راه انداخت چرا که زمان در تغییر فاز نیازمند به زمان کوتاهی است تا سرعت اولیه حرکت به پله بعدی از بین نرود (مگر اینکه بتوانید مانند بروسلی حرکت سریع داشته باشید) پس اگر نمی توانید با دادن پالس های دست موتور را کامل بچرخانید ناراحت نشوید ! نتیجه دیگر این مطلب این است که استپ موتور در سرعت پایین کار می کند و براشلس در سرعت بالا (عجب :eek:)پس اگر دوستان نمی توانند موتور را در سرعت پایین را بیاندازند ناراحت نباشند چرا که این خارج از توانایی و طراحی موتور است مثلا اگر موتوری 10000 rpm است محدوده کاری مناسب اون حدود 8000 تا 12000 است پس اگر موتور در کمتر از این سرعت زوزه میکشه یا جریان بالایی برماسفت ها تحمیل میشه امری عادی است.

                      دیدگاه


                        پاسخ : راه اندازی موتور براشلس (BLDC)

                        سلام دوستان همیگی خسته نباشید :applause: یک مدت درگیر امتحانات بودم نشد بیام :mrgreen:
                        من واسه اینکه روند کلی برنامرو به خوبی متوجه بشم میخوام سعی کنم برنامرو توی کامپایلر بسکام یا iar بنویسم که یک سوال برام پیش اومده(فعلا یکی :mrgreen
                        کد:
                        ISR(ANALOG_COMP_vect)
                        {
                          if(rotor_run == 200)      next_commutate_state(0);
                        
                          rotor_run++;
                          if(rotor_run > 200)       rotor_run = 200;
                        }  //ANALOG_COMP
                        
                        ISR(TIMER1_OVF_vect)
                        {
                          next_commutate_state(1);
                          rotor_run = 0;
                        
                          UH_SET(START_PWM);
                          VH_SET(START_PWM);
                          WH_SET(START_PWM);
                        }  //TIMER1_OVF
                        این قسمت از برنامه مربوط به وقفه های تایمر و مقایسه کننده میشه که من اینجور برداشت میکنم که روال کار اینجوریه که یه تحریک انجام میشه و در همین زمان تایمر هم داره میشماره حالا اگه سیم پیچ رو درست تحریک کرده باشیم گذر از صفر اتفاق میفته و وارد زیر برنامه مقایسه کننده میشه و اگر سیم پیچ درست تحریک نشده باشه در نتیجه گذر از صفر اتفاق نمیفته و تایمر میشماره تا سر ریز رخ بده و وارد زیر برنامه تایمر بشه تا اونجا از اول تحریک روی سیم پیچ بعد انجام بده .اما سوالم ینه که نوی 200 تحریک اول ممکنه موتور درست حرکت کنه و گذر از صفر درست انجام بشه اما کمتاسیون بعد بخاطر شرطی که گذاشتید اجرا نمیشه و همچنین توی زیر برنامه تایمر هم rotor_run به صورت مداوم صفر میشه.موندم چجوری جواب میده
                        ممنون میشم راهنمایی کنید

                        دیدگاه


                          پاسخ : راه اندازی موتور براشلس (BLDC)

                          نوشته اصلی توسط alireza.r
                          ...... اما سوالم ینه که نوی 200 تحریک اول ممکنه موتور درست حرکت کنه و گذر از صفر درست انجام بشه اما کمتاسیون بعد بخاطر شرطی که گذاشتید اجرا نمیشه و همچنین توی زیر برنامه تایمر هم rotor_run به صورت مداوم صفر میشه.موندم چجوری جواب میده .........
                          با سلام،

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

                          Sh_Nourbakhsh@Yahoo.com

                          http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                          دیدگاه


                            پاسخ : راه اندازی موتور براشلس (BLDC)

                            سلام
                            اول از همه این روالی رو که من گفتم درسته و برنامه همین کار رو میکنه؟
                            اگه که درسته به ازاء هر بار که وقفه تایمر اتفاق میفته متغییر rotor_run صفر میشه
                            کد:
                              next_commutate_state(1);
                              rotor_run = 0;
                            و این متغییر صفر میمونه چون که در وقفه مقایسه کننده
                            کد:
                              if(rotor_run == 200)      next_commutate_state(0);
                            در صورتی کمتاسون بعد اتفاق میفته که rotor_run=200 باشه و اگر 200 نباشه وقفه مقایسه کننده هیچ عملی انجام نمیده و کمتاسیونی رو اجرا نمیکنه پس دوباره وقفه تایمر رخ میده و متغییر rotor_run صفر میشه !
                            البته برنامه درسته چون دراه جواب میده ولی نمیدونم کجای نظریم نسبی اشتباهه :mrgreen:

                            دیدگاه


                              پاسخ : راه اندازی موتور براشلس (BLDC)

                              نوشته اصلی توسط alireza.r
                              سلام
                              اول از همه این روالی رو که من گفتم درسته و برنامه همین کار رو میکنه؟
                              اگه که درسته به ازاء هر بار که وقفه تایمر اتفاق میفته متغییر rotor_run صفر میشه
                              کد:
                                next_commutate_state(1);
                                rotor_run = 0;
                              و این متغییر صفر میمونه چون که در وقفه مقایسه کننده
                              کد:
                                if(rotor_run == 200)      next_commutate_state(0);
                              در صورتی کمتاسون بعد اتفاق میفته که rotor_run=200 باشه و اگر 200 نباشه وقفه مقایسه کننده هیچ عملی انجام نمیده و کمتاسیونی رو اجرا نمیکنه پس دوباره وقفه تایمر رخ میده و متغییر rotor_run صفر میشه !
                              البته برنامه درسته چون دراه جواب میده ولی نمیدونم کجای نظریم نسبی اشتباهه :mrgreen:
                              با سلام،

                              وقتی که مدار روشن میشه و تایمر یک سر ریز میشه، روتین مربوط به کوموتاسیون ( next_commutate_state ) بدون در نظر گرفتن حالات و اتفاقات مقایسه کننده اجرا میشه، این موضوع در عمل موجب تکان خوردن و گردش نامنظم و بی هدف موتور میشه. ( این گردش ممکنه حتی برعکس جهت درست گردش موتور باشه! ) این موضوع تا زمانی که موتور قبل از سر ریز شدن تایمر، بیشتر از یک دور کامل بزنه ( یعنی وقفه مقایسه کننده 200 بار اتفاق بیافته )، ادامه پیدا میکنه. این ماجرا برابر است با دور موتور بیش از 230 دور بر دقیقه. ( این یعنی اینکه حداقل دور موتور در هر حالتی باید بیشتر از 230 دور بر دقیقه باشه، وگرنه تایمر یک سر ریز میشه .... ) در عمل این اتفاق خجسته بعد از کمتر از یک ثانیه اتفاق خواهد افتاد :mrgreen:

                              توجه داشته باشید که این مثل این میمونه که شما برای سهولت استارت موتور، در ابتدا با دستتون شفت موتور رو گرفتید و یه هولی بهش دادید!!! ( این عمل برای استارت موتور الزامیه )

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

                              روشن شد برادر؟! :mrgreen:
                              مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                              Sh_Nourbakhsh@Yahoo.com

                              http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                              دیدگاه


                                پاسخ : راه اندازی موتور براشلس (BLDC)

                                دستتون درد نکه روشن شد ولی اون ته ته هاش هنوز یخورده تاریکه! :mrgreen:
                                کد:
                                  if(rotor_run == 200)      next_commutate_state(0);
                                میشه راجب به دلیل این if بگید.خب این if اصلا نمیذاره کمتاسیونی توی وقفه مقایسه کننده اتفاق بیفته مادامی که rotor_run کمتر از 200 باشه!پس اون اولین باری که موتور میخواد راه بیفته rotor_run برابر با صفره و حتی تا 200 وقفه دیگه هم اتفاق بیفته باز هیچ کومتاسیونی انجام نمیشه چون rotor_run کمتر از مقدار 200. چجوری قبل از اینکه تایمر وقفش انجام بشه موتور استارت میخوره .یعنی این زیر برنامه با و جود تحریکی که انجام نداده 200 بار اجرا میشه !

                                دیدگاه

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