Përmbajtje:

Skaneri i pikave XYZ duke përdorur kodifikuesit rrotullues të ruajtur: 5 hapa
Skaneri i pikave XYZ duke përdorur kodifikuesit rrotullues të ruajtur: 5 hapa

Video: Skaneri i pikave XYZ duke përdorur kodifikuesit rrotullues të ruajtur: 5 hapa

Video: Skaneri i pikave XYZ duke përdorur kodifikuesit rrotullues të ruajtur: 5 hapa
Video: 166-WGAN-TV | Matterport MatterPak and E57 File: Matterport Pro3 Camera versus Pro2 and Leica BLK360 2024, Korrik
Anonim
Skaneri i pikave XYZ duke përdorur kodifikuesit rrotullues të ruajtur
Skaneri i pikave XYZ duke përdorur kodifikuesit rrotullues të ruajtur

Pasi kam marrë një numër mjaft të madh të kodifikuesve optikë rrotullues të hedhur nga vendi im i punës, më në fund vendosa të bëj diçka argëtuese/të dobishme me ta.

Kohët e fundit kam blerë një printer të ri 3D për shtëpinë time dhe çfarë mund ta komplimentojë më mirë sesa një skaner 3D! Ky projekt më dha gjithashtu mundësinë e përsosur për të përdorur printerin tim 3D për të prodhuar pjesët e kërkuara.

Furnizimet

Koduesit optikë dhe sensorët optikë përkatës

Arduino UNO

mburoja opsionale e prototipit

binarët prej çeliku

qasje në një printer 3D

Hapi 1: Koduesit optikë

Kodifikuesit optikë
Kodifikuesit optikë
Kodifikuesit optikë
Kodifikuesit optikë
Kodifikuesit optikë
Kodifikuesit optikë

Pothuajse çdo kodifikues rrotullues mund të përdoret për këtë projekt, për aq kohë sa ju siguroi një numër relativisht të lartë të "klikimeve" për mm. Padyshim që kodifikuesit e ndryshëm do të kërkojnë një zgjidhje të përshtatshme montimi.

Kam përdorur një matës të vazhdimësisë për të gjetur diagramin e instalimeve elektrike për sensorët e fotografive.

Hapi 2: Pjesët e printuara në 3D

Pjesë të printuara 3D
Pjesë të printuara 3D
Pjesë të printuara 3D
Pjesë të printuara 3D

Këto pjesë strehojnë koduesit rrotullues dhe sigurojnë një rrëshqitje për hekurudhën. Strehimi i vetëm i koduesit ka dy vrima në pjesën e pasme për të ngjitur shinat kryq. Strehimi i koduesit të dyfishtë është thjesht dy strehë të vetme të shkrira së bashku në kënde të drejta.

Unë i projektova këto montime në fusion360 për t'iu përshtatur zgjedhjes sime të koduesve dhe shinave, boshti i koduesit ka një pjesë të shkurtër të mbështjellësit të gomës me llastiqe, për ta ndihmuar atë të kapë më mirë boshtin prej çeliku inox.

Ju dëshironi që boshti të rrëshqasë lirshëm dhe të bjerë përmes strehimit kur mbahet vertikalisht, megjithatë ai duhet të ushtrojë presion të mjaftueshëm mbi koduesin që të mos rrëshqasë. Ajo që funksionoi për mua ishte të lejoja që rrëshqitja e boshtit të mbivendosej me boshtin e koduesit me 0.5 mm. Goma e llastikut është mjaft e butë për të deformuar me atë sasi dhe për të siguruar tërheqje të mirë.

Hapi 3: Diagrami i telave

Diagrami i telave
Diagrami i telave

Qarku është shumë i thjeshtë. Opto-sensorët kërkojnë njëfarë rryme për diodat emetuese IR, një rezistencë toke dhe tërheqëse për fotododat.

Vendosa për 5mA për diodat emetuese në seri, në këtë kodues të veçantë rënia e tensionit nëpër diodat është 3.65V. Unë jam duke përdorur një furnizim 5V nga Arduino, që lë 1.35V për rezistencën, në 5mA kjo rezulton të jetë 270 ohm.

10k ohm u zgjodh për tërheqjet pasi fotodyodat mund të fundosin vetëm një rrymë të vogël, 10k ohm u përdorën edhe për butonin shtytës. Ekziston një buton i disponueshëm për përdorim në bordin prototip tashmë të lidhur me tokën, thjesht sigurojini atij një rezistencë tërheqëse dhe lidheni me kunjin e dëshiruar të hyrjes.

Hapi 4: Kodi Arduino

Kodi Arduino
Kodi Arduino
Kodi Arduino
Kodi Arduino
Kodi Arduino
Kodi Arduino

Kodi ka nevojë për një shpjegim të vogël pasi funksionimi i tij mund të mos jetë menjëherë i dukshëm, megjithatë ai duhej të optimizohej në këtë mënyrë për të qenë në gjendje të përpunonte 3 kodues mjaft shpejt.

Së pari ne duam të përpunojmë të dhënat e drejtimit NFSE ka pasur një ndryshim në pozicionin e koduesit.

ndryshimet = vlera e re ^ vlera e ruajtur;

Për të marrë më shumë rezolucion nga koduesit e mi, më duhej të përpunoja skajet në rritje dhe rënie.

Në konfigurimin tim rezolucioni im është 24 klikime për 1cm.

Kjo na lë me disa skenarë.

S1 është konstante 0 dhe S2 kaloi nga 0 në 1

S1 është konstante 0 dhe S2 kaloi nga 1 në 0

S1 është konstante 1 dhe S2 kalon nga 0 në 1

S1 është konstante 1 dhe S2 kalon nga 1 në 0

S2 është konstante 0 dhe S1 kaloi nga 0 në 1

S2 është konstante 0 dhe S1 kaloi nga 1 në 0

S2 është konstante 1 dhe S1 ndryshon nga 0 në 1

S2 është konstante 1 dhe S1 ndryshon nga 1 në 0

Këto kushte kuptohen më mirë në tabelat e së vërtetës më sipër, gjithashtu secila gjendje jep një 'drejtim', të quajtur arbitrarisht 0 ose 1.

Listat na japin dy të dhëna vitale:

1) një tabelë është inversi i plotë i tjetrit, kështu që nëse e kemi një, mund ta llogarisim lehtësisht tjetrin thjesht duke e përmbysur daljen. Ne e përmbysim daljen vetëm nëse një kunj po ndryshon dhe jo tjetra, ne mund të zgjedhim njërën në mënyrë arbitrare.

2) grafiku në vetvete është thjesht XOR i sinjaleve S1 dhe S2. (grafiku tjetër është NUK i kësaj).

Tani kuptimi i kodit është i thjeshtë.

// lexoni në PORT paralelisht // mbani mend çiftet ngjitur i përkasin të njëjtës gjendje kodimi = PINB & 0x3f; // cilat kunja kanë ndryshuar nëse ka ndonjë ndryshim = mbaj ^ gjendjen; // XOR sinjalet S1 dhe S2 ngjitur për të marrë tabelën e së vërtetës // mënyra më e thjeshtë është të bëni një kopje të gjendjes aktuale // dhe ta zhvendosni në të djathtë me një kërkim bit = gjendjen >> 1; // tani pjesët janë rreshtuar për XOR dir = lookup ^ gjendjen; // mbani mend, tabela duhet të përmbyset nëse një // nga hyrjet mbetet konstante, nuk kemi nevojë për një deklaratë IF // për këtë. Aktualisht biti i drejtimit të dëshiruar // është biti i dorës së djathtë të secilës palë në ndryshoren 'dir' // biti i dorës së majtë është i pakuptimtë // variabla 'diff' ka atë që ndryshoi 'set' // kështu që ne ose kemi '01' ose '10' // XOR kjo me byte 'dir' ose // do të përmbysë ose jo bitin kuptimplotë. dir ^= ndrysh; // tani përditëso mbaj ndryshoren e mbajtjes = gjendje; // nëse secili bit ka ndryshuar për këtë kodues nëse (diff & 0x03) {// përcaktoni drejtimin nëse (dir & 0x01) {// bazuar në pajisjet tuaja kompjuterike dhe instalimet elektrike ++ ose ---z; } tjetër {++ z; }} // ditto për pjesën tjetër nëse (ndrysh & 0x0c) {nëse (dir & 0x04) {++ y; } tjetër {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } tjetër {++ x; }}

Kur shtypet butoni ne dërgojmë vlerën aktuale XYZ në një program terminal.

Të dhënat serike janë të ngadalta, por gjatë funksionimit normal pozicionet e kodifikuesve nuk do të ndryshojnë gjatë kësaj kohe gjithsesi.

Të dhënat dërgohen si numërime të papërpunuara. Ju mund të bëni matematikë dhe t'i dërgoni të dhënat në mm ose inç, etj. Unë mendoj se vlerat e papërpunuara janë po aq të mira, sepse ne mund ta shkallëzojmë objektin më vonë në softuer.

Hapi 5: Skanimi i parë

Skanimi i parë
Skanimi i parë
Skanimi i parë
Skanimi i parë
Skanimi i parë
Skanimi i parë
Skanimi i parë
Skanimi i parë

Grumbullimi i pikave është një proces i ngadaltë, e vendos sondën në këndin e sipërm të majtë dhe e rivendos Arduino -n.

Kjo e zeron pozicionin si shtëpi.

Pastaj zhvendoseni sondën në vendndodhjen në shënjestër, mbajeni të qëndrueshëm dhe shtypni butonin 'fotografi'.

Për këtë copë mostre mjaft të madhe mora vetëm 140 ~ pikë, kështu që detajet nuk janë të mëdha për produktin përfundimtar.

Ruani të dhënat në një skedar. PCD dhe shtoni kokën

#. PCD v.7 - Formati i skedarit të të dhënave Cloud Point VERSION.7 FUSHAT x y z PIRMAS 4 4 4 LLOJI F F F KUNDR 1 1 1 GJERTHSI (numri i pikëve tuaja) Lartësia 1 Pikëpamja 0 0 0 1 0 0 0 PIKAT (numri juaj i pikëve)

Vendosni numrin e pikëve në kokë, kjo është e lehtë për çdo redaktues që ju siguron numrat e rreshtit.

Mbi pikat mund të shihen në freeCad, ato pastaj eksportohen nga freeCad si skedar. PLY.

Hapni. PLY në MeshLab dhe vendosni sipërfaqen e objektit. U krye !!

Recommended: