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

استخدم Arduino لعرض عدد دورات المحرك في الدقيقة: 10 خطوات (بالصور)
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة: 10 خطوات (بالصور)

فيديو: استخدم Arduino لعرض عدد دورات المحرك في الدقيقة: 10 خطوات (بالصور)

فيديو: استخدم Arduino لعرض عدد دورات المحرك في الدقيقة: 10 خطوات (بالصور)
فيديو: Arduino board components - كورس أردوينو للمبتدئين - شرح مبسط حول منافذ الأردوينو وأقصر كود برمجي 2024, شهر نوفمبر
Anonim
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة
استخدم Arduino لعرض عدد دورات المحرك في الدقيقة

سيوضح هذا الدليل كيف استخدمت Arduino UNO R3 وشاشة LCD مقاس 16 × 2 مع I2C وشريط LED لاستخدامه كمقياس لسرعة المحرك وضوء التحول في سيارتي Acura Integra. إنه مكتوب من حيث شخص لديه بعض الخبرة أو التعرض لبرنامج Arduino أو الترميز بشكل عام ، البرنامج الرياضي MATLAB ، وإنشاء أو تعديل الدوائر الكهربائية. في المستقبل ، قد تتم مراجعة هذا ليكون أسهل في الفهم بالنسبة لشخص لديه خبرة قليلة أو معدومة في هذه المواضيع.

الخطوة 1: اختر سلك Sigal

اختر سلك Sigal
اختر سلك Sigal

ستحتاج إلى الحصول على إشارة ترتبط بسرعة المحرك. من الممكن إضافة نظام يقيس سرعة المحرك ، لكن من العملي أكثر بكثير الاستفادة من السلك الموجود الذي يحمل معلومات سرعة المحرك. قد يكون لسيارة واحدة مصادر متعددة لهذا ، وقد تختلف بشكل كبير من سنة إلى أخرى على طراز سيارة واحد. من أجل هذا البرنامج التعليمي ، سأستخدم مثال سيارتي ، مسار تم تعديله 2000 Acura Integra LS. لقد وجدت في محركي (B18B1 مع OBD2) وجود جهد كهربائي غير مستخدم يبلغ ارتفاعه 12 فولت وينخفض إلى 0 فولت عند إكمال ثورة كاملة.

الأشياء التي ستساعد في تحديد إشارة سرعة المحرك المحتملة:

  • مخطط الأسلاك لسيارتك
  • البحث في المنتديات عن سيارتك التي تتضمن إشارات المحرك / وحدة التحكم الإلكترونية
  • ميكانيكي ودود من عشاق السيارات

الخطوة 2: تمديد السلك إلى لوحة Arduino

تمديد السلك إلى لوحة اردوينو
تمديد السلك إلى لوحة اردوينو
تمديد السلك إلى لوحة اردوينو
تمديد السلك إلى لوحة اردوينو

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

الخطوة الثالثة: تحليل الإشارة

تحليل الإشارة
تحليل الإشارة

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

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

عادة ما تكون إشارتي 12 فولت وتنخفض إلى 0 فولت عند إكمال دورة كاملة واحدة. إذا كنت تعرف الوقت اللازم لإكمال دورة كاملة واحدة ، أو دورة كاملة واحدة ، فيمكن بسهولة ترجمة ذلك إلى ثورات / دقيقة باستخدام بعض المفاهيم الأساسية.

1 / (ثانية لكل دورة) = دورات في الثانية ، أو هرتز

الدورات في الدقيقة = هرتز * 60

الخطوة 4: كود تحليل الإشارة الخاص بك

كود تحليل الإشارة الخاص بك
كود تحليل الإشارة الخاص بك

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

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

سيعيد PulseIn قيمة بالميكروثانية ، ولإبقاء الحسابات بسيطة ، يجب تحويلها على الفور إلى ثوانٍ عادية. باتباع الرياضيات في الخطوة السابقة ، يمكن معادلة هذه المدة الزمنية مباشرة بـ RPM.

ملاحظة: بعد التجربة والخطأ اكتشفت أن الموزع يكمل دورتين لكل دورة واحدة للعمود المرفقي للمحرك ، لذلك قمت ببساطة بتقسيم إجابتي على 2 لحساب ذلك.

الخطوة 5: تحديد عامل تصفية

تحديد عامل تصفية
تحديد عامل تصفية

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

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

يسمح مرشح التمرير المنخفض بالمرور للترددات المنخفضة (المرغوبة) ويقلل من الترددات العالية (غير المرغوب فيها).

الخطوة 6: التصفية: الجزء 1

التصفية: الجزء 1
التصفية: الجزء 1
التصفية: الجزء 1
التصفية: الجزء 1
التصفية: الجزء 1
التصفية: الجزء 1

يمكن تصميم الفلتر يدويًا ، ولكن استخدام MATLAB سيزيد من سرعة ذلك بشكل كبير إذا كان لديك وصول إلى البرنامج.

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

المتغير الوحيد في الوظيفة هو تاو. Tau تساوي 1 / Omega ، حيث تمثل Omega تردد القطع الذي تريده (يجب أن يكون بالتقدير الدائري في الثانية). تردد القطع هو الحد الذي ستتم فيه إزالة الترددات الأعلى منه مع الاحتفاظ بالترددات الأقل منها.

لقد قمت بضبط تردد القطع الذي يساوي RPM لن يصل محركي أبدًا (990 RPM أو 165 Hz). تُظهر الرسوم البيانية FFT تقريبًا الترددات التي كانت تحملها إشارتي الأولية والترددات التي خرجت من الفلتر.

الخطوة 7: التصفية: الجزء 2

التصفية: الجزء 2
التصفية: الجزء 2
التصفية: الجزء 2
التصفية: الجزء 2

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

الخطوة 8: التصفية: الجزء 3

التصفية: الجزء 3
التصفية: الجزء 3
التصفية: الجزء 3
التصفية: الجزء 3

يحتوي MATLAB على أمر يحول وظيفة مستمرة (مجال تردد) إلى وظيفة منفصلة (مجال زمني). سيوفر إخراج هذا الأمر معادلة يمكن دمجها بسهولة في كود Arduino IDE.

الخطوة 9: التصفية: الجزء 4

التصفية: الجزء 4
التصفية: الجزء 4
التصفية: الجزء 4
التصفية: الجزء 4

في رسم Arduino ، قم بتضمين المتغيرين u و y قبل الإعداد. يحدد الأمر float ببساطة كيفية تخزين المتغير للبيانات (أشياء مثل القيمة القصوى والأرقام العشرية وما إلى ذلك …) وسيتم توفير رابط لمزيد من المعلومات حول هذا هنا: https://www.arduino.cc/reference/en/language / فاريا …

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

موصى به: