Sadržaj:

5-žični otporni osjetnik na dodir: 10 koraka
5-žični otporni osjetnik na dodir: 10 koraka

Video: 5-žični otporni osjetnik na dodir: 10 koraka

Video: 5-žični otporni osjetnik na dodir: 10 koraka
Video: LW11 AGPTEK Smartwatch IP68: что нужно знать // Лучшие бюджетные часы на АлиЭкспресс 2024, Srpanj
Anonim
5-žični otporni osjetnik na dodir
5-žični otporni osjetnik na dodir

Bok bok!

Prošlo je dosta vremena od kada radim na ovoj stranici i čini se da se dosta toga promijenilo! Napokon sam spreman vratiti se za volan za još jedan projekt i mislim da je vrijeme da i ja malo promijenim stvari!

Neko sam vrijeme imao na umu projekt temeljen na 271828 Plate and Ball, ali moram puno naučiti o senzorima i teoriji upravljanja prije nego što završi. Mislio sam da ću vas, sve dok učim nešto, voditi sa sobom!

U tu će svrhu moj cilj ovih vodiča biti svojevrsni hibrid između mojih uglađenijih vodiča i zapis za sam projekt. Svaki pojedinačni vodič bit će jedan korak na tom putu i uključivat će pojedinosti koje sam prešućivao u prošlosti, poput razvoja koda (umjesto upravo dovršenog koda) i pogrešnih koraka koje usput učinim.

Vrlo sam uzbuđen zbog ovog novog projekta i s nestrpljenjem ću vidjeti koliko dobro funkcionira!

Danas ćemo dobiti jednostavnu 5-žičnu ploču osjetljivu na dodir koja radi s DP-32.

Započnimo!

Korak 1: Što će vam trebati

Što će vam trebati
Što će vam trebati

Budući da se u ovom vodiču radi o funkcioniranju jednog senzora, neće vam trebati puno osim mikrokontrolera i dodirne ploče.

  • Mikrokontroler.

    Koristim svoj DP32 s ugrađenom pločom za kruh jer čini izradu prototipa nevjerojatno jednostavnim

  • Razne žice i kabeli.

    Mogao sam upotrijebiti ugrađeni vrpčani kabel dodirne ploče, ali ako se pukne, cijela ploča je beskorisna. Umjesto toga, koristim 6-žični kabel za smanjenje naprezanja ugrađenog kabela

  • Naslovna 5-žična otporna ploča osjetljiva na dodir!

    Imao sam 4-žičnu otpornu ploču osjetljivu na dodir, ali je pukao vrpčni kabel

I to je to!

Korak 2: Što je 5-žična otporna ploča osjetljiva na dodir?

Što je 5-žična otporna ploča osjetljiva na dodir?
Što je 5-žična otporna ploča osjetljiva na dodir?
Što je 5-žična otporna ploča osjetljiva na dodir?
Što je 5-žična otporna ploča osjetljiva na dodir?
Što je 5-žična otporna ploča osjetljiva na dodir?
Što je 5-žična otporna ploča osjetljiva na dodir?

Ako ste pročitali moj 4-žični vodič na dodirnoj ploči, bit će vam poznata opća ideja o otpornom osjetniku na dodir, no 5-žične ploče i 4-žične ploče djeluju malo drugačije.

Sviđa mi se ova ploča jer možete vidjeti sve tragove žice, što olakšava vidjeti što radi što. Na prvoj slici sam obojila svaki trag drugačije. Vjerojatno možete vidjeti da po četiri žice (ružičasta, žuta, narančasta i ljubičasta) idu do jednog od četiri ugla. Srednja žica (crvena) ide na fleksibilnu ploču senzora.

Na drugoj slici postavili smo dvije od četiri žice (gore desno i dolje desno) na visoki napon (prikazano crvenom bojom), dok su ostale dvije (gore lijevo i dolje lijevo) postavljene na nisku napon (prikazan plavom bojom). To stvara gradijent napona po cijeloj ploči. U ovom slučaju gradijent ide duž osi X, pa veći napon predstavlja viši položaj duž osi X.

Kada prstom dodirnemo ploču, to potiskuje fleksibilni senzor, povezujući se negdje uz gradijent osi X. Senzori napona na našem mikrokontroleru mogu osjetiti ovaj napon i reći vam gdje na osi X vaš prst dodiruje!

Na trećoj slici možete vidjeti kako se konfiguracija mijenja kako bismo mogli osjetiti duž osi Y. Na ovaj način možemo reći gdje se u 2-D prostoru dodiruje naš prst!

Korak 3: Ožičenje

Ožičenje
Ožičenje
Ožičenje
Ožičenje

Kao što vjerojatno možete vidjeti na gornjim slikama, spojio sam svoja četiri ugla svaki na svoj digitalni izlazni pin. To će mi omogućiti da ih pojedinačno postavim na visoke ili niske. Moj pin osjetnika se spaja na pin za analogni ulaz. Lijepa stvar kod 5-žičnog zaslona osjetljivog na dodir, za razliku od 4-žičnog, je što vam je potreban samo jedan analogni pin, dok bi za 4-žični bila potrebna 2.

Vaše ožičenje može se razlikovati, naravno, ali moje ožičenje je sljedeće:

Analog 0 (pin 6) povezuje se sa senzorom (srednji pin)

Digital 3 povezuje se s gore-desno (krajnji pin)

Digital 2 povezuje se s gornje lijeve strane (drugi krajnji krajnji pin)

Digital 1 povezuje se s donjom lijevom stranom (drugi krajnji donji pin)

Digital 0 povezuje se s donjim desnim kutom (krajnji donji pin)

Opet valja napomenuti da koristim 6-žični kabel za prolaz između mikrokontrolera i ploče. Ostavio sam gornji pin ovog kabela nepovezan.

Korak 4: Razvoj softvera

Razvoj softvera
Razvoj softvera

U prošlosti sam obično ispuštao dovršenu softversku datoteku koju ste mogli koristiti, možda s kratkim uvidom u sve što radi. Ne sviđa mi se to. Želim da se u ovoj seriji radi o projektima u razvoju, te ću u tu svrhu uključiti stvarni razvoj ovog softvera od početka do kraja.

Kao i obično, koristit ću Arduino IDE, s jezgrom Digilent. Svaki odjeljak će sadržavati datoteku koda, snimak zaslona, kao i opis dodataka i onoga što pokušavamo postići.

Za sada počinjem s jednostavnim programom treptanja u stilu odgode, potpuno istim kao što biste pronašli u mapi Primjeri. Ako pročitate to dugačko zaglavlje koje sam napisao, vidjet ćete da će svaki korak u ovom procesu izmijeniti program kako bi ga približio našem krajnjem cilju.

Korak 5: Treptanje državnog stroja

Državni stroj Trepće
Državni stroj Trepće

Moj prvi potez je promijeniti funkciju treptanja s one na temelju "delay ()" u stroj za stanje.

Za one koji nisu navikli mijenjati naredbe, radi slično kao if-izraz. Ovaj (u narančastom okviru) testira našu varijablu "stanje" (koja počinje s 0). Zatim se prelazi na slučaj našeg trenutnog stanja. Vidjet ćete da su slučajevi 0 i 2 odgovorni za uključivanje i isključivanje LED -a (respektivno), dok su slučajevi 1 i 3 odgovorni za čekanje između prekidača.

Korak 6: Treptanje tipke

Treptanje gumba
Treptanje gumba
Treptanje gumba
Treptanje gumba
Treptanje gumba
Treptanje gumba

Zatim sam želio da se gumb koristi za treptanje svjetla. Umjesto da ovo previše kompliciram, samo sam pomaknuo sva stanja prema dolje za jedno (stanje 0 postaje stanje 1 itd.). Pri tome pazite da povećate izlazna stanja kao i samo stanje (vidi sliku 3).

Izbrisao sam i drugo stanje "čekanja". To znači da gumb uključuje svjetlo na jednu sekundu, a gumb možete ponovno pritisnuti odmah nakon što se isključi.

Vrijedi napomenuti da ovaj sustav umjesto nas automatski uklanja tipku jer moramo pričekati da se LED ugasi prije nego se vratimo u stanje 0 gdje gumb može ponovno pokrenuti ciklus.

Korak 7: Serijska komunikacija

Serijska komunikacija
Serijska komunikacija
Serijska komunikacija
Serijska komunikacija

Ovo ažuriranje je vrlo malo. Sve što sam htio učiniti je uspostaviti serijsku vezu i slati poruke. Na prvoj slici možete vidjeti da započinjem serijski u funkciji setup (). Unutar našeg državnog stroja dodao sam retke u stanje 1 i 3 koji će slati jednostavne poruke na računalo serijskim putem.

Korak 8: Čitanje koordinata

Čitanje koordinata
Čitanje koordinata
Čitanje koordinata
Čitanje koordinata
Čitanje koordinata
Čitanje koordinata
Čitanje koordinata
Čitanje koordinata

Dobro je što je zadnji korak bio lak, jer je ovaj bio užasan.

Za početak, dodao sam varijable za našu dodirnu ploču, uključujući neke namjenske varijable vremena i za dodirnu ploču i za naš gumb. Uskoro ćete vidjeti zašto.

Potpuno sam prepisao državni stroj. Malo je zbunjujuće pogledati kod, pa sam uključio blok dijagram koji bi trebao ilustrirati učinjeno.

Napomene: Sada postoje tri koraka "čekanja". Jedan za svaku konfiguraciju dodirne ploče, kako bi se naponi smirili prije mjerenja, a jedan za davanje vremena gumbu da se pravilno oslobodi. Ovi koraci čekanja su razlog zašto sam i gumbu i dodirnoj ploči želio dati vlastite vremenske varijable.

Napomena: DEBOUNCE_TIME konstanta može biti malo niska. Slobodno ga povećajte.

Korak 9: Čišćenje

Čišćenje
Čišćenje
Čišćenje
Čišćenje
Čišćenje
Čišćenje

Stigli smo do konačne verzije koda za ovaj projekt!

Za početak, dodao sam funkciju koja se zove loop_diff () za izračunavanje proteklog vremena. Unutarnji sat za DP32 je nepotpisan i, iako je to iznimno malo vjerojatno, postoji mogućnost da bi se sat mogao petljati tijekom izvođenja ovog koda*. U tom slučaju, jednostavno oduzimanje trenutnog vremena od vremena spremljenog u btn_time ili panel_time dat će nam nešto čudno, pa sam napisao loop_diff () da otkrijem kada se pojave petlje i ponašam se u skladu s tim.

Također sam napravio malo manje čišćenje. Uklonio sam sada neiskorištenu varijablu "state_time". Prešao sam s oznake LED_BUILTIN (koja je Arduino standard) na oznaku PIN_LED1 (koja je standardna za chipKit i DP32). Također sam uklonio sve poruke kroz Serial o pokretanju i okončanju procesa, što naše podatke kroz Serial čini mnogo čistijim.

*Računao sam prije mnogo godina i mislim da bi za funkciju millis () bilo potrebno otprilike tjedan dana konstantnog vremena izvođenja prije nego što bi se varijabla petljala.

Korak 10: Završne misli

Završne misli
Završne misli

I to je to!

Ako ste slijedili, sada biste trebali imati radnu ploču osjetljivu na dodir spojenu na vaš mikrokontroler! Ovo je bio mali projekt, ali dio je većeg projekta. Radim na nečemu poput 271828's Plate and Ball, i imam dug put do toga da se to dogodi. Pokušat ću vas povesti tijekom cijelog procesa, a svaki dio trebao bi biti vlastiti mali projekt.

Ovo je za mene proces učenja, stoga slobodno ostavite svoje misli i prijedloge u komentarima ispod.

Hvala, vidimo se sljedeći put!

Preporučeni: