Kazalo:

Skener XYZ točk z rešenimi rotacijskimi kodirniki: 5 korakov
Skener XYZ točk z rešenimi rotacijskimi kodirniki: 5 korakov

Video: Skener XYZ točk z rešenimi rotacijskimi kodirniki: 5 korakov

Video: Skener XYZ točk z rešenimi rotacijskimi kodirniki: 5 korakov
Video: Timelapse Final Fantasy Gunblade Printed on a CR-30 2024, November
Anonim
Skener XYZ točk z rešenimi rotacijskimi kodirniki
Skener XYZ točk z rešenimi rotacijskimi kodirniki

Ko sem s svojega delovnega mesta kupil kar veliko zavrženih rotacijskih optičnih kodirnikov, sem se končno odločil, da z njimi naredim nekaj zabavnega/uporabnega.

Pred kratkim sem za svoj dom kupil nov 3D tiskalnik in kaj bi ga lahko pohvalilo bolje kot 3D skener! Ta projekt mi je tudi dal odlično priložnost, da svoj 3D tiskalnik zaposlim za izdelavo potrebnih delov.

Zaloge

Optični dajalniki in ustrezni optični senzorji

Arduino UNO

opcijski ščit za izdelavo prototipov

jeklene tirnice

dostop do 3D tiskalnika

Korak: Optični kodirniki

Optični kodirniki
Optični kodirniki
Optični kodirniki
Optični kodirniki
Optični kodirniki
Optični kodirniki

Za ta projekt bi lahko uporabili skoraj kateri koli rotacijski dajalnik, če vam zagotavlja relativno veliko število 'klikov' na mm. Očitno bodo različni dajalniki potrebovali ustrezno rešitev za montažo.

Uporabil sem merilnik kontinuitete, da sem izsledil shemo ožičenja za foto-senzorje.

2. korak: 3D natisnjeni deli

3D natisnjeni deli
3D natisnjeni deli
3D natisnjeni deli
3D natisnjeni deli

V teh delih so vrtljivi dajalniki in drsnik za tirnico. Eno ohišje dajalnika ima zadaj dve luknji za pritrditev prečnih tirnic. Ohišje dvojnega dajalnika je preprosto dve enojni ohišji, združeni pod pravim kotom.

Te nosilce na fusion360 sem oblikoval tako, da ustrezajo moji izbiri kodirnikov in tirnic, gred dajalnika ima kratek kos gumijastega plašča, ki omogoča boljši oprijem gredi iz nerjavečega jekla.

Želite, da gred prosto drse in da pade skozi ohišje, če jo držite navpično, vendar mora na dajalnik pritisniti dovolj, da ne zdrsne. Zame je uspelo, da se drsnik gredi prekriva z gredjo dajalnika za 0,5 mm. Gumica iz praćke je dovolj mehka, da se za toliko deformira in zagotavlja dober oprijem.

3. korak: Shema ožičenja

Žični diagram
Žični diagram

Vezje je zelo preprosto. Opto-senzorji potrebujejo nekaj toka za diode IR oddajnika, ozemljitvene in vlečne upore za foto diode.

Odločil sem se za 5mA za serijske oddajne diode, pri tem dajalniku je padec napetosti na diodah 3,65V. Uporabljam napajanje 5V iz Arduina, ki pušča 1,35 V za upor, pri 5mA to deluje 270 ohmov.

Za vleke je bilo izbranih 10 k ohmov, saj lahko foto diode potonejo le pri majhnem toku, 10 k ohmov je bilo uporabljenih tudi za potisni gumb. Na prototipni plošči je že na voljo gumb, ki je že priključen na ozemljitev, le pritrdite ga z vlečnim uporom in ga priključite na želeni vhodni zatič.

4. korak: Arduino koda

Koda Arduino
Koda Arduino
Koda Arduino
Koda Arduino
Koda Arduino
Koda Arduino

Koda potrebuje malo razlage, saj njeno delovanje morda ni takoj očitno, vendar jo je bilo treba na ta način optimizirati, da je lahko dovolj hitro obdelal 3 kodirnike.

Najprej želimo obdelati podatke o smeri, če je prišlo do spremembe položaja dajalnika.

spremembe = nova_vrednost ^ shranjena vrednost;

Za večjo ločljivost kodirnikov sem moral obdelati naraščajoče in padajoče robove.

Na moji nastavitvi je moja ločljivost 24 klikov na 1 cm.

To nam pusti nekaj scenarijev.

S1 je konstanta 0 in S2 preklopi od 0 do 1

S1 je konstanta 0 in S2 preklopi iz 1 na 0

S1 je konstanta 1 in S2 preklopi od 0 do 1

S1 je konstanta 1 in S2 preklopi od 1 do 0

S2 je konstanta 0 in S1 preklopi od 0 do 1

S2 je konstanta 0 in S1 preklopi iz 1 na 0

S2 je konstanta 1 in S1 preklopi od 0 do 1

S2 je konstanta 1 in S1 preklopi od 1 do 0

Ti pogoji so bolje razumljeni v zgornjih tabelah resničnosti, prav tako vsak pogoj daje "smer", poljubno poimenovano 0 ali 1.

Lestvice nam dajejo dva ključna namiga:

1) en grafikon je popolnoma obraten od drugega, zato če ga imamo, lahko drugega preprosto izračunamo tako, da preprosto obrnemo izhod. Izhod obrnemo le, če se en pin spreminja, drugega pa ne, enega lahko poljubno izberemo.

2) sam grafikon je preprosto XOR signalov S1 in S2. (drugi grafikon NI tega).

Zdaj je razumevanje kode preprosto.

// beremo v PORT -u vzporedno // zapomnimo si, da sosednji pari pripadata istemu kodirniku = PINB & 0x3f; // kateri zatiči so se spremenili, če je razlika = hold ^ stanje; // XOR sosednja signala S1 in S2 za pridobitev tabele resničnosti // najlažji način je, da naredimo kopijo trenutnega stanja // in ga premaknemo v desno z enim bitnim iskanjem = stanje >> 1; // zdaj so biti poravnani za XOR dir = iskanje ^ stanje; // ne pozabite, da je treba tabelo obrniti, če je eden od vhodov // konstanten, za to ne potrebujemo stavka IF //. Trenutno je želeni smerni bit // desni bit vsakega para v spremenljivki 'dir' // levi bit je nesmiseln // spremenljivka 'diff' ima bit, ki je spremenil 'set' // zato imamo bodisi '01' ali '10' // XOR to z bajtom 'dir' bo // obrnilo ali ne pomenljivo bit. dir ^= razlika; // zdaj posodobi spremenljivko hold hold = state; // če se je kateri koli bit spremenil za ta kodirnik if (diff & 0x03) {// določi smer if (dir & 0x01) {// glede na vašo programsko opremo in ožičenje ++ ali ---z; } else {++ z; }} // enako tudi za ostale if (diff & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}

Ko pritisnete gumb, pošljemo trenutno vrednost XYZ v terminalski program.

Serijski podatki so počasni, vendar se med normalnim delovanjem položaji dajalnikov v tem času vseeno ne bodo spreminjali.

Podatki se pošljejo kot surovo štetje. Lahko bi izračunali in podatke poslali v mm ali palcih itd. Ugotovil sem, da so surove vrednosti prav tako dobre, ker lahko predmet kasneje prilagodimo v programski opremi.

5. korak: Prvi pregled

Prvi pregled
Prvi pregled
Prvi pregled
Prvi pregled
Prvi pregled
Prvi pregled
Prvi pregled
Prvi pregled

Zbiranje točk je počasen proces, sondo postavim v zgornji levi kot in ponastavim Arduino.

To izniči položaj doma.

Nato premaknite sondo na mesto na tarči, jo držite pri miru in pritisnite gumb 'snapshot'.

Za ta precej velik vzorec sem vzel le ~ 140 točk, zato podrobnosti o končnem izdelku niso odlične.

Shranite podatke v datoteko. PCD in dodajte glavo

#. PCD v.7 - Oblika podatkovne datoteke v oblaku točk VERSION.7 POLJA x y z VELIKOST 4 4 4 TIP F F F COUNT 1 1 1 ŠIRINA (vaše število točk) VIŠINA 1 POGLEDA 0 0 0 1 0 0 0 TOČK (vaše število točk)

Število točk vnesite v glavo, to je enostavno v vsakem urejevalniku, ki vam posreduje številke vrstic.

Nad pikami lahko vidite v freeCadu, nato pa jih izvozite iz freeCad kot datoteko. PLY.

Odprite. PLY na MeshLabu in površino predmeta. Končano!!

Priporočena: