جدول المحتويات:
فيديو: التحكم الموضعي الزاوي لمحرك متدرج 28BYJ-48 مع عصا تحكم اردوينو وتناظرية: 3 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
هذا مخطط تحكم لمحرك السائر 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 وتشغيله! شاهد الفيديو أعلاه للحصول على فكرة جيدة عن كيفية عمل المشروع. سيكون هذا مفيدًا لمحور الكاميرا والأذرع الروبوتية والعديد من التطبيقات الأخرى!
إذا كنت تستخدم الرمز ، فيرجى إبلاغي بذلك ، وإذا رأيت أي مكان يمكن تحسين الكود فيه ، فسأكون سعيدًا بسماع ملاحظاتك.
موصى به:
تحكم اردوينو LED مع عصا تحكم تناظرية: 6 خطوات
التحكم في Arduino LED مع عصا التحكم التناظرية: في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام عصا التحكم التناظرية للتحكم في مؤشر LED
محرك متدرج يتم التحكم فيه بواسطة محرك متدرج بدون متحكم!: 6 خطوات
محرك متدرج يتم التحكم فيه بواسطة محرك متدرج بدون متحكم!: في هذه التعليمات السريعة ، سنصنع وحدة تحكم بسيطة في محرك متدرج باستخدام محرك متدرج. لا يتطلب هذا المشروع دوائر معقدة أو متحكم دقيق. لذلك دون مزيد من اللغط ، فلنبدأ
محرك متدرج يتم التحكم فيه بواسطة محرك متدرج بدون متحكم (V2): 9 خطوات (مع صور)
محرك متدرج يتم التحكم فيه بواسطة محرك متدرج بدون متحكم (V2): في أحد مواد التعليمات السابقة الخاصة بي ، أوضحت لك كيفية التحكم في محرك متدرج باستخدام محرك متدرج بدون متحكم دقيق. لقد كان مشروعًا سريعًا وممتعًا ولكنه جاء بمشكلتين سيتم حلهما في Instructable. لذا ، مع
محرك متدرج ذو تحكم بمحرك متدرج - محرك متدرج كجهاز تشفير دوار: 11 خطوة (بالصور)
محرك متدرج ذو تحكم بمحرك متدرج | محرك متدرج كجهاز تشفير دوار: هل لديك محركان متدرجان في الجوار وتريد القيام بشيء ما؟ في هذا Instructable ، دعنا نستخدم محرك متدرج كجهاز تشفير دوار للتحكم في موضع محرك متدرج آخر باستخدام متحكم Arduino. لذلك بدون مزيد من اللغط ، دعنا
روبوت اردوينو مع وحدة تحكم PS2 (عصا تحكم بلاي ستيشن 2): 10 خطوات (مع صور)
Arduino Robot With PS2 Controller (PlayStation 2 Joystick): في هذا البرنامج التعليمي ، سأوضح لك كيفية استخدام عصا التحكم اللاسلكية Playstation 2 (PS2) لتجربة خزان آلي. تم استخدام لوحة Arduino Uno في صميم هذا المشروع. يستقبل أوامر من جهاز التحكم اللاسلكي ويضبط سرعة المحركات