في هذا البرنامج التعليمي ، سنطور دائرة باستخدام مستشعر القوة و Arduino Uno ومحرك مؤازر. سيكون نظام تحكم مؤازر حيث يتم تحديد موضع عمود السيرفو بالوزن الموجود على مستشعر القوة. قبل المضي قدمًا ، دعنا نتحدث عن المؤازرة والمكونات الأخرى.
يتم استخدام محركات مؤازرة حيث توجد حاجة لحركة العمود أو موضعه بدقة. هذه ليست مقترحة للتطبيقات عالية السرعة. هذه مقترحة للسرعة المنخفضة وعزم الدوران المتوسط وتطبيق الموضع الدقيق. تُستخدم هذه المحركات في آلات الذراع الروبوتية وأنظمة التحكم في الطيران وأنظمة التحكم. تُستخدم المحركات المؤازرة أيضًا في بعض الطابعات وأجهزة الفاكس.
المحركات المؤازرة متوفرة بأشكال وأحجام مختلفة. سيحتوي محرك سيرفو بشكل أساسي على أسلاك ، أحدهما للجهد الإيجابي والآخر للأرض والآخر لضبط الموضع. السلك الأحمر متصل بالطاقة ، السلك الأسود متصل بالأرض والسلك الأصفر متصل بالإشارة.
محرك سيرفو عبارة عن مزيج من محرك DC ونظام التحكم في الموضع والتروس. يتم ضبط موضع عمود محرك التيار المستمر عن طريق إلكترونيات التحكم في المؤازرة ، بناءً على نسبة العمل لإشارة PWM لدبوس الإشارة. ببساطة ، تحدث إلكترونيات التحكم عن طريق ضبط موضع العمود عن طريق التحكم في محرك التيار المستمر. يتم إرسال هذه البيانات المتعلقة بموضع العمود من خلال دبوس الإشارة. يجب إرسال بيانات الموقع إلى جهاز التحكم في شكل إشارة PWM من خلال دبوس الإشارة لمحرك سيرفو.
يمكن أن يختلف تردد إشارة PWM (معدل عرض النبض) بناءً على نوع محرك سيرفو. الشيء المهم هنا هو النسبة المطلوبة لإشارة PWM. بناءً على هذه الحصة الواجبة ، تقوم إلكترونيات التحكم بضبط العمود.
كما هو موضح في الشكل أدناه ، لكي يتم نقل العمود إلى الساعة 9o ، يجب أن يكون TURN ON RATION 1 / 18.ie. 1 ميلي ثانية من "وقت التشغيل" و 17 ميلي ثانية من "وقت إيقاف التشغيل" في إشارة 18 مللي ثانية.
لكي يتم نقل العمود إلى ساعة 12 درجة ، يجب أن يكون وقت تشغيل الإشارة 1.5 مللي ثانية ووقت إيقاف التشغيل 16.5 مللي ثانية.
يتم فك شفرة هذه النسبة بواسطة نظام التحكم في المؤازرة وتقوم بضبط الوضع بناءً عليها.
يتم إنشاء PWM هنا باستخدام ARDUINO UNO.
حتى الآن نحن نعلم أنه يمكننا التحكم في عمود محرك سيرفو من خلال تغيير نسبة العمل لإشارة PWM التي تولدها UNO.
الآن دعنا نتحدث عن مستشعر القوة أو مستشعر الوزن.
لربط مستشعر FORCE مع ARDUINO UNO ، سنستخدم ميزة ADC (التحويل التناظري إلى الرقمي) 8 بت في arduno uno.
مستشعر القوة هو محول طاقة يغير مقاومته عند الضغط على السطح. مستشعر FORCE متوفر بأحجام وأشكال مختلفة.
سنستخدم أحد الإصدارات الأرخص لأننا لسنا بحاجة إلى الكثير من الدقة هنا. FSR400 هي واحدة من أرخص أجهزة استشعار القوة في السوق. تظهر صورة FSR400 في الشكل أدناه.
من المهم الآن ملاحظة أن FSR 400 حساسة بطول الطول ، يجب تركيز القوة أو الوزن على المتاهة في منتصف عين المستشعر ، كما هو موضح في الشكل.
إذا تم استخدام القوة في أوقات خاطئة ، فقد يتلف الجهاز بشكل دائم.
شيء مهم آخر هو معرفة ذلك ، يمكن أن يقود المستشعر تيارات عالية المدى. لذا ضع في اعتبارك التيارات الدافعة أثناء التثبيت. كما أن المستشعر له حد للقوة وهو 10 نيوتن. لذلك يمكننا تطبيق وزن 1 كجم فقط. إذا تم تطبيق أوزان أعلى من 1 كجم ، فقد يظهر المستشعر بعض الانحرافات. إذا زادت عن 3 كجم. قد يتلف المستشعر بشكل دائم.
كما قيل سابقًا ، يتم استخدام هذا المستشعر لاستشعار التغيرات في الضغط. لذلك عندما يتم تطبيق الوزن أعلى مستشعر FORCE ، تتغير المقاومة بشكل كبير. يظهر الرسم البياني أدناه مقاومة FS400 للوزن الزائد:
كما هو موضح في الشكل أعلاه ، تقل المقاومة بين جهتي اتصال المستشعر مع زيادة الوزن أو زيادة التوصيل بين ملامسي المستشعر.
يتم إعطاء مقاومة الموصل النقي من خلال:
أين،
ع- مقاومة الموصل
l = طول الموصل
أ = منطقة الموصل.
فكر الآن في موصل بمقاومة "R" ، إذا تم تطبيق بعض الضغط على أعلى الموصل ، فإن المنطقة الموجودة على الموصل تقل ويزداد طول الموصل نتيجة للضغط. لذلك يجب أن تزداد مقاومة الموصل بالصيغة ، لأن المقاومة R تتناسب عكسياً مع المنطقة وتتناسب طرديًا مع الطول l
لذلك مع هذا بالنسبة للموصل تحت الضغط أو الوزن تزداد مقاومة الموصل. لكن هذا التغيير صغير مقارنة بالمقاومة الشاملة. لإجراء تغيير كبير ، يتم تكديس العديد من الموصلات معًا.
هذا ما يحدث داخل مستشعرات القوة الموضحة في الشكل أعلاه. عند النظر عن كثب ، يمكن للمرء أن يرى العديد من الخطوط داخل المستشعر. كل من هذه الخطوط يمثل موصل. حساسية المستشعر في أرقام الموصلات.
ولكن في هذه الحالة ستنخفض المقاومة مع الضغط لأن المادة المستخدمة هنا ليست موصلة نقية. FSR هنا عبارة عن أجهزة قوية من البوليمر السميك (PTF). لذلك هذه ليست أجهزة موصلة نقية. وهي مصنوعة من مادة تظهر انخفاضًا في المقاومة مع زيادة القوة المطبقة على سطح المستشعر.
توضح هذه المادة الخصائص كما هو موضح في الرسم البياني لـ FSR.
لا يمكن لهذا التغيير في المقاومة أن يفيد ما لم نتمكن من قراءتها. يمكن لوحدة التحكم الموجودة في متناول اليد قراءة فرص الجهد فقط وليس أقل من ذلك ، لذلك سنستخدم دائرة مقسم الجهد ، حيث يمكننا اشتقاق تغيير المقاومة مع تغير الجهد.
مقسم الجهد عبارة عن دائرة مقاومة ويظهر في الشكل. في هذه الشبكة المقاومة لدينا مقاومة ثابتة ومقاومة متغيرة أخرى. كما هو موضح في الشكل ، R1 هنا مقاومة ثابتة و R2 هو مستشعر القوة الذي يعمل كمقاومة.
يتم أخذ نقطة منتصف الفرع للقياس. مع تغيير R2 ، قمنا بالتغيير في Vout. لذلك لدينا جهد يتغير مع الوزن.
الآن الشيء المهم الذي يجب ملاحظته هنا هو أن الإدخال الذي تم التقاطه بواسطة وحدة التحكم لتحويل ADC منخفض يصل إلى 50 أوم. يعد تأثير التحميل لمقسم الجهد القائم على المقاومة مهمًا لأن التيار المسحوب من مقسم الجهد يزيد من نسبة الخطأ الزائدة ، في الوقت الحالي لا داعي للقلق بشأن تأثير التحميل.
الآن عندما يتم تطبيق القوة على FORCE SENSOR ، فإن الجهد في نهاية الحاجز يغير هذا الدبوس باعتباره متصلًا بقناة ADC لـ UNO ، وسوف نحصل على قيمة رقمية مختلفة من ADC لـ UNO ، كلما تغيرت القوة على المستشعر.
تتوافق القيمة الرقمية ADC هذه مع نسبة التشغيل لإشارة PWM ، لذلك لدينا التحكم في موضع SERVO فيما يتعلق بالقوة المطبقة على المستشعر.
مكونات
الأجهزة: UNO ، مزود الطاقة (5 فولت) ، مكثف 1000 فائق التوهج ، مكثف 100 نانومتر (3 قطع) ، مقاوم 100 كيلو أوم ، محرك سيرفو (SG 90) ، مقاوم 220 درجة ، مستشعر قوة FSR400.
البرنامج: Atmel studio 6.2 or aurdino nightly.
مخطط الدائرة وشرح العمل
يظهر الرسم البياني للدائرة للتحكم في محرك سيرفو بواسطة مستشعر القوة في الشكل أدناه.
الجهد عبر المستشعر ليس خطيًا تمامًا ؛ ستكون صاخبة. لتصفية الضوضاء ، يتم وضع المكثفات عبر كل مقاوم في دائرة الفاصل كما هو موضح في الشكل.
هنا سنأخذ الجهد الذي يوفره المقسم (الجهد الذي يمثل الوزن خطيًا) وإدخاله في إحدى قنوات ADC في Arduino Uno. بعد التحويل ، سنأخذ تلك القيمة الرقمية (التي تمثل الوزن) وربطها بقيمة PWM ونوفر إشارة PWM هذه إلى محرك SERVO.
لذلك مع الوزن لدينا قيمة PWM التي تغير نسبة واجبها اعتمادًا على القيمة الرقمية. كلما زادت القيمة الرقمية زادت نسبة واجب PWM. لذلك مع إشارة PWM ذات نسبة التشغيل الأعلى ، يجب أن يصل عمود المؤازرة إلى أقصى اليمين أو أقصى اليسار وفقًا للشكل الوارد في المقدمة.
إذا كان الوزن أقل ، فسنحصل على نسبة عمل أقل من PWM ووفقًا للشكل الوارد في المقدمة ، يجب أن تصل المؤازرة إلى أقصى اليمين.
مع هذا لدينا سيطرة موقف سيرفو من خلال الوزن أو القوة.
لكي يحدث هذا ، نحتاج إلى إنشاء بعض التعليمات في البرنامج وسنتحدث عنها بالتفصيل أدناه.
لدى ARDUINO ست قنوات ADC ، كما هو موضح في الشكل. في تلك يمكن استخدام أي واحد منهم أو كلها كمدخلات للجهد التناظري. UNO ADC ذات دقة 10 بت (لذا فإن قيم الأعداد الصحيحة من (0- (2 ^ 10) 1023)). هذا يعني أنه سيعين الفولتية المدخلة بين 0 و 5 فولت في قيم صحيحة بين 0 و 1023. لذلك لكل (5/1024 = 4.9mV) لكل وحدة.
هنا سنستخدم A0 من UNO. نحتاج إلى معرفة بعض الأشياء.
|
أولاً وقبل كل شيء ، تحتوي قنوات Arduino 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 ".
يمكن تحقيق PWM لـ UNO في أي من المسامير التي يرمز لها بـ "~" على لوحة PCB. هناك ست قنوات PWM في UNO. سنستخدم PIN3 لغرضنا.
analogWrite (3 ، VALUE) ؛ |
من الحالة أعلاه ، يمكننا الحصول مباشرة على إشارة PWM عند الدبوس المقابل. المعلمة الأولى بين قوسين هي لاختيار رقم دبوس إشارة PWM. المعلمة الثانية هي كتابة نسبة الواجب.
يمكن تغيير قيمة PWM في Arduino Uno من 0 إلى 255. مع "0" من الأقل إلى "255" كأعلى. مع 255 كنسبة واجب ، سنحصل على 5 فولت في PIN3. إذا تم إعطاء نسبة الرسوم كـ 125 ، فسنحصل على 2.5V في PIN3.
الآن دعنا نتحدث عن التحكم في محرك سيرفو ، فإن Arduino Uno لديه ميزة تمكننا من التحكم في موضع المؤازرة من خلال إعطاء قيمة الدرجة فقط. لنفترض أنه إذا كنا نريد أن تكون المؤازرة عند 30 ، فيمكننا تمثيل القيمة في البرنامج مباشرة. يعتني ملف رأس SERVO بجميع حسابات نسبة الرسوم داخليًا. يمكنك معرفة المزيد حول التحكم في محرك سيرفو باستخدام اردوينو هنا.
الآن يمكن لـ sg90 التحرك من 0-180 درجة ، لدينا نتيجة ADC 0-1024.
لذا فإن ADC هو ما يقرب من ستة أضعاف موقف المؤازرة. لذلك من خلال قسمة نتيجة ADC على 6 ، سنحصل على موضع يد SERVO التقريبي. ومن ثم ، لدينا إشارة PWM تتغير نسبة عملها خطيًا مع WEIGHT أو FORCE. يتم إعطاء هذا لمحرك سيرفو ، يمكننا التحكم في محرك سيرفو بواسطة مستشعر القوة.