فهرست مطالب:

سرعت سنج ماشین RC: 4 مرحله (همراه با تصاویر)
سرعت سنج ماشین RC: 4 مرحله (همراه با تصاویر)

تصویری: سرعت سنج ماشین RC: 4 مرحله (همراه با تصاویر)

تصویری: سرعت سنج ماشین RC: 4 مرحله (همراه با تصاویر)
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, نوامبر
Anonim
سرعت سنج ماشین RC کار می کند
سرعت سنج ماشین RC کار می کند

این یک پروژه کوتاه است که من به عنوان بخشی از ساخت RC بزرگتر لندرور سبک وزن ایجاد کردم. من تصمیم گرفتم که یک سرعت سنج کار در داشبورد داشته باشم ، اما می دانستم که سروو آن را قطع نمی کند. تنها یک گزینه معقول وجود داشت: استقرار arduino!

کمی پیش زمینه برای شروع … من یک فرد برنامه نویس یا الکترونیک نیستم. من هنوز به جریان الکتریسیته از نظر جریان آب فکر می کنم و تا حدودی تحت تأثیر مقاومت قرار گرفته ام. با این وجود ، اگر حتی من توانستم این کار را انجام دهم ، شما نیز باید بتوانید!

فهرست قطعات:

میکروکنترلر: من از یک تراشه ATTiny85 استفاده کردم که هریک حدود 1 پوند هزینه داشت.

برنامه نویس میکروکنترلر: برای اینکه کد را وارد تراشه کنید ، باید راهی برای برنامه نویسی آن داشته باشید. با آردوینو معمولی این فقط یک کابل USB است ، اما برای تراشه ATTiny ، شما به چیزی اضافی نیاز دارید. برای این کار می توانید از arduino دیگری استفاده کنید یا مانند من می توانید از برنامه نویس Tiny AVR از Sparkfun استفاده کنید.

learn.sparkfun.com/tutorials/tiny-avr-prog…

من این را توصیه می کنم ، زیرا برنامه نویسی آنها را با روش های مختلف امتحان کرده ام و این یکی از ساده ترین آنهاست. این تخته کمی گران است ، اما اگر پروژه های ATTiny زیادی را انجام دهید ، سرمایه گذاری خوبی است.

سوکت تراشه 8 پین: اگر تراشه را به جای لحیم کاری مستقیم در یک پریز قرار دهید ، می توانید برخی از اشتباهات خود را در مونتاژ انجام دهید. از روی تجربه بیان می شود - هیچ کس نمی خواهد تراشه ها را برای برنامه ریزی مجدد از هم جدا کند.

خازن: از خازن جدا کننده 100nF (کد 104) استفاده می شود. من دقیقاً نمی فهمم چرا ، اما خواندم که جدا کردن خازن ها در اینترنت مهم است ، بنابراین باید درست باشد…

مقاومت: یک مقاومت 10kΩ برای پایین کشیدن خط به داخل آردوینو استفاده می شود. باز هم ، راز دیگری در زمینه الکترونیک.

تخته چوبی/تخته باریک: مقداری تخته پایه که می توانید مدار خود را روی آن جمع کنید.

سیم پیچ: سیم روکش معمولی ضخیم تر از آن است که روی موتور لحیم شود. استفاده از سیم میناکاری شده خوب باعث کاهش فشار روی پایانه های موتور می شود و زندگی شما را بسیار آسان می کند.

Servo Wire: یک روبان سه سیمه که در یک پلاگین زن 3 پین JR ختم می شود. من خودم را از یک سرووی سوخته که "اصلاح" می کردم ، گرفتم.

استپر موتور: من از یک موتور پله ای دو قطبی Nidec 6 میلی متری استفاده کردم. هر پله کوچک باید کار کند ، اگرچه آنها را کوچک نگه دارید ، زیرا پله مستقیم از آردوینو رانده می شود.

پین هدر: ضروری نیست ، اما اگر استپر خود را به 4 پین هدر متصل کرده و سوکت را روی مدار خود قرار دهید ، می توانید به راحتی داشبورد خود را برای سهولت نصب جدا کنید.

کامپیوتر: برای برنامه ریزی برد خود ، به کامپیوتر نیاز دارید. احتمالاً با Arduino IDE. و شاید یک کابل USB. اگر کابل برق نیز دارد ، بهتر است.

مرحله 1: سیستم

طرح کلی سیستمی که من ایجاد کردم روشی بود که به موجب آن سیگنال مدولاسیون پهنای پالس (PWM) که از گیرنده RC می آید از طریق میکروکنترلر ATTiny 85 (uC) به یک موتور رفتاری پله ای تبدیل می شود.

در اینجا منبعی برای سیگنال های PWM و RC آمده است ، اما برای تکرار آن نیازی به درک دقیق آن ندارید.

fa.wikipedia.org/wiki/Servo_control

ATTiny طعم مورد علاقه من از آردوینو است زیرا کوچک است و هنوز دارای پین های ورودی/خروجی کافی برای انجام کارهای اساسی است ، بنابراین در مدلهای کوچک و پروژه های RC کاملاً مناسب است. نقطه ضعف اصلی ATTiny این است که برای برنامه نویسی به تنظیمات بیشتری نیاز دارد ، اما پس از راه اندازی آنها بسیار ارزان هستند و می توانید مجموعه ای از آنها را برای انواع پروژه ها خریداری کنید.

اندازه صفحه سرعت سنج آنقدر کوچک است که یک موتور گیربکس دار با بازخورد ندارد ، بنابراین برای داشتن یک پاسخ متناسب باید از یک موتور پله ای استفاده کرد. یک موتور پله ای موتوری است که در مقادیر گسسته (یا مراحل…!) حرکت می کند ، که آن را برای یک سیستم بدون بازخورد مانند این ایده آل می کند. تنها هشدار این است که "مراحل" باعث می شود حرکت حرکتی برعکس صاف باشد. اگر یک پله با پله های کافی در هر چرخش دریافت کنید ، این قابل توجه نیست ، اما با پله ای که من در این پروژه استفاده کردم فقط 20 مرحله در یک چرخش کامل وجود دارد ، جهش زاویه بسیار بد است.

سیستم با روشن شدن ، پله را برای دو دور به عقب حرکت می دهد تا سوزن را صفر کند. سرعت سنج نیاز به یک پین استراحت دارد که در آن می خواهید علامت صفر باشد ، در غیر این صورت فقط برای همیشه می چرخد. سپس سیگنال های PWM جلو و عقب را به تعداد مشخصی از مراحل موتور ترسیم می کند. راحت ، درسته…؟

مرحله 2: نرم افزار

سلب مسئولیت: من برنامه نویس نیستم. برای این پروژه من معادل دیجیتالی دکتر فرانکنشتاین هستم ، چیزی را جمع آوری می کنم که از قطعات مختلف کد پیدا شده کار می کند.

بنابراین ، از صمیم قلب تشکر می کنم از Duane B ، که کد تفسیر سیگنال های RC را ایجاد کرد:

rcarduino.blogspot.com/

و به Ardunaut ، که کد اجرای استپر را به عنوان اندازه گیری آنالوگ تهیه کرد:

arduining.com/2012/04/22/arduino-driving-a…

و از هر دو ، صادقانه ترین معذرت خواهی ام برای کاری که با کد شما کردم.

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

#تعریف THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = PIN DIGITAL 2 - از شماره وقفه در attachInterrupt #define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = PIN DIGITAL 2 - استفاده از شماره PIN به صورت دیجیتالی بخوانید دریچه گاز خنثی بر روی یک ماشین برقی RC #تعریف UPPER_THROTTLE 2000 // این مدت زمان بر حسب میکرو ثانیه حداکثر گاز بر روی یک ماشین RC برقی است #تعریف LOWER_THROTTLE 1000 // این مدت زمان بر حسب میکرو ثانیه حداقل گاز بر روی یک ماشین برقی RC #تعریف DEADZONE 50 // این قسمت دریچه گاز دریچه گاز است. کل ددزون دو برابر این است. #شامل #تعریف STEPS 21 // مراحل در هر دور (محدود به 315 درجه) این مورد را برای تنظیم حداکثر حرکت سرعت سنج تغییر دهید. #تعریف COIL1 3 // پین های سیم پیچ. ATTiny از پین های 0 ، 1 ، 3 ، 4 برای پله استفاده می کند. پین 2 تنها پینی است که می تواند وقفه ها را مدیریت کند بنابراین باید ورودی باشد. #COIL2 4 را تعریف کنید // اگر موتور پله به درستی کار نمی کند ، آنها را تغییر دهید. #تعریف COIL3 0 #تعریف COIL4 1 // ایجاد یک نمونه از کلاس پله ای: پله پله ای (STEPS، COIL1، COIL2، COIL3، COIL4)؛ int pos = 0؛ // موقعیت در مراحل (0-630) = (0 ° -315 °) int SPEED = 0؛ شناور ThrottleInAvg = 0 ؛ int MeasurementsToAverage = 60 ؛ float Resetcounter = 10؛ // زمان تنظیم مجدد در حالت آماده به کار int Resetval = 0؛ int volatile int ThrottleIn = LOWER_THROTTLE؛ فرار طولانی بدون علامت StartPeriod = 0؛ // تنظیم در وقفه // ما می توانیم از nThrottleIn = 0 در حلقه به جای یک متغیر جداگانه استفاده کنیم ، اما استفاده از bNewThrottleSignal برای نشان دادن سیگنال جدید // برای این اولین مثال void setup واضح تر است () {// به Arduino بگویید ما می خواهیم تابع calcInput هر زمان که INT0 (پین دیجیتالی 2) از HIGH به LOW یا LOW به HIGH تغییر می کند فراخوانی شود // گرفتن این تغییرات به ما اجازه می دهد تا مدت زمان اتصال پالس ورودی به هم را محاسبه کنیم (THROTTLE_SIGNAL_IN ، calcInput ، CHANGE) ؛ stepper.setSpeed (50) ؛ // دور موتور را روی 30 دور در دقیقه (حدود 360 PPS) تنظیم کنید. stepper.step (STEPS * 2) ؛ // تنظیم مجدد موقعیت (X گام خلاف جهت عقربه های ساعت). } void loop () {Resetval = millis؛ برای (int i = 0؛ i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg <UPPER_THROTTLE) {SPEED = map (ThrottleInAvg ، (NEUTRAL_THROTTLE + DEADZONE) ، UPPER_THROTLET ، بازنشانی = 0 ؛ } // نقشه برداری معکوس در صورت دیگر (ThrottleInAvg LOWER_THROTTLE) {SPEED = map (ThrottleInAvg، LOWER_THROTTLE، (NEUTRAL_THROTTLE - DEADZONE)، 255، 0)؛ بازنشانی = 0 ؛ } // خارج از محدوده بالا if (ThrottleInAvg> UPPER_THROTTLE) {SPEED = 255؛ بازنشانی = 0 ؛ } // خارج از محدوده if other (ThrottleInAvg Resetcounter) {stepper.step (4)؛ // من سعی می کنم به استپر بگویم که اگر سیگنال RC به مدت طولانی در منطقه Deadzone باشد دوباره خودش را ریست کند. مطمئن نیستم که این قسمت از کد واقعاً کار می کند. }} int val = SPEED؛ // دریافت مقدار پتانسیومتر (محدوده 0-1023) val = map (val، 0، 255، 0، STEPS * 0.75)؛ // محدوده pot pot در محدوده stepper. if (abs (val - pos)> 2) {// اگر اختلاف بیشتر از 2 مرحله باشد. if ((val - pos)> 0) {stepper.step (-1) ؛ // یک قدم به چپ حرکت کنید. pos ++؛ } if ((val - pos) <0) {stepper.step (1)؛ // یک قدم به راست حرکت کنید. pos-- ؛ }} // تأخیر (10)؛ } void calcInput () {// اگر پین بالا باشد ، شروع وقفه ای است اگر (digitalRead (THROTTLE_SIGNAL_IN_PIN) == HIGH) {// زمان استفاده از میکروها را بدست آورید - وقتی کد ما واقعاً مشغول شود این نادرست می شود ، اما برای برنامه فعلی آن // به راحتی قابل درک است و بسیار خوب کار می کند StartPeriod = micros ()؛ } else {// اگر پین پایین باشد ، لبه در حال سقوط است ، بنابراین اکنون می توانیم با کاهش // زمان شروع ulStartPeriod از زمان فعلی که توسط micros () if ((StartPeriod) {ThrottleIn = بازگردانده می شود ، مدت زمان نبض را محاسبه کنیم. (int) (micros () - دوره شروع)؛ دوره شروع = 0 ؛ }}}

برای اطلاعات بیشتر در مورد برنامه نویسی ATTiny85 به اینجا مراجعه کنید:

learn.sparkfun.com/tutorials/tiny-avr-prog…

مرحله 3: سخت افزار

سخت افزار
سخت افزار
سخت افزار
سخت افزار
سخت افزار
سخت افزار

برای ساخت مدار به نمودار مدار مراجعه کنید. نحوه مونتاژ آن به خود شما بستگی دارد ، اما من پیشنهاد می کنم از کمی نوار/ورق ورق استفاده کنید که برای نمونه سازی برد مدار استفاده می شود و تراشه را در سوکت نصب کنید.

C1 = 100nF

R1 = 10kΩ

خازن باید تا حد امکان نزدیک تراشه نصب شود تا بیشترین تاثیر را داشته باشد.

هنگام اتصال سیمهای میناکاری شده به موتور ، بسیار مراقب باشید ، زیرا پایانه های موتورها دوست دارند که سیم کشی را قطع کرده و سیم را به موتور قطع کنند. برای رفع این مشکل ، راه حل مناسب این است که سیم ها را لحیم کرده و سپس یک قطره بزرگ اپوکسی 2 قسمتی را روی مفصل بگذارید ، بگذارید خوب شود ، سپس سیم ها را به هم بپیچانید. این امر باعث کاهش استرس بر روی مفاصل ترمینال منفرد شده و باید مانع از قطع شدن آنها شود. اگر این کار را نکنید ، آنها در حداقل زمان مناسب ، ضمانت می شوند.

اگر اتصال پین هدر را ایجاد کرده اید و پین ها را به این ترتیب تنظیم کرده اید: [Ca1 ، Cb1 ، Ca2 ، Cb2] با Ca1 که نشان دهنده سیم پیچ A ، سیم 1 و غیره است ، این به شما امکان می دهد جهت تعویض سنج را با تعویض پلاگین تغییر دهید. دور و بر.

برای اندازه گیری موقعیت صفر در مقابل ، سنج نیاز به یک ایستگاه پایانی دارد. توصیه می کنم در صورت امکان سوزن را از فلز بسازید. این باعث می شود که هنگام برخورد با انتهای آن ، خم شدن آن متوقف شود. راهی برای قرار دادن سوزن در موقعیت مناسب این است که سوزن را بطور موقت به محور بچسبانید ، ماژول را تغذیه کنید ، بگذارید بماند و سپس سوزن را بر روی محور بردارید و دوباره بچسبانید ، در حالی که سوزن در مقابل آن قرار گرفته است. پایان دادن این کار سوزن را با گیربکس مغناطیسی موتور هماهنگ می کند و اطمینان می دهد که سوزن شما همیشه باید در مقابل پایانه قرار بگیرد.

مرحله 4: پایان نامه

امیدوارم از این آموزش مختصر لذت برده باشید و مفید واقع شده باشد. اگر یکی از اینها را ساختید ، به من اطلاع دهید!

موفق باشید!

توصیه شده: