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, Juli
Anonim
5-žični otporni osjetnik na dodir
5-žični otporni osjetnik na dodir

Zdravo zdravo!

Prošlo je dosta vremena od kada radim na ovoj stranici i čini se da se dosta toga promijenilo! Konačno sam spreman da se vratim za volan za još jedan projekat i mislim da je vreme da i ja malo promenim stvari!

Već neko vrijeme imam na umu projekt zasnovan 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 svrhu, moj cilj ovih vodiča bit će 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 detalje koje sam već prešućivao, poput razvoja koda (umjesto upravo dovršenog koda) i pogrešnih koraka koje usput napravim.

Veoma sam uzbuđen zbog ovog novog projekta i uzbuđen sam što mogu vidjeti koliko dobro funkcionira!

Danas ćemo dobiti jednostavan 5-žični panel osjetljiv na dodir koji radi sa DP-32.

Hajde da počnemo!

Korak 1: Šta će vam trebati

Šta će vam trebati
Šta će vam trebati

Budući da se u ovom vodiču radi o funkcioniranju jednog senzora, neće vam trebati mnogo 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 kablovi.

    Mogao sam koristiti ugrađeni vrpčani kabel na dodirnoj ploči, 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čni otporni panel osjetljiv na dodir, ali mu je pukao vrpčni kabel

I to je to!

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

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

Ako ste pročitali moj četverožilni vodič na dodirnoj ploči, bit će vam poznata opća ideja o otpornom senzoru dodira, ali petožilni paneli i četverožilni paneli djeluju malo drugačije.

Sviđa mi se ovaj panel jer možete vidjeti sve tragove žice, što olakšava da vidite šta služi čemu. 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 do fleksibilne ploče 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). Ovo 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 bi nam omogućila osjećanje duž Y osi. 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 vjerovatno možete vidjeti na gornjim slikama, spojio sam svoja četiri ugla svaki na svoj pin za digitalni izlaz. To će mi omogućiti da ih pojedinačno postavim na visoke ili niske. Moj pin senzora se povezuje na pin za analogni ulaz. Dobra stvar kod 5-žičnog ekrana 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 se može 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 se povezuje s gore-lijevo (drugi gornji krajnji pin)

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

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

Vrijedi 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 uz kratak pregled onoga što sve radi. Ne sviđa mi se to. Želim da ova serija bude o projektima u razvoju, i u tu svrhu ću uključiti stvarni razvoj ovog softvera od početka do kraja.

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

Za sada počinjem s jednostavnim programom treptanja u stilu kašnjenja, 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 krajnjem cilju.

Korak 5: Treptanje državne mašine

Državna mašina trepće
Državna mašina trepće

Moj prvi potez je da promijenim funkciju treptanja s one zasnovane na "delay ()" u state machine.

Za one koji nisu navikli na zamjenu naredbi, to radi slično kao if-naredba. Ovaj (u narandžastoj kutiji) testira našu "state" varijablu (koja počinje na 0). Zatim 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 dugmeta

Dugme Trepće
Dugme Trepće
Dugme Trepće
Dugme Trepće
Dugme Trepće
Dugme Trepće

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

Obrisao sam i drugo stanje "čekanja". To znači da dugme uključuje lampicu na jednu sekundu i možete pritisnuti dugme ponovo odmah nakon isključivanja.

Vrijedi napomenuti da ovaj sistem umjesto nas automatski uklanja taster, jer moramo sačekati da se LED isključi prije nego se vratimo u stanje 0 gdje dugme može ponovo 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 računara, dodao sam redove do stanja 1 i 3 koji će slati jednostavne poruke računaru putem serijske veze.

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še dugme. Uskoro ćete videti zašto.

Potpuno sam ponovo napisao mašinu stanja. Malo je zbunjujuće gledati kod, pa sam uključio blok dijagram koji bi trebao ilustrirati ono što je 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 želio dati dugmetu i dodirnoj ploči 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. Interni sat za DP32 je nepotpisan i, iako je to vrlo malo vjerovatno, postoji mogućnost da bi sat mogao petljati tokom 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.

Učinio sam i malo manje čišćenje. Uklonio sam sada neiskorištenu varijablu "state_time". Prešao sam sa 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 se varijabla petlja.

Korak 10: Završne misli

Završne misli
Završne misli

I to je to!

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

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

Hvala, vidimo se sledeći put!

Preporučuje se: