فهرست مطالب:

منوی کنترل سرعت Stepper برای آردوینو: 6 مرحله
منوی کنترل سرعت Stepper برای آردوینو: 6 مرحله

تصویری: منوی کنترل سرعت Stepper برای آردوینو: 6 مرحله

تصویری: منوی کنترل سرعت Stepper برای آردوینو: 6 مرحله
تصویری: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, جولای
Anonim
منوی کنترل سرعت Stepper برای آردوینو
منوی کنترل سرعت Stepper برای آردوینو
منوی کنترل سرعت Stepper برای آردوینو
منوی کنترل سرعت Stepper برای آردوینو
منوی کنترل سرعت Stepper برای آردوینو
منوی کنترل سرعت Stepper برای آردوینو

این کتابخانه SpeedStepper بازنویسی کتابخانه AccelStepper است تا امکان کنترل سرعت موتور پله ای را فراهم کند. کتابخانه SpeedStepper به شما امکان می دهد سرعت موتور تنظیم شده را تغییر دهید و سپس با استفاده از الگوریتم مشابه کتابخانه AccelStepper به سرعت تنظیم شده جدید سرعت دهید. کتابخانه SpeedStepper همچنین به شما این امکان را می دهد که محدودیت مثبت و منفی و موقعیت "خانه" را تعیین کنید. یک دستور goHome برای بازگشت به موقعیت اصلی وجود دارد.

محدودیت ها: کتابخانه SpeedStepper فقط خروجی جهت و پله را هدایت می کند و بنابراین برای رانندگی موتور پله ای باید به راننده موتور مانند Easy Driver متصل شود. کتابخانه AccelStepper گزینه های رانندگی بیشتری را ارائه می دهد که در صورت نیاز در این کتابخانه کپی می شود.

سه طرح نمونه ارائه شده است ، که هر کدام می توانند بدون موتور یا راننده موتور اجرا شوند. طرح speedStepperPlot دستورات مثال سرعت و فرمان goHome را صادر می کند و نمودار سرعت و موقعیت حاصله را تولید می کند. طرح speedStepperSetup تنظیمات منو را برای تنظیم خانه و محدوده موتور و سپس فعال کردن موتور و تنظیم سرعت بالا و پایین و رفتن به خانه فراهم می کند. طرح speedStepperProfile نمونه ای از تنظیم و اجرای نمایه سرعت را نشان می دهد.

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

این کتابخانه بر روی Arduino Uno و Mega2560 اجرا می شود ، اما برای نمونه اولیه از حافظه بزرگتر / پردازنده سریعتر SparkFun Redboard Turbo استفاده شد.

این دستورالعمل همچنین به صورت آنلاین در کتابخانه کنترل سرعت Stepper برای آردوینو موجود است

تدارکات

برای اجرای نمونه فقط یک Arduino UNO یا Mega2560 و کتابخانه های نرم افزاری مورد نیاز است

برای تست نیمکت کتابخانه از SparkFun Redboard Turbo با درایور آسان ، 200 پله/دور ، موتور پله ای 12V 350mA و منبع تغذیه 12 DC 2A یا بزرگتر استفاده شد ، به عنوان مثال. https://www.sparkfun.com/products/14934. USB A to Micro cable USB to TTL Serial Cable Arduino IDE V1.8.9 و رایانه ای که روی آن اجرا می شود. کتابخانه SpeedStepperpfod کتابخانه تجزیه کننده برای nonBlockingInput و pfodBufferedStream کلاس millisDelay کتابخانه برای عدم انسداد تاخیر

مرحله 1: توابع کتابخانه

کتابخانه SpeedStepper موتور پله ای را محدود می کند که توسط کتابخانه محدود شده است. برای مشاهده روشهای مختلف کتابخانه موجود ، فایل SpeedStepper.h را ببینید. در اینجا خلاصه ای از منطق پشت آنها آمده است.

موقعیت پله با شمارش تعداد مراحل (پالس) ردیابی می شود. کتابخانه موقعیت را بین موقعیت های setPlusLimit (int32_t) و setMinusLimit (int32_t) محدود می کند. حد مثبت همیشه> = 0 و حد منفی همیشه <= 0. در هنگام راه اندازی موقعیت موتور 0 است (خانه) و محدودیت ها بر روی اعداد +/- بسیار بزرگ (حدود +/- 1e9 مرحله) تنظیم شده است. setAcceleration (شناور) تنظیم می کند که سرعت موتور به چه صورت بالا یا پایین تغییر کند. با نزدیک شدن موتور به محدوده مثبت یا منفی ، سرعت آن با این سرعت کاهش می یابد تا زمانی که در محدوده متوقف شود. هنگام راه اندازی ، شتاب روی 1.0 قدم بر ثانیه بر ثانیه تنظیم می شود. تنظیم شتاب همیشه یک عدد +ve است. علامت تنظیم setSpeed (شناور) جهت حرکت موتور را تعیین می کند.

setSpeed (شناور) سرعت را برای افزایش / کاهش سرعت موتور از سرعت فعلی آن تنظیم می کند. سرعت قابل تنظیم از طریق setSpeed (شناور) ، در مقدار مطلق ، با تنظیمات ، setMaxSpeed (شناور) ، پیش فرض 1000 مرحله/ثانیه و setMinSpeed (شناور) ، پیش فرض 0.003 مرحله/ثانیه محدود است. این پیش فرض ها همچنین محدودیت های سرعت سخت افزاری مطلق هستند که کتابخانه برای setMaxSpeed () و setMinSpeed () می پذیرد. اگر می خواهید حداکثر سرعت> 1000 مرحله/ثانیه را تنظیم کنید ، باید خط اول را در فایل SpeedStepper.cpp ویرایش کنید تا maxMaxSpeed (1000) را به حداکثر سرعت مورد نظر خود تغییر دهید. در عمل حداکثر سرعت نیز بین تماس بین متد run () کتابخانه محدود می شود. برای 1000 مرحله / ثانیه روش run () باید حداقل هر 1mS فراخوانی شود. به بخش تأخیر در زیر مراجعه کنید.

تلاش برای تنظیم سرعت کمتر از حداقل دقیقه باعث توقف موتور می شود. هر یک از این تنظیم کننده ها یک گیرنده مربوطه دارند ، فایل SpeedStepper.h را ببینید. برای سرعت ، getSetSpeed () سرعتی را که از طریق setSpeed () تنظیم کرده اید ، بر می گرداند ، در حالی که getSpeed () سرعت فعلی موتور را برمی گرداند که با افزایش/کاهش سرعت تنظیم سرعت شما متفاوت است. اگر موتور به سمتی نمی رود که شما به آن فکر می کنید +ve می توانید با invertDirectionLogic () تماس بگیرید تا جهت حرکت موتور با سرعت +ve عوض شود.

getCurrentPosition () موقعیت موتور فعلی را در مقایسه با "خانه" (0) برمی گرداند. می توانید موقعیت فعلی موتور setCurrentPosition (int32_t) را نادیده بگیرید. موقعیت جدید محدود به محدوده اضافه + منهای تعیین شده است.

در ابتدا موتور در موقعیت 0 متوقف می شود. فراخوانی setSpeed (50.0) باعث می شود که سرعت آن در جهت +ve تا حداکثر سرعت 50 قدم در دقیقه شروع شود. تماس با hardStop () بلافاصله موتور را در جایی که هست متوقف می کند. از طرف دیگر فراخوانی متد stop () سرعت را به صفر می رساند و سرعت موتور را متوقف می کند. با فراخوانی stopAndSetHome () موتور بلافاصله متوقف می شود و موقعیت آن را روی 0 تنظیم می کند. مقادیر محدوده مثبت/منفی تغییر نمی کند اما اکنون به این موقعیت 0 (خانه) جدید ارجاع داده می شود. با فراخوانی goHome () استپر به این موقعیت 0 (خانه) باز می گردد و متوقف می شود. تماس با setSpeed () بازگشت به خانه را لغو می کند.

کتابخانه SpeedStepper همچنین کنترل پروفایل سرعت را از طریق روش های setProfile (SpeedProfileStruct* profileArray ، size_t arrayLen) ، startProfile () ، stopProfile () ، برای قطع یک پروفایل در حال اجرا و isProfileRunning () ارائه می دهد. طرح اولیه speedStepperProfile را مشاهده کنید.

مرحله 2: اجرای مثال SpeedStepperPlot بدون موتور

اجرای مثال SpeedStepperPlot بدون موتور
اجرای مثال SpeedStepperPlot بدون موتور

Arduino IDE V1.8.9 را بارگیری و نصب کنید کتابخانه SpeedStepper را ذخیره کنید SpeedStepper.zip و سپس از آیتم Arduino IDE Sketch → Include Library → اضافه کردن کتابخانه. ZIP برای وارد کردن کتابخانه بارگیری و نصب کتابخانه millisDelay نیز

نمونه مثالها → SpeedStepper → speedStepperPlot را باز کنید (در صورت لزوم IDE را راه اندازی مجدد کنید). این طرح برای کار با سریال پیکربندی شده است ، به عنوان مثال UNO و Mega و غیره برای اجرا در SparkFun Redboard Turbo به زیر مراجعه کنید.

برای اجرای این مثال نیازی به برد راننده یا موتور پله ای نیست. در این مثالها از D6 و D7 به عنوان خروجی استفاده می شود. با تغییر تنظیمات STEP_PIN و DIR_PIN در بالای طرح ، می توانید پین های خروجی را به هر خروجی دیجیتالی تغییر دهید.

طرح را روی صفحه بارگذاری کنید و سپس Tools → Serial Plotter را در 115200 baud باز کنید تا نمودار سرعت (RED) و موقعیت (BLUE) نشان داده شود. محدوده plus روی 360 تنظیم شده است که باعث می شود سرعت از حدود 100 نقطه به صفر برسد. در محور x محدوده منفی 510 است. این موقعیت در -390 ~ متوقف می شود زیرا سرعت به 0.0 رسیده است. در نقطه 380 در محور x ، goHome cmd صادر می شود که پله را به موقعیت صفر برمی گرداند.

این طرح speedStepperPlot از میلی ثانیه برای تغییر زمان بین سرعتها و شتابهای مختلف استفاده می کند. در بسیاری از موارد استفاده از SpeedStepperProfile ، مانند مثال بعدی ، ساده تر است.

مرحله 3: اجرای مثال SpeedStepperProfile بدون موتور

اجرای مثال SpeedStepperProfile بدون موتور
اجرای مثال SpeedStepperProfile بدون موتور

نمونه طرح مثالها → SpeedStepper → speedStepperPlot را باز کنید ، این طرح با استفاده از Arterino Serial Plotter نمودار بالا را ایجاد می کند و نمونه ای از پروفایل سرعت تجویز شده برای مثال در صورت اجرای پمپ است.

پروفایل های Stepper Speed از مجموعه ای از SpeedProfileStruct تشکیل شده است که در فایل SpeedStepper.h تعریف شده است.

struct SpeedProfileStruct {

سرعت شناور ؛ // سرعت هدف در پایان این مرحله deltaTms طولانی بدون علامت ؛ // زمان تسریع از سرعت فعلی (در ابتدای این مرحله) به سرعت مورد نظر}.

آرایه ای از SpeedProfileStruct شامل سرعت هدف برای هر مرحله و زمان ، deltaTms ، در mS ، برای رسیدن به آن سرعت مورد نظر از سرعت هدف قبلی ، تعریف کنید. اگر deltaTms صفر یا بسیار کوچک باشد ، سرعت فقط بلافاصله به سرعت هدف جدید می رسد. در غیر این صورت ، شتاب مورد نیاز محاسبه می شود setAcceleration () فراخوانی می شود و سپس فراخوانی به setSpeed () برای سرعت هدف جدید فراخوانی می شود. در همه موارد ، مشخصات با محدودیت های موقعیت مثبت و منفی موجود و تنظیمات سرعت حداکثر/دقیقه محدود می شود. اگر می خواهید یک سرعت را نگه دارید ، کافی است سرعت قبلی را با زمانی که می خواهید آن را نگه دارید ، تکرار کنید. از آنجا که سرعت هدف جدید همان سرعت فعلی است ، شتاب محاسبه شده صفر است و هیچ تغییری در سرعت رخ نمی دهد.

این آرایه SpeedProfileStruct نمودار بالا را تولید کرد

const نمایه SpeedProfileStruct = {{0، 0}، // اگر قبلاً متوقف نشده است بلافاصله متوقف شوید {0، 1000}، // صفر را برای 1 ثانیه نگه دارید {-50، 0}، // پرش به -50 {-200، 2000} ، // سطح شیب دار تا -200 {-200 ، 6000} ، // 6 ثانیه در -200 نگه دارید {-50 ، 2000} ، // سطح شیب دار تا -50 {0 ، 0} ، // // بلافاصله متوقف شوید {0، 1500}، // صفر را برای 1.5 ثانیه نگه دارید {50، 0}، // پرش به 50 {200، 2000}، // سطح شیب دار به 200 {200، 6000}، // نگه داشتن 200 برای 6 ثانیه {50 ، 2000}، // سطح شیب دار تا 50 {0، 0}، // // به طور همزمان متوقف شود {0، 1000} // صفر را نگه دارید // برای ترسیم خروجی}؛ const size_t PROFILE_LEN = sizeof (نمایه) / sizeof (SpeedProfileStruct) ؛ // محاسبه اندازه آرایه مشخصات

تنظیم پروفایل با فراخوانی setProfile (SpeedProfileStruct* profileArray ، size_t arrayLen) به عنوان مثال stepper.setProfile (مشخصات ، PROFILE_LEN) ؛

پس از تنظیم نمایه ، با startProfile () تماس بگیرید تا از سرعت فعلی موتور شروع به کار کند (معمولاً از حالت توقف شروع می کنید). در انتهای پروفایل ، موتور فقط در آخرین سرعت هدف به کار خود ادامه می دهد. می توان متد isProfileRunning () را فراخوانی کرد تا ببیند آیا پروفایل هنوز در حال اجرا است یا خیر. اگر می خواهید پروفایل را زودتر متوقف کنید می توانید با stopProfile () تماس بگیرید که مشخصات را رها کرده و موتور را متوقف می کند.

مرحله 4: اجرای مثال SpeedStepperSetup بدون موتور

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

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

کتابخانه های مورد استفاده برای اجرای SpeedStepperPlot را در بالا نصب کرده و سپس کتابخانه pfodParser را نیز نصب کنید. کتابخانه pfodParser کلاسهای NonBlockingInput و pfodBufferedStream را ارائه می دهد که برای مدیریت ورودی و خروجی منو کاربر با مسدود کردن حلقه () اجرا می شوند.

مثال Examples → SpeedStepper → speedSpeedSetup را باز کنید. این طرح برای کار با سریال پیکربندی شده است ، به عنوان مثال UNO و Mega و غیره برای اجرا در SparkFun Redboard Turbo به زیر مراجعه کنید.

برای اجرای این مثال نیازی به برد راننده یا موتور پله ای نیست. در این مثالها از D6 و D7 به عنوان خروجی استفاده می شود. با تغییر تنظیمات STEP_PIN و DIR_PIN در بالای طرح ، می توانید پین های خروجی را به هر خروجی دیجیتالی تغییر دهید. طرح را روی صفحه بارگذاری کنید و سپس Tools → Serial Monitor را در 115200 باز کنید تا منوی SETUP را ببینید.

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS حلقه: 0uS p -set Home l -set limites h -goH Home r -run>

هنگامی که طرح اجرا می شود ، موقعیت فعلی استپر به عنوان موقعیت "خانه" (0) در نظر گرفته می شود. اگر نیاز دارید که استپر را دوباره در موقعیت اصلی "home" قرار دهید ، دستور p را وارد کنید تا منوی SET HOME نمایش داده شود.

SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -set خانه در اینجا و خروج + -جلو - -معکوس s -مبادله به جلو/عقب -hardStop >

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

از cmd برای شروع حرکت پله به جلو استفاده کنید ، اگر متوجه شدید که حرکت آن در جهت اشتباه است ، یک فرمان غیرعادی یا فقط یک خط خالی برای متوقف کردن آن وارد کنید و سپس از scommand برای تغییر جهت Forward استفاده کنید. شما باید طرح را به گونه ای به روز کنید که یک تماس به invertDirectionLogic () در تنظیمات وجود داشته باشد تا این کار را برای اجرای بعدی برطرف کنید.

از cmds + / - برای قرار دادن استپر در موقعیت صفر صحیح استفاده کنید. موتور آهسته شروع به کار می کند و سپس با افزایش سرعت ، سرعت خود را افزایش می دهد ، فقط کافی است از خط خالی برای متوقف کردن آن استفاده کنید. حداکثر سرعت برای این کار و منوی محدودیت ها توسط MAX_SETUP_SPEED در بالای setupMenus.cpp تنظیم شده است.

هنگامی که موتور در موقعیت اصلی خود قرار گرفت ، از x cmd برای تنظیم مجدد موقعیت فعلی به عنوان 0 و بازگشت به منوی SETUP استفاده کنید.

در صورت نیاز به تعیین محدودیت ها ، معمولاً فقط در تنظیمات اولیه ، از cmd l برای ورود به منوی SET LIMITS استفاده کنید.

SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

از cmd + برای جلو رفتن بیشتر به حد plus استفاده کنید و سپس از cmd l برای تعیین آن بعنوان حد مثبت استفاده کنید. دستور h می تواند برای بازگشت به 0 و - cmd برای حرکت در صورت احترام به موقعیت موتور در محدوده منفی استفاده شود. مجدداً از l cmd برای تعیین حد منهای استفاده کنید. به موقعیت محدودیت های plus و minus توجه کنید و دستورات setup () setPlusLimit و setMinusLimit را با این مقادیر به روز کنید.

وقتی محدودیت ها تعیین شد از x cmd برای بازگشت به منوی SETUP استفاده کنید و سپس می توانید از r cmd برای باز کردن منوی RUN استفاده کنید.

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-سرعت انجماد> +موقعیت: 4 اسپ: 9.49 +محدوده: 500000-محدوده: -500 تاخیر: استپر: 792uS حلقه: 5664uS موقعیت: 42 اسپ: 29.15 +لبه: 500000 -لایه: -500 LATENCY: پله: حلقه 792uS: 5664uS pos: 120 sp: 49.09 +محدوده: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS حلقه: 5664uS

+ cmd شروع به شتاب در جهت جلو می کند و هر 2 ثانیه موقعیت و سرعت را چاپ می کند. هنگامی که موتور به سرعتی که می خواهید می رسد می توانید شتاب را با هر کلید دیگر (یا ورودی خالی) متوقف کنید. برای توقف می توانید با استفاده از - cmd down سرعت را کاهش دهید. اگر متوقف شود - cmd برعکس شتاب می گیرد.

این منوی RUN کنترل دستی پروژه شما را فراهم می کند. برای کنترل خودکار ، باید چند سنسور دیگر اضافه کنید.

مرحله 5: تاخیر

کنترل موتور پله ای بستگی به نرم افزاری دارد که در هر مرحله فرمان می دهد. برای حفظ سرعت تنظیم شده ، طرح شما نیاز به فراخوانی متد stepper.run () دارد که گام بعدی را در زمان مناسب با سرعت فعلی شلیک می کند. برای کنترل از طریق سنسورها باید بتوانید اندازه گیری های جدید را سریع انجام دهید. موقعیت/سرعت چاپ شامل دو اندازه گیری تأخیر است که به شما امکان می دهد طرح خود را به اندازه کافی سریع بررسی کنید.

Stepper Latency (pfodBufferedStream)

تأخیر پله ای حداکثر تاخیر بین تماس های پی در پی به روش stepper.run () را اندازه گیری می کند. برای راه اندازی موتور پله ای با سرعت 1000 پله در ثانیه ، تأخیر پله ای باید کمتر از 1000uS (1mS) باشد. اولین نسخه این طرح دارای تأخیر میلی ثانیه های زیادی بود. برای غلبه بر این تماس های اضافی به روش runStepper () (که stepper.run () را فرا می خواند) که از طریق کد اضافه شده است. این مسئله را به طور کامل حل نکرد زیرا منو و دستورات خروجی چاپی پس از پر شدن بافر کوچک Serial Tx ، طرح را مسدود کردند. برای جلوگیری از انسداد ، pfodBufferedStream از کتابخانه pfodParser برای افزودن یک بافر چاپ 360 بایت خروجی استفاده شد که دستورات چاپ می توانند به سرعت روی آن بنویسند. سپس pfodBufferedStream بایت ها را در نرخ baud که در این مورد 115200 مشخص شده است ، آزاد می کند. pfodBufferedStream باید گزینه ای را انتخاب کند که وقتی بافر پر است مسدود شود یا فقط کاراکترهای سرریز را رها کند. در اینجا تنظیم شده است که در صورت پر شدن بافر هرگونه کاراکتر اضافی را رها کنید تا طرح منتظر نماند تا سریال برای ارسال کاراکتر مسدود شود.

تأخیر حلقه (NonBlockingInput)

تأخیر حلقه حداکثر تاخیر بین فراخوانی های پی در پی به روش حلقه () را اندازه گیری می کند. این تنظیم می کند که چگونه می توانید اندازه گیری های جدید سنسور را پردازش کرده و سرعت تنظیم شده موتور را تنظیم کنید. این که چقدر سریع باید انجام شود بستگی به این دارد که در تلاش برای کنترل چه چیزی هستید.

تاخیرهای ناشی از دستورات چاپ با استفاده از pfodBufferedStream در بالا حذف شد ، اما برای پردازش ورودی کاربر باید اولین علامت ورودی را گرفته و بقیه خط را نادیده بگیرید. کلاس NonBlockingInput در کتابخانه pfodParer برای بازگشت یک کاراکتر غیر صفر در هنگام وجود ورودی ، با استفاده از readInput () ، و پاک کردن و حذف نویسه های زیر ، با استفاده از clearInput () ، تا زمانی که هیچ کاراکتری برای 10mS بدون مسدود کردن حلقه دریافت نشود ، استفاده می شود. ()

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

مرحله 6: اجرای SpeedStepperSetup با موتور پله ای و SparkFun Redboard Turbo

اجرای SpeedStepperSetup با موتور پله ای و SparkFun Redboard Turbo
اجرای SpeedStepperSetup با موتور پله ای و SparkFun Redboard Turbo
اجرای SpeedStepperSetup با موتور پله ای و SparkFun Redboard Turbo
اجرای SpeedStepperSetup با موتور پله ای و SparkFun Redboard Turbo

برای اجرای واقعی طرح SpeedStepperSetup شما به یک موتور پله ای ، راننده و منبع تغذیه و در این مثال SparkFun Redboard Turbo احتیاج دارید.

نمودار سیم کشی بالا (نسخه pdf) اتصالات را نشان می دهد. در طرح SpeedStepperSetup SERIAL را به #تعریف SERIAL Serial1 تغییر دهید

استپر موتور ، منبع تغذیه ، درایور و حفاظت

انواع مختلف و اندازه موتورهای پله ای وجود دارد. در اینجا یک موتور پله دو سیم پیچ 12 ولت 350 میلی آمپر برای آزمایش استفاده می شود. برای تغذیه این استپر به منبع تغذیه 12 ولت یا بیشتر و بیشتر از 350 میلی آمپر نیاز دارید.

این کتابخانه فقط جهت و خروجی گام را ارائه می دهد ، بنابراین شما نیاز به یک راننده برای رابط با موتور پله ای دارید. راننده آسان و راننده بزرگ آسان جریان سیم پیچ های موتور را کنترل می کنند تا بتوانید با خیال راحت از منبع تغذیه ولتاژ بالاتر استفاده کنید ، برای مثال از منبع تغذیه 6 ولت برای موتور 3.3 ولت استفاده کنید. درایور آسان می تواند بین 150mA/سیم پیچ و 700mA/سیم پیچ را تامین کند. برای جریانهای بالاتر ، Big Easy Driver می تواند تا 2A در هر سیم پیچ تغذیه کند. سوالات متداول را در پایین صفحه Easy Drive بخوانید.

در این مثالها از D6 و D7 به عنوان خروجی Step و Direction استفاده می شود. با تغییر تنظیمات STEP_PIN و DIR_PIN در بالای طرح ، می توانید پین های خروجی را به هر خروجی دیجیتالی تغییر دهید.

برنامه نویسی Sparkfun Redboard Turbo

برنامه نویسی Redboard Turbo مشکل ساز است.اگر برنامه نتوانست ، ابتدا یکبار دکمه تنظیم مجدد را فشار داده و پورت COM را در منوی Arduino Tools مجددا انتخاب کرده و دوباره امتحان کنید. اگر این کار نکرد ، دکمه بازنشانی را دوبار فشار دهید و دوباره امتحان کنید.

سیم کشی درایور آسان

دو موتور پله ای سیم پیچ دارای 4 سیم است. از یک مولتی متر برای پیدا کردن جفت هایی که به هر سیم پیچ متصل می شوند استفاده کنید و سپس یک سیم پیچ را به پایانه های Easy Driver A و سیم پیچ دیگر را به پایانه B وصل کنید. مهم نیست که آنها را از کدام طرف سیم کشی می کنید زیرا می توانید از s cmd در منوی راه اندازی جهت تغییر جهت حرکت استفاده کنید.

منبع تغذیه موتور به M+ و GND وصل می شود و سطح منطقی برد را با اتصال 3/5 ولت تنظیم کنید. پیوند را برای خروجی های ریزپردازنده 3.3V مانند SparkFun Redboard Turbo کوتاه کنید (اگر آن را باز بگذارید برای سیگنال های دیجیتالی 5V مناسب است ، به عنوان مثال UNO ، Mega) پین های GND ، STEP ، DIR را به ریزپردازنده GND و مرحله و پین های خروجی dir. هیچ اتصال دیگری برای حرکت موتور لازم نیست.

کابل سریال USB به TTL

هنگام جابجایی طرح SpeedStepperSetup از Uno/Mega به Redboard Turbo ، ممکن است ساده لوحانه #سریال سریالی را با #سریال سریال تعریف کنیدUSB متناسب با اتصال سریال Redboard Turbo usb ، با این حال متوجه می شوید که تاخیر پله ای ناشی از آن حدود 10mS است. این نسبت به UNO 10 برابر کندتر است. این به دلیل نحوه عملکرد پردازنده Redboard در اتصال USB است. برای رفع این مشکل ، USB را به کابل سریال TTL به D0/D1 وصل کنید و#تعریف سریال سری 1 را برای استفاده از اتصال سریال سخت افزاری برای کنترل موتور پله ای تنظیم کنید. استفاده از Serial1 LATENCY: stepper: 345uS loop: 2016uS را نشان می دهد که 3 برابر سریعتر از UNO برای تاخیر در مرحله و حلقه است

برنامه ترمینال

استفاده از مانیتور سریال آردوینو برای کنترل موتور پله ای کمی سخت تر است ، زیرا باید خط خط cmd را وارد کرده و سپس Enter را فشار دهید تا ارسال شود. راه حل سریعتر این است که یک پنجره ترمینال ، TeraTerm برای رایانه (یا CoolTerm Mac) ، متصل به پورت COM کابل USB به TTL ، باز کنید. سپس در آن پنجره فشار دادن یک کلید cmd آن را فوراً ارسال می کند. با فشار دادن Enter فقط یک خط خالی ارسال کنید.

تنظیم محدوده سرعت موتور

همانطور که در بالا گفته شد ، Easy Drive برای مراحل 1/8 تنظیم شده است ، بنابراین 1000 گام در ثانیه موتور را در 1000/8/200 پله/دور = 0.625 دور در ثانیه یا حداکثر 37.5 دور در دقیقه می چرخاند. با تغییر ورودی ها به MS1/MS2 می توانید بین 1/8 ، ¼ ، ½ و مراحل کامل جابجا شوید. برای مراحل کامل ، MS1 و MS2 را به GND وصل کنید. این سرعت 300 دور در دقیقه را امکان پذیر می کند. انتخاب تنظیمات مناسب MS1/MS2 به شما امکان می دهد نسبت دنده نصب شده بین موتور و قسمت رانده شده را تنظیم کنید.

حفاظت از سخت افزار

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

تنظیم محدودیت جریان موتور

ابتدا آن را روی کمترین تنظیم پتانسیومتر تنظیم کنید. یعنی ولتاژ در TP1 حداقل است. پتانسیومتر ظریف است ، بنابراین پتانسیومتر را از ایستگاه های مکانیکی به زور عبور ندهید. موتور را با سرعت ثابت و آهسته آهسته تنظیم کنید ، سپس پتانسیومتر را به آرامی بچرخانید تا موتور از بین مراحل عبور کند یا حرکت کند.

نتیجه

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

توصیه شده: