- وحدة استشعار السرعة الضوئية LM-393 المشقوقة بالأشعة تحت الحمراء
- قياس السرعة والمسافة المقطوعة لحساب الأجرة
تحل العدادات الرقمية اليوم محل العدادات التناظرية في كل قطاع سواء كان عداد الكهرباء أو عداد أجرة التاكسي. السبب الرئيسي لذلك هو أن العدادات التناظرية تحتوي على أجزاء ميكانيكية تميل إلى التآكل عند استخدامها لفترة طويلة وهي ليست دقيقة مثل العدادات الرقمية.
وخير مثال على ذلك هو عداد السرعة التناظري وعداد المسافات المستخدم في الدراجات البخارية القديمة لقياس السرعة والمسافة المقطوعة. لديهم أجزاء خاصة تسمى ترتيب الجرس والرف حيث يتم استخدام كابل لتدوير دبوس عداد السرعة عند تدوير العجلة. سوف يبلى هذا عند الاستخدام لفترة طويلة ويحتاج أيضًا إلى الاستبدال والصيانة.
في العداد الرقمي ، بدلاً من استخدام الأجزاء الميكانيكية ، يتم استخدام بعض أجهزة الاستشعار مثل قاطع ضوئي أو مستشعر القاعة لحساب السرعة والمسافة. هذا أكثر دقة من العدادات التناظرية ولا يتطلب أي صيانة لفترة طويلة من الزمن. لقد قمنا سابقًا ببناء العديد من مشاريع عداد السرعة الرقمية باستخدام أجهزة استشعار مختلفة:
- عداد السرعة DIY باستخدام Arduino ومعالجة تطبيق Android
- عداد السرعة الرقمي ودائرة عداد المسافات باستخدام متحكم PIC
- قياس السرعة والمسافة والزاوية للروبوتات المتنقلة باستخدام مستشعر LM393 (H206)
اليوم ، في هذا البرنامج التعليمي ، سنصنع نموذجًا أوليًا لمقياس أجرة التاكسي الرقمي باستخدام Arduino. يحسب هذا المشروع السرعة والمسافة التي تقطعها عجلة التاكسي ويعرضها باستمرار على شاشة LCD مقاس 16 × 2. وبناءً على المسافة المقطوعة ، فإنه يولد مبلغًا أجرة عندما نضغط على زر الضغط.
توضح الصورة أدناه الإعداد الكامل لمشروع Digital Taxi Meter
يحتوي هذا النموذج الأولي على هيكل سيارة RC مع وحدة مستشعر السرعة وعجلة تشفير متصلة بالمحرك. بمجرد قياس السرعة ، يمكننا قياس المسافة المقطوعة وإيجاد قيمة الأجرة بالضغط على زر الضغط. يمكننا ضبط سرعة العجلة باستخدام مقياس الجهد. لمعرفة المزيد حول استخدام وحدة مستشعر السرعة LM-393 مع Arduino ، اتبع الرابط. دعونا نرى مقدمة قصيرة لوحدة مستشعر السرعة.
وحدة استشعار السرعة الضوئية LM-393 المشقوقة بالأشعة تحت الحمراء
هذه وحدة من نوع الفتحة يمكن استخدامها لقياس سرعة دوران عجلات التشفير. تعمل وحدة مستشعر السرعة هذه على أساس قاطع بصري من نوع الفتحة يُعرف أيضًا باسم مستشعر المصدر البصري. تتطلب هذه الوحدة جهدًا من 3.3 فولت إلى 5 فولت وتنتج خرجًا رقميًا. لذلك يمكن ربطه بأي متحكم.
يتكون مستشعر ضوء الأشعة تحت الحمراء من مصدر ضوء (IR-LED) وجهاز استشعار ضوئي. يتم وضع كلاهما مع وجود فجوة صغيرة بينهما. عندما يتم وضع كائن بين فجوة IR LED والترانزستور الضوئي ، فإنه سوف يقاطع شعاع الضوء مما يتسبب في توقف الترانزستور الضوئي عن تمرير التيار.
وهكذا باستخدام هذا المستشعر ، يتم استخدام قرص مشقوق (عجلة التشفير) يمكن توصيله بمحرك وعندما تدور العجلة مع المحرك ، فإنها تقاطع شعاع الضوء بين IR LED والترانزستور الضوئي الذي يجعل الإخراج يعمل ويطفئ (إنشاء نبضات).
وبالتالي ينتج مخرجات عالية عندما يكون هناك مقاطعة بين المصدر والمستشعر (عندما يتم وضع أي كائن بينهما) وينتج مخرجات منخفضة عندما لا يكون هناك أي كائن. في الوحدة ، لدينا مؤشر LED للإشارة إلى المقاطعة البصرية الناتجة.
تأتي هذه الوحدة مع LM393 Comparator IC الذي يستخدم لإنتاج إشارات عالية ومنخفضة دقيقة عند الإخراج. وبالتالي تسمى هذه الوحدة أحيانًا باسم مستشعر السرعة LM393.
قياس السرعة والمسافة المقطوعة لحساب الأجرة
لقياس سرعة الدوران ، نحتاج إلى معرفة عدد الفتحات الموجودة في عجلة التشفير. لدي عجلة تشفير بها 20 فتحة. عندما يدورون دورة كاملة واحدة لدينا 20 نبضة في الإخراج. إذن لحساب السرعة ، نحتاج إلى عدد النبضات المنتجة في الثانية.
فمثلا
إذا كان هناك 40 نبضة في ثانية واحدة ، إذن
السرعة = لا. النبضات / عدد الفتحات = 40/20 = 2RPS (دورة في الثانية)
لحساب السرعة في RPM (الدورات في الدقيقة) اضرب بـ 60.
السرعة في RPM = 2 X 60 = 120 دورة في الدقيقة (دورة في الدقيقة)
قياس المسافة
قياس المسافة التي تقطعها العجلة بسيط للغاية. قبل حساب المسافة ، يجب معرفة محيط العجلة.
محيط العجلة = π * د
حيث d هو قطر العجلة.
قيمة π هي 3.14.
لدي عجلة (عجلة سيارة RC) قطرها 6.60 سم وبالتالي محيطها (20.7 سم).
لذلك لحساب المسافة المقطوعة ، ما عليك سوى ضرب عدد النبضات المكتشفة مع المحيط.
المسافة المقطوعة = محيط العجلة x (عدد النبضات / عدد الفتحات)
لذلك عندما تأخذ عجلة محيطها 20.7 سم 20 نبضة أي دورة واحدة لعجلة التشفير ، يتم حساب المسافة المقطوعة بواسطة عجلة
المسافة المقطوعة = 20.7 × (20/20) = 20.7 سم
من أجل حساب المسافة بالمتر ، اقسم المسافة بالسنتيمتر على 100.
ملحوظة: هذه عجلة سيارة صغيرة تعمل بالتحكم عن بعد ، وفي الوقت الفعلي تحتوي السيارات على عجلات أكبر من هذا لذلك أفترض أن محيط العجلة سيكون 230 سم في هذا البرنامج التعليمي.
حساب الأجرة على أساس المسافة المقطوعة
للحصول على المبلغ الإجمالي للأجرة ، اضرب المسافة المقطوعة بسعر الأجرة (المبلغ / متر).
Timer1.initialize (1000000) ؛ Timer1.attachInterrupt (timerIsr) ،
بعد ذلك ، قم بإرفاق مقاطعتين خارجيتين. تجعل المقاطعة الأولى من Arduino pin 2 بمثابة دبوس المقاطعة وتستدعي ISR (العد) عندما يكون هناك ارتفاع (من LOW TO HIGH) تم اكتشافه عند الطرف 2. هذا الدبوس 2 متصل بإخراج D0 لوحدة مستشعر السرعة.
والثاني يجعل Arduino pin 3 بمثابة دبوس المقاطعة ويستدعي ISR (إنشاء تكلفة) عندما يتم اكتشاف HIGH في pin3. هذا الدبوس متصل بزر الضغط بمقاوم سحب لأسفل.
attachInterrupt (digitalPinToInterrupt (2)، count، RISING) ؛ attachInterrupt (digitalPinToInterrupt (3) ، تولد فير ، عالية) ؛
5. بعد ذلك ، دعنا نرى معلومات حول ISR التي استخدمناها هنا:
ISR1- count () يتم استدعاء ISR عندما يحدث ارتفاع (من LOW TO HIGH) عند الطرف 2 (متصل بمستشعر السرعة)
void count () // ISR للتهم من مستشعر السرعة { counter ++ ؛ // زيادة قيمة العداد بدورة واحدة ++ ؛ // زيادة قيمة الدوران بمقدار تأخير واحد (10) ؛ }
ISR2- timerIsr () يتم استدعاء ISR كل ثانية واحدة وتنفيذ تلك الخطوط الموجودة داخل ISR.
timerIsr () { detachInterrupt (digitalPinToInterrupt (2)) ؛ Timer1.detachInterrupt () ، lcd.clear () ؛ سرعة الطفو = (عداد / 20.0) * 60.0 ؛ دورات تعويم = 230 * (دوران / 20) ؛ rotationinm = دوران / 100 ؛ lcd.setCursor (0،0) ؛ lcd.print ("Dist (m):") ؛ lcd.print (rotationinm) ؛ lcd.setCursor (0،1) ؛ lcd.print ("Speed (RPM):") ؛ lcd.print (السرعة) ؛ عداد = 0 ؛ int analogip = analogRead (A0) ؛ int motorspeed = map (analogip، 0،1023،0،255) ؛ analogWrite (5 ، سرعة المحرك) ؛ Timer1.attachInterrupt (timerIsr) ، attachInterrupt (digitalPinToInterrupt (2)، count، RISING) ؛ }
تحتوي هذه الوظيفة على الخطوط التي فصلت في الواقع Timer1 و Interrupt pin2 أولاً لأن لدينا عبارات طباعة LCD داخل ISR.
لحساب السرعة في عدد الدورات في الدقيقة ، نستخدم الكود أدناه حيث 20.0 هو عدد الفتحات المحددة مسبقًا في عجلة التشفير.
سرعة الطفو = (عداد / 20.0) * 60.0 ؛
ولحساب المسافة ، يتم استخدام الكود أدناه:
دورات تعويم = 230 * (دوران / 20) ؛
هنا يفترض أن محيط العجلة 230 سم (وهذا أمر طبيعي للسيارات في الوقت الحقيقي)
بعد ذلك ، حوّل المسافة بالمتر بقسمة المسافة على 100
rotationinm = دوران / 100 ؛
بعد ذلك نعرض السرعة والمسافة على شاشة LCD
lcd.setCursor (0،0) ؛ lcd.print ("Dist (m):") ؛ lcd.print (rotationinm) ؛ lcd.setCursor (0،1) ؛ lcd.print ("Speed (RPM):") ؛ lcd.print (السرعة) ؛
هام: يتعين علينا إعادة تعيين العداد إلى 0 لأننا نحتاج إلى الحصول على عدد الإيجابيات المكتشفة لكل ثانية ، لذلك نستخدم هذا السطر
عداد = 0 ؛
بعد ذلك ، اقرأ الدبوس التناظري A0 وقم بتحويله إلى قيمة رقمية (0 إلى 1023) ثم قم بتعيين هذه القيم إلى 0-255 لإخراج PWM (ضبط سرعة المحرك) وأخيراً اكتب قيم PWM هذه باستخدام وظيفة analogWrite المتصلة بـ ULN2003 محرك IC.
int analogip = analogRead (A0) ؛ int motorspeed = خريطة (تناظرية ، 0،1023،0،255) ؛ analogWrite (5 ، سرعة المحرك) ؛
ISR3: إنشاء الأجرة () يتم استخدام ISR لإنشاء مبلغ الأجرة بناءً على المسافة المقطوعة. يتم استدعاء ISR هذا عند اكتشاف رقم المقاطعة 3 مرتفع (عند الضغط على زر الضغط). تقوم هذه الوظيفة بفصل المقاطعة عند الطرف 2 ومقاطعة المؤقت ثم مسح شاشة LCD.
الفراغ generatefare () { detachInterrupt (digitalPinToInterrupt (2))؛ دبوس في 2 Timer1.detachInterrupt () ؛ lcd.clear () ؛ lcd.setCursor (0،0) ؛ lcd.print ("FARE Rs:") ؛ تعويم الروبية = rotationinm * 5 ؛ lcd.print (روبية) ؛ lcd.setCursor (0،1) ؛ lcd.print ("5 روبية للمتر") ؛ }
بعد هذه المسافة المقطوعة مضروبة بـ 5 (لقد استخدمت 5 مقابل 5 روبية هندية / متر). يمكنك التغيير حسب رغبتك.
تعويم الروبية = rotationinm * 5 ؛
بعد حساب قيمة المبلغ قم بعرضه على شاشة LCD المتصلة بـ Arduino.
lcd.setCursor (0،0) ؛ lcd.print ("FARE Rs:") ؛ lcd.print (روبية) ؛ lcd.setCursor (0،1) ؛ lcd.print ("5 روبية للمتر") ؛
الكود الكامل والفيديو التوضيحي معطى أدناه.
يمكنك زيادة تحسين هذا النموذج الأولي من خلال زيادة الدقة والمتانة وإضافة المزيد من الميزات مثل تطبيق android والدفع الرقمي وما إلى ذلك وتطويره كمنتج.