Mundarija:

Arduino uchun 6 tugma uchun 1 ta analog kirishni ishlating: 6 qadam
Arduino uchun 6 tugma uchun 1 ta analog kirishni ishlating: 6 qadam

Video: Arduino uchun 6 tugma uchun 1 ta analog kirishni ishlating: 6 qadam

Video: Arduino uchun 6 tugma uchun 1 ta analog kirishni ishlating: 6 qadam
Video: Функция Arduino Millis поясняется 3 примерами 2024, Iyun
Anonim
Arduino uchun 6 ta tugma uchun 1 ta analog kirishni ishlating
Arduino uchun 6 ta tugma uchun 1 ta analog kirishni ishlating

Men tez -tez Arduino uchun qanday qilib ko'proq raqamli kirishni olishim mumkinligi haqida o'ylardim. Yaqinda men bir nechta raqamli kirishni kiritish uchun Analog Kirishlardan birini ishlatishim kerak edi. Men tezda qidirib topdim va odamlar qaerga qodirligini aniqladim, lekin bu faqat bitta tugmani bir vaqtning o'zida bosish imkonini berdi. Men har qanday tugmachani bir vaqtning o'zida bosishni xohlayman. Shunday qilib, TINKERCAD CIRCUITS yordamida men buni amalga oshirishga kirishdim.

Nega men bir vaqtning o'zida tugmachalarni bosishni xohlayman? TinkerCad Circuits dizaynida ko'rsatilgandek, u dastur ichidagi turli xil rejimlarni tanlash uchun DIP kalitli kirishlar uchun ishlatilishi mumkin.

Men yaratgan sxema Arduino -da mavjud bo'lgan 5V manbadan foydalanadi va 7 rezistor va 6 tugma yoki kalitdan foydalanadi.

1 -qadam: O'chirish davri

O'chirish davri
O'chirish davri

Arduino -ning analog kirishlari bor, ular 0V dan 5V gacha qabul qilishni qabul qiladi. Bu kirish 10-bitli piksellar soniga ega, ya'ni signal 2^10 segmentga bo'linadi yoki 1024 ta sanaladi. Bunga asoslanib, biz bir vaqtning o'zida bosish uchun analog kirishni kiritishimiz mumkin bo'lgan eng ko'p narsa 10 ta tugmachadan 1 ta analog kirishga to'g'ri keladi. Biroq, bu mukammal dunyo emas. Supero'tkazuvchilarda qarshilik, tashqi manbalardan shovqin va nomukammal quvvat mavjud. Shunday qilib, o'zimga juda ko'p moslashuvchanlikni berish uchun men buni 6 tugmachani loyihalashni rejalashtirdim. Bunga, qisman, TinkerCAD sxemalarida 6 ta kalitli DIP Switch moslamasi borligi ta'sir ko'rsatdi, bu esa testni osonlashtiradi.

Dizaynimdagi birinchi qadam, har bir tugma alohida bosilganda, o'ziga xos kuchlanishni ta'minlashiga ishonch hosil qilish edi. Bu barcha rezistorlar bir xil qiymatda bo'lishini istisno qildi. Keyingi qadam, qarshilik qiymatlari parallel ravishda qo'shilganda, har qanday qarshilik qiymati bilan bir xil qarshilikka ega bo'lmasligi edi. Rezistorlar parallel ulanganda, hosil bo'lgan qarshilik Rx = 1/[(1/R1)+(1/R2)] bilan hisoblanishi mumkin. Shunday qilib, agar R1 = 2000 va R2 = 1000 bo'lsa, Rx = 667. Men har bir rezistorning kattaligini ikki barobar oshirib, hech qanday kombinatsiyalar uchun bir xil qarshilik ko'rmasligimni taxmin qildim.

Shunday qilib, mening davram har birining o'z qarshiligiga ega 6 ta kalitga ega bo'lishi kerak edi. Ammo, bu sxemani bajarish uchun yana bitta rezistor kerak.

Oxirgi qarshilik 3 maqsadga ega. Birinchidan, u pastga tushadigan qarshilik vazifasini bajaradi. Rezistorsiz, tugmalar bosilmasa, kontaktlarning zanglashiga olib bo'lmaydi. Bu Arduino analog kirishidagi kuchlanish har qanday kuchlanish potentsialiga suzishga imkon beradi. Chiqib ketish qarshiligi asosan kuchlanishni 0 V ga tushiradi. Ikkinchi maqsad-bu kontaktlarning zanglashini cheklash. Ohm qonuniga ko'ra, V = IQ, yoki kuchlanish = qarshilik qarshilikka ko'paytiriladi. Berilgan kuchlanish manbasida qarshilik qanchalik katta bo'lsa, oqim kichik bo'ladi. Shunday qilib, agar 500 ohmli rezistorga 5V signal qo'llanilsa, biz ko'radigan eng katta oqim 0,01A yoki 10mA bo'ladi. Uchinchi maqsad - signal kuchlanishini ta'minlash. Oxirgi qarshilik orqali oqadigan umumiy oqim: i = 5V/Rtotal bo'ladi, bu erda Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Shu bilan birga, har bir rezistor uchun faqat 1/Rx mos keladigan tugma bosiladi. Umumiy oqimdan analog kirishga berilgan kuchlanish i*Rlast yoki i*500 bo'ladi.

2 -qadam: Tasdiqlash - Excel

Tasdiqlash - Excel
Tasdiqlash - Excel

Noyob qarshilikka ega bo'lishni isbotlashning eng tezkor va eng oson usuli bu sxemada Excel imkoniyatlaridan foydalanish edi.

Men kalitlarni kiritishning barcha mumkin bo'lgan kombinatsiyalarini o'rnatdim va ketma -ketlikdagi quyidagi ikkilik naqshlarni tashkil qildim. "1" qiymati - bu kalit yoqilganligini, bo'sh - o'chirilganligini ko'rsatadi. Elektron jadvalning yuqori qismida men har bir kalit va pastga tushadigan qarshilik uchun qarshilik qiymatlarini qo'ydim. Keyin men har bir kombinatsiya uchun ekvivalent qarshilikni hisobladim, faqat barcha rezistorlar o'chirilganidan tashqari, chunki bu rezistorlar quvvat manbai bo'lmagan holda ta'sir qilmaydi. Hisob -kitoblarni osonlashtirish uchun har bir kombinatsiyaga nusxa ko'chirish va joylashtirish uchun men har bir kalit qiymatini (0 yoki 1) teskari qarshilik qiymatiga ko'paytirish orqali barcha kombinatsiyalarni hisobga kiritdim. Shunday qilib, agar kalit o'chirilgan bo'lsa, uning qarshiligini hisobdan olib tashladi. Olingan tenglamani elektron jadval tasvirida ko'rish mumkin, lekin Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Itotal = 5V / Req -dan foydalanib, biz kontaktlarning zanglashiga olib keladigan umumiy oqimni aniqlaymiz. Bu pastga tushirish qarshiligidan o'tadigan va bizni analog kirishga kuchlanish beradigan oqim. Bu Vin = Itotal x Rx sifatida hisoblanadi. Req ma'lumotlarini va Vin ma'lumotlarini o'rganib chiqib, biz haqiqatan ham noyob qadriyatlarga ega ekanligimizni ko'rishimiz mumkin.

Shu nuqtada, bizning sxemamiz ishlaydi. Endi Arduino -ni qanday dasturlashni bilib olaylik.

3 -qadam: Arduino dasturlash

Arduino dasturlash
Arduino dasturlash
Arduino dasturlash
Arduino dasturlash
Arduino dasturlash
Arduino dasturlash

Men Arduino -ni qanday dasturlash haqida o'ylay boshlaganimda, avval kalitning yoqilgan yoki o'chirilganligini aniqlash uchun individual kuchlanish diapazonlarini o'rnatishni rejalashtirgandim. Ammo, bir kecha to'shakda yotganimda, buni amalga oshirish uchun tenglama topishim kerak, deb o'yladim. Qanaqasiga? EXCEL. Excel jadvaldagi ma'lumotlarni to'g'ri joylashtirish uchun tenglamalarni hisoblash qobiliyatiga ega. Buni amalga oshirish uchun men kalitlarning (ikkilik) butun qiymatining ushbu qiymatga mos keladigan kuchlanish kiritishining tenglamasini xohlayman. Excel ish daftarchasida butun sonni elektron jadvalning chap tomoniga qo'yaman. Endi mening tenglamamni aniqlash uchun.

Bu erda Excel ichidagi chiziq tenglamasini aniqlash bo'yicha tezkor qo'llanma.

1) Hech qanday ma'lumot bo'lmagan katakchani tanlang. Agar sizda ma'lumotlarga ega bo'lgan tanlangan katak bo'lsa, Excel siz trend qilmoqchi bo'lgan narsani taxmin qilishga harakat qiladi. Bu tendentsiyani o'rnatishni ancha qiyinlashtiradi, chunki Excel kamdan -kam hollarda to'g'ri bashorat qiladi.

2) "Qo'shish" yorlig'ini va "Tarqalish" jadvalini tanlang.

3) Grafik maydonini o'ng tugmasini bosing va "Ma'lumotni tanlash …" ni bosing. Bu "Ma'lumot manbasini tanlash" oynasini ochadi. Ma'lumotni tanlashni davom ettirish uchun Qo'shish tugmasini bosing.

4) unga seriya nomini bering (ixtiyoriy). Yuqori o'qni bosib, keyin kuchlanish ma'lumotlarini tanlash orqali X o'qi oralig'ini tanlang. Y o'qi diapazonini yuqoriga o'qni bosib, so'ngra butun sonli ma'lumotlarni (0-63) tanlab tanlang.

5) Ma'lumot nuqtalarini o'ng tugmasini bosing va "Trend chizig'ini qo'shish …" -ni tanlang "Trend chizig'ini formatlash" oynasida Polinomli tugmani tanlang. Trendga nazar tashlasak, 2 -chi tartib unchalik mos kelmasligini ko'ramiz. Men 3 -sonli buyurtmani tanladim va bu aniqroq ekanligini his qildim. "Tenglamani jadvalda ko'rsatish" katagiga belgi qo'ying. Oxirgi tenglama endi jadvalda ko'rsatiladi.

6) bajarildi.

OK. Arduino dasturiga qaytish. Endi biz tenglamaga ega bo'lsak, Arduino -ni dasturlash oson. Kommutator pozitsiyalarini ifodalovchi butun son 1 kodli satrda hisoblanadi. "Bitread" funktsiyasidan foydalanib, biz har bir bitning qiymatini bilib olamiz va shu bilan har bir tugmaning holatini bilib olamiz. (Rasmlarni ko'rish)

4 -qadam: TinkerCAD sxemalari

TinkerCAD sxemalari
TinkerCAD sxemalari

Agar siz TinkerCAD sxemalarini tekshirmagan bo'lsangiz, buni hozir qiling. KUTMOQ!!!! "Ko'rsatmalarimni" o'qishni tugating va keyin tekshiring. TinkerCAD davrlari Arduino sxemalarini sinovdan o'tkazishni juda osonlashtiradi. U bir nechta elektr moslamalarini va Arduinosni o'z ichiga oladi, hatto Arduino -ni sinov uchun dasturlash imkonini beradi.

Elektr zanjirimni sinab ko'rish uchun men DIP tugmachasi yordamida 6 ta kalitni o'rnatdim va ularni rezistorlarga bog'ladim. Excel elektron jadvalidagi kuchlanish qiymati to'g'ri ekanligini isbotlash uchun men Arduino -ga kirishda voltmetrni ko'rsatdim. Bularning barchasi kutilganidek ishladi.

Arduino dasturlash ishlaganini isbotlash uchun men Arduinoning raqamli chiqishlari yordamida LED holatidagi kalitlarning holatini chiqardim.

Keyin men har bir kalitni har qanday kombinatsiyaga almashtirdim va faxr bilan "IT ISHLADI" deb aytaman !!!

5 -qadam: "Juda uzoq va barcha baliqlar uchun rahmat." (ref.1)

Men buni hali ham haqiqiy asbob -uskunalar yordamida sinab ko'rmadim, chunki men hozir ish uchun sayohat qilyapman. Ammo, buni TinkerCAD sxemalari bilan isbotlaganimdan so'ng, u ishlay olishiga ishonaman. Qiyinchilik shundaki, men ko'rsatgan rezistorlar qiymatlari rezistorlar uchun barcha standart qiymatlar emas. Buni bartaraf etish uchun men potentsiometrlardan va rezistorlar kombinatsiyasidan foydalanib, kerakli qiymatlarni olish niyatidaman.

Mening ko'rsatmalarni o'qiganingiz uchun tashakkur. Umid qilamanki, bu sizning loyihalaringizga yordam beradi.

Agar siz ham xuddi shu to'siqni engishga harakat qilgan bo'lsangiz va uni qanday hal qilgan bo'lsangiz, sharhlaringizni qoldiring. Men buni amalga oshirishning boshqa usullarini o'rganishni xohlardim.

6 -qadam: Adabiyotlar

Siz manba haqida ma'lumot bermasdan narx taklif qilaman deb o'ylamaganmisiz?

ref. 1: Adams, Duglas. Juda uzoq va barcha baliqlar uchun rahmat. (Otostopchining Galaktikaga oid qo'llanmasining 4 -kitobi "trilogiyasi")

Tavsiya: