Мазмұны:

Көптеген қосқыштарды бір MCU түйреуішімен қалай оқуға болады: 4 қадам
Көптеген қосқыштарды бір MCU түйреуішімен қалай оқуға болады: 4 қадам

Бейне: Көптеген қосқыштарды бір MCU түйреуішімен қалай оқуға болады: 4 қадам

Бейне: Көптеген қосқыштарды бір MCU түйреуішімен қалай оқуға болады: 4 қадам
Бейне: PCA9685 және Arduino көмегімен 32 серво моторды басқару: V3 2024, Қараша
Anonim
Бір MCU түйреуішімен көптеген қосқыштарды қалай оқуға болады
Бір MCU түйреуішімен көптеген қосқыштарды қалай оқуға болады

Сіз бір кездері жобаны (жобаларды) қабылдамадыңыз ба, және сіз оған көп нәрсені қосқанда, жоба өсе береді және өседі (біз мұны «креативті шығармашылық» деп атаймыз)? Соңғы жобада мен жиілік өлшегіш құрдым және бес функционалды сигнал генераторы/жиілік синтезаторын қостым. Мен көп ұзамай қолымда түйреуіштерден гөрі көп қосқыштармен жарамды болдым, жігіт не істеуі керек?

Алайда, көп ұзамай менің Funbox -те тағы жеті қосқыш болды (иә, мен оны функция генераторы деп атадым … Мен білемін, менің шығармашылық қабілетім жоқ) және осында қалай жасауға болатынын көрсететін қысқа нұсқаулық бар. Ол ауысымдық регистрлерді немесе арнайы IC -ді қажет етпейді. Шын мәнінде, егер сіз дискретті жартылай өткізгіштер айналдырсаңыз, оған микроконтроллер қажет емес. AVR -де (немесе басқа микроконтроллерде … AVR -ден басқа басқа микроконтроллерлер бар деп естідім, бірақ мен елестете алмаймын) бір түйреуіш арқылы бірнеше қосқышты оқу/басқарудың бір жолы.:)

1 -қадам: негіздер (шынымен емес)

Мұны істеу үшін сізге бірнеше компоненттер қажет. Бұл сізге басқаруға болатын көптеген қосқыштардың болуына көмектеседі. Сондай-ақ, сізге резисторлар немесе ADC (аналогты-цифрлық түрлендіру) бар микроконтроллер немесе қосқыш қосылғанын және ол қандай қосқыш екенін көрсеткіңіз келетін басқа әдіс қажет болады.

Егер сіз қаласаңыз, кернеуді бақылайтын осцилляторды қолдана аласыз, мүмкін шамдары жыпылықтап тұрса немесе дыбыспен. Бұл кітапта мен AVR қолданамыз деп ойлаймын, бірақ сіздің әлемде сіз бақытты ететін нәрсені көрсете аласыз. Боб Россты сағындым.

2 -қадам: кернеуді бөлгіш

Кернеуді бөлуші
Кернеуді бөлуші
Кернеуді бөлуші
Кернеуді бөлуші

Негізінде, біз кернеуді бөлгіш деп аталатын техника мен схеманы қолдану арқылы шешеміз. Кернеуді бөлгіштер, сіз ойлағандай, кернеуді V,, in,, сіз анықтайтын мәнге бөледі. Сіз кернеуді бірнеше компоненттермен, оның ішінде конденсаторлар мен индукторлармен бөле аласыз, бірақ мен мұны жақсы резистормен жасаймын. Идея - біз екі компонентті тізбектей орналастыру, олардың әрқайсысы жеке компоненттегі кернеудің төмендеуіне әкеледі. Егер түсініксіз болса, бірінші суретке қараңыз. Темір жолдан теміржолға 9В потенциалды айырмашылық бар. 9В пен 0В арасында екі резистор сериялы болады. Олардың әрқайсысы кернеуге байланысты кернеудің төмендеуін сезінеді, мүмкін сіз V = IR -ден еске түсіресіз. Егер сіз екі резистордың арасындағы кернеуді өлшесеңіз, онда бірінші резистордың кернеуі қанша төмендегеніне және 0В -қа дейін 2 -ші резистордан қанша төмен түсуіне байланысты 9В пен 0В арасындағы мәнді аласыз. Бұл жағдайда резистордағы кернеудің төмендеуін есептеудің қарапайым формуласы бар және ол осылай көрінеді. Резистор 1 (R1) үстіндегі кернеу V1, ал резистор екіден жоғары (R2) V2 болсын. Мен енді пішімдеуді қолдана алмайтындықтан, формуланы төмендегі 2 -суреттен қараңыз … Сонымен, біздің резистивті бөлгіште Vout кернеуін біздің V2 формуламыз бойынша анықтауға болады (өйткені біз GND -ны 0В -қа сілтейтін боламыз). Мұның бір түйреуіштен ажыратқыштардың анықталуына қандай қатысы бар? Жарайды, бетті бұрыңыз, мен сізге көрсетемін!

3 -қадам: кернеуді бөлетін баспалдақ

Кернеуді бөлетін баспалдақ
Кернеуді бөлетін баспалдақ

Енді бізде барлық қосқыштар бар, мүмкін алты немесе сегіз немесе он алты, олардың барлығы резисторлар арқылы қосылған, олардың әрқайсысы кернеу бөлгішінің рөлін атқарады, осылайша қосқыш түйреуішінің күйі өзгергенде кернеу оқылады және кернеу деңгейіне негізделеді. қай қосқыштың жаңа қосылғанын біле алады. Төменге қараңыз. Төмендегі суретте мен қосқыштардың екі блогын қостым. Ең жоғарғы блокта екі қосқыш бар, ал ең төменгі блокта бес қосқыш бар. Сіз жеке қосқышты, лезде, тактильді және т.с.с қосқыштарды осылай қосуға болады. Назар аударатын маңызды нәрсе - сіздің қосқыңыз қосылған резистор. Менің мысалда, мен келесі резистордың қарсылығын екі есе арттырдым, ол кернеу саңылауын құрады, оны өлшеу оңай және қосқышқа дейін немесе кейін қателеспейді. Егер сіз бұрын байқамаған болсаңыз, қайтадан қараңыз және біз ескі досымызға резистивті кернеу бөлгішке қайта оралғанымызды біліңіз. Бірінші резистор, 10к Ом, 5В -қа қосылады және 2 -ші резистор - V -ды анықтайтын резистор.шығу SWITCH_ADC түйреуіші үшін әр қосқыш қосылады, сондықтан әрбір қосқыш белгілі бір Vout кернеуімен байланысты, оны SWITCH_ADC қосылған ADC түйреуішінен оқуға болады. Әрі қарай, әр қосқыштан күтілетін Vout -ты анықтаңыз

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

бірін ауыстыру үшін:

Vout = 5V * (500 / (10000 + 500)) = 5 * 0,048 = 0,24В немесе 240 мВ

екінші ауысу үшін:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0.18 = 0.9V немесе ~ 900mV

Егер сізде белгілі бір резисторлар болса, R2 -ге өз мәніңізді енгізуге болады … Мұнда ең бастысы - коммутаторлар арасындағы кернеудің жеткілікті бос кеңістігін сақтау, осылайша ADC кез келген қателік шегі жеңеді ' t сізді көрші қосқыштан күтілетін кернеуге қояды. Мен бөлу сатысын құру және ADC түйреуішіне мультиметр/вольтметр қою және әр түйреуішті басып, қандай мәндер алатынын білу үшін ең оңай нәрсені таптым. Олар сіз есептегенде өте жақсы болуы керек. Белгілі бір резисторды қолдана отырып, әр қосқыштан күтілетін кернеудің барлық мәндерін алғаннан кейін, сіз MCU -ге ADC түйреуішін оқып, оны белгілі мәндермен салыстырып, қандай қосқыш басылғанын анықтай аласыз. Мысалы, сіз ADC түйреуішінде өзгеріс анықталған кезде шақырылатын үзіліс қызметтерінің тәртібін тіркедіңіз делік. ISR ішінде сіз ADC -ды оқи аласыз және бұл мәнді коммутатор кестесімен салыстыра аласыз. Егер сіз 8-разрядты ADC мәнін қолдансаңыз, онда сіздің кернеуіңіз 0 мен 255 арасындағы санға айналады, ол 0 В пен 5 В арасындағы кернеуге сәйкес келеді. Бұл сіздің ADC осылайша конфигурацияланғанын болжайды.

4 -қадам: Қорытынды

Сонымен, енді сіз коммутаторларға арналған GPIO түйреуіштерін қалай үнемдеу керектігін білуіңіз керек. Сізде GPIO түйреуіштері азайып бара жатқанда немесе оны бастаудың қажеті жоқ, немесе егер сіз коммутаторлар банкін қолданатындығыңызды түсінсеңіз, резистивті бөлгіш - GPIO түйреуіштерін сақтап қалу әдісі. қосқышқа кіруді анықтаудың сенімді механизмі.

Ұсынылған: