Obsah:

Bodový skener XYZ pomocí zachráněných rotačních kodérů: 5 kroků
Bodový skener XYZ pomocí zachráněných rotačních kodérů: 5 kroků

Video: Bodový skener XYZ pomocí zachráněných rotačních kodérů: 5 kroků

Video: Bodový skener XYZ pomocí zachráněných rotačních kodérů: 5 kroků
Video: GIS1 Prednaska 5 (Vznik dat a data dostupná na internetu) 2024, Listopad
Anonim
Bodový skener XYZ pomocí zachráněných rotačních kodérů
Bodový skener XYZ pomocí zachráněných rotačních kodérů

Když jsem ze svého pracoviště získal poměrně velké množství vyřazených rotačních optických kodérů, rozhodl jsem se s nimi konečně udělat něco zábavného/užitečného.

Nedávno jsem si koupil novou 3D tiskárnu pro svůj domov a co by ji mohlo komplimentovat lépe než 3D skener! Tento projekt mi také poskytl ideální příležitost zaměstnat moji 3D tiskárnu na výrobu požadovaných dílů.

Zásoby

Optické kodéry a odpovídající optické senzory

Arduino UNO

volitelný prototypový štít

kolejnice z ocelových tyčí

přístup k 3D tiskárně

Krok 1: Optické kodéry

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

Pro tento projekt by mohl být použit téměř jakýkoli rotační kodér, pokud vám poskytl relativně vysoký počet „kliknutí“na mm. Různé kodéry budou zjevně vyžadovat vhodné montážní řešení.

Použil jsem měřič kontinuity k vysledování schématu zapojení foto-senzorů.

Krok 2: 3D tištěné díly

3D tištěné díly
3D tištěné díly
3D tištěné díly
3D tištěné díly

Tyto části obsahují rotační kodéry a poskytují posuv pro kolejnici. Pouzdro jediného kodéru má v zadní části dva otvory, na které lze namontovat příčné kolejnice. Pouzdro duálního kodéru jsou jednoduše dvě jednotlivá pouzdra spojená dohromady v pravých úhlech.

Tyto držáky jsem navrhl na fusion360 tak, aby vyhovovaly mému výběru kodérů a kolejnic, hřídel kodéru má krátký kus gumového pouzdra, které mu pomáhá lépe uchopit hřídel z nerezové oceli.

Chcete, aby hřídel volně klouzal a při svislém držení spadl skrz pouzdro, přesto musí vyvinout dostatečný tlak na kodér, aby nesklouzl. Co fungovalo pro mě, bylo umožnit překrytí skluzu hřídele s hřídelem kodéru o 0,5 mm. Praková guma je dostatečně měkká, aby se o toto množství zdeformovala a poskytovala dobrou trakci.

Krok 3: Schéma zapojení

Elektrické schéma
Elektrické schéma

Obvod je velmi jednoduchý. Opto-senzory vyžadují určitý proud pro infračervené diody, uzemňovací a výsuvné odpory pro fotodiody.

Rozhodl jsem se pro 5mA pro sériové emitorové diody, v tomto konkrétním kodéru je úbytek napětí na diodách 3,65V. Používám 5V napájení z Arduina, které ponechává odpor 1,35V, při 5mA to vychází na 270 ohmů.

Pro přítahy bylo vybráno 10k ohm, protože fotodiody mohou potopit pouze malý proud, 10k ohm bylo také použito pro tlačítko. Na prototypové desce, která je již připojena k zemi, je k dispozici tlačítko, stačí jej opatřit výsuvným odporem a zapojit 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 potřebuje malé vysvětlení, protože jeho provoz nemusí být hned zřejmý, přesto musel být optimalizován tímto způsobem, aby dokázal dostatečně rychle zpracovat 3 kodéry.

Nejprve chceme zpracovat pouze směrová data, pokud došlo ke změně polohy kodéru.

changes = new_value ^ uložená hodnota;

Abych získal ze svých kodérů větší rozlišení, musel jsem zpracovat stoupající i sestupnou hranu.

Při mém nastavení je mé rozlišení 24 kliknutí na 1 cm.

Zbývá nám tak několik scénářů.

S1 je konstantní 0 a S2 přepínáno z 0 na 1

S1 je konstantní 0 a S2 přepínáno z 1 na 0

S1 je konstantní 1 a S2 přepíná od 0 do 1

S1 je konstantní 1 a S2 přepíná od 1 do 0

S2 je konstantní 0 a S1 přepínáno z 0 na 1

S2 je konstantní 0 a S1 se přepíná z 1 na 0

S2 je konstantní 1 a S1 přepíná od 0 do 1

S2 je konstantní 1 a S1 přepíná od 1 do 0

Tyto podmínky jsou lépe pochopitelné v tabulkách pravd výše, také každá podmínka poskytuje „směr“, libovolně pojmenovaný 0 nebo 1.

Grafy nám poskytují dvě zásadní indicie:

1) jeden graf je úplnou inverzí druhého, takže pokud máme jeden, můžeme snadno vypočítat druhý jednoduchým převrácením výstupu. Invertujeme výstup pouze v případě, že se mění jeden pin a ne druhý, jeden můžeme vybrat libovolně.

2) samotný graf je prostě XOR signálů S1 a S2. (druhý graf NENÍ tohoto).

Nyní je pochopení kódu jednoduché.

// čtení v PORTu paralelně // pamatujte, že sousední páry patří do stejného stavu kodéru = PINB & 0x3f; // jaké piny se změnily, pokud nějaké diff = hold ^ state; // XOR sousedící se signály S1 a S2 pro získání tabulky pravdivosti // nejjednodušším způsobem je vytvořit kopii aktuálního stavu // a posunout ji doprava o jedno bitové vyhledávání = stav >> 1; // nyní jsou bity zarovnány pro XOR dir = lookup ^ state; // pamatujte, že tabulku je třeba převrátit, pokud jeden // ze vstupů zůstal konstantní, nepotřebujeme k tomu příkaz IF //. V současné době je bit požadovaného směru // bitem pravé ruky každého páru v proměnné 'dir' // bit levé ruky nemá význam // proměnná 'diff' má bit, který změnil 'set' // takže buď máme '01' nebo '10' // XOR s bajtem 'dir' buď // invertuje, nebo ne, smysluplný bit. dir ^= rozdíl; // nyní aktualizovat podržet proměnnou hold = state; // pokud se u tohoto kodéru změnil některý bit, pokud (rozdíl & 0x03) {// určete směr if (dir & 0x01) {// na základě vašeho hadwaru a zapojení buď ++ nebo ---z; } else {++ z; }} // to samé pro zbytek if (rozdíl & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (rozdíl & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}

Po stisknutí tlačítka odešleme aktuální hodnotu XYZ do terminálového programu.

Sériová data jsou pomalá, ale během normálního provozu se pozice kodérů během této doby stejně nezmění.

Data jsou odesílána jako nezpracované počty. Dalo by se to spočítat a odeslat data v mm nebo palcích atd. Zjistil jsem, že surové hodnoty jsou stejně dobré, protože objekt můžeme později v softwaru škálovat.

Krok 5: První skenování

První sken
První sken
První sken
První sken
První sken
První sken
První sken
První sken

Sbírání bodů je pomalý proces, položím sondu do levého horního rohu a resetuji Arduino.

Tím se vynuluje pozice domova.

Poté přesuňte sondu na místo na cíli, držte ji pevně a stiskněte tlačítko 'momentka'.

U tohoto poměrně velkého vzorku jsem vzal pouze ~ 140 bodů, takže detaily nejsou na konečném produktu skvělé.

Uložte data do souboru. PCD a přidejte záhlaví

#. PCD v.7 - Point Cloud Formát datového souboru VERZE.7 POLE x y z VELIKOST 4 4 4 TYP F F F COUNT 1 1 1 ŠÍŘKA (počet vašich bodů) VÝŠKA 1 ZOBRAZOVACÍ BOD 0 0 0 1 0 0 0 BODŮ (počet vašich bodů)

Vložte počet bodů do záhlaví, to je snadné v každém editoru, který vám poskytne čísla řádků.

Tečky jsou ve freeCadu vidět, poté jsou exportovány z freeCad jako soubor. PLY.

Otevřete. PLY na MeshLab a přeneste předmět. Hotovo!!

Doporučuje: