Satura rādītājs:

Izmantojiet 1 analogo ievadi 6 pogām Arduino: 6 soļi
Izmantojiet 1 analogo ievadi 6 pogām Arduino: 6 soļi

Video: Izmantojiet 1 analogo ievadi 6 pogām Arduino: 6 soļi

Video: Izmantojiet 1 analogo ievadi 6 pogām Arduino: 6 soļi
Video: How to Make PLC LCD HMI || FLProg 2024, Jūlijs
Anonim
Arduino izmantojiet 1 analogo ievadi 6 pogām
Arduino izmantojiet 1 analogo ievadi 6 pogām

Es bieži domāju, kā es varētu iegūt vairāk digitālo ieeju savam Arduino. Nesen man ienāca prātā, ka man vajadzētu būt iespējai izmantot vienu no analogās ieejas, lai ievadītu vairākas digitālās ieejas. Es ātri meklēju un atklāju, kur cilvēki to varēja izdarīt, bet tas ļāva nospiest tikai vienu pogu vienlaikus. Es vēlos, lai būtu iespēja, ka pogas ir jānospiež VIENKĀRŠI. Tātad, ar TINKERCAD CIRCUITS palīdzību es nolēmu to īstenot.

Kāpēc man vajadzētu vienlaicīgi nospiest pogas? Kā parādīts TinkerCad shēmu dizainā, to var izmantot DIP slēdža ieejām dažādu režīmu izvēlei programmā.

Shēma, kuru es izdomāju, izmanto 5 V avotu, kas pieejams no Arduino, un izmanto 7 rezistorus un 6 pogas vai slēdžus.

1. solis: ķēde

Ķēde
Ķēde

Arduino ir analogās ieejas, kas pieņem 0V līdz 5V ieeju. Šai ieejai ir 10 bitu izšķirtspēja, kas nozīmē, ka signāls ir sadalīts 2^10 segmentos jeb 1024 skaitļos. Pamatojoties uz to, visvairāk, ko mēs jebkad varētu ievadīt analogā ieejā, vienlaikus nospiežot vienlaicīgi, būtu 10 pogas uz 1 analogo ieeju. Bet šī nav ideāla pasaule. Ir pretestība vadītājos, troksnis no ārējiem avotiem un nepilnīga jauda. Tātad, lai sniegtu sev daudz elastības, es plānoju to izveidot 6 pogām. To daļēji ietekmēja fakts, ka TinkerCAD shēmām bija 6 slēdžu DIP slēdža objekts, kas atvieglos testēšanu.

Pirmais solis manā dizainā bija pārliecināties, ka katra poga, nospiežot atsevišķi, nodrošinās unikālu spriegumu. Tas izslēdza, ka visiem rezistoriem ir vienāda vērtība. Nākamais solis bija tāds, ka pretestības vērtībām, pievienojot tās paralēli, nevar būt tāda pati pretestība kā jebkurai atsevišķai rezistora vērtībai. Ja rezistori ir savienoti paralēli, iegūto pretestību var aprēķināt pēc Rx = 1/[(1/R1)+(1/R2)]. Tātad, ja R1 = 2000 un R2 = 1000, Rx = 667. Es spekulēju, ka, dubultojot katra rezistora izmēru, es neredzētu tādu pašu pretestību nevienai no kombinācijām.

Tātad, manai shēmai līdz šim bija jābūt 6 slēdžiem, katram ar savu rezistoru. Bet, lai pabeigtu šo ķēdi, ir nepieciešams vēl viens rezistors.

Pēdējam rezistoram ir 3 mērķi. Pirmkārt, tas darbojas kā nolaižams rezistors. Bez rezistora, kad netiek nospiesta neviena poga, ķēde ir nepilnīga. Tas ļautu Arduino analogās ieejas spriegumam peldēt līdz jebkuram sprieguma potenciālam. Nolaižamais rezistors būtībā samazina spriegumu līdz 0 V. Otrs mērķis ir ierobežot šīs ķēdes strāvu. Oma likums nosaka, ka V = IR vai spriegums = strāva, kas reizināta ar pretestību. Ar noteiktu sprieguma avotu lielāks rezistors nozīmē, ka strāva būs mazāka. Tātad, ja 5 V signāls tiktu piemērots 500 omu rezistoram, lielākā strāva, ko mēs varētu redzēt, būtu 0, 01A vai 10 mA. Trešais mērķis ir nodrošināt signāla spriegumu. Kopējā strāva, kas plūst caur pēdējo rezistoru, būtu: i = 5V/Rtotal, kur Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Tomēr katram rezistoram, kuram ir nospiesta atbilstošā poga, iekļaujiet tikai 1/Rx. No kopējās strāvas spriegums, kas tiek piegādāts analogā ieejā, būtu i*Rlast vai i*500.

2. darbība: pierādījums - Excel

Pierādījums - Excel
Pierādījums - Excel

Ātrākais un vienkāršākais veids, kā pierādīt, ka ar šo shēmu iegūtu unikālu pretestību un līdz ar to arī unikālus spriegumus, bija izmantot Excel iespējas.

Es iestatīju visas iespējamās slēdžu ievades kombinācijas un sakārtoju tās secīgi, ievērojot bināros modeļus. Vērtība "1" norāda, ka slēdzis ir ieslēgts, tukšs norāda, ka tas ir izslēgts. Izklājlapas augšpusē es ievietoju pretestības vērtības katram slēdzim un nolaižamajam rezistoram. Pēc tam es aprēķināju ekvivalentu pretestību katrai kombinācijai, izņemot gadījumus, kad visi rezistori ir izslēgti, jo šie rezistori neietekmēs, ja to nedos barošanas avots. Lai atvieglotu aprēķinus un varētu kopēt un ielīmēt katrā kombinācijā, visas kombinācijas iekļāvu aprēķinā, reizinot katru slēdža vērtību (0 vai 1) ar apgriezto pretestības vērtību. To darot, aprēķinā tika izslēgta tā pretestība, ja slēdzis bija izslēgts. Iegūto vienādojumu var redzēt izklājlapas attēlā, bet Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Izmantojot Itotal = 5V / Req, mēs nosakām kopējo strāvu caur ķēdi. Šī ir tā pati strāva, kas iet caur nolaižamo rezistoru un nodrošina mūsu analogās ieejas spriegumu. To aprēķina kā Vin = Itotal x Rx. Pārbaudot gan Req datus, gan Vin datus, mēs redzam, ka mums patiešām ir unikālas vērtības.

Šajā brīdī šķiet, ka mūsu ķēde darbosies. Tagad izdomājiet, kā programmēt Arduino.

3. darbība: Arduino programmēšana

Arduino programmēšana
Arduino programmēšana
Arduino programmēšana
Arduino programmēšana
Arduino programmēšana
Arduino programmēšana

Kad es sāku domāt par to, kā programmēt Arduino, es sākotnēji plānoju iestatīt atsevišķus sprieguma diapazonus, lai noteiktu, vai slēdzis ir ieslēgts vai izslēgts. Bet, vienu nakti guļot gultā, man ienāca prātā, ka man vajadzētu atrast vienādojumu, kā to izdarīt. Kā? EXCEL. Programmai Excel ir iespēja aprēķināt vienādojumus, lai tie vislabāk atbilstu diagrammas datiem. Lai to izdarītu, es vēlos slēdžu (bināro) vesela skaitļa vienādojumu pret spriegumu, kas atbilst šai vērtībai. Manā Excel darbgrāmatā es ievietoju vesela skaitļa vērtību izklājlapas kreisajā pusē. Tagad, lai noteiktu manu vienādojumu.

Šeit ir īsa apmācība par to, kā programmā Excel noteikt vienādojumu.

1) Atlasiet šūnu, kurā nav datu. Ja esat atlasījis šūnu, kurā ir dati, programma Excel mēģinās uzminēt, kāda ir tendence. Tas ievērojami apgrūtina tendences noteikšanu, jo Excel reti pareizi prognozē.

2) Atlasiet cilni "Ievietot" un atlasiet "Izkliedes" diagrammu.

3) Ar peles labo pogu noklikšķiniet diagrammas lodziņā un noklikšķiniet uz "Atlasīt datus …". Tiks atvērts logs "Atlasīt datu avotu". Atlasiet pogu Pievienot, lai turpinātu atlasīt datus.

4) Piešķiriet tam sērijas nosaukumu (pēc izvēles). Atlasiet X ass diapazonu, noklikšķinot uz augšupvērstās bultiņas un pēc tam atlasot sprieguma datus. Izvēlieties Y ass diapazonu, noklikšķinot uz augšupvērstās bultiņas un pēc tam atlasot Vesela skaitļa dati (0-63).

5) Ar peles labo pogu noklikšķiniet uz datu punktiem un izvēlieties "Pievienot tendenču līniju …" Logā "Formatēt tendenci" atlasiet pogu Polynomial. Aplūkojot tendenci, mēs redzam, ka pasūtījums 2 gluži nesakrīt. Es izvēlējos 3 pasūtījumu un uzskatīju, ka tas ir daudz precīzāk. Atzīmējiet izvēles rūtiņu "Parādīt vienādojumu diagrammā". Galīgais vienādojums tagad tiek parādīts diagrammā.

6) Gatavs.

LABI. Atpakaļ pie Arduino programmas. Tagad, kad mums ir vienādojums, Arduino programmēšana ir vienkārša. Veselais skaitlis, kas apzīmē slēdža pozīcijas, tiek aprēķināts 1 koda rindā. Izmantojot "bitread" funkciju, mēs varam iegūt katra atsevišķa bita vērtību un tādējādi uzzināt katras pogas stāvokli. (SKATĪT FOTOATTĒLUS)

4. solis: TinkerCAD shēmas

TinkerCAD shēmas
TinkerCAD shēmas

Ja neesat pārbaudījis TinkerCAD shēmas, dariet to tūlīt. GAIDIET !!!! Pabeigt lasīt manu pamācību un pēc tam to pārbaudīt. TinkerCAD shēmas padara Arduino shēmu pārbaudi ļoti vienkāršu. Tas ietver vairākus elektriskos objektus un Arduinos, pat ļaujot programmēt Arduino testēšanai.

Lai pārbaudītu ķēdi, es iestatīju 6 slēdžus, izmantojot DIP slēdžu komplektu, un piesaistīju tos rezistoriem. Lai pierādītu, ka manā Excel izklājlapā esošā sprieguma vērtība bija pareiza, ievadot Arduino, parādīju voltmetru. Tas viss strādāja, kā gaidīts.

Lai pierādītu, ka Arduino programmēšana darbojās, es izslēdzu slēdžu stāvokļus uz LED, izmantojot Arduino digitālās izejas.

Pēc tam es pārslēdzu katru slēdzi katrai iespējamai kombinācijai un ar lepnumu saku "IT WORKS" !!!

5. solis: "Tik ilgi un paldies par visām zivīm." (1. atsauce)

Man vēl nav jāizmēģina, izmantojot reālu aprīkojumu, jo es šobrīd ceļoju darba dēļ. Bet pēc tam, kad esmu to pierādījis ar TinkerCAD shēmām, es uzskatu, ka tas darbosies. Izaicinājums ir tāds, ka manis norādītās rezistoru vērtības nav visas rezistoru standarta vērtības. Lai to apietu, es plānoju izmantot potenciometrus un rezistoru kombinācijas, lai iegūtu man nepieciešamās vērtības.

Paldies, ka izlasījāt manu pamācību. Es ceru, ka tas jums palīdzēs jūsu projektos.

Lūdzu, atstājiet komentārus, ja esat mēģinājis pārvarēt šo pašu šķērsli un kā jūs to atrisinājāt. Es labprāt uzzinātu vairāk veidu, kā to izdarīt.

6. darbība: atsauces

Vai jūs nedomājāt, ka es sniegšu citātu, nenorādot tā avotu?

ref. 1: Ādams, Duglass. Tik ilgi un paldies par visām zivīm. ("Triloģijas ceļotāja ceļvedis galaktikā" 4. grāmata)

Ieteicams: