Obsah:

Bodový skener XYZ pomocou zachránených rotačných kodérov: 5 krokov
Bodový skener XYZ pomocou zachránených rotačných kodérov: 5 krokov

Video: Bodový skener XYZ pomocou zachránených rotačných kodérov: 5 krokov

Video: Bodový skener XYZ pomocou zachránených rotačných kodérov: 5 krokov
Video: Маурицио Серачини: Секретная жизнь картин 2024, Júl
Anonim
Bodový skener XYZ používajúci zachránené rotačné snímače
Bodový skener XYZ používajúci zachránené rotačné snímače

Keď som zo svojho pracoviska získal pomerne veľký počet vyradených rotačných optických kodérov, rozhodol som sa s nimi konečne urobiť niečo zábavné/užitočné.

Nedávno som si kúpil do domu novú 3D tlačiareň a čo by ju mohlo komplimentovať lepšie ako 3D skener! Tento projekt mi tiež poskytol ideálnu príležitosť zamestnať moju 3D tlačiareň na výrobu požadovaných dielov.

Zásoby

Optické snímače a zodpovedajúce optické snímače

Arduino UNO

voliteľný prototypový štít

koľajnice z oceľových tyčí

prístup k 3D tlačiarni

Krok 1: Optické kodéry

Optické kodéry
Optické kodéry
Optické kodéry
Optické kodéry
Optické kodéry
Optické kodéry

Na tento projekt bolo možné použiť takmer akýkoľvek rotačný snímač, pokiaľ vám poskytol relatívne vysoký počet „kliknutí“na mm. Rôzne kodéry budú zrejme vyžadovať vhodné montážne riešenie.

Použil som merač kontinuity na vysledovanie schémy zapojenia foto-senzorov.

Krok 2: 3D tlačené diely

3D tlačené diely
3D tlačené diely
3D tlačené diely
3D tlačené diely

Tieto časti obsahujú rotačné enkodéry a poskytujú kĺzačku pre koľajnicu. Kryt jedného snímača má v zadnej časti dva otvory, do ktorých je možné namontovať priečne lišty. Kryt duálneho snímača je jednoducho dva samostatné puzdrá spojené dohromady v pravom uhle.

Tieto úchytky som navrhol na fusion360 tak, aby vyhovovali môjmu výberu kodérov a koľajničiek, hriadeľ snímača má krátky kus gumového puzdra z praku, ktoré mu pomáha lepšie uchopiť hriadeľ z nehrdzavejúcej ocele.

Chcete, aby sa hriadeľ voľne posúval a pri vertikálnom držaní padal skrz puzdro, musí však na snímač vyvíjať dostatočný tlak, aby nekĺzal. Mne sa osvedčilo nechať prekrytie posúvača pre hriadeľ s hriadeľom snímača o 0,5 mm. Guma z praku je dostatočne mäkká, aby sa o to množstvo zdeformovala a poskytovala dobrú trakciu.

Krok 3: Schéma zapojenia

Elektrické schéma
Elektrické schéma

Obvod je veľmi jednoduchý. Opto-senzory vyžadujú určitý prúd pre diódy IR žiariča, uzemňovacie a výsuvné odpory pre fotodiódy.

Rozhodol som sa pre 5mA pre sériové emitorové diódy, v tomto konkrétnom kodéri je úbytok napätia na diódach 3,65V. Používam 5V napájanie z Arduina, ktoré ponecháva rezistoru 1,35V, pri 5mA to vychádza na 270 ohmov.

Pre výsuvy bolo zvolené 10 kOhm, pretože fotodiódy môžu potopiť iba malý prúd, 10 kOhm bolo tiež použité pre tlačidlo. Na prototypovej doske, ktorá je už pripojená k zemi, je k dispozícii tlačidlo, stačí ho vybaviť výsuvným odporom a zapojiť na požadovaný vstupný kolík.

Krok 4: Arduino kód

Arduino kód
Arduino kód
Arduino kód
Arduino kód
Arduino kód
Arduino kód

Kód potrebuje malé vysvetlenie, pretože jeho činnosť nemusí byť hneď zrejmá, ale musel byť optimalizovaný týmto spôsobom, aby dokázal dostatočne rýchlo spracovať 3 kodéry.

Po prvé, chceme spracovať údaje o smere iba vtedy, ak dôjde k zmene polohy kodéra.

changes = new_value ^ uložená hodnota;

Aby som získal lepšie rozlíšenie zo svojich kodérov, musel som spracovať stúpajúce aj klesajúce hrany.

Pri mojom nastavení je moje rozlíšenie 24 kliknutí na 1 cm.

Zostáva nám teda niekoľko scenárov.

S1 je konštanta 0 a S2 sa prepína z 0 na 1

S1 je konštanta 0 a S2 sa prepína z 1 na 0

S1 je konštanta 1 a S2 sa prepína z 0 na 1

S1 je konštanta 1 a S2 sa prepína z 1 na 0

S2 je konštanta 0 a S1 sa prepína z 0 na 1

S2 je konštanta 0 a S1 sa prepína z 1 na 0

S2 je konštanta 1 a S1 sa prepína z 0 na 1

S2 je konštanta 1 a S1 sa prepína z 1 na 0

Tieto podmienky sú lepšie pochopiteľné v tabuľkách pravdy vyššie, pričom každá podmienka poskytuje „smer“, ľubovoľne pomenovaný 0 alebo 1.

Grafy nám poskytujú dve dôležité indície:

1) jeden graf je úplnou inverziou druhého, takže ak jeden máme, môžeme druhý ľahko vypočítať jednoduchým prevrátením výstupu. Invertujeme výstup iba vtedy, ak sa mení jeden pin a nie druhý, jeden môžeme vybrať ľubovoľne.

2) samotný graf je jednoducho XOR signálov S1 a S2. (druhý graf NIE JE tohto).

Teraz je pochopenie kódu jednoduché.

// paralelné čítanie v PORTE // pamätajte, že susedné páry patria do rovnakého stavu kodéra = PINB & 0x3f; // aké piny sa zmenili, ak nejaké diff = hold ^ state; // XOR susediace signály S1 a S2 na získanie tabuľky pravdy // najľahším spôsobom je vytvoriť kópiu aktuálneho stavu // a posunúť ho doprava o jedno bitové vyhľadávanie = stav >> 1; // teraz sú bity zarovnané pre XOR dir = lookup ^ state; // pamätajte si, že tabuľka musí byť obrátená, ak jeden // zo vstupov zostal konštantný, nepotrebujeme na to príkaz IF //. V súčasnosti je požadovaný smerový bit // bitom pravej ruky každého páru v premennej „dir“// bit ľavej strany nemá zmysel // premenná „diff“má bit, ktorý zmenil „set“// takže buď máme „01“alebo „10“// XOR s bajtom „dir“buď // invertuje, alebo nie, zmysluplný bit. dir ^= rozdiel; // teraz aktualizovať podržať premennú hold = state; // ak sa pre tento kodér zmenil ktorýkoľvek bit, ak (rozdiel & 0x03) {// určí smer if (dir & 0x01) {// na základe vášho hadwaru a zapojenia buď ++ alebo ---z; } else {++ z; }} // to isté pre zvyšok if (rozdiel & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (rozdiel & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}

Po stlačení tlačidla odošleme aktuálnu hodnotu XYZ do terminálového programu.

Sériové údaje sú pomalé, ale počas normálnej prevádzky sa polohy kodérov počas tejto doby aj tak nezmenia.

Údaje sa odosielajú ako nespracované počty. Môžete použiť matematiku a odoslať údaje v mm alebo palcoch atď. Zistil som, že nespracované hodnoty sú rovnako dobré, pretože objekt môžeme neskôr v softvéri škálovať.

Krok 5: Prvé skenovanie

Prvé skenovanie
Prvé skenovanie
Prvé skenovanie
Prvé skenovanie
Prvé skenovanie
Prvé skenovanie
Prvé skenovanie
Prvé skenovanie

Zhromažďovanie bodov je pomalý proces, sondujem podlahu v ľavom hornom rohu a resetujem Arduino.

Tým sa pozícia domova vynuluje.

Potom presuňte sondu na miesto na cieli, držte ju pevne a stlačte tlačidlo „momentka“.

Za tento pomerne veľký kus vzorky som vzal iba ~ 140 bodov, takže detaily na konečnom produkte nie sú skvelé.

Dáta uložte do súboru. PCD a pridajte hlavičku

#. PCD v.7 - Point Cloud Formát dátového súboruVERZIA, 7 POLÍ x y z VEĽKOSŤ 4 4 4 TYP F F F COUNT 1 1 1 ŠÍRKA (počet vašich bodov) VÝŠKA 1 ZOBRAZOVACÍ BOD 0 0 0 1 0 0 0 BODOV (počet vašich bodov)

Dajte počet bodov do hlavičky, je to jednoduché v každom editore, ktorý vám poskytne čísla riadkov.

Nad bodkami sú viditeľné vo freeCad, potom sú exportované z freeCad ako. PLY súbor.

Otvorte. PLY na MeshLab a ukážte objekt. Hotový!!

Odporúča: