
Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47

Nabavivši prilično velik broj odbačenih rotacijskih optičkih kodera sa svog radnog mjesta, konačno sam odlučio učiniti s njima nešto zabavno/korisno.
Nedavno sam kupio novi 3D pisač za svoj dom i što bi mu moglo biti kompliment bolje od 3D skenera! Ovaj projekt mi je također pružio savršenu priliku da uposlim svoj 3D pisač za proizvodnju potrebnih dijelova.
Pribor
Optički koderi i odgovarajući optički senzori
Arduino UNO
opcijski štit za izradu prototipova
čelične šine
pristup 3D pisaču
Korak 1: Optički koderi



Gotovo bilo koji rotacijski koder mogao bi se koristiti za ovaj projekt, pod uvjetom da vam omogući relativno veliki broj "klikova" po mm. Očigledno je da će različiti koderi zahtijevati odgovarajuće rješenje za montažu.
Koristio sam mjerač kontinuiteta da pronađem dijagram ožičenja za foto-senzore.
Korak 2: 3D ispisani dijelovi


Ovi dijelovi smještaju rotacijske davače i pružaju kliznik za tračnicu. Kućište jednog davača ima stražnje dvije rupe za montiranje poprečnih tračnica. Dvostruko kućište kodera jednostavno su dva pojedinačna kućišta spojena pod pravim kutom.
Dizajnirao sam ove nosače na fusion360 kako bi odgovarali mom izboru davača i tračnica, osovina davača ima kratki komad gumiranog omotača praćke kako bi bolje prianjao na osovinu od nehrđajućeg čelika.
Želite da osovina slobodno klizi i da pada kroz kućište ako se drži okomito, ali mora vršiti dovoljan pritisak na davač da ne sklizne. Ono što mi je uspjelo bilo je dopustiti da se klizač vratila preklopi s vratilom kodera za 0,5 mm. Guma za praćku dovoljno je mekana da se za tu količinu deformira i osigura dobro prianjanje.
Korak 3: Shema ožičenja

Krug je vrlo jednostavan. Opto-senzori zahtijevaju određenu struju za diode IC odašiljača, uzemljenje i otpornike za izvlačenje za foto-diode.
Odlučio sam se za 5mA za serijske odašiljačke diode, u ovom posebnom koderu pad napona na diodama je 3,65V. Koristim napajanje od 5V iz Arduina, koje ostavlja 1,35 V za otpornik, na 5 mA ovo radi na 270 ohma.
10 k ohma odabrano je za izvlačenje jer foto-diode mogu potopiti samo malu struju, 10 k ohma je također korišteno za tipku. Gumb je dostupan za upotrebu na prototipnoj ploči koja je već spojena na masu, samo mu priložite pull-up otpornik i spojite ga na željeni ulazni pin.
Korak 4: Arduino kod



Kôd treba malo objasniti jer njegov rad možda nije odmah očit, no ipak ga je trebalo optimizirati na ovaj način da bi mogao dovoljno brzo obraditi 3 kodera.
Prvo želimo samo obraditi podatke o smjeru AKO je došlo do promjene položaja davača.
promjene = nova_vrijednost ^ pohranjena vrijednost;
Kako bih dobio veću razlučivost od svojih kodera, morao sam obraditi i rastuće i padajuće rubove.
Na mojim postavkama moja razlučivost je 24 klika po 1 cm.
Ovo nam ostavlja nekoliko scenarija.
S1 je konstanta 0 i S2 se prebacuje s 0 na 1
S1 je konstanta 0 i S2 se prebacuje s 1 na 0
S1 je konstanta 1 i S2 mijenja od 0 do 1
S1 je konstanta 1, a S2 mijenja od 1 do 0
S2 je konstanta 0 i S1 se prebacuje s 0 na 1
S2 je konstanta 0 i S1 se prebacuje s 1 na 0
S2 je konstanta 1 i S1 mijenja od 0 do 1
S2 je konstanta 1, a S1 mijenja od 1 do 0
Ti su uvjeti bolje razumljivi u gornjim tablicama istine, a svaki uvjet daje 'smjer', proizvoljno nazvan 0 ili 1.
Grafikoni nam daju dva vitalna traga:
1) jedan je grafikon potpuna inverznost drugog, pa ako ga imamo, možemo lako izračunati drugi jednostavnim preokretanjem izlaza. Invertiramo izlaz samo ako se mijenja jedan pin, a drugi ne, jedan možemo izabrati proizvoljno.
2) sam grafikon je jednostavno XOR signala S1 i S2. (drugi grafikon je NE ovoga).
Sada je razumijevanje koda jednostavno.
// paralelno čitanje u PORT -u // zapamtite da susjedni parovi pripadaju istom stanju kodera = PINB & 0x3f; // koji su se pinovi promijenili ako je bilo koji diff = hold ^ stanje; // XOR susjedni signali S1 i S2 za dobivanje tablice istinitosti // najjednostavniji način je napraviti kopiju trenutnog stanja // i pomaknuti ga udesno za jedno pretraživanje bita = stanje >> 1; // sada su bitovi poravnati za XOR dir = lookup ^ stanje; // zapamtite, tablicu je potrebno preokrenuti ako je jedan od ulaza ostao konstantan, za to nam ne treba IF // izraz. Trenutno je željeni bit smjera // desni bit svakog para u 'dir' varijabli // lijevi bit je besmislen // varijabla 'diff' ima bit koji je promijenio 'set' // pa imamo ili '01' ili '10' // XOR ovo s 'dir' bajtom će ili // obrnuti ili ne smisleni bit. dir ^= razlika; // sada ažuriraj varijablu zadržavanja hold = stanje; // ako se bilo koji bit promijenio za ovaj koder if (diff & 0x03) {// odredi smjer if (dir & 0x01) {// na temelju vašeg hardvera i ožičenja ili ++ ili ---z; } else {++ z; }} // isto za ostalo if (diff & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}
Kada pritisnete gumb, šaljemo trenutnu vrijednost XYZ u terminalni program.
Serijski podaci su spori, ali tijekom normalnog rada položaji davača se ionako neće mijenjati za to vrijeme.
Podaci se šalju kao neobrađeni brojevi. Mogli biste izračunati i poslati podatke u mm ili inčima itd. Smatram da su sirove vrijednosti jednako dobre jer kasnije možemo skalirati objekt u softveru.
Korak 5: Prvo skeniranje




Skupljanje bodova je spor proces, spustio sam sondu u gornji lijevi kut i resetirao Arduino.
Ovo nulira poziciju doma.
Zatim pomaknite sondu na mjesto na meti, držite je mirno i pritisnite gumb 'snapshot'.
Za ovaj prilično veliki uzorak uzeo sam samo ~ 140 bodova, pa detalji nisu sjajni na konačnom proizvodu.
Spremite podatke u. PCD datoteku i dodajte zaglavlje
#. PCD v.7 - Format datoteke podataka u oblaku točaka VERSION.7 POLJA x y z VELIČINA 4 4 4 TIP F F F CO COUNT 1 1 1 ŠIRINA (vaš broj bodova) VISOKA 1 POGLEDA 0 0 0 1 0 0 0 BODOVA (vaš broj bodova)
Stavite broj bodova u zaglavlje, to je lako za svaki uređivač koji vam daje brojeve redaka.
Iznad točaka možete vidjeti u freeCad -u, zatim se izvoze iz freeCada kao. PLY datoteku.
Otvorite. PLY na MeshLabu i isplovite objekt. Gotovo !!
Preporučeni:
Jednostavna automatizirana željeznička linija od točke do točke: 10 koraka (sa slikama)

Jednostavni automatizirani model željeznice od točke do točke: Arduino mikrokontroleri izvrsni su za automatizaciju izgleda željezničkih modela. Automatiziranje rasporeda korisno je u mnoge svrhe, poput postavljanja izgleda na zaslon na kojem se rad s rasporedom može programirati za vožnju vlakova u automatiziranom slijedu. Ja
Oscilator kontroliran naponom od točke do točke: 29 koraka

Oscilator kontroliran naponom od točke do točke: Bok! Pronašli ste projekt u kojem uzimamo jedan stvarno jeftin mikročip, CD4069 (lijepo), i lijepimo neke dijelove na njega i dobivamo vrlo koristan oscilator za praćenje visine tona! Verzija koju ćemo izgraditi ima samo oblik pile ili rampe, koji je o
Crossfader krug od točke do točke: 16 koraka (sa slikama)

Crossfader krug Point-to-Point: Ovo je crossfader krug. Prihvaća dva ulaza i blijedi između njih, pri čemu je izlaz mješavina dva ulaza (ili samo jedan od ulaza). To je jednostavan sklop, vrlo koristan i jednostavan za izgradnju! On invertira signal koji prolazi kroz njega
Dvostruko raspadanje Eurorack krug od točke do točke: 12 koraka

Dvostruko raspadanje Eurorack krug od točke do točke: Svrha ovog uputstva je pokazati kako možete napraviti DUAL DECAY krug za svoj modularni sintisajzer. Ovo je krug od točke do točke bez ikakvih tiskanih ploča i demonstrira drugi način za izgradnju funkcionalnih sklopova sintetizatora s minimalnim dijelovima
Automatizirani model željeznice od točke do točke s dvorišnim kolosijekom: 10 koraka (sa slikama)

Automatizirana željeznička pruga od točke do točke s dvorišnim kolosijekom: Arduino mikrokontroleri otvaraju velike mogućnosti u modeliranju željeznica, posebno kada je u pitanju automatizacija. Ovaj projekt je primjer takve aplikacije. Nastavak je to jednog od prethodnih projekata. Ovaj projekt sastoji se od točke