Sisällysluettelo:

XYZ -pisteskanneri pelastettujen kiertokooderien avulla: 5 vaihetta
XYZ -pisteskanneri pelastettujen kiertokooderien avulla: 5 vaihetta

Video: XYZ -pisteskanneri pelastettujen kiertokooderien avulla: 5 vaihetta

Video: XYZ -pisteskanneri pelastettujen kiertokooderien avulla: 5 vaihetta
Video: Red Dead Redemption 2 — РЕАЛЬНО ВАЖНАЯ ДЕТАЛЬ 2024, Heinäkuu
Anonim
XYZ -pisteskanneri pelastettujen kiertokooderien avulla
XYZ -pisteskanneri pelastettujen kiertokooderien avulla

Kun olin hankkinut työpaikaltani melko suuren määrän käytöstä poistettuja pyöriviä optisia enkoodereita, päätin lopulta tehdä jotain hauskaa/hyödyllistä heidän kanssaan.

Olen äskettäin ostanut uuden 3D -tulostimen kotiin ja mikä voisi täydentää sitä paremmin kuin 3D -skanneri! Tämä projekti tarjosi minulle myös täydellisen mahdollisuuden käyttää 3D -tulostinta tarvittavien osien valmistamiseen.

Tarvikkeet

Optiset kooderit ja vastaavat optiset anturit

Arduino UNO

valinnainen prototyyppisuojus

teräspalkit

pääsy 3D -tulostimeen

Vaihe 1: Optiset enkooderit

Optiset koodaajat
Optiset koodaajat
Optiset koodaajat
Optiset koodaajat
Optiset koodaajat
Optiset koodaajat

Lähes mitä tahansa pyörivää anturia voitaisiin käyttää tähän projektiin, kunhan se tarjosi suhteellisen paljon napsautuksia millimetriä kohti. Ilmeisesti erilaiset anturit vaativat sopivan asennusratkaisun.

Käytin jatkuvuusmittaria valokuva-antureiden kytkentäkaavion jäljittämiseen.

Vaihe 2: 3D -tulostetut osat

3D -tulostetut osat
3D -tulostetut osat
3D -tulostetut osat
3D -tulostetut osat

Nämä osat sisältävät pyörivät anturit ja tarjoavat liukukiskon. Yksittäisessä anturikotelossa on takana kaksi reikää poikkikiskojen kiinnittämistä varten. Kaksoiskooderikotelo on yksinkertaisesti kaksi yksittäistä koteloa, jotka on sulatettu yhteen oikeassa kulmassa.

Suunnittelin nämä kiinnikkeet fusion360: een sopivaksi valitsemiini enkoodereihin ja kiskoihin. Anturin akselissa on lyhyt hihnakuori, joka auttaa pitämään ruostumattomasta teräksestä valmistetun akselin paremmin.

Haluat akselin liukuvan vapaasti ja putoavan kotelon läpi, kun sitä pidetään pystysuorassa, mutta sen on kohdistettava tarpeeksi painetta anturiin, jotta se ei luista. Minulle toimi se, että akselin liukumäki pääsi päällekkäin anturin akselin kanssa 0,5 mm. Rintareppu on riittävän pehmeää muodonmuutokseen ja tarjoamaan hyvän pidon.

Vaihe 3: Kytkentäkaavio

Kytkentäkaavio
Kytkentäkaavio

Piiri on hyvin yksinkertainen. Optoanturit vaativat jonkin verran virtaa infrapunalähettimen diodeille, maadoitus- ja vetovastusvastuksia fotodiodille.

Päätin 5 mA: n sarjasarjoille, tässä kooderissa jännitehäviö diodien välillä on 3,65 V. Käytän Arduinon 5 V: n syöttöä, joka jättää 1,35 V: n vastuksen, 5 mA: n kohdalla tämä on 270 ohmia.

Nostoihin valittiin 10 k ohmia, koska fotodiodit voivat upottaa vain pienen virran, 10 k ohmia käytettiin myös painikkeessa. Prototyyppikortilla, joka on jo kytketty maahan, on käytettävissä painike, varmista vain vetovastus ja kytke se haluttuun tulotappiin.

Vaihe 4: Arduino -koodi

Arduino -koodi
Arduino -koodi
Arduino -koodi
Arduino -koodi
Arduino -koodi
Arduino -koodi

Koodi tarvitsee hieman selitystä, koska sen toiminta ei välttämättä ole heti ilmeistä, mutta se oli optimoitava tällä tavalla, jotta se pystyy käsittelemään kolme kooderia riittävän nopeasti.

Ensinnäkin haluamme käsitellä vain suuntatietoja, JOS kooderin sijainti on muuttunut.

muutokset = uusi_arvo ^ tallennettu arvo;

Saadakseni enemmän tarkkuutta koodereistani jouduin käsittelemään sekä nousevia että laskevia reunoja.

Asetuksessani resoluutio on 24 napsautusta per 1 cm.

Tämä jättää meille muutamia skenaarioita.

S1 on vakio 0 ja S2 on vaihdettu 0: sta 1: een

S1 on vakio 0 ja S2 on vaihdettu 1: stä 0: een

S1 on vakio 1 ja S2 vaihtaa 0: sta 1: een

S1 on vakio 1 ja S2 vaihtaa 1: stä 0: een

S2 on vakio 0 ja S1 on vaihdettu 0: sta 1: een

S2 on vakio 0 ja S1 on vaihdettu 1: stä 0: een

S2 on vakio 1 ja S1 vaihtaa 0: sta 1: een

S2 on vakio 1 ja S1 vaihtaa 1: stä 0: een

Nämä ehdot ymmärretään paremmin yllä olevissa totuustaulukoissa, ja myös jokainen ehto antaa "suunnan", jonka nimi on mielivaltaisesti 0 tai 1.

Kaaviot antavat meille kaksi tärkeää vihjettä:

1) yksi kaavio on toisen käänteinen, joten jos meillä on yksi, voimme helposti laskea toisen yksinkertaisesti kääntämällä tuotoksen. Käännämme lähdön vain, jos yksi nasta vaihtuu ja toinen ei, voimme valita yhden mielivaltaisesti.

2) kaavio itsessään on yksinkertaisesti S1- ja S2 -signaalien XOR. (toinen kaavio EI ole tästä).

Nyt koodin ymmärtäminen on yksinkertaista.

// lukee PORT: ssa rinnakkain // muista, että vierekkäiset parit kuuluvat samaan kooderin tilaan = PINB & 0x3f; // mitkä nastat ovat muuttuneet, jos diff = hold ^ tila; // XOR -viereiset S1- ja S2 -signaalit totuustaulukon saamiseksi // helpoin tapa on kopioida nykyinen tila // ja siirtää se oikealle yhden bitin haulla = tila >> 1; // nyt bitit on kohdistettu XOR: lle dir = lookup ^ state; // Muista, että taulukko on käännettävä, jos yksi // tuloista pysyi vakiona, emme tarvitse IF // -lausetta tähän. Tällä hetkellä haluttu suunnan bitti // on jokaisen parin oikea käsi bitti muuttujassa "dir" // vasen käsi on merkityksetön // muuttujan "diff" bitti on muuttanut "set" // joten meillä on joko '01' tai '10' // XOR tämä "dir" tavulla joko // kääntää tai ei merkitsevää bittiä. dir ^= ero; // päivitä nyt hold -muuttuja hold = state; // jos jompikumpi bitti on muuttunut tälle enkooderille if (diff & 0x03) {// määritä suunta if (dir & 0x01) {// hadware -ohjelmiston ja johdotuksen perusteella joko ++ tai ---z; } muu {++ z; }} // sama muillekin if (diff & 0x0c) {if (dir & 0x04) {++ y; } muu {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } muu {++ x; }}

Kun painiketta painetaan, lähetämme nykyisen XYZ -arvon pääteohjelmalle.

Sarjatiedot ovat hitaita, mutta normaalikäytön aikana anturien sijainnit eivät muutu tänä aikana.

Tiedot lähetetään raakamäärinä. Voit tehdä laskutoimituksia ja lähettää tiedot millimetreinä tai tuumina jne. Mielestäni raaka -arvot ovat yhtä hyviä, koska voimme skaalata objektin myöhemmin ohjelmistossa.

Vaihe 5: Ensimmäinen skannaus

Ensimmäinen skannaus
Ensimmäinen skannaus
Ensimmäinen skannaus
Ensimmäinen skannaus
Ensimmäinen skannaus
Ensimmäinen skannaus
Ensimmäinen skannaus
Ensimmäinen skannaus

Pisteiden kerääminen on hidas prosessi, nostan anturin vasemmassa yläkulmassa ja nollaan Arduinon.

Tämä nollaa aseman kotona.

Siirrä sitten mittapää kohteen kohdalle, pidä sitä vakaasti ja paina 'tilannekuva' -painiketta.

Tästä melko suuresta näytekappaleesta otin vain ~ 140 pistettä, joten yksityiskohdat eivät ole suuria lopputuotteessa.

Tallenna tiedot. PCD -tiedostoon ja lisää otsikko

#. PCD v.7 - Point Cloud -tiedostomuoto VERSIO.7 KENTTÄ x x z KOKO 4 4 4 TYYPPI F F F COUNT 1 1 1 LEVEYS (pistemääräsi) KORKEUS 1 NÄKYMÄPISTE 0 0 0 1 0 0 0 PISTETTÄ (pistemäärä)

Laita pistemäärä otsikkoon, tämä on helppoa millä tahansa editorilla, joka tarjoaa sinulle rivinumerot.

Pisteiden yläpuolella näkyy freeCad, ja ne viedään sitten freeCadista. PLY -tiedostona.

Avaa. PLY MeshLabissa ja pistä kohde pintaan. Tehty!!

Suositeltava: