جدول المحتويات:

قائمة التحكم في سرعة السائر لـ Arduino: 6 خطوات
قائمة التحكم في سرعة السائر لـ Arduino: 6 خطوات

فيديو: قائمة التحكم في سرعة السائر لـ Arduino: 6 خطوات

فيديو: قائمة التحكم في سرعة السائر لـ Arduino: 6 خطوات
فيديو: أردوينو للمبتدئين - (16) التحكم في محركات السيرفو باستعمال عصا التحكم 2024, شهر نوفمبر
Anonim
قائمة التحكم في سرعة السائر مدفوعة لاردوينو
قائمة التحكم في سرعة السائر مدفوعة لاردوينو
قائمة التحكم في سرعة السائر مدفوعة لاردوينو
قائمة التحكم في سرعة السائر مدفوعة لاردوينو
قائمة التحكم في سرعة السائر مدفوعة لاردوينو
قائمة التحكم في سرعة السائر مدفوعة لاردوينو

مكتبة SpeedStepper هذه عبارة عن إعادة كتابة لمكتبة AccelStepper للسماح بالتحكم في سرعة محرك السائر. تتيح لك مكتبة SpeedStepper تغيير سرعة المحرك المحددة ثم تقوم بالتسريع / التباطؤ إلى السرعة المحددة الجديدة باستخدام نفس الخوارزمية مثل مكتبة AccelStepper. تتيح لك مكتبة SpeedStepper أيضًا تعيين حد زائد وناقص وموضع "منزل". يوجد أمر goHome للعودة إلى موضع المنزل.

القيود: تقوم مكتبة SpeedStepper فقط بتوجيه مخرجات الاتجاه والخطوة ولذا يجب توصيلها بسائق محرك ، مثل Easy Driver ، لقيادة محرك السائر فعليًا. توفر مكتبة AccelStepper المزيد من خيارات القيادة التي يمكن نسخها إلى هذه المكتبة إذا لزم الأمر.

يتم توفير ثلاثة نماذج للرسومات ، يمكن تشغيل كل منها بدون محرك أو سائق محرك. يقوم رسم speedStepperPlot بإصدار أمثلة على أوامر السرعة والأمر goHome ويقوم بإنشاء مخطط للسرعة والموضع الناتج. يوفر مخطط speedStepperSetup إعدادًا مدفوعًا بالقائمة لتعيين منزل المحرك وحدوده ثم تشغيل المحرك وضبط السرعة لأعلى ولأسفل وانتقل إلى المنزل حتى النهاية. يعرض مخطط speedStepperProfile مثالاً على إعداد ملف تعريف السرعة وتنفيذه.

بينما توفر مكتبة AccelStepper تحكمًا جيدًا في الموقع ، كانت هناك حاجة إلى التحكم في السرعة للنموذج الأولي لمسبار ذوبان الجليد لجمع العينات البيولوجية على أوروبا. إليكم مقطع فيديو لنسخة سابقة من النموذج الأولي ، والتي استخدمت الوزن بدلاً من المحرك. تمت إضافة ملفات تعريف السرعة في المراجعة 1.1 بعد أن طلب المستخدم وسيلة للتحكم في ملف تعريف سرعة المضخة.

تعمل هذه المكتبة على Arduino Uno و Mega2560 ، ولكن بالنسبة للنموذج الأولي ، تم استخدام ذاكرة أكبر / معالج أسرع SparkFun Redboard Turbo.

يتوفر هذا التوجيه أيضًا عبر الإنترنت في مكتبة Stepper Speed Control لـ Arduino

اللوازم

لتشغيل مثال الرسومات ، هناك حاجة فقط إلى Arduino UNO أو Mega2560 ومكتبات البرامج

لاختبار مقاعد البدلاء في المكتبة ، تم استخدام SparkFun Redboard Turbo مع برنامج Easy Driver ، و 200 خطوة / دورة ، ومحرك متدرج بجهد 12 فولت 350 مللي أمبير ، وإمداد 12 تيار مستمر 2 أمبير أو أكبر ، على سبيل المثال https://www.sparkfun.com/products/14934. كبل USB A إلى Micro ، كابل تسلسلي من USB إلى TTL ، و Arduino IDE V1.8.9 وجهاز كمبيوتر لتشغيله.

الخطوة 1: وظائف المكتبة

تقوم مكتبة SpeedStepper بتشغيل محرك السائر المحدود بالحدود التي تحددها المكتبة. راجع ملف SpeedStepper.h للتعرف على طرق المكتبة المختلفة المتاحة. إليكم الخطوط العريضة للمنطق الكامن وراءهم.

يتم تتبع موضع السائر عن طريق حساب عدد الخطوات (النبضات). تحدد المكتبة الموضع ليكون بين وضعي setPlusLimit (int32_t) و setMinusLimit (int32_t). يكون حد زائد دائمًا> = 0 ويكون حد الطرح دائمًا <= 0. عند بدء التشغيل يكون موضع المحرك 0 (المنزل) ويتم تعيين الحدود على أرقام +/- كبيرة جدًا (حوالي +/- 1e9 خطوات). setAcceleration (الطفو) يحدد مدى سرعة المحرك في تغيير السرعة إما لأعلى أو لأسفل. عندما يقترب المحرك من حد زائد أو ناقص ، فإنه سيتباطأ عند هذا المعدل حتى يتوقف عند الحد. عند بدء التشغيل ، يتم ضبط التسارع على 1.0 خطوة / ثانية / ثانية. يكون إعداد التسريع دائمًا عبارة عن رقم + خمسة. تحدد علامة إعداد setSpeed (الطفو) الاتجاه الذي سيتحرك فيه المحرك.

يحدد setSpeed (float) السرعة لتسريع / إبطاء المحرك من سرعته الحالية. السرعة التي يمكن ضبطها عبر setSpeed (float) محدودة ، بالقيمة المطلقة ، بواسطة الإعدادات ، setMaxSpeed (float) ، الافتراضي 1000 خطوة / ثانية و setMinSpeed (float) ، الافتراضي 0.003 خطوة / ثانية. هذه الإعدادات الافتراضية هي أيضًا حدود السرعة المشفرة الثابتة المطلقة التي تقبلها المكتبة لـ setMaxSpeed () و setMinSpeed (). إذا كنت تريد تعيين سرعة قصوى> 1000 خطوة / ثانية ، فستحتاج إلى تحرير السطر الأول في ملف SpeedStepper.cpp لتغيير maxMaxSpeed (1000) إلى السرعة القصوى التي تريدها. من الناحية العملية ، فإن السرعة القصوى محدودة أيضًا بالوقت بين استدعاءات طريقة run () الخاصة بالمكتبة. بالنسبة إلى 1000 خطوة / ثانية ، يجب استدعاء طريقة run () كل 1 مللي ثانية على الأقل. انظر قسم الكمون أدناه.

محاولة ضبط سرعة أقل من دقيقة ستؤدي إلى توقف المحرك. يحتوي كل من هذه المحددات على أداة جمع مقابلة ، راجع ملف SpeedStepper.h. بالنسبة للسرعة ، تقوم getSetSpeed () بإرجاع السرعة التي قمت بتعيينها عبر setSpeed () ، بينما تقوم getSpeed () بإرجاع سرعة المحرك الحالية التي تتنوع مع تسارعها / تباطؤها وفقًا للسرعة التي قمت بتعيينها. إذا كان المحرك لا يسير في الاتجاه الذي تفكر فيه في a + ve ، يمكنك استدعاء invertDirectionLogic () لتبديل الاتجاه الذي يتحرك فيه المحرك لسرعات + خمسة.

تُرجع الدالة getCurrentPosition () موضع المحرك الحالي مقارنةً بـ "home" (0). يمكنك تجاوز وضع المحرك الحالي setCurrentPosition (int32_t). المركز الجديد محدود ليكون ضمن حدود زائد / ناقص.

مبدئيًا ، يتم إيقاف المحرك في الموضع 0. سيؤدي استدعاء setSpeed (50.0) إلى بدء التسارع في الاتجاه + ve إلى سرعة قصوى تبلغ 50 خطوة / دقيقة. سيؤدي استدعاء hardStop () إلى إيقاف المحرك فورًا في مكانه. من ناحية أخرى ، سيؤدي استدعاء طريقة الإيقاف () إلى ضبط السرعة على الصفر وإبطاء المحرك حتى يتوقف. سيؤدي استدعاء 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 → Add. ZIP library لاستيراد المكتبة قم بتنزيل مكتبة millisDelay وتثبيتها أيضًا

افتح أمثلة → SpeedStepper → speedStepperPlot مثال الرسم (أعد تشغيل IDE إذا لزم الأمر). تم تكوين هذا الرسم التخطيطي للعمل مع المسلسل ، على سبيل المثال UNO و Mega إلخ. للتشغيل على SparkFun Redboard Turbo ، انظر أدناه.

لا حاجة إلى لوحة للقيادة أو محرك متدرج لتشغيل هذا المثال. تستخدم هذه الأمثلة D6 و D7 كمخرجات. يمكنك تغيير دبابيس الإخراج إلى أي إخراج رقمي عن طريق تغيير إعدادات STEP_PIN و DIR_PIN بالقرب من أعلى الرسم التخطيطي.

قم بتحميل الرسم التخطيطي على اللوحة ثم افتح Tools → Serial Plotter عند 115200 باود لإظهار مؤامرة السرعة (RED) والموضع (BLUE) تم تعيين حد زائد على 360 مما يؤدي إلى ارتفاع السرعة إلى الصفر من حوالي 100 نقطة على المحور السيني. الحد السالب هو -510. يتوقف الموقف عند ~ -390 لأن السرعة كانت مطلوبة حتى 0.0. عند 380 نقطة على المحور x ، يتم إصدار goHome cmd الذي يعيد الخطوة إلى الموضع صفر.

يستخدم رسم StepperPlot هذا سرعة المللي تأخير للتبديل بين السرعات والتسارع المختلفة. في كثير من الحالات ، يكون استخدام SpeedStepperProfile ، كما في المثال التالي ، أبسط.

الخطوة 3: تشغيل مثال SpeedStepperProfile بدون محرك

تشغيل مثال SpeedStepperProfile بدون محرك
تشغيل مثال SpeedStepperProfile بدون محرك

افتح الأمثلة → SpeedStepper → speedStepperPlot مثال الرسم التخطيطي ، ينتج هذا الرسم المخطط أعلاه باستخدام Arduino Serial Plotter وهو مثال على تشغيل ملف تعريف سرعة محدد على سبيل المثال في حالة تشغيل مضخة.

تتكون ملفات تعريف سرعة السائر من صفيف من SpeedProfileStruct ، والذي تم تحديده في ملف SpeedStepper.h.

هيكلة SpeedProfileStruct {

سرعة تعويم // السرعة المستهدفة في نهاية هذه الخطوة deltaTms طويلة بدون توقيع ؛ // وقت التعجيل من السرعة الحالية (في بداية هذه الخطوة) إلى السرعة المستهدفة} ؛

حدد مصفوفة من SpeedProfileStruct تحتوي على السرعة المستهدفة لكل خطوة والوقت ، deltaTms ، بالمللي ثانية ، للوصول إلى تلك السرعة المستهدفة من السرعة المستهدفة السابقة. إذا كانت قيمة deltaTms صفرية أو صغيرة جدًا ، فستقفز السرعة فورًا إلى السرعة المستهدفة الجديدة. خلاف ذلك ، سيتم حساب التسارع المطلوب سيتم استدعاء setAcceleration () متبوعة باستدعاء setSpeed () للسرعة المستهدفة الجديدة. في جميع الحالات ، سيكون ملف التعريف مقيدًا بحدود الموضع الموجب والناقص الحالية وإعدادات السرعة القصوى / الدنيا. إذا كنت ترغب في الحفاظ على السرعة ، فما عليك سوى تكرار السرعة السابقة مع الوقت الذي تريده. نظرًا لأن السرعة المستهدفة الجديدة هي نفسها السرعة الحالية ، فإن التسارع المحسوب سيكون صفراً ، ولن يحدث أي تغيير في السرعة.

أنتجت مجموعة SpeedProfileStruct هذه المؤامرة أعلاه

const SpeedProfileStruct الملف الشخصي = {{0، 0}، // توقف فورًا إذا لم يتم إيقافها بالفعل {0، 1000}، // اضغط على الصفر لمدة 1 ثانية {-50، 0}، // Jump to -50 {-200، 2000}، // ramp to -200 {-200، 6000}، // Hold at -200 for 6sec {-50، 2000}، // ramp down to -50 {0، 0}، // stop immeadiately {0 ، 1500} ، // اضغط على الصفر لمدة 1.5 ثانية {50 ، 0} ، // قفزة إلى 50 {200 ، 2000} ، // منحدر إلى 200 {200 ، 6000} ، // اضغط 200 لمدة 6 ثوانٍ {50 ، 2000}، // ramp to 50 {0، 0}، // / stop immeadiately {0، 1000} // Hold zero // for plotting output} ؛ 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 التي يتم استخدامها للتعامل مع إدخال المستخدم وإخراج القائمة مع منع تشغيل الحلقة ().

افتح مثال أمثلة → SpeedStepper → speedSpeedSetup. تم تكوين هذا الرسم التخطيطي للعمل مع المسلسل ، على سبيل المثال UNO و Mega إلخ. للتشغيل على SparkFun Redboard Turbo ، انظر أدناه.

لا حاجة إلى لوحة للقيادة أو محرك متدرج لتشغيل هذا المثال. تستخدم هذه الأمثلة D6 و D7 كمخرجات. يمكنك تغيير دبابيس الإخراج إلى أي إخراج رقمي عن طريق تغيير إعدادات STEP_PIN و DIR_PIN بالقرب من أعلى الرسم التخطيطي. قم بتحميل الرسم التخطيطي على اللوحة ثم افتح Tools → Serial Monitor على 115200 لرؤية قائمة SETUP.

نقطة الإعداد: 0 sp: 0.00 + Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p - set Home l - set limits h - goHome r - run>

عندما يتم تشغيل المخطط ، يتم أخذ الموضع الحالي للخطوة على أنه موضع "المنزل" (0). إذا كنت بحاجة إلى إعادة وضع السائر إلى موضعه الحقيقي "المنزل" ، أدخل الأمر p لعرض قائمة SET HOME

ضبط نقطة البيع الرئيسية: 0 sp: 0.00 + Lim: 1073741808 - الحد: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x - setHome here and exit + - Forward - - Reverse s - swap Forward / Reverse - hardStop >

كما ترى ، تمت إزالة الحدود المشفرة في المخطط حتى تتمكن من إعادة وضع السائر في أي مكان. تحتاج إلى الحرص على عدم تجاوز الحدود المادية أو قد تكسر شيئًا ما.

استخدم + cmd لبدء تحريك السائر للأمام ، إذا وجدت أنه يتحرك في الاتجاه الخاطئ ، فأدخل أمرًا غير أمري أو مجرد سطر فارغ لإيقافه ثم استخدم scommand لتبديل اتجاه Forward. يجب عليك تحديث المخطط لتضمين استدعاء لـ invertDirectionLogic () في الإعداد لإصلاح ذلك للتشغيل التالي.

استخدم + / - cmds لوضع السائر على موضع الصفر الصحيح. يبدأ المحرك بطيئًا ثم يزداد سرعته أثناء تقدمه ، ما عليك سوى استخدام الخط وإفراغه لإيقافه. يتم تعيين السرعة القصوى لهذا وقائمة الحدود بواسطة MAX_SETUP_SPEED في الجزء العلوي من setupMenus.cpp.

بمجرد أن يتم وضع المحرك في موضعه "الرئيسي" ، استخدم x cmd لإعادة ضبط الوضع الحالي على 0 والعودة إلى قائمة SETUP.

إذا كنت بحاجة إلى تعيين الحدود ، عادةً فقط في الإعداد الأولي ، فاستخدم l cmd للدخول إلى قائمة SET LIMITS

تعيين حدود pos: 0 sp: 0.00 + Lim: 1073741808 - الحد: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l - setLimit here + - Forward - - Reverse h - goHome x - exit - hardStop>

استخدم + cmd للتقدم أكثر إلى حد زائد ثم استخدم l cmd لتعيينه كحد زائد. يمكن بعد ذلك استخدام الأمر h للعودة إلى 0 واستخدام - cmd للتحرك إذا كان المحرك عند حد السالب. استخدم l cmd مرة أخرى لتعيين حد الطرح. لاحظ مواضع حد الجمع والطرح وقم بتحديث عبارات setPlusLimit و setMinusLimit الخاصة بأسلوب الإعداد () بهذه القيم.

عند تعيين الحدود ، استخدم x cmd للعودة إلى قائمة SETUP ثم يمكنك استخدام r cmd لفتح قائمة RUN

موضع قائمة التشغيل: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + - Speed up - - Speed down h - goHome. - hardStop - سرعة التجميد> + pos: 4 sp: 9.49 + Lim: 500000 - الحد: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 42 sp: 29.15 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 120 sp: 49.09 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 + Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

يبدأ + cmd في التسارع في الاتجاه الأمامي ويطبع الموضع والسرعة كل ثانيتين. عندما يصل المحرك إلى السرعة التي تريدها يمكنك إيقاف التسارع بأي مفتاح آخر (أو إدخال فارغ). يمكنك تقليل السرعة باستخدام - cmd down للتوقف. إذا تم إيقاف - سيتسارع cmd في الاتجاه المعاكس.

توفر قائمة RUN هذه التحكم اليدوي في مشروعك. للتحكم التلقائي ، ستحتاج إلى إضافة بعض المستشعرات الأخرى.

الخطوة 5: الكمون

يعتمد التحكم في محرك السائر على البرنامج الذي يقود كل خطوة. للحفاظ على السرعة المحددة ، يحتاج مخططك إلى استدعاء طريقة stepper.run () غالبًا ما يكفي لإطلاق الخطوة التالية في الوقت المناسب للسرعة الحالية. للتحكم عبر المستشعرات ، يجب أن تكون قادرًا على معالجة القياسات الجديدة على الفور. تتضمن طباعة الموضع / السرعة اثنين من قياسات LATENCY للسماح لك بالتحقق من أن رسمك التخطيطي سريع بما يكفي.

زمن انتقال السائر (pfodBufferedStream)

يقيس زمن انتقال السائر الحد الأقصى للتأخير بين الاستدعاءات المتتالية لأسلوب stepper.run (). من أجل تشغيل محرك السائر بسرعة 1000 خطوة في الثانية ، يجب أن يكون زمن انتقال السائر أقل من 1000uS (1mS). كان للنسخة الأولى من هذا الرسم وقت استجابة يصل إلى عدة أجزاء من الثانية. للتغلب على هذه الاستدعاءات الإضافية إلى طريقة runStepper () (التي تستدعي stepper.run ()) حيث تمت إضافتها من خلال الكود. هذا لم يحل المشكلة تمامًا لأن القائمة وبيانات الإخراج منعت الرسم بمجرد امتلاء المخزن المؤقت الصغير Serial Tx. لتجنب هذا الحظر ، تم استخدام pfodBufferedStream من مكتبة pfodParser لإضافة مخزن طباعة مؤقت للإخراج 360 بايت يمكن لبيانات الطباعة الكتابة إليه بسرعة. ثم يطلق pfodBufferedStream البايتات بمعدل الباود المحدد 115200 في هذه الحالة. يجب أن يختار pfodBufferedStream إما الحظر عند امتلاء المخزن المؤقت أو إسقاط أحرف الفائض فقط. هنا يتم تعيينه لإسقاط أي أحرف إضافية عندما يكون المخزن المؤقت ممتلئًا بحيث لا يتم حظر الرسم في انتظار Serial لإرسال الأحرف.

الكمون التكراري (إدخال غير محجوب)

يقيس زمن انتقال الحلقة الحد الأقصى للتأخير بين الاستدعاءات المتتالية لطريقة الحلقة (). يحدد هذا مدى السرعة التي يمكنك بها معالجة قياسات المستشعر الجديدة وضبط سرعة مجموعة المحرك. تعتمد السرعة التي يجب أن تكون عليها إذن على ما تحاول التحكم فيه.

تمت إزالة التأخيرات الناتجة عن بيانات الطباعة باستخدام pfodBufferedStream أعلاه ، ولكن لمعالجة مدخلات المستخدم ، تحتاج إلى أخذ الحرف الأول فقط من الإدخال وتجاهل بقية السطر. تُستخدم فئة NonBlockingInput في مكتبة pfodParer لإرجاع حرف غير صفري عند وجود إدخال ، باستخدام readInput () ، ومسح الأحرف التالية وتجاهلها ، باستخدام clearInput () ، حتى لا يتم استلام أحرف لـ 10 مللي ثانية دون حظر الحلقة ()

بالطبع سيتم زيادة زمن انتقال الحلقة بواسطة الشفرة الإضافية التي تضيفها لقراءة أجهزة الاستشعار وحساب السرعة المحددة الجديدة. تأخذ العديد من مكتبات المستشعرات نوعًا من استخدام التأخير (..) بين بدء القياس واسترداد النتيجة. ستحتاج إلى إعادة كتابة هذه المكتبات لاستخدام 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 إلى #define SERIAL Serial1

محرك متدرج وإمدادات الطاقة والسائق والحماية

هناك العديد من أنواع وأحجام محركات السائر. هنا يتم استخدام محرك متدرج ذو ملفين بجهد 12 فولت 350 مللي أمبير للاختبار. لتشغيل هذا السائر ، تحتاج إلى مصدر طاقة بقوة 12 فولت أو أكثر وأكبر من 350 مللي أمبير.

توفر هذه المكتبة إخراجًا للاتجاه والخطوة فقط ، لذا فأنت بحاجة إلى برنامج تشغيل للتفاعل مع محرك السائر. يتحكم برنامج Easy Driver و Big Easy Driver في تيار ملفات المحرك بحيث يمكنك استخدام مصدر طاقة بجهد أعلى بأمان ، على سبيل المثال باستخدام مصدر طاقة 6 فولت لمحرك 3.3 فولت. يمكن لبرنامج Easy Driver توفير ما بين 150 مللي أمبير / ملف و 700 مللي أمبير / ملف. بالنسبة للتيارات العالية ، يمكن لبرنامج Big Easy Driver توفير ما يصل إلى 2 أمبير لكل ملف. اقرأ الأسئلة الشائعة في أسفل صفحة Easy Drive.

تستخدم هذه الأمثلة D6 و D7 كمخرجات Step و Direction. يمكنك تغيير دبابيس الإخراج إلى أي إخراج رقمي عن طريق تغيير إعدادات STEP_PIN و DIR_PIN بالقرب من أعلى الرسم التخطيطي.

برمجة Sparkfun Redboard Turbo

تعد برمجة Redboard Turbo مشكلة.إذا فشل البرنامج ، فاضغط أولاً على زر إعادة الضبط مرة واحدة وأعد تحديد منفذ COM في قائمة أدوات Arduino وأعد المحاولة. إذا لم يفلح ذلك ، فاضغط مرتين على زر إعادة الضبط وحاول مرة أخرى.

توصيل برنامج Easy Driver

اثنان من المحركات السائر الملفوفة لها 4 أسلاك. استخدم مقياسًا متعددًا للعثور على الأزواج التي تتصل بكل ملف ثم قم بتوصيل ملف واحد بأطراف Easy Driver A والملف الآخر في الطرف B. لا يهم الطريقة التي تدور حولك بها الأسلاك لأنه يمكنك استخدام s cmd في قائمة الإعداد لتبديل اتجاه الحركة.

يتم توصيل مصدر طاقة المحرك إلى M + و GND ، اضبط المستوى المنطقي للوحة باستخدام رابط 3 / 5V. قم باختصار الرابط معًا لمخرجات معالج دقيق 3.3 فولت ، مثل SparkFun Redboard Turbo (إذا تركته مفتوحًا فهو مناسب للإشارات الرقمية 5 فولت ، على سبيل المثال UNO ، Mega) قم بتوصيل دبابيس GND و STEP و DIR بالمعالج الدقيق GND والخطوة و دبابيس الإخراج dir. لا توجد وصلات أخرى ضرورية لقيادة المحرك.

كابل تسلسلي من USB إلى TTL

عند نقل رسم SpeedStepperSetup من Uno / Mega إلى Redboard Turbo ، يمكنك ببساطة استبدال #define SERIAL Serial بـ #define SERIAL SerialUSB ليناسب اتصال Redboard Turbo USB التسلسلي ، ومع ذلك ستجد أن زمن انتقال السائر الناتج هو حوالي 10 مللي ثانية. هذا هو 10 مرات أبطأ من UNO. هذا بسبب كيفية تعامل وحدة المعالجة المركزية Redboard مع اتصال USB. للتغلب على ذلك ، قم بتوصيل USB بالكابل التسلسلي TTL بـ D0 / D1 وقم بتعيين # تحديد SERIAL Serial1 لاستخدام الاتصال التسلسلي للجهاز للتحكم في محرك السائر. يعطي استخدام Serial1 LATENCY: stepper: 345uS loop: 2016uS وهو أسرع بثلاث مرات ثم UNO للخطوة وزمن انتقال الحلقة

برنامج المحطة

يعد Arduino Serial Monitor أصعب قليلاً في استخدامه للتحكم في محرك السائر حيث يتعين عليك إدخال الحرف في سطر cmd ثم الضغط على Enter لإرساله. وسيلة أسرع وأكثر استجابة هي فتح نافذة طرفية ، TeraTerm للكمبيوتر الشخصي (أو CoolTerm Mac) ، متصلة بمنفذ USB بكابل TTL COM. ثم في تلك النافذة ، يؤدي الضغط على مفتاح cmd إلى إرسالها على الفور. الضغط على Enter فقط أرسل سطرًا فارغًا.

ضبط نطاق سرعة الموتور

كما هو موصّل أعلاه ، تم تكوين محرك الأقراص السهل لخطوات 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 تحكمًا جيدًا في الموقع ، كانت هناك حاجة إلى التحكم في السرعة للنموذج الأولي لمسبار ذوبان الجليد لجمع العينات البيولوجية على Europa ، لذلك تمت إعادة كتابة مكتبة AccelStepper لتوفير التحكم في السرعة بحدود نهائية ووظيفة goHome.

موصى به: