اطلاعیه

Collapse
No announcement yet.

طریقه برنامه نویسی کنترلر cnc با میکرو

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

    طریقه برنامه نویسی کنترلر cnc با میکرو

    با سلام
    من می خواستم با استفاده از میکرو یه برنامه بنویسم که یه کنترلی روی استپ موتور cnc داشته باشه. خوب چند تا برنامه در همین انجمن معرفی شده که با استفاده از پورت پرینتر و اتصال به درایور ها این کار انجام میشه. در این حالت پردازش در کامپیوتر انجام میشه. ولی من می خوام که در میکرو کنترلر(مثلا برای دو محور) این کار را انجام بدم. در حالت ساده به این صورت است که یه تعداد مختصات داریم و می خواهیم برنامه ای بنویسیم که نقطه به نقطه میکرو، پالس مناسب تولید کنه و به اون مختصات بره. سوالم اینه: از چه الگوریتمی میشه برای این کار استفاده کرد؟
    به نظرتون میکرو ARM7 پاسخ گو هست؟
    من این "درون یابی" را که در پست های دیگه مطرح کردید را متوجه نشدم اینجا چه کاربردی داره؟
    ببخشید سوالا زیاد شدا !
    با تشکر
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    #2
    پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

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

    دیدگاه


      #3
      پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

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

      در ضمن توصیه میکنم این کار رو نکنید چون اول چرخها چوبی بودن تا رسیدیم به چرخهای با تایر لاستیکی حالا شما میخواهید دوباره چرخ چوبی بسازید ؟
      به اون دستگاه که شما دارید روش کار میکنید میکن nc که بعد از اون cnc اومد حالا dnc
      تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
      داشتن عقله زيادتر از دیگر آدم ها است

      دیدگاه


        #4
        پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

        نوشته اصلی توسط aliila
        فکر نکنم احتیاجی به درون یابی باشه چون معادله حرکت دقیقا در دست هست که به اونها جی کد میگن
        در ضمن توصیه میکنم این کار رو نکنید
        بله درسته. پس اگه برنامه ای باشه که نقطه به نقطه جلو بره در مرحله بعد راحت میشه بهش جی کد داد؟

        خوب به پیاده سازی این الگوریتم علاقه مندم. فکر نکنم به صورت معمولی این بشه. آیا هم زمان باید در دو محور پالس با فرکانس متفاوت داشته باشیم یا آن را به حرکات پله ای تبدیل کنیم؟
        خوب کسانی که این کارو کردند سورس برنامشون را که در اختیار ما قرار نمی دند که :cry:!
        فيلم آموزشي ميکروکنترلر LPC1768
        فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
        فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
        فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

        دیدگاه


          #5
          پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

          نوشته اصلی توسط mahdizarkoob
          با سلام
          من می خواستم با استفاده از میکرو یه برنامه بنویسم که یه کنترلی روی استپ موتور cnc داشته باشه. خوب چند تا برنامه در همین انجمن معرفی شده که با استفاده از پورت پرینتر و اتصال به درایور ها این کار انجام میشه. در این حالت پردازش در کامپیوتر انجام میشه. ولی من می خوام که در میکرو کنترلر(مثلا برای دو محور) این کار را انجام بدم. در حالت ساده به این صورت است که یه تعداد مختصات داریم و می خواهیم برنامه ای بنویسیم که نقطه به نقطه میکرو، پالس مناسب تولید کنه و به اون مختصات بره. سوالم اینه: از چه الگوریتمی میشه برای این کار استفاده کرد؟
          به نظرتون میکرو ARM7 پاسخ گو هست؟
          من این "درون یابی" را که در پست های دیگه مطرح کردید را متوجه نشدم اینجا چه کاربردی داره؟
          ببخشید سوالا زیاد شدا !
          با تشکر
          من پیاده سازی مورد نظر شما را از طریق میکروکنترلر برای برخی کاربردهای مرتبط با CNC با این روش انجام داده ام که برای حرکت بین دو نقطه، ابتدا مقادیر deltax و deltay را بررسی می کنیم و در صورت صفر بودن هریک، به میزان لازم در مقدار غیر صفر حرکت را انجام می دهیم. اما در صورتی که هر دو مقدار غیر صفر باشد، مقدار بزرگتر را به کوچکتر تقسیم می کنیم و به ازای هر حرکت واحد در مقدار کوچکتر (مثلا deltax)، به میزان خارج قسمت حاصل از تقسیم در محور بعدی حرکت می کنیم. حال اگر باقیمانده این تقسیم غیر صفر باشد، یک روش این است که آن را در حرکت ها توزیع کنیم. مثلا اگر قرار باشد deltax به میزان 30 واحد و deltay به میزان 210 واحد حرکت کند، کافی است به ازای هر واحد حرکت در محور x به میزان 7 واحد در محور y حرکت کنیم. اما اگر لازم باشد تغییرات y بجای 210 واحد برابر 220 واحد باشد (باقیمانده 10)، آنگاه در 20 عدد از حرکت های x هر کدام به میزان 7 واحد در محور y حرکت می کنیم و در 10 تا از حرکت های x در محور y به میزان 8 واحد حرکت می کنیم. در اینحالت 20x7+10x8=220 خواهد شد. این یک توضیح کلی بود که امیدوارم برای شما مفید باشد و البته نکات و ریزه کاری های زیادی در کار وجود دارد که فعلا به همین مقدار بسنده می کنم.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #6
            پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

            اگر فقط مسئله حرکت بین دو نقطه باشه؛ این یک مشکل کلاسیک هست و راه حل خودش رو داره. از اونجایی که عملیات اعشاری بار بالایی روی پروسسور داره و حتی عملیاتی مثل ضرب و تقسیم در بعضی سیستم ها هم همینطوره الگوریتم هایی برای کشیدن خط و دایره هست که با حداقل انجام عملیات ضرب و تقسیم و بدون انجام عملیات اعشاری؛ میتونن این کار رو انجام بدن. مثلا برای کشیدن خط (که یک مورد بسیار عمومی هست) میتونین از الگوریتم Bresenham line algorithm استفاده کنین. به عنوان مثال:
            http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm

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

            دیدگاه


              #7
              پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

              نوشته اصلی توسط طراح
              در صورتی که هر دو مقدار غیر صفر باشد، مقدار بزرگتر را به کوچکتر تقسیم می کنیم و به ازای هر حرکت واحد در مقدار کوچکتر (مثلا deltax)، به میزان خارج قسمت حاصل از تقسیم در محور بعدی حرکت می کنیم.
              با توجه به الگوریتم شرح داده شده پس یک راه حل همان حرکت پله ای است که با توجه به مختصات بعدی طول و عرض پله مشخص می شود. خوب من با توجه به صحبت های اساتید محترم و Bresenham line algorithm باید تست کنم ببینم چی میشه.
              آقای طراح شما اون روش اولی که گفتم : هم زمان در دو محور پالس با فرکانس متفاوت در یک زمان مشخص داشته باشیم را تست کردید؟ فکر کنم از لحاظ زمانی نمی توانیم بیش از یه حدی پالس بسته به میکرو داشته باشیم(مثلا تا 40KHz) :sad:در حالی که فکر کنم برای سرو تا بستگی به نوع حدود 200kHz لازم بشه oo:
              فيلم آموزشي ميکروکنترلر LPC1768
              فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
              فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
              فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

              دیدگاه


                #8
                پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                اگر سرعت محور ها نسبت به یکدیگر در مقدار مناسب قرار داده شود، در یک زمان مشخص به میزان مورد نظر حرکت خواهند کرد. مثلا در همان مثال حرکت 30 تایی برای x و حرکت 210 تایی برای y، اگر سرعت خروجی محور y هفت برابر محور x باشد، هنگامی که محور x به میزان 30 واحد حرکت کند، محور y به میزان 210 واحد حرکت خواهد کرد.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #9
                  پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                  باسلام
                  الگوریتم برسنهام و محاسبه مشتق شیب خط و یا اونطوری که آقای طراح میگن برای کنترل و حرکت سه یا 5 محور لازم نیست چون هر cnc هنگام حرکت برای انجام کار مفید ( مثلا براده بردای) بقدری کند حرکت میکنه شما می توانید برای حرکت هر یک میلی متر از هر محور چند هزار بار محاسبه انجام بدید

                  در حالت کلی باید بگم که مثلا در فرز سه محور
                  هر سه محور مستقل از هم حرکت میکند شما سه محور x y z رو دارید احتیاج به متغیر چهارم t نیاز دارید که معادله حرکت هر سه محور x y z رو بر اساس t بنویسید
                  فکر کنم هندسه تحلیلی دبیرستان رو بخونید بهتون کمک میکنه همونی که راجب معادله خط و صفحه در فضا بحث میکنه بعد در یک حلقه فور ساده متغیر t رو متناسب با دقت سرو موتور افزایش میدهید و هر سه متغر x y z را حساب میکنید بعد اگر محور x از 1 به 1.5 افزایش پیدا کرده حساب میکنید که برای حرکت نیم میلی متر چند پالس نیاز دارید ؟ به خروجی می فرستید ؟
                  تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                  داشتن عقله زيادتر از دیگر آدم ها است

                  دیدگاه


                    #10
                    پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                    من برای حرکت دو محور یک برنامه ساده نوشتم که موقعیت نقطه بعدی را میگیره مثلا X100Y30 و به صورت همزمان ایجاد پالس می کند. چند تا چیز فکرم را مشغول کرده
                    1- ما داریم نقطه به نقطه میدیم و حرکت خطی انجام میشه. در دستورات جی کد یک دستور هست که برای رسم یک داره با یک شعاع مشخص است. همان چیزی که آقای joker گفتند:
                    نوشته اصلی توسط J0KER
                    تفسیر درست جی کدها وقتی سخت میشه که قرار باشه یه دایره بکشی ! همزمانی پالسها خیلی مهم میشه چون یک دایره از بینهایت نقطه تشکیل شده و اگه قرار باشه اول محور x و بعد محور y برای رفت به یک نقطه عمل کنه در واقع یک چندصد ضلعی میکشید نه یک دایره
                    توی ریزه کاریها پوستتون را میکنه در حدی که بروید سراغ نرم افزارهای آماده.
                    من نمی دونم که وقتی دستور رسم یک دایره اومد چطوری و بر اساس چه الگوریتمی اونا در میکرو انجام بدم ؟
                    2- اگه این مسئله حل بشه میشه گفت ما داریم نقاطمان که در همان مایه های جی کد اند ، یکی یکی میفرستیم روی میکرو و در میکرو هم خروجی پالس داریم. مرحله بعدی کار چیه؟ :redface:
                    3- در جاهای مختلفی در مورد استفاده از درویابی صحبت شده:
                    نوشته اصلی توسط طراح
                    همانطور که قبلا اشاره شد برای تبدیل مختصات موجود در GCODE به حرکت های واقعی باید از درونیابی یا interpolation استفاده شود و اگر در مورد این مفهوم سوالی دارید به مبانی ریاضیات و محاسبات عددی مراجعه کنید.
                    ولی در این مورد من هنوز نمی فهمم درونیابی چه استفاده ای اینجا دارد!!! خیلی ممنون میشم این موضوع را بیشتر باز کنید تا شاید دوزاری ما هم بیافته :mrgreen:
                    فيلم آموزشي ميکروکنترلر LPC1768
                    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                    دیدگاه


                      #11
                      پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                      ای بابا دارم شک می کنم سوالهای سختی پرسیدم؟؟؟ یا زیادی سوال پرسیدم؟؟؟ oo: :cry:
                      فيلم آموزشي ميکروکنترلر LPC1768
                      فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                      فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                      فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                      دیدگاه


                        #12
                        پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                        نوشته اصلی توسط mahdizarkoob
                        ای بابا دارم شک می کنم سوالهای سختی پرسیدم؟؟؟ یا زیادی سوال پرسیدم؟؟؟ oo: :cry:
                        چرا تاپیک رو از اول نمی خونی ؟ خوب من گفتم که درون یابی کارش چیز دیگه است .
                        در مورد رسم دایره خوب یک فرمول هندسهی داره و یک فرمول مثلاثی

                        x2+y2+Ax+By+C=0 ، معادله ی کلی دایره ای به مرکز (C(a,b و شعاع r است
                        متغیر x رو زیاد کن و متغیر y رو بدست بیار

                        y=cos t
                        x=sin t
                        متغیر t را در یک حلقه افزایش بده و مختصات حرکت رو بدست بیار
                        تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                        داشتن عقله زيادتر از دیگر آدم ها است

                        دیدگاه


                          #13
                          پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                          نوشته اصلی توسط aliila
                          در مورد رسم دایره خوب یک فرمول هندسهی داره و یک فرمول مثلاثی

                          x2+y2+Ax+By+C=0 ، معادله ی کلی دایره ای به مرکز (C(a,b و شعاع r است
                          متغیر x رو زیاد کن و متغیر y رو بدست بیار

                          y=cos t
                          x=sin t
                          متغیر t را در یک حلقه افزایش بده و مختصات حرکت رو بدست بیار
                          خیلی ممنون. روش کار می کنم ببینم داستانش چی میشه :nice:
                          فيلم آموزشي ميکروکنترلر LPC1768
                          فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                          فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                          فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                          دیدگاه


                            #14
                            پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                            فکر می کنم یکی از کارهای مهمی که باید انجام شود بحث پروفیل سرعت و شتاب است که اگه این حل بشه دایره هم مشکلی نیست. فکر کنم بایستی برنامه ای داشته باشیم که برای حرکت از یک نقطه و رسیدن به نقطه دیگر ابتدا با سرعت کم و سپس به یک سرعت ثابت و دو باره کاهش سرعت داشته باشیم. که این میشه شتاب ثابت . خوب فکر می کنید چطوری میشه این را پیاده سازی کرد؟ من یه تلاشهایی کردم. قتی زمان را کم کم زیاد می کردم جواب می داد ولی وقتی که در حین کار زمان تناوب را کم می کردم ایراد پیدا می کرد.
                            فيلم آموزشي ميکروکنترلر LPC1768
                            فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                            فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                            فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                            دیدگاه


                              #15
                              پاسخ : طریقه برنامه نویسی کنترلر cnc با میکرو

                              من اومدم با فرمول هندسی x راکم کم زیاد و کم کردم و y را بدست آوردم. یعنی برای رسم داره اون را فعلا تبدیل کردم به خط!
                              خوب حالا یه مسئله ای که دارم اینه که می خوام این پالس هایی که میاد را یه جوری به صورت دو بعدی در کامپیوتر شبیه سازی کنم. خوب هزینه دو درایور و دو استپ موتور زیاده و فعلا نمی تونم تهیه اش کنم. :sad:می خواستم ببینم چطوری می تونم این کارو در کامپیوتر انجام بدم؟ از دوستان تا حالا این کار کرده؟
                              فيلم آموزشي ميکروکنترلر LPC1768
                              فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
                              فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
                              فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

                              دیدگاه

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