Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05
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
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
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
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
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
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:
Skener QR kódu pomocou OpenCV v Pythone: 7 krokov
Skener QR kódov pomocou OpenCV v Pythone: V dnešnom svete vidíme, že QR kód a čiarový kód sa používajú takmer všade, od balenia produktu po online platby a v dnešnej dobe vidíme QR kódy dokonca aj v reštaurácii, aby sme videli menu. Pochybujem, že je to teraz hlavná myšlienka. Ale už ste niekedy mali
Predzosilňovač elektróniek PA1 pre domácich majstrov: efektívne zostavený zo zachránených komponentov: 13 krokov
PA1 DIY trubicový predzosilňovač: Efektívne zostavený so zachránenými komponentmi: Existuje veľa zdrojov o stavaní predzosilňovačov na webe a v tlači, a tak som si povedal, že sa podelím o niečo trochu iné. Tento návod pokrýva konštrukciu open source trubicového predzosilňovača podľa môjho návrhu a nielenže je to u
DIY LED bodový maticový rolovací displej pomocou Arduina: 6 krokov
DIY LED bodový maticový rolovací displej pomocou Arduina: Dobrý deň, toto je môj prvý pokyn. V tomto návode ukážem, ako vyrábam DIY LED bodový maticový rolovací displej pomocou Arduina ako MCU. Tento druh displejov sa nachádza na železničnej stanici, autobusovej stanici, uliciach a na mnohých ďalších miestach. Tam
Návod na bodový maticový zobrazovací modul 4 v 1 MAX7219 pomocou Arduino UNO: 5 krokov
4 v 1 MAX7219 Bodový maticový zobrazovací modul Výučba pomocou Arduino UNO: Popis: Hľadáte ľahko ovládateľnú maticu LED? Tento modul bodovej matice 4 v 1 by mal byť pre vás vhodný. Celý modul je dodávaný zo štyroch spoločných katódových bodových matíc 8x8 RED, ktoré sú vybavené IC MAX7219. Skvelé na zobrazenie bežiaceho textu
WiFi skener s dlhým dosahom pomocou ESP8266: 6 krokov (s obrázkami)
WiFi skener s dlhým dosahom pomocou ESP8266: V tomto návode vyrábam batériou napájané prenosné 2,5 -pásmové skenovacie zariadenie WiFi s dlhým dosahom, ktoré sa používa na určenie, ktorý kanál je pre moju domácu sieť najlepší. Môže sa použiť aj na nájdenie otvorených prístupových bodov WiFi na cestách. Náklady na výrobu: Asi 25 dolárov dolla