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

التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية: 3 خطوات
التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية: 3 خطوات

فيديو: التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية: 3 خطوات

فيديو: التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية: 3 خطوات
فيديو: التحكم في محرك الأقراص بواسطة، Stepper motor PLC 14SS2 Delta 2024, يوليو
Anonim
التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية
التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية

هذا مخطط تحكم لمحرك السائر 28BYJ-48 الذي قمت بتطويره لاستخدامه كجزء من مشروع أطروحة العام الأخير. لم أر هذا من قبل لذا اعتقدت أنني سأقوم بتحميل ما اكتشفته. نأمل أن يساعد هذا شخصًا آخر هناك!

يسمح الكود للمحرك المتدرج بشكل أساسي "بنسخ" الموضع الزاوي لعصا التحكم التناظرية ، أي إذا قمت بدفع عصا التحكم للأمام ، فإن المحرك يشير إلى "الشمال". ادفع عصا التحكم باتجاه الغرب ، يدور المحرك للإشارة في نفس الاتجاه.

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

اللوازم

Arduino Uno أو ما شابه

اللوح واختيار أسلاك العبور (ذكر إلى ذكر ، ذكر إلى أنثى)

5V امدادات الطاقة

وحدة عصا التحكم التناظرية (بشكل مثالي مع ميزة زر الضغط اللحظي ، مما يجعل الراحة أسهل في الوضع "الرئيسي"

28BYJ-48 محرك متدرج وسائق متدرج ULN2003

قلم وورقة وبلو تاك (أو أي جهاز مؤشر آخر لتوصيله بالمحرك!)

الخطوة 1: الخطوة 1: الإعداد

قم بتوصيل محرك السائر بسائق السائر ، وقم بتوصيل المسامير كما يلي:

IN1 - دبوس اردوينو 8

IN2 - دبوس اردوينو 9

IN3 - دبوس اردوينو 10

IN4 - دبوس اردوينو 11

قم بتوصيل مصدر الطاقة 5 فولت بقضبان الإمداد على اللوح الخاص بك ، وقم بتوصيل مدخلات ULN2003 5 فولت بقضبان الإمداد. قم بتوصيل السكة الأرضية بالأرض على Arduino.

لعصا التحكم ، قم بالاتصال كما يلي:

تبديل دبوس - اردوينو دبوس 2

المحور X - Arduino A0 (التناظرية في 0)

المحور الصادي - اردوينو A1

+ 5V - خرج Arduino 5V

GND - اردوينو GND

أخيرًا ، قم بتوصيل أرضية اللوح الخاص بك بمسمار Arduino GND الآخر

الخطوة الثانية: الخطوة الثانية: شرح المدونة

لقد قمت بتضمين كود Arduino الكامل لتنزيله واستخدامه. ولكن سأبذل قصارى جهدي لشرح الأجزاء ذات الصلة هنا.

النظرية الكامنة وراء هذا الرمز هي أن المساحة التي تشغلها عصا التحكم مقسمة إلى رسم بياني ، مع 0 ، 0 في المركز. ومع ذلك ، فإن مدخلات عصا التحكم تبقى عند (تقريبًا) 512 في المركز ، لذلك للتغلب على هاتين الوظيفتين ، يتم استخدام "صفر" القيمة المقروءة من المحور X و Y. اعتمادًا على مصدر الطاقة الذي تستخدمه ، قد تحتاج إلى تغيير القيم في الوظيفتين ZeroX و ZeroY بحيث تعطي عصا التحكم قراءة موثوقة للصفر عند الراحة.

عند قراءة قيم X و Y ، يتم تحويلها أولاً إلى راديان باستخدام الوظيفة atan2 () في مكتبة math.h. شرح هذه الوظيفة خارج نطاق هذه التعليمات ، ولكن يرجى البحث عنها - إنها خدعة بسيطة إلى حد ما للهندسة!

أخيرًا ، لتسهيل الحياة لأولئك منا الذين اعتادوا العمل بالدرجات بدلاً من الراد ، يتم تحويل قيمة rad المحسوبة بواسطة atan2 () إلى درجات.

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

الآن على الجزء الأكبر من الكود! نبدأ بقراءة عصا التحكم X ، والإحداثيات Y مفصولة مرتين بتأخير 10 مللي ثانية ثم التحقق مما إذا كانت متطابقة - وجدت أن عصا التحكم ستخرج أحيانًا قراءات متفرقة ، وكان هذا التأخير الطفيف كافيًا لإيقاف دوران المحرك بناءً على هذه. إنه أيضًا تأخير قصير بما يكفي بحيث لا يبدو أنه يتداخل مع المدخلات المتعمدة.

ما تبقى من الكود هو شرح ذاتي إلى حد ما وقد بذلت قصارى جهدي لتوثيقه ؛ سلسلة من عبارات IF تقارن زاوية عصا التحكم الحالية بزاوية المحرك ، وتحرك المحرك إلى تلك الزاوية. يحتوي 28BYJ-48 على 5.689 خطوة لكل درجة ، ولهذا السبب نضرب الحركة المطلوبة بهذا الرقم الذي يبدو فرديًا!

الجزء الوحيد من الكود الذي يتطلب شرحًا أكثر هو ما أسميته "الحالة الملفوفة". في نفس الوقت الذي كان فيه عصا التحكم والمحرك على سبيل المثال + 175 درجة ، وانتقلت عصا التحكم لاحقًا إلى -175 درجة (حركة 10 درجات فقط على عصا التحكم ، من شمال الغرب إلى جنوب الغرب تمامًا) ، سيتحرك المحرك في الاتجاه الخاطئ بمقدار 350 درجة! لحساب هذا ، تمت كتابة الحالة الخاصة.

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

إذا كانت هاتان العبارتان صحيحتين ، فستتحقق الوظيفة بعد ذلك مما إذا كان المحرك يحتاج إلى التحرك في اتجاه عقارب الساعة (قيمة المحرك سالبة) أو عكس اتجاه عقارب الساعة (إذا كانت قيمة المحرك موجبة).

يتم جمع القيم المطلقة لزاوية المحرك وزاوية عصا التحكم ، ويتم طرحها من 360 درجة لتحديد مسافة التحرك. أخيرًا ، يتم تحديث زاوية المحرك (التي تعكس الآن زاوية عصا التحكم) على هذا النحو.

الخطوة 3: انتهى

لذا ، كل ما تبقى هو تحميل الكود على Arduino وتشغيله! شاهد الفيديو أعلاه للحصول على فكرة جيدة عن كيفية عمل المشروع. سيكون هذا مفيدًا لمحور الكاميرا والأذرع الروبوتية والعديد من التطبيقات الأخرى!

إذا كنت تستخدم الرمز ، فيرجى إبلاغي بذلك ، وإذا رأيت أي مكان يمكن تحسين الكود فيه ، فسأكون سعيدًا بسماع ملاحظاتك.

موصى به: