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

عداد RPM مع STM32: 8 خطوات
عداد RPM مع STM32: 8 خطوات

فيديو: عداد RPM مع STM32: 8 خطوات

فيديو: عداد RPM مع STM32: 8 خطوات
فيديو: How to make a LED digital counter using 7- Segment Display 2024, شهر نوفمبر
Anonim
عداد RPM مع STM32
عداد RPM مع STM32

على الرغم من أن الشراء أمر مزعج إلى حد ما (لأنه غير متوفر في العديد من متاجر الإنترنت) ، أجد أنه من الضروري مناقشة STM32 L432KC. تستحق هذه الرقاقة عاطفة خاصة ، فهي ذات قوة منخفضة للغاية. ومع ذلك ، بالنسبة لأولئك الذين لا يمتلكون STM32 ، يمكن استبداله في هذا المشروع بـ Arduino Uno. للقيام بذلك ، ما عليك سوى تغيير دبوس إدخال المقاطعة.

لنقم بعد ذلك بإنشاء عداد RPM باستخدام STM32 L432KC ومستشعر الأشعة تحت الحمراء. يمكن أيضًا استخدام هذا البرنامج نفسه لقياس سرعة الرياح. تعد ميزة الطاقة المنخفضة لهذا المتحكم الدقيق مثالية لـ IOT.

الخطوة 1: الوحدات

الوحدات
الوحدات
الوحدات
الوحدات

بالنسبة لمشروعنا اليوم ، نستخدم MAX7219CWG المكون من 8 أرقام ، بالإضافة إلى وحدة الأشعة تحت الحمراء.

الخطوة الثانية: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

الخطوة 3: العرض التوضيحي

برهنة
برهنة

في مجموعتنا ، لدينا STM32 والشاشة المكونة من 8 أرقام ومدخل النبض. تحتوي بطاقة الأشعة تحت الحمراء على ترانزستور ضوئي ومصباح LED يلتقط الضوء من خلال ارتداده عن شريط أبيض. يتم توصيل هذا الشريط بعجلة ، وعند كل منعطف ، سيولد نبضة يتم التقاطها بواسطة مقاطعة STM32.

لدينا صمام ثنائي ومكثف في المجموعة التي تم استخدامها لمنع ضوضاء إشارة قراءة الشريط من الوصول إلى STM32 ، مما يجعلها تفسر التشغيل والإيقاف.

يوضح العرض التوضيحي مشروعنا ، بالإضافة إلى مقياس Minipa (كلاهما قيد التشغيل).

الخطوة 4: التجميع

المجسم
المجسم

الخطوة 5: البرنامج

سنقوم بعمل برنامج تقوم فيه وحدة الأشعة تحت الحمراء بتشغيل مقاطعة في STM32 L432KC كل "منعطف" ، وسوف نقوم بالحسابات لعرض RPM على الشاشة.

الخطوة 6: المكتبات

مكتبات
مكتبات

أضف مكتبة "DigitLedDisplay" التالية.

ما عليك سوى الوصول إلى "Sketch >> Include Libraries >> Manage Libraries…"

الخطوة 7: كود المصدر

المكتبات والمتغيرات

لنبدأ الكود المصدري بما في ذلك مكتبة DigitLedDisplay. سنعرض كائن العرض. قمت بتعيين دبوس المقاطعة ، والذي سيكون 12. أيضًا ، أدخل عامل تشغيل متغير لكل من عداد RPM والوقت لتجنب أي مشاكل تصادم.

/ * تضمين مكتبة DigitLedDisplay * / # تشمل "DigitLedDisplay.h" / * Arduino Pin لعرض Pin 7 إلى DIN ، 6 إلى CS ، 5 إلى CLK * / // DigitLedDisplay ld = DigitLedDisplay (7 ، 6 ، 5) ؛ // arduino DigitLedDisplay ld = DigitLedDisplay (4، 2، 3) ؛ // STM32 L432KC int pin = 12 ؛ // pino de interrupção (módulo IR) متقلبة غير موقعة int rpm ؛ // contador de rpm متقلب بدون توقيع وقت طويل ؛ // الإيقاع

اقامة

في الإعداد ، نقوم بتكوين عملية العرض ، وكذلك تكوين المقاطعة على أنها صاعدة.

إعداد باطل () {Serial.begin (115200) ؛ / * اضبط الحد الأدنى للسطوع: 1 ، الحد الأقصى: 15 * / ld.setBright (10) ؛ / * تعيين عدد الأرقام * / ld.setDigitLimit (8) ؛ ld.printDigit (0) ؛ attachInterrupt (digitalPinToInterrupt (pin) أو interruptPin أو RISING) ؛ دورة في الدقيقة = 0 ؛ الوقت القديم = ملي () ؛ }

حلقة

أخيرًا ، نحدد الفاصل الزمني 1 في 1 دقيقة لتحديث العرض. بعد تنظيف الشاشة ، نقوم بطباعة عدد الدورات في الدقيقة. نقوم بالوظيفة التي ستستدعيها المقاطعة. نحسب RPM ووقت التحديث.

حلقة باطلة () {تأخير (1000) ؛ ld.clear () ، ld.printDigit (دورة في الدقيقة) ؛ } void interruptPin () {rpm = 60 * 1000 / (millis () - timeold) ؛ timeold = مللي () ؛ }

الخطوة 8: الملفات

قم بتنزيل الملفات:

بي دي إف

انا لا

موصى به: