সুচিপত্র:

ইঞ্জিন RPM প্রদর্শন করতে Arduino ব্যবহার করুন: 10 টি ধাপ (ছবি সহ)
ইঞ্জিন RPM প্রদর্শন করতে Arduino ব্যবহার করুন: 10 টি ধাপ (ছবি সহ)

ভিডিও: ইঞ্জিন RPM প্রদর্শন করতে Arduino ব্যবহার করুন: 10 টি ধাপ (ছবি সহ)

ভিডিও: ইঞ্জিন RPM প্রদর্শন করতে Arduino ব্যবহার করুন: 10 টি ধাপ (ছবি সহ)
ভিডিও: Basic parts of engine | ইঞ্জিনের বিভিন্ন অংশের নাম এবং সংক্ষিপ্ত বর্ণনা 2024, নভেম্বর
Anonim
RPM ইঞ্জিন প্রদর্শন করতে Arduino ব্যবহার করুন
RPM ইঞ্জিন প্রদর্শন করতে Arduino ব্যবহার করুন
RPM ইঞ্জিন প্রদর্শন করতে Arduino ব্যবহার করুন
RPM ইঞ্জিন প্রদর্শন করতে Arduino ব্যবহার করুন
RPM ইঞ্জিন প্রদর্শন করতে Arduino ব্যবহার করুন
RPM ইঞ্জিন প্রদর্শন করতে Arduino ব্যবহার করুন

এই নির্দেশিকাটি কিভাবে আমি একটি Arduino UNO R3, I2C সহ একটি 16x2 LCD ডিসপ্লে এবং একটি LED স্ট্রিপকে ইঞ্জিন স্পিড গেজ এবং আমার অ্যাকুরা ইন্টিগ্রা ট্র্যাক গাড়িতে শিফট লাইট ব্যবহার করার জন্য রূপরেখা দেব। এটি এমন কারো পরিপ্রেক্ষিতে লেখা হয়েছে যার কিছু অভিজ্ঞতা বা Arduino সফটওয়্যারের সংস্পর্শ অথবা সাধারণভাবে কোডিং, গাণিতিক সফটওয়্যার MATLAB, এবং বৈদ্যুতিক সার্কিট তৈরি বা পরিবর্তন করা। ভবিষ্যতে এই বিষয়গুলির সাথে সামান্য অভিজ্ঞতা আছে এমন কারো জন্য এটি সহজে বোঝার জন্য সংশোধন করা যেতে পারে।

ধাপ 1: একটি সিগাল ওয়্যার চয়ন করুন

একটি সিগাল ওয়্যার বেছে নিন
একটি সিগাল ওয়্যার বেছে নিন

আপনাকে একটি সংকেত পেতে হবে যা ইঞ্জিনের গতির সাথে সম্পর্কিত। এমন একটি সিস্টেম যুক্ত করা সম্ভব যা ইঞ্জিনের গতি পরিমাপ করে কিন্তু একটি বিদ্যমান তারে ট্যাপ করা অনেক বেশি ব্যবহারিক যা ইঞ্জিনের গতি তথ্য বহন করে। একটি একক গাড়ির এর জন্য একাধিক উত্স থাকতে পারে এবং এটি একক গাড়ির মডেলে বছরের পর বছর পরিবর্তিত হতে পারে। এই টিউটোরিয়ালের জন্য আমি আমার গাড়ির উদাহরণ ব্যবহার করব, 2000 অ্যাকুরা ইন্টিগ্রা এলএস পরিবর্তিত একটি ট্র্যাক। আমি আমার ইঞ্জিনে খুঁজে পেয়েছি (OBD2 সহ B18B1) একটি অব্যবহৃত ভোল্টেজ আছে যা 12V উচ্চ এবং একটি পূর্ণ বিপ্লব সম্পন্ন করার পর 0V এ নেমে যায়।

সম্ভাব্য ইঞ্জিন গতি সংকেত সনাক্ত করতে সাহায্য করবে:

  • আপনার গাড়ির জন্য তারের চিত্র
  • ইঞ্জিন/ইসিইউ সংকেত যুক্ত আপনার গাড়ির জন্য ফোরাম অনুসন্ধান করা
  • একটি বন্ধুত্বপূর্ণ মেকানিক বা গাড়ী উত্সাহী

ধাপ 2: Arduino বোর্ডে ওয়্যার প্রসারিত করুন

Arduino বোর্ডে ওয়্যার প্রসারিত করুন
Arduino বোর্ডে ওয়্যার প্রসারিত করুন
Arduino বোর্ডে ওয়্যার প্রসারিত করুন
Arduino বোর্ডে ওয়্যার প্রসারিত করুন

একবার আপনি একটি উপযুক্ত সংকেত বেছে নিলে, আপনি যেখানেই আপনার Arduino বোর্ড স্থাপন করছেন সেখানে এটিকে প্রসারিত করতে হবে। আমি গাড়ির ভিতরে খনি রাখার সিদ্ধান্ত নিয়েছিলাম যেখানে রেডিও থাকত, তাই আমি ইঞ্জিন থেকে নতুন তার, আগুনের প্রাচীরের একটি রাবার গ্রোমেটের মাধ্যমে, এবং ডানদিকে রেডিও এলাকায় রুট করেছি। যেহেতু ইতিমধ্যে প্রচুর পরিমাণে স্ট্রিপিং, সোল্ডারিং, এবং ওয়্যারিং সুরক্ষার জন্য কীভাবে গাইড রয়েছে আমি এই প্রক্রিয়াটি ব্যাখ্যা করব না।

ধাপ 3: সংকেত বিশ্লেষণ

সংকেত বিশ্লেষণ
সংকেত বিশ্লেষণ

এখানেই জিনিস জটিল হতে পারে। সংকেত বিশ্লেষণ এবং নিয়ন্ত্রণের একটি সাধারণ বোঝা আপনাকে একটি দীর্ঘ পথ সাহায্য করবে, কিন্তু সামান্য জ্ঞান সঙ্গে এটি করা সম্ভব।

সম্ভবত নির্বাচিত সিগন্যাল তারটি ইঞ্জিনের গতির সঠিক মান বের করবে না। এটি আপনার আকৃতির ইঞ্জিন RPM এর সঠিক সংখ্যা দিতে আকৃতি এবং পরিবর্তন করতে হবে। এই কারণে যে প্রতিটি ভিন্ন গাড়ী এবং সিগন্যাল তারের বেছে নেওয়া ভিন্ন হতে পারে, এই বিন্দু থেকে আমি ব্যাখ্যা করব কিভাবে আমি আমার ইন্টিগ্রাতে পরিবেশক থেকে অবস্থান সংকেত ব্যবহার করেছি।

আমার সংকেত সাধারণত 12V এবং একটি পূর্ণ ঘূর্ণন সম্পন্ন করার সময় 0V তে নেমে যায়। যদি আপনি একটি পূর্ণ ঘূর্ণন, বা একটি পূর্ণ চক্র সম্পন্ন করার সময় জানেন, এটি সহজেই কিছু মৌলিক ধারণা ব্যবহার করে বিপ্লব/মিনিটে অনুবাদ করা যেতে পারে।

1 / (প্রতি চক্র প্রতি সেকেন্ড) = প্রতি সেকেন্ডে চক্র, অথবা Hz

প্রতি মিনিটে বিপ্লব = Hz * 60

ধাপ 4: আপনার সিগন্যাল বিশ্লেষণ কোড করুন

আপনার সিগন্যাল বিশ্লেষণ কোড করুন
আপনার সিগন্যাল বিশ্লেষণ কোড করুন

এই পদ্ধতিতে একটি পূর্ণ চক্র সম্পন্ন করতে ইনপুট সিগন্যালের জন্য সময় লাগে। সৌভাগ্যবশত Arduino IDE সফটওয়্যারের একটি কমান্ড আছে যা ঠিক সেই কাজটি করে, PulseIn।

এই কমান্ডটি একটি থ্রেশহোল্ড অতিক্রম করার জন্য একটি সংকেতের জন্য অপেক্ষা করবে, গণনা শুরু করবে এবং যখন আবার থ্রেশহোল্ড অতিক্রম করবে তখন গণনা বন্ধ করবে। কমান্ড ব্যবহার করার সময় কিছু বিবরণ উল্লেখ করা উচিত, তাই আমি এখানে PulseIn এর তথ্যের একটি লিঙ্ক অন্তর্ভুক্ত করব:

PulseIn মাইক্রোসেকেন্ডে একটি মান ফেরত দেবে, এবং গণিত সহজ রাখতে এটি অবিলম্বে স্বাভাবিক সেকেন্ডে রূপান্তরিত হওয়া উচিত। পূর্ববর্তী ধাপে গণিত অনুসরণ করে, এই সময়কালটি সরাসরি RPM- এ সমান করা যেতে পারে।

দ্রষ্টব্য: ট্রায়াল এবং ত্রুটির পরে আমি আবিষ্কার করেছি যে বিতরণকারী ইঞ্জিন ক্র্যাঙ্কশ্যাফটের প্রতিটি একক ঘূর্ণনের জন্য দুটি ঘূর্ণন সম্পন্ন করে, তাই আমি কেবল তার উত্তরটি 2 এর দ্বারা ভাগ করে নিয়েছি।

ধাপ 5: একটি ফিল্টার চিহ্নিত করুন

একটি ফিল্টার চিহ্নিত করুন
একটি ফিল্টার চিহ্নিত করুন

আপনি যদি ভাগ্যবান হন তাহলে আপনার সিগন্যালে কোন 'গোলমাল' (ওঠানামা) থাকবে না এবং আপনার ইঞ্জিনের গতি সঠিক হবে। আমার ক্ষেত্রে, পরিবেশকের কাছ থেকে প্রচুর শব্দ আসছিল যা প্রায়শই প্রত্যাশিত থেকে ভোল্টেজ দেয়। এটি প্রকৃত ইঞ্জিনের গতির খুব মিথ্যা রিডিংয়ে পরিণত হয়। এই গোলমাল ফিল্টার করতে হবে।

কিছু সংকেত বিশ্লেষণের পর, প্রায় সমস্ত শব্দই ফ্রিকোয়েন্সি (Hz) এ এসেছিল যা ইঞ্জিন নিজেই আউটপুট করছিল (যা বেশিরভাগ বাস্তব গতিশীল সিস্টেমের জন্য সত্য)। এর মানে হল একটি নিম্ন পাস ফিল্টার এটির জন্য একটি আদর্শ প্রার্থী।

একটি কম পাস ফিল্টার কম ফ্রিকোয়েন্সি (পছন্দসই) অতিক্রম করতে দেয় এবং উচ্চ ফ্রিকোয়েন্সি (অবাঞ্ছিত) হ্রাস করে।

ধাপ 6: ফিল্টারিং: পার্ট 1

ফিল্টারিং: পার্ট 1
ফিল্টারিং: পার্ট 1
ফিল্টারিং: পার্ট 1
ফিল্টারিং: পার্ট 1
ফিল্টারিং: পার্ট 1
ফিল্টারিং: পার্ট 1

ফিল্টার ডিজাইন করা হাতে করা যায়, তবে MATLAB ব্যবহার করলে সফটওয়্যারে অ্যাক্সেস থাকলে তা উল্লেখযোগ্যভাবে গতি পাবে।

একটি কম পাস ফিল্টার ল্যাপ্লেস ডোমেন (ফ্রিকোয়েন্সি ডোমেন) এ একটি স্থানান্তর ফাংশন (বা ভগ্নাংশ) সমান হতে পারে। ইনপুট ফ্রিকোয়েন্সি এই ভগ্নাংশ দ্বারা গুণিত হবে এবং আউটপুট হল একটি ফিল্টার করা সংকেত যা শুধুমাত্র আপনি ব্যবহার করতে চান এমন তথ্য রয়েছে।

ফাংশনের একমাত্র পরিবর্তনশীল হল টাউ। টাউ 1 / ওমেগার সমান, যেখানে ওমেগা হল কাটঅফ ফ্রিকোয়েন্সি যা আপনি চান (প্রতি সেকেন্ডে রেডিয়ানে থাকতে হবে)। কাটঅফ ফ্রিকোয়েন্সি হল সেই সীমা যেখানে তার চেয়ে বেশি ফ্রিকোয়েন্সি সরিয়ে ফেলা হবে এবং ফ্রিকোয়েন্সি কম রাখা হবে।

আমি একটি RPM এর সমান কাটঅফ ফ্রিকোয়েন্সি সেট করেছি আমার ইঞ্জিন কখনই পৌঁছাবে না (990 RPM বা 165 Hz)। এফএফটি গ্রাফগুলি মোটামুটি দেখায় যে আমার কাঁচা সংকেতটি কতগুলি ফ্রিকোয়েন্সি বহন করে এবং ফিল্টার থেকে বেরিয়ে আসা ফ্রিকোয়েন্সিগুলি।

ধাপ 7: ফিল্টারিং: পার্ট 2

ফিল্টারিং: পার্ট 2
ফিল্টারিং: পার্ট 2
ফিল্টারিং: পার্ট 2
ফিল্টারিং: পার্ট 2

এখানে MATLAB আবার সময়ের জন্য ব্যবহার করা হয়েছিল। Cutoff ফ্রিকোয়েন্সি সংজ্ঞায়িত করা হয়, এবং যে থেকে ফলে স্থানান্তর ফাংশন প্রদর্শিত হয়। মনে রাখবেন এই ভগ্নাংশটি শুধুমাত্র ল্যাপ্লেস ডোমেইনের ক্ষেত্রে প্রযোজ্য এবং Arduino UNO R3 এর মত সময়-ভিত্তিক মাইক্রো কন্ট্রোলারে সরাসরি ব্যবহার করা যাবে না।

ধাপ 8: ফিল্টারিং: পার্ট 3

ফিল্টারিং: পার্ট 3
ফিল্টারিং: পার্ট 3
ফিল্টারিং: পার্ট 3
ফিল্টারিং: পার্ট 3

ম্যাটল্যাবের একটি কমান্ড রয়েছে যা একটি অবিচ্ছিন্ন ফাংশন (ফ্রিকোয়েন্সি ডোমেন) কে একটি বিচ্ছিন্ন ফাংশনে (টাইম ডোমেন) রূপান্তর করবে। এই কমান্ডের আউটপুট একটি সমীকরণ প্রদান করবে যা সহজেই Arduino IDE কোডে অন্তর্ভুক্ত করা যাবে।

ধাপ 9: ফিল্টারিং: পার্ট 4

ফিল্টারিং: পার্ট 4
ফিল্টারিং: পার্ট 4
ফিল্টারিং: পার্ট 4
ফিল্টারিং: পার্ট 4

Arduino স্কেচে, সেটআপের আগে u এবং y ভেরিয়েবল অন্তর্ভুক্ত করুন। ফ্লোট কমান্ড কেবল সংজ্ঞায়িত করে যে ভেরিয়েবল কীভাবে ডেটা সংরক্ষণ করবে (সর্বাধিক মান, দশমিক ইত্যাদি …) এবং এ সম্পর্কে আরও তথ্যের একটি লিঙ্ক এখানে দেওয়া হবে: https://www.arduino.cc/reference/en/language /ভেরিয়া…

যে লুপে কাঁচা সিগন্যাল থেকে ইঞ্জিনের গতিতে রূপান্তর ঘটছে সেখানে u পরিবর্তনশীল এবং y একাধিক সমীকরণ অন্তর্ভুক্ত করুন। এটিকে কাজে লাগানোর একাধিক উপায় আছে, কিন্তু ভেরিয়েবল u কে পরিমাপ করা কাঁচা ইনপুট সিগন্যালের সমতুল্য করা উচিত এবং পরিবর্তনশীল y ফিল্টার করা মান হবে।

প্রস্তাবিত: