فهرست مطالب:

استفاده از آردوینو برای نمایش دور موتور: 10 مرحله (همراه با تصاویر)
استفاده از آردوینو برای نمایش دور موتور: 10 مرحله (همراه با تصاویر)

تصویری: استفاده از آردوینو برای نمایش دور موتور: 10 مرحله (همراه با تصاویر)

تصویری: استفاده از آردوینو برای نمایش دور موتور: 10 مرحله (همراه با تصاویر)
تصویری: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, جولای
Anonim
از Arduino برای نمایش RPM موتور استفاده کنید
از Arduino برای نمایش RPM موتور استفاده کنید
از Arduino برای نمایش RPM موتور استفاده کنید
از Arduino برای نمایش RPM موتور استفاده کنید
از Arduino برای نمایش RPM موتور استفاده کنید
از Arduino برای نمایش RPM موتور استفاده کنید

این راهنما نحوه استفاده من از Arduino UNO R3 ، یک صفحه نمایش 16x2 LCD با I2C و یک نوار LED را نشان می دهد که به عنوان یک سرعت سنج موتور و تغییر نور در ماشین پیست Acura Integra من استفاده می شود. این عبارت بر اساس شخصی با تجربه یا در معرض نرم افزار آردوینو یا به طور کلی برنامه نویسی ، نرم افزار ریاضی MATLAB و ایجاد یا اصلاح مدارهای الکتریکی نوشته شده است. در آینده ممکن است این مورد تجدید نظر شود تا درک آن برای افرادی که تجربه کمی در این زمینه ها دارند یا هیچ تجربه ای ندارند آسان تر شود.

مرحله 1: سیم سیگال را انتخاب کنید

سیم سیگال را انتخاب کنید
سیم سیگال را انتخاب کنید

شما باید سیگنالی دریافت کنید که به دور موتور مربوط می شود. می توان سیستمی را که سرعت موتور را اندازه گیری می کند اضافه کرد ، اما استفاده از سیم فعلی که اطلاعات دور موتور را حمل می کند بسیار کاربردی تر است. ممکن است یک ماشین واحد منابع متعددی برای این کار داشته باشد و ممکن است در یک مدل خودرو حتی سال به سال متفاوت باشد. به خاطر این آموزش ، من از نمونه ماشین خود استفاده می کنم ، یک پیست اصلاح شده 2000 Acura Integra LS. در موتورم (B18B1 با OBD2) متوجه شدم که ولتاژ بلااستفاده ای وجود دارد که 12 ولت بالا است و پس از انجام یک دور کامل به 0 ولت کاهش می یابد.

مواردی که به شناسایی سیگنال احتمالی دور موتور کمک می کند:

  • نمودار سیم کشی برای وسیله نقلیه شما
  • جستجوی انجمن ها برای وسیله نقلیه خود شامل سیگنال های موتور/ECU
  • مکانیک دوستدار یا علاقه مند به ماشین

مرحله 2: Wire را به برد آردوینو گسترش دهید

Wire را به برد آردوینو گسترش دهید
Wire را به برد آردوینو گسترش دهید
Wire را به برد آردوینو گسترش دهید
Wire را به برد آردوینو گسترش دهید

پس از انتخاب یک سیگنال مناسب ، باید آن را به هرجایی که برد آردوینو خود را قرار می دهید ، گسترش دهید. من تصمیم گرفتم وسیله خود را در داخل خودرویی که قبلاً رادیو بود قرار دهم ، بنابراین سیم جدید را از موتور ، از طریق یک روکش لاستیکی در دیوار آتش ، و درست به منطقه رادیو منتقل کردم. از آنجا که در حال حاضر راهنمای زیادی در مورد نحوه برش ، لحیم کاری و محافظت از سیم کشی وجود دارد ، من این فرایند را توضیح نمی دهم.

مرحله 3: تجزیه و تحلیل سیگنال

تجزیه و تحلیل سیگنال
تجزیه و تحلیل سیگنال

اینجاست که همه چیز می تواند پیچیده شود. داشتن درک کلی از تجزیه و تحلیل سیگنال و کنترل ها به شما کمک زیادی می کند ، اما با دانش کمی امکان پذیر است.

سیم سیگنال انتخاب شده به احتمال زیاد مقدار دقیق دور موتور را تف نمی کند. باید شکل داده و اصلاح شود تا تعداد دقیق دور موتور مورد نظر شما داده شود. با توجه به این واقعیت که هر ماشین و سیم سیگنال دیگری ممکن است متفاوت باشد ، از این به بعد من نحوه استفاده از سیگنال موقعیت توزیع کننده در 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 / امگا است ، جایی که امگا فرکانس قطع مورد نظر شما است (باید بر حسب رادیان بر ثانیه باشد). فرکانس قطع محدودیتی است که در آن فرکانس های بالاتر از آن حذف می شود و فرکانس های کمتر از آن حفظ می شود.

فرکانس قطع را برابر با RPM تنظیم می کنم که موتور من هرگز به آن نمی رسد (990 دور در دقیقه یا 165 هرتز). نمودارهای FFT تقریباً نشان می دهد که سیگنال خام من چه فرکانس هایی را حمل می کند و فرکانس های خارج شده از فیلتر.

مرحله 7: فیلترینگ: قسمت 2

فیلترینگ: قسمت 2
فیلترینگ: قسمت 2
فیلترینگ: قسمت 2
فیلترینگ: قسمت 2

در اینجا MATLAB دوباره به خاطر زمان مورد استفاده قرار گرفت. فرکانس قطع تعریف شده و از آن تابع انتقال حاصله نمایش داده می شود. به خاطر داشته باشید که این بخش فقط برای دامنه Laplace اعمال می شود و نمی تواند مستقیماً در میکرو کنترلرهای مبتنی بر زمان مانند Arduino UNO R3 استفاده شود.

مرحله 8: فیلترینگ: قسمت 3

فیلترینگ: قسمت سوم
فیلترینگ: قسمت سوم
فیلترینگ: قسمت سوم
فیلترینگ: قسمت سوم

MATLAB دارای فرمانی است که یک تابع پیوسته (دامنه فرکانس) را به یک تابع گسسته (حوزه زمانی) تبدیل می کند. خروجی این دستور معادله ای را ارائه می دهد که به راحتی می توان آن را در کد Arduino IDE گنجانید.

مرحله 9: فیلترینگ: قسمت 4

فیلترینگ: قسمت 4
فیلترینگ: قسمت 4
فیلترینگ: قسمت 4
فیلترینگ: قسمت 4

در طرح آردوینو ، متغیرهای u و y را قبل از راه اندازی وارد کنید. دستور float به سادگی نحوه ذخیره متغیر داده ها (مواردی مانند حداکثر مقدار ، اعشار و غیره …) را تعریف می کند و پیوندی به اطلاعات بیشتر در این مورد در اینجا ارائه می شود: https://www.arduino.cc/reference/fa/language /varia…

در حلقه ای که تبدیل سیگنال خام به دور موتور در حال انجام است ، متغیر u و معادله چندگانه y را وارد کنید. روشهای مختلفی برای استفاده از این روش وجود دارد ، اما متغیر u باید برابر سیگنال ورودی خام اندازه گیری شده باشد و متغیر y مقدار فیلتر شده خواهد بود.

توصیه شده: