فهرست مطالب:

از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید: 6 مرحله
از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید: 6 مرحله

تصویری: از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید: 6 مرحله

تصویری: از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید: 6 مرحله
تصویری: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, ژوئن
Anonim
از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید
از 1 ورودی آنالوگ برای 6 دکمه برای آردوینو استفاده کنید

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

چرا می خواهم دکمه های همزمان را فشار دهم؟ همانطور که در طراحی مدارهای TinkerCad نشان داده شده است ، می توان از آن برای ورودی های سوئیچ DIP برای انتخاب حالت های مختلف درون برنامه استفاده کرد.

مداری که من تهیه کردم از منبع 5 ولت موجود در آردوینو استفاده می کند و از 7 مقاومت و 6 دکمه یا سوئیچ استفاده می کند.

مرحله 1: مدار

مدار
مدار

آردوینو دارای ورودی های آنالوگ است که ورودی 0 ولت تا 5 ولت را می پذیرد. این ورودی دارای وضوح 10 بیت است ، به این معنی که سیگنال به 2^10 بخش تقسیم می شود ، یا 1024 عدد. بر این اساس ، بیشترین چیزی که می توانستیم در ورودی آنالوگ وارد کنیم در حالی که اجازه فشار همزمان را می دادیم ، 10 دکمه تا 1 ورودی آنالوگ بود. اما ، این یک دنیای کامل نیست. مقاومت در رساناها ، سر و صدا از منابع خارجی و قدرت ناقص وجود دارد. بنابراین ، برای انعطاف پذیری زیاد ، تصمیم گرفتم این را برای 6 دکمه طراحی کنم. این تا حدی تحت تأثیر این واقعیت بود که مدارهای TinkerCAD دارای یک شیء 6 سوئیچ DIP Switch بودند که آزمایش را آسان می کند.

اولین قدم در طراحی من این بود که مطمئن شوم هر دکمه ، وقتی به صورت جداگانه فشار داده می شود ، یک ولتاژ منحصر به فرد ایجاد می کند. این امر باعث می شود که همه مقاومت ها یک مقدار نباشند. گام بعدی این بود که مقادیر مقاومت ، هنگامی که به طور موازی اضافه می شوند ، نمی توانند همان مقاومت هر مقدار مقاومت را داشته باشند. هنگامی که مقاومتها به صورت موازی به هم متصل می شوند ، مقاومت حاصله را می توان با Rx = 1/[((1/R1)+(1/R2)] محاسبه کرد. بنابراین ، اگر R1 = 2000 و R2 = 1000 ، Rx = 667 باشد. من حدس می زدم که با دو برابر شدن اندازه هر مقاومت ، مقاومت یکسانی را برای هیچ یک از ترکیبات نمی بینم.

بنابراین ، مدار من تا این مرحله 6 سوئیچ داشت که هر کدام دارای مقاومت مخصوص به خود بودند. اما ، برای تکمیل این مدار یک مقاومت دیگر لازم است.

آخرین مقاومت 3 هدف دارد. اول ، به عنوان یک مقاومت کششی عمل می کند. بدون مقاومت ، وقتی هیچ دکمه ای فشار داده نمی شود ، مدار ناقص است. این امر به ولتاژ ورودی آنالوگ آردوینو اجازه می دهد تا در هر پتانسیل ولتاژی شناور باشد. یک مقاومت Pull-Down اساساً ولتاژ را به 0 ولت می رساند. هدف دوم محدود کردن جریان این مدار است. قانون اهم بیان می کند که V = IR یا ولتاژ = جریان ضرب در مقاومت. با یک منبع ولتاژ مشخص ، مقاومت بزرگتر به این معنی است که جریان کوچکتر است. بنابراین ، اگر یک سیگنال 5V به یک مقاومت 500 اهم وارد شود ، بزرگترین جریانی که می توانیم ببینیم 0.01A یا 10mA است. هدف سوم تأمین ولتاژ سیگنال است. جریان کلی که از طریق آخرین مقاومت عبور می کند: i = 5V/Rtotal ، جایی که Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. با این حال ، فقط 1/Rx برای هر مقاومت که دکمه مربوطه آن را فشار داده است ، اضافه کنید. از کل جریان ، ولتاژ ارائه شده به ورودی آنالوگ i*Rlast یا i*500 خواهد بود.

مرحله 2: اثبات - Excel

اثبات - اکسل
اثبات - اکسل

سریع ترین و ساده ترین راه برای اثبات اینکه من مقاومت های منحصر به فرد و در نتیجه ولتاژهای منحصر به فرد را با این مدار دریافت می کنم ، استفاده از قابلیت های Excel بود.

تمام ترکیبات ممکن ورودی های سوئیچ را تنظیم کردم و این الگوهای دوتایی را به ترتیب ترتیب دادم. مقدار "1" نشان می دهد که سوئیچ روشن است ، خالی نشان می دهد که خاموش است. در بالای صفحه گسترده ، مقادیر مقاومت را برای هر سوئیچ و برای مقاومت کششی وارد کرده ام. سپس مقاومت معادل برای هر یک از ترکیبات را محاسبه کردم ، مگر در مواردی که همه مقاومت ها خاموش باشند ، زیرا این مقاومتها بدون منبع تغذیه که تأمین کننده آن باشد ، تأثیری نخواهد داشت. برای اینکه محاسباتم آسان شود تا بتوانم در هر ترکیب کپی و جایگذاری کنم ، همه ترکیبها را در ضرب با ضرب هر مقدار سوئیچ (0 یا 1) در مقدار مقاومت معکوس آن وارد کردم. در صورت خاموش بودن سوئیچ ، مقاومت آن از محاسبه حذف می شود. معادله به دست آمده را می توان در تصویر صفحه گسترده مشاهده کرد ، اما Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). با استفاده از Itotal = 5V / Req ، کل جریان را از طریق مدار تعیین می کنیم. این همان جریانی است که از مقاومت Pull-down می گذرد و ولتاژ ورودی آنالوگ را برای ما فراهم می کند. این به عنوان Vin = Itotal x Rx محاسبه می شود. با بررسی هر دو داده Req و داده های Vin ، می بینیم که ما در واقع مقادیر منحصر به فردی داریم.

در این مرحله ، به نظر می رسد که مدار ما کار خواهد کرد. اکنون نحوه برنامه نویسی آردوینو را بیاموزید.

مرحله 3: برنامه نویسی آردوینو

برنامه نویسی آردوینو
برنامه نویسی آردوینو
برنامه نویسی آردوینو
برنامه نویسی آردوینو
برنامه نویسی آردوینو
برنامه نویسی آردوینو

هنگامی که من در مورد نحوه برنامه نویسی آردوینو فکر کردم ، ابتدا تصمیم گرفتم محدوده ولتاژهای فردی را برای تعیین روشن یا خاموش بودن یک سوئیچ تنظیم کنم. اما ، وقتی یک شب روی تخت دراز کشیده بودم ، به ذهنم رسید که باید بتوانم معادله ای برای این کار پیدا کنم. چگونه؟ برتری داشتن. اکسل این قابلیت را دارد که معادلات را برای مطابقت بیشتر داده ها در نمودار محاسبه کند. برای انجام این کار ، من معادله ای از مقدار صحیح سوئیچ ها (باینری) در مقابل ورودی ولتاژ مربوط به آن مقدار را می خواهم. در دفتر کار Excel ، مقدار Integer را در سمت چپ صفحه گسترده قرار داده ام. حالا معادله ام را تعیین کنم.

در اینجا یک آموزش سریع در مورد نحوه تعیین معادله یک خط در Excel وجود دارد.

1) سلولی را انتخاب کنید که فاقد داده باشد. اگر سلولی را انتخاب کرده اید که دارای داده باشد ، اکسل سعی می کند حدس بزند چه چیزی را می خواهید ترند کنید. این امر ایجاد روند را بسیار دشوار می کند ، زیرا Excel به ندرت پیش بینی درستی می کند.

2) برگه "Insert" را انتخاب کرده و نمودار "Scatter" را انتخاب کنید.

3) در کادر نمودار راست کلیک کرده و روی "Select Data…" کلیک کنید. با این کار پنجره "Select Source Data" ظاهر می شود. برای ادامه انتخاب دکمه ، دکمه Add را انتخاب کنید.

4) یک نام سری به آن بدهید (اختیاری). با کلیک روی پیکان بالا و سپس انتخاب داده های ولتاژ ، محدوده محور X را انتخاب کنید. محدوده محور Y را با کلیک روی پیکان بالا و سپس انتخاب اطلاعات صحیح (0-63) انتخاب کنید.

5) روی نقاط داده راست کلیک کرده و "Add Trendline …" را انتخاب کنید. در پنجره "Format Trendline" ، دکمه Polynomial را انتخاب کنید. با نگاه به روند ، می بینیم که سفارش 2 کاملاً مطابقت ندارد. من سفارش 3 را انتخاب کردم و احساس کردم این بسیار دقیق تر است. کادر تأیید "نمایش معادله روی نمودار" را انتخاب کنید. اکنون معادله نهایی روی نمودار نمایش داده می شود.

6) انجام شد.

خوب. بازگشت به برنامه آردوینو. اکنون که معادله را داریم ، برنامه نویسی Arduino آسان است. عددی صحیح که موقعیت های سوئیچ را نشان می دهد در 1 خط کد محاسبه می شود. با استفاده از تابع "bitread" ، می توانیم مقدار هر بیت را بدست آوریم و بنابراین وضعیت هر دکمه را بدانیم. (عکس ها را ببینید)

مرحله 4: مدارهای TinkerCAD

مدارهای TinkerCAD
مدارهای TinkerCAD

اگر مدارات TinkerCAD را بررسی نکرده اید ، همین حالا این کار را انجام دهید. صبر کن!!!! خواندن دستورالعمل من را تمام کنید و سپس آن را بررسی کنید. مدارهای TinkerCAD آزمایش مدارهای آردوینو را بسیار آسان می کند. این شامل چندین شیء الکتریکی و آردوینوس است ، حتی به شما امکان می دهد Arduino را برای آزمایش برنامه ریزی کنید.

برای آزمایش مدارم ، 6 سوئیچ را با استفاده از بسته سوئیچ DIP تنظیم کردم و آنها را به مقاومت ها وصل کردم. برای اثبات صحیح بودن مقدار ولتاژ در صفحه گسترده Excel ، ولت متر را در ورودی به آردوینو نشان دادم. همه اینها همانطور که انتظار می رفت کار کرد.

برای اثبات اینکه برنامه نویسی آردوینو کار می کند ، با استفاده از خروجی های دیجیتالی آردوینو ، حالت سوئیچ ها را به LED تبدیل می کنم.

سپس من هر سوئیچ را برای هر ترکیب ممکن تغییر دادم و مفتخرم که می گویم "کار می کند" !!!

مرحله 5: "خیلی طولانی ، و ممنون برای همه ماهی ها." (ref.1)

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

ممنون که مطالب آموزشی من را مطالعه کردید. امیدوارم در پروژه های خود به شما کمک کند.

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

مرحله ششم: منابع

فکر نمی کردید من بدون ذکر منبع به نقل قول می دهم؟

مرجع. 1: آدامز ، داگلاس. خیلی طولانی و ممنون از همه ماهی ها (چهارمین کتاب "سه گانه" راهنمای هیکیکر برای کهکشان)

توصیه شده: