Съдържание:

Как да прочетете много превключватели с един щифт за MCU: 4 стъпки
Как да прочетете много превключватели с един щифт за MCU: 4 стъпки

Видео: Как да прочетете много превключватели с един щифт за MCU: 4 стъпки

Видео: Как да прочетете много превключватели с един щифт за MCU: 4 стъпки
Видео: BAM, BUILDERS OF THE ANCIENT MYSTERIES - 4K CINEMA VERSION FULL MOVIE 2024, Ноември
Anonim
Как да прочетете много превключватели с един щифт за MCU
Как да прочетете много превключватели с един щифт за MCU

Били ли сте някога да се отдръпвате от даден проект (и) и проектът продължава да расте и да расте, докато добавяте още неща към него (ние го наричаме Feaping Creaturism)? В скорошен проект изграждах честотомер и добавих генератор на сигнали с пет функции/честотен синтезатор. Скоро се оказах с повече превключватели, отколкото ми бяха останали налични щифтове, така че какво да прави човек?

Скоро обаче имах още седем превключвателя на моя Funbox (да, така нарекох моя генератор на функции … Знам, нямам креативност) и ето кратка инструкция, която ви показва как можете да направите същото. Не изисква никакви регистри на смяна или специфични интегрални схеми. Всъщност не се изисква и микроконтролер, ако дискретните полупроводници са начинът, по който се търкаля. Ето един начин, по който можете да четете/управлявате множество превключватели, като използвате един щифт на вашия AVR (или друг микроконтролер … Чувал съм, че има и други микроконтролери освен AVR, но не мога да си представя …).:)

Стъпка 1: Основните неща (не наистина)

За да постигнете това, ще ви трябват няколко компонента. Помага да имате множество ключове, които трябва да управлявате. Ще ви трябват и някои резистори и или микроконтролер, който има ADC (аналогово-цифрово преобразуване), или по друг начин, по който искате да посочите, че е активиран превключвател и кой превключвател е бил.

Ако искате, можете да използвате осцилатор, управляван от напрежение, за да посочите това, може би с някои мигащи светлини или алтернативно със звук. В тази таблица ще се преструвам, че използваме AVR, но във вашия свят можете да се преструвате на всичко, което ви прави щастливи. Липсва ми Боб Рос.

Стъпка 2: Делител на напрежение

Делител на напрежение
Делител на напрежение
Делител на напрежение
Делител на напрежение

По същество начинът, по който ще направим това, е чрез използване на техника и верига, наречени делител на напрежение. Делителите на напрежение, както може би се досещате, разделят V,, in,, напрежението на определена от вас стойност. Можете да разделите напрежението с няколко компонента, включително кондензатори и индуктори, но тук ще го направя с добрия резистор. Идеята Това, което правим, е да поставяме два компонента в серия, които ще причинят, всеки поотделно, спад на напрежението в компонента. Погледнете първата снимка, ако нямам смисъл. Има потенциална разлика от 9V от релса до релса. Между 9V и 0V има два последователно резистора. Всеки от тях ще изпита спад на напрежението върху себе си, в зависимост от съпротивлението, както вероятно си спомняте от V = IR. Ако направите измерване на напрежение между двата резистора, ще получите някаква стойност между 9V и 0V, в зависимост от това колко напрежение е спаднало през първия резистор и колко остава да падне над втория резистор, преди 0V. В тази ситуация има ясна формула за изчисляване на спада на напрежението в резистор и изглежда така. Нека напрежението над резистор 1 (R1) да бъде V1, а напрежението над резистор два (R2) да бъде V2. Тъй като вече не мога да използвам форматиране, погледнете снимка 2 по -долу за формулата … Така че, в нашия резистивен делител, напрежението Vout може да бъде определено по нашата формула за V2 (тъй като ще се позоваваме на GND на 0V). Какво общо има това с това, че куп ключове се откриват от един щифт? Е, обърнете страницата и ще ви покажа!

Стъпка 3: Стълба с делител на напрежение

Делител на напрежение стълба
Делител на напрежение стълба

Да предположим, че имаме всичките си превключватели, може би шест или осем или шестнадесет, всички свързани чрез резистори, всеки от които действа като делител на напрежение, така че когато състоянието на щифта на превключвателя се промени, напрежението се отчита и въз основа на нивото на напрежение, ние може да знае кой ключ е току -що активиран. Погледнете по -долу. На снимката по -долу съм свързал два блока превключватели. Най-горният блок има два превключвателя, а най-долният блок има пет превключвателя. Можете да свържете отделните си превключватели, моментни, тактилни и т.н. превключватели по същия начин. Важното, което трябва да забележите, е резисторът, към който е свързан вашият превключвател. В моя пример почти удвоих съпротивлението на следващия резистор, за да създам напрежение, което е лесно да се измери и да не се сбърка с превключвателя преди или след. Ако не сте забелязали преди, погледнете отново и осъзнайте, че се връщаме към нашия стар приятел резистивния делител на напрежение. Първият резистор, 10k ohm, е свързан към 5V, а вторият резистор - резисторът, който ще определи Vнавън за щифт SWITCH_ADC, е свързан към всеки превключвател и следователно всеки превключвател е свързан с определено напрежение Vout, което може да се отчете от щифта ADC, свързан към SWITCH_ADC. След това определете очаквания Vout от всеки превключвател така

Vout = Vin * (R2 / (R1 + R2))

за превключвател едно:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0.048 = 0.24V или 240 mV

за превключвател две:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V или ~ 900mV

и така нататък. Чувствайте се свободни да замените в собствените си стойности R2, ако имате само определени резистори под ръка … Ключовото тук е да поддържате достатъчно широка празнина в напрежението между превключвателите, така че всяка граница на грешка на ADC да спечели ' не ви поставя в напрежението, очаквано от съседен превключвател. Открих, че най -лесното нещо, което трябва да направите, е да изградите разделителната стълба и да поставите мултицет/волтметър върху щифта на ADC и да натиснете всеки щифт и да видите какви стойности получавате. Те трябва да са доста на място за това, което изчислявате. След като имате всички очаквани стойности на напрежение от всеки превключвател, използвайки определен резистор, тогава можете да накарате вашия MCU да прочете щифта на ADC и да го сравни с вашите известни стойности, за да определи кой превключвател е натиснат. Например, да речем, че сте регистрирали рутинна услуга за прекъсване, която ще се извиква всеки път, когато има открита промяна на щифта на ADC. Вътре в този ISR можете да прочетете ADC и да сравните тази стойност с таблицата за превключване. Ако използвате 8-битова стойност на ADC, вашето напрежение ще бъде преобразувано в число между 0 и 255, което съответства на напрежение между 0V и 5V. Това предполага, че ADC е конфигуриран по този начин.

Стъпка 4: Обобщение

Така че, сега трябва да знаете как да бъдете пестеливи при използването на GPIO щифтове за ключове. Всеки път, когато изчерпвате GPIO пиновете или едва ли имате такива за начало, или ако осъзнавате, че ще използвате група от ключове, резистивният разделител е начинът да запазите вашите GPIO пинове, като същевременно предоставяте здрав механизъм за откриване на комутационен достъп.

Препоръчано: