سنقوم في هذا البرنامج التعليمي بتطوير دائرة باستخدام مستشعر FLEX و Arduino Uno ومحرك مؤازر. هذا المشروع عبارة عن نظام تحكم مؤازر حيث يتم تحديد موضع عمود المؤازرة من خلال الثني أو الانحناء أو انحراف مستشعر FLEX.
دعنا نتحدث أولاً قليلاً عن محركات المؤازرة. يتم استخدام محركات مؤازرة حيث توجد حاجة لحركة العمود أو موضعه بدقة. هذه ليست مقترحة للتطبيقات عالية السرعة. هذه مقترحة للسرعة المنخفضة وعزم الدوران المتوسط وتطبيق الموضع الدقيق. تُستخدم هذه المحركات في آلات الذراع الروبوتية وأنظمة التحكم في الطيران وأنظمة التحكم. تُستخدم المحركات المؤازرة في الأنظمة المدمجة مثل آلات البيع وما إلى ذلك.
المحركات المؤازرة متوفرة بأشكال وأحجام مختلفة. سيحتوي محرك سيرفو بشكل أساسي على أسلاك ، أحدهما للجهد الإيجابي والآخر للأرض والآخر لضبط الموضع. السلك الأحمر متصل بالطاقة ، السلك الأسود متصل بالأرض والسلك الأصفر متصل بالإشارة.
محرك سيرفو عبارة عن مزيج من محرك DC ونظام التحكم في الموضع والتروس. يتم ضبط موضع عمود محرك التيار المستمر عن طريق إلكترونيات التحكم في المؤازرة ، بناءً على نسبة العمل لإشارة PWM لدبوس الإشارة.
ببساطة ، تحدث إلكترونيات التحكم عن طريق ضبط موضع العمود عن طريق التحكم في محرك التيار المستمر. يتم إرسال هذه البيانات المتعلقة بموضع العمود من خلال دبوس الإشارة. يجب إرسال بيانات الموقع إلى جهاز التحكم في شكل إشارة PWM من خلال دبوس الإشارة لمحرك سيرفو.
يمكن أن يختلف تردد إشارة PWM (معدل عرض النبض) بناءً على نوع محرك سيرفو. الشيء المهم هنا هو النسبة المطلوبة لإشارة PWM. بناءً على هذه الحصة الواجبة ، تقوم إلكترونيات التحكم بضبط العمود. لكي يتم نقل العمود إلى الساعة 9 درجات ، يجب أن يكون TURN ON RATION 1 / 18.ie. 1 مللي ثانية من "وقت التشغيل" و 17 مللي ثانية من "وقت إيقاف التشغيل" في إشارة 18 مللي ثانية.
لكي يتم نقل العمود إلى ساعة 12 درجة ، يجب أن يكون وقت تشغيل الإشارة 1.5 مللي ثانية ووقت إيقاف التشغيل 16.5 مللي ثانية. يتم فك شفرة هذه النسبة بواسطة نظام التحكم في المؤازرة وتقوم بضبط الوضع بناءً عليها.
يتم إنشاء PWM هنا باستخدام ARDUINO UNO. حتى الآن نحن نعلم ذلك ، يمكننا التحكم في عمود المحرك المؤازر عن طريق تغيير نسبة العمل لإشارة PWM الناتجة عن Arduino Uno. لدى UNO وظيفة خاصة تمكننا من توفير موضع SERVO دون إزعاج إشارة PWM. ومع ذلك فمن المهم معرفة نسبة واجب PWM - علاقة موقف المؤازرة. سنتحدث أكثر عن ذلك في الوصف.
الآن دعنا نتحدث عن FLEX SENSOR. لربط مستشعر FLEX بـ ARDUINO UNO ، سنستخدم ميزة ADC (التحويل التناظري إلى الرقمي) 8 بت للقيام بالمهمة. مستشعر FLEX هو محول طاقة يغير مقاومته عندما يتغير شكله. يبلغ طول مستشعر FLEX 2.2 بوصة أو بطول الإصبع. يظهر في الشكل.
جهاز الاستشعار المرن هو محول طاقة يغير مقاومته عندما يكون السطح الخطي منحنيًا. ومن هنا جاء اسم جهاز الاستشعار المرن. بمجرد التحدث عن مقاومة طرف المستشعر تزداد عندما يكون مثنيًا. هذا موضح في الشكل أدناه.
لا يمكن لهذا التغيير في المقاومة أن يفيد ما لم نتمكن من قراءتها. يمكن لوحدة التحكم الموجودة في متناول اليد قراءة الفرص في الجهد فقط ولا شيء أقل من ذلك ، لذلك سنستخدم دائرة مقسم الجهد ، وبذلك يمكننا اشتقاق تغيير المقاومة مع تغير الجهد.
مقسم الجهد عبارة عن دائرة مقاومة ويظهر في الشكل. في هذه الشبكة المقاومة لدينا مقاومة ثابتة ومقاومة متغيرة أخرى. كما هو موضح في الشكل ، R1 هنا مقاومة ثابتة و R2 هو مستشعر FLEX الذي يعمل كمقاومة.
يتم أخذ نقطة منتصف الفرع للقياس. مع تغيير R2 ، قمنا بالتغيير في Vout. لذلك لدينا جهد يتغير مع الوزن.
الآن الشيء المهم الذي يجب ملاحظته هنا هو أن الإدخال الذي تم التقاطه بواسطة وحدة التحكم لتحويل ADC منخفض يصل إلى 50 أوم. يعد تأثير التحميل لمقسم الجهد القائم على المقاومة مهمًا لأن التيار المسحوب من مقسم الجهد يزيد من نسبة الخطأ الزائدة ، في الوقت الحالي لا داعي للقلق بشأن تأثير التحميل.
FLEX SENSOR تتغير مقاومته عند الانحناء. مع توصيل محول الطاقة هذا بدائرة مقسم الجهد ، سيكون لدينا جهد متغير مع FLEX على محول الطاقة. هذا الجهد المتغير هو FED لإحدى قنوات ADC ، سيكون لدينا قيمة رقمية تتعلق بـ FLEX.
سنطابق هذه القيمة الرقمية مع موضع المؤازرة ، وبذلك سيكون لدينا تحكم مؤازر عن طريق المرن.
مكونات
الأجهزة: Arduino Uno ، مصدر طاقة (5 فولت) ، مكثف 1000 uF ، مكثف 100nF (3 قطع) ، مقاوم 100KΩ ، محرك سيرفو (SG 90) ، مقاوم 220 درجة ، مستشعر FLEX.
البرنامج: Atmel studio 6.2 أو Aurdino ليلاً.
مخطط الدائرة وشرحها
يظهر الرسم البياني للدائرة للتحكم في محرك سيرفو بواسطة مستشعر FLEX في الشكل أدناه.
الجهد عبر المستشعر ليس خطيًا تمامًا ؛ ستكون صاخبة. لتصفية الضوضاء ، يتم وضع المكثفات عبر كل مقاوم في دائرة الفاصل كما هو موضح في الشكل.
هنا سنأخذ الجهد الذي يوفره المقسم (الجهد الذي يمثل الوزن خطيًا) ونغذيه في إحدى قنوات ADC في Arduino UNO. سنستخدم A0 لهذا الغرض. بعد تهيئة ADC ، سيكون لدينا قيمة رقمية تمثل المستشعر العازم. سنأخذ هذه القيمة ونطابقها مع موضع مؤازر.
لكي يحدث هذا ، نحتاج إلى إنشاء بعض التعليمات في البرنامج وسنتحدث عنها بالتفصيل أدناه.
لدى ARDUINO ست قنوات ADC ، كما هو موضح في الشكل. في تلك يمكن استخدام أي واحد منهم أو كلها كمدخلات للجهد التناظري. UNO ADC ذات دقة 10 بت (لذا فإن قيم الأعداد الصحيحة من (0- (2 ^ 10) 1023)). هذا يعني أنه سيعين الفولتية المدخلة بين 0 و 5 فولت في قيم صحيحة بين 0 و 1023. لذلك لكل (5/1024 = 4.9mV) لكل وحدة.
هنا سنستخدم A0 من UNO.
نحتاج إلى معرفة بعض الأشياء.
|
بادئ ذي بدء ، تحتوي قنوات UNO ADC على قيمة مرجعية افتراضية تبلغ 5 فولت. هذا يعني أنه يمكننا إعطاء جهد إدخال أقصى قدره 5 فولت لتحويل ADC في أي قناة إدخال. نظرًا لأن بعض المستشعرات توفر جهدًا من 0-2.5 فولت ، مع مرجع 5 فولت ، نحصل على دقة أقل ، لذلك لدينا تعليمات تمكننا من تغيير هذه القيمة المرجعية. لذلك لتغيير القيمة المرجعية لدينا ("analogReference () ؛") في الوقت الحالي نتركها على هذا النحو.
كإعداد افتراضي ، نحصل على أقصى دقة للوحة ADC وهي 10 بت ، يمكن تغيير هذا القرار باستخدام التعليمات ("analogReadResolution (بت) ؛"). يمكن أن يكون تغيير الدقة هذا مفيدًا في بعض الحالات. الآن نتركه كما.
الآن إذا تم تعيين الشروط المذكورة أعلاه على الوضع الافتراضي ، فيمكننا قراءة القيمة من ADC للقناة '0' عن طريق استدعاء الوظيفة مباشرة "analogRead (pin) ؛" هنا يمثل "pin" دبوس حيث قمنا بتوصيل الإشارة التناظرية ، في هذه الحالة سيكون "A0".
يمكن أخذ القيمة من ADC في عدد صحيح كـ “int SENSORVALUE = analogRead (A0)؛ "، من خلال هذه التعليمات ، يتم تخزين القيمة بعد ADC في العدد الصحيح" SENSORVALUE ".
الآن دعنا نتحدث عن SERVO ، لدى UNO ميزة تمكننا من التحكم في موضع المؤازرة من خلال إعطاء قيمة الدرجة فقط. لنفترض أنه إذا كنا نريد أن تكون المؤازرة عند 30 ، فيمكننا تمثيل القيمة في البرنامج مباشرة. يعتني ملف رأس SERVO بجميع حسابات نسبة الرسوم داخليًا.
#تضمن
أجهزة مؤازرة مؤازرة (3) ؛ مؤازرة الكتابة (درجات) ؛ |
يمثل البيان الأول ملف الرأس للتحكم في محرك سيرفو.
العبارة الثانية هي تسمية المؤازرة ؛ نتركها كمؤازرة بحد ذاتها.
يوضح البيان الثالث مكان توصيل دبوس إشارة المؤازرة ؛ يجب أن يكون هذا دبوس PWM. نحن هنا نستخدم PIN3.
تعطي العبارة الرابعة أوامر لتحديد موضع محرك سيرفو وهي بالدرجات. إذا أعطيت 30 ، يدور محرك سيرفو 30 درجة.
الآن يمكن لـ sg90 التحرك من 0-180 درجة ، لدينا نتيجة ADC 0-1024
لذا فإن ADC هو ما يقرب من ستة أضعاف موقف المؤازرة. لذلك من خلال قسمة نتيجة ADC على 6 ، سنحصل على موضع يد SERVO التقريبي.
مع هذا ، سيكون لدينا قيمة موضع مؤازرة يتم تغذيتها بمحرك مؤازر ، والتي تتناسب مع الثني أو الانحناء. عندما يتم تركيب جهاز الاستشعار المرن هذا على القفاز ، يمكننا التحكم في موضع المؤازرة بحركة اليد.