Мазмұны:

Arduino үшін 6 түйме үшін 1 аналогты кірісті қолданыңыз: 6 қадам
Arduino үшін 6 түйме үшін 1 аналогты кірісті қолданыңыз: 6 қадам

Бейне: Arduino үшін 6 түйме үшін 1 аналогты кірісті қолданыңыз: 6 қадам

Бейне: Arduino үшін 6 түйме үшін 1 аналогты кірісті қолданыңыз: 6 қадам
Бейне: Үйді автоматтандыру: Robojax Arduino Relay Timer V 1.0 2024, Шілде
Anonim
Arduino үшін 6 түйме үшін 1 аналогтық кірісті пайдаланыңыз
Arduino үшін 6 түйме үшін 1 аналогтық кірісті пайдаланыңыз

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

Неліктен мен түймені бір мезгілде басуды қалаймын? TinkerCad Circuits дизайнында көрсетілгендей, оны бағдарлама ішіндегі әр түрлі режимдерді таңдау үшін DIP қосқыш кірістері үшін пайдалануға болады.

Мен ойлап тапқан схема Arduino қол жетімді 5В көзін пайдаланады және 7 резистор мен 6 түйме немесе қосқышты қолданады.

1 -қадам: Цикл

Цикл
Цикл

Arduino -да аналогтық кірістер бар, олар 0В -тан 5В -қа дейінгі кірісті қабылдайды. Бұл кіріс 10 биттік ажыратымдылыққа ие, яғни сигнал 2^10 сегментке немесе 1024 санауға бөлінгенін білдіреді. Осыған сүйене отырып, біз бір уақытта басуға мүмкіндік беретін аналогтық кіріске енгізу мүмкін болатын ең көп нәрсе - 10 түйме 1 аналогтық кіріс. Бірақ, бұл мінсіз дүние емес. Өткізгіштерде кедергі, сыртқы көздерден шу және жетілмеген қуат бар. Өзіме икемділік беру үшін мен оны 6 түйме үшін жобалауды жоспарладым. Бұған ішінара TinkerCAD тізбектерінде тестілеуді жеңілдететін 6 ауыспалы DIP қосқыш объектісінің болуы әсер етті.

Менің дизайндағы бірінші қадам - әр түймені жеке басқанда бірегей кернеуді қамтамасыз ететініне көз жеткізу. Бұл барлық резисторлардың мәні бірдей екенін жоққа шығарды. Келесі қадам - қарсылық мәндері, параллель қосылған кезде, кез келген бір резисторлық мәнмен бірдей кедергіге ие бола алмады. Резисторлар параллель қосылған кезде, алынған қарсылықты Rx = 1/[(1/R1)+(1/R2)] арқылы есептеуге болады. Сонымен, егер R1 = 2000 және R2 = 1000 болса, Rx = 667. Мен әр резистордың көлемін екі есе көбейту арқылы мен комбинацияның ешқайсысы үшін бірдей қарсылық көрмейтінін болжадым.

Осылайша, менің тізбегімде әрқайсысы жеке резисторы бар 6 ажыратқыш болуы керек еді. Бірақ бұл тізбекті аяқтау үшін тағы бір резистор қажет.

Соңғы резистордың 3 мақсаты бар. Біріншіден, ол төмен түсетін резистор ретінде әрекет етеді. Резисторсыз, ешқандай түйме басылмаса, схема толық болмайды. Бұл Arduino аналогтық кірісіндегі кернеудің кез келген кернеу потенциалына ауысуына мүмкіндік береді. Тартылатын резистор кернеуді 0 В дейін төмендетеді. Екінші мақсат-осы тізбектің ток күшін шектеу. Ом заңы V = IR, немесе кернеу = ток қарсылыққа көбейтіледі деп көрсетеді. Берілген кернеу көзінде резистор неғұрлым үлкен болса, ток аз болады дегенді білдіреді. Сонымен, егер 500 Ом резисторға 5В сигнал берілсе, біз көре алатын ең үлкен ток 0,01А немесе 10мА болады. Үшінші мақсат - сигнал кернеуін қамтамасыз ету. Соңғы резистор арқылы өтетін жалпы ток: 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
Дәлелдеу - Excel

Мен бірегей қарсылыққа ие болатындығымды дәлелдеудің ең жылдам және қарапайым әдісі - осы схемада бірегей кернеулер - Excel мүмкіндіктерін пайдалану.

Мен коммутаторлық кірістердің мүмкін болатын барлық комбинациясын орнаттым және осы екілік үлгілерді ретімен реттедім. «1» мәні қосқыштың қосулы екенін, бос орынның өшірілгенін көрсетеді. Электрондық кестенің жоғарғы жағында мен әр қосқыш үшін және төмен түсетін резистор үшін қарсылық мәндерін енгіздім. Содан кейін мен комбинациялардың әрқайсысы үшін эквивалентті қарсылықты есептедім, егер барлық резисторлар өшірулі болса, қоспағанда, бұл резисторларда қуат көзі болмаса аффект болмайды. Әр комбинацияға көшіру және қою үшін менің есептеулерімді жеңілдету үшін мен әр коммутатордың мәнін (0 немесе 1) кері қарсылық мәніне көбейту арқылы есептеуге барлық комбинацияларды енгіздім. Осылайша, егер ажыратқыш өшірулі болса, оның қарсылығын есептеуден жояды. Алынған теңдеуді электрондық кестенің суретінен көруге болады, бірақ Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Itotal = 5V / Req көмегімен тізбек арқылы өтетін жалпы токты анықтаймыз. Бұл төмен түсетін резистор арқылы өтетін және бізге аналогтық кіріске кернеуді беретін ток. Бұл Vin = Itotal x Rx ретінде есептеледі. Req деректерін де, Vin деректерін де зерттей отырып, бізде шын мәнінде бірегей құндылықтар бар екенін көре аламыз.

Бұл кезде біздің схема жұмыс істейтін сияқты. Енді Arduino -ны қалай бағдарламалау керектігін білейік.

3 -қадам: Arduino бағдарламалау

Arduino бағдарламалау
Arduino бағдарламалау
Arduino бағдарламалау
Arduino бағдарламалау
Arduino бағдарламалау
Arduino бағдарламалау

Мен Arduino -ны қалай бағдарламалау туралы ойлана бастаған кезде, мен бастапқыда қосқыштың қосулы немесе өшірулі екенін анықтау үшін жеке кернеу диапазондарын орнатуды жоспарладым. Бірақ бір түнде төсекте жатып, мен мұны істеу үшін теңдеу табуым керек деп ойладым. Қалай? EXCEL. Excel бағдарламасы диаграммадағы мәліметтерді ең жақсы орналастыру үшін теңдеулерді есептей алады. Мұны істеу үшін мен қосқыштардың бүтін мәнінің (екілік) мәніне сәйкес кернеу кірісінің теңдеуін алғым келеді. Мен Excel жұмыс кітабында бүтін мәнді электрондық кестенің сол жағына қойдым. Енді менің теңдеуді анықтау үшін.

Excel бағдарламасындағы сызықтың теңдеуін қалай анықтауға болатындығы туралы қысқаша нұсқаулық.

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

2) «Кірістіру» қойындысын таңдап, «Таралу» диаграммасын таңдаңыз.

3) Диаграмма өрісінде тінтуірдің оң жақ түймешігімен шертіңіз және «Деректерді таңдау …» түймесін басыңыз. Бұл «Деректер көзін таңдау» терезесінде пайда болады. Деректерді таңдауды жалғастыру үшін Қосу түймесін басыңыз.

4) Оған сериялық атау беріңіз (міндетті емес). Жоғарғы көрсеткіні нұқып, содан кейін кернеу деректерін таңдау арқылы X осінің ауқымын таңдаңыз. Y-осінің ауқымын жоғары көрсеткіні басып, содан кейін Бүтін деректерді таңдау арқылы таңдаңыз (0-63).

5) Деректер нүктелерін тінтуірдің оң жақ түймешігімен нұқыңыз және «Тренд сызығын қосу…» тармағын таңдаңыз. Трендке қарасақ, 2 -ші ретті сәйкес келмейтінін көреміз. Мен 3 -ші орденді таңдадым және бұл дәлірек екенін сездім. «Диаграммадағы теңдеуді көрсету» құсбелгісін қойыңыз. Соңғы теңдеу қазір диаграммада көрсетіледі.

6) Орындалды.

ЖАРАЙДЫ МА. Arduino бағдарламасына оралу. Енді бізде теңдеу бар, Arduino бағдарламалау оңай. Коммутатор позицияларын білдіретін бүтін сан кодтың 1 жолында есептеледі. «Ажырату» функциясын қолдана отырып, біз әрбір жеке бит мәнін ала аламыз және осылайша әр түйменің күйін біле аламыз. (ФОТО КӨРУ)

4 -қадам: TinkerCAD схемалары

TinkerCAD схемалары
TinkerCAD схемалары

Егер сіз TinkerCAD схемаларын тексермеген болсаңыз, қазір жасаңыз. КҮТІҢІЗ !!!! Менің нұсқаулықты оқуды аяқтаңыз, содан кейін тексеріңіз. TinkerCAD схемалары Arduino схемаларын тексеруді өте жеңілдетеді. Оған бірнеше электрлік объектілер мен Arduino кіреді, тіпті Arduino -ны тестілеуге бағдарламалауға мүмкіндік береді.

Менің схемамды тексеру үшін мен DIP қосқыш пакетін қолдана отырып, 6 қосқышты орнатып, оларды резисторларға байладым. Excel электрондық кестесіндегі кернеудің мәні дұрыс екенін дәлелдеу үшін мен Arduino кірісіне вольтметрді көрсеттім. Мұның бәрі күткендей жұмыс істеді.

Arduino бағдарламалау жұмыс істегенін дәлелдеу үшін мен Arduino сандық шығысын қолдана отырып, светодиоды қосқыштардың күйін шығардым.

Содан кейін мен әр коммутаторды мүмкін болатын комбинацияға ауыстырдым және мақтанышпен «IT WORKS» деп айтамын !!!

5 -қадам: «Ұзақ және барлық балықтар үшін рахмет». (сілтеме 1)

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

Менің нұсқаулықты оқығаныңыз үшін рахмет. Бұл сіздің жобаларыңызға көмектеседі деп сенемін.

Егер сіз дәл осы кедергімен күресуге тырыссаңыз және оны қалай шешкен болсаңыз, пікір қалдырыңыз. Мен мұны істеудің басқа жолдарын білгім келеді.

6 -қадам: Әдебиеттер

Сіз оның көзіне сілтеме жасамай -ақ, баға ұсынамын деп ойламадыңыз ба?

сілтеме 1: Адамс, Дуглас. Ұзақ және барлық балықтар үшін рахмет. (Автохикиктің Галактикаға арналған нұсқаулығының 4 -ші кітабы «трилогиясы»)

Ұсынылған: