Мазмұны:

XYZ нүктелік сканері құтқарылған айналмалы кодерлерді қолданады: 5 қадам
XYZ нүктелік сканері құтқарылған айналмалы кодерлерді қолданады: 5 қадам

Бейне: XYZ нүктелік сканері құтқарылған айналмалы кодерлерді қолданады: 5 қадам

Бейне: XYZ нүктелік сканері құтқарылған айналмалы кодерлерді қолданады: 5 қадам
Бейне: Сканирование объекта 3D сканером XYZ 3D scanner 2024, Шілде
Anonim
XYZ нүктелік сканері құтқарылған айналмалы кодерлерді қолданады
XYZ нүктелік сканері құтқарылған айналмалы кодерлерді қолданады

Менің жұмыс орнымнан көп мөлшерде тасталған айналмалы оптикалық кодерлерді алып, ақыры олармен қызықты/пайдалы нәрсе жасауды шештім.

Мен жақында өз үйіме жаңа 3D принтер сатып алдым және оны 3D сканерден артық не мақтауға болады! Бұл жоба сонымен қатар қажетті бөлшектерді өндіру үшін 3D принтерімді пайдалануға тамаша мүмкіндік берді.

Жабдықтар

Оптикалық кодерлер және сәйкес оптикалық датчиктер

Arduino UNO

қосымша прототиптік қалқан

болат рельстер

3D принтерге қол жеткізу

1 -қадам: Оптикалық кодерлер

Оптикалық кодерлер
Оптикалық кодерлер
Оптикалық кодерлер
Оптикалық кодерлер
Оптикалық кодерлер
Оптикалық кодерлер

Бұл жоба үшін кез келген айналмалы кодерді қолдануға болады, егер ол сізге мм -ге «шертулердің» салыстырмалы жоғары санын қамтамасыз етсе. Әлбетте, әр түрлі кодерлер сәйкес монтаж шешімін қажет етеді.

Мен фото датчиктердің қосылу схемасын анықтау үшін үзіліссіздіктің өлшегішін қолдандым.

2 -қадам: 3D басып шығарылған бөлшектер

3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер
3D басып шығарылған бөлшектер

Бұл бөліктер айналмалы кодерлерді орналастырады және рельс үшін сырғытпаны қамтамасыз етеді. Бір кодер корпусының артқы жағында көлденең рельстерді бекіту үшін екі тесік бар. Қос кодер корпусы - бұл бір -біріне дұрыс бұрыштарда қосылған екі жалғыз корпус.

Мен бұл қондырғыларды fusion360 қондырғыларында кодерлер мен рельстерді таңдауға сәйкес жасадым, кодердің білігінде тот баспайтын болаттан жасалған білікті жақсы ұстауға көмектесу үшін резеңке қаптаманың қысқа бөлігі бар.

Сіз біліктің еркін сырғып кетуін және тігінен ұсталған кезде корпус арқылы құлағанын қалайсыз, бірақ ол сырғып кетпеуі үшін кодерге жеткілікті қысым көрсетуі керек. Мен үшін жұмыс істеген нәрсе біліктің сырғытпасының кодер білігімен 0,5 мм қабаттасуына мүмкіндік беру болды. Резеңке резеңке жеткілікті мөлшерде деформацияланатын және жақсы тартылуды қамтамасыз ететін жеткілікті жұмсақ.

3 -қадам: Сымдардың диаграммасы

Қосылу диаграммасы
Қосылу диаграммасы

Схема өте қарапайым. Опто-датчиктерге инфрақызыл сәуле шығаратын диодтар үшін біраз ток қажет, фотодиодтар үшін жерге және тартылатын резисторлар.

Мен 5мА сериялы эмиттер диодтары үшін шешім қабылдадым, бұл кодерде диодтардағы кернеудің төмендеуі 3,65В құрайды. Мен Arduino -дан резистор үшін 1,35 В қалатын 5В кернеуді қолданамын, 5 мА -да бұл 270 Ом болады.

Фото диодтар аз ғана токты түсіре алатындықтан, тартулар үшін 10к Ом таңдалды, сонымен қатар түйме үшін 10к Ом қолданылды. Жерге қосылған прототип тақтасында қолдануға болатын түйме бар, оны тартқыш резистормен қамтамасыз етіңіз және оны қажетті кіріс істігіне қосыңыз.

4 -қадам: Arduino коды

Arduino коды
Arduino коды
Arduino коды
Arduino коды
Arduino коды
Arduino коды

Кодты түсіндіру қажет, себебі оның жұмысы бірден көрінбеуі мүмкін, бірақ оны 3 кодтаушыны тез өңдеу үшін осылайша оңтайландыру қажет болды.

Біріншіден, біз тек кодер позициясында өзгеріс болған жағдайда, бағыт деректерін өңдегіміз келеді.

өзгертулер = new_value ^ сақталған мән;

Менің кодерлерімнен көбірек рұқсат алу үшін, мен көтерілген және құлаған жиектерді өңдеуге тура келді.

Орнату кезінде менің рұқсатым 1 см үшін 24 рет басылады.

Бұл бізге бірнеше сценарийлерді қалдырады.

S1 тұрақты 0 және S2 0 -ден 1 -ге ауысады

S1 тұрақты 0 және S2 1 -ден 0 -ге ауысады

S1 тұрақты 1 және S2 0 -ден 1 -ге ауысады

S1 тұрақты 1 және S2 1 -ден 0 -ге ауысады

S2 тұрақты 0 және S1 0 -ден 1 -ге ауыстырылады

S2 тұрақты 0 және S1 1 -ден 0 -ге ауысады

S2 тұрақты 1 және S1 0 -ден 1 -ге ауысады

S2 тұрақты 1 және S1 1 -ден 0 -ге ауысады

Бұл шарттар жоғарыдағы шындық кестелерінде жақсы түсініледі, сонымен қатар әр шарт ерікті түрде 0 немесе 1 деп аталатын «бағытты» береді.

Диаграммалар бізге екі маңызды ақпаратты береді:

1) бір диаграмма екіншісіне толық қарама -қарсы, сондықтан егер бізде біреу болса, шығуды жай ғана төңкеру арқылы екіншісін оңай есептей аламыз. Біз бір түйреуіш өзгерсе, екіншісі өзгермесе ғана шығуды төңкереміз, біз оны ерікті түрде таңдай аламыз.

2) диаграмманың өзі S1 және S2 сигналдарының XOR ғана. (басқа диаграмма - бұл ЕМЕС).

Енді кодты түсіну қарапайым.

// Портта параллель оқу // көршілес жұптар бір кодер күйіне жататынын есте сақтаңыз = PINB & 0x3f; // қандай түйреуіштер өзгерді, егер diff = hold ^ state; // ақиқаттық кестесін алу үшін көршілес S1 және S2 сигналдары // ең оңай жолы - ағымдағы күйдің көшірмесін жасау // оны оңға қарай бір аз іздеу = күй >> 1; // енді биттер XOR dir = lookup ^ state үшін тураланған; // есіңізде болсын, егер кірістердің біреуі тұрақты болып қалса, кестені төңкеру керек, бұл үшін бізге IF // операторы қажет емес. Қазіргі уақытта қажетті бит // «dir» айнымалысы бар әр жұптың оң жақ биті // сол жақ бит мағынасыз // «diff» айнымалысы «жиынты» өзгерткен битке ие // сондықтан бізде де бар '01' немесе '10' // XOR бұл 'dir' байтпен // төңкереді немесе мағыналы бит болмайды. dir ^= айырмашылық; // қазір hold айнымалысын ұстау күйін жаңартыңыз; // егер бұл кодтаушы үшін бірде -бір бит өзгерсе if (diff & 0x03) {// егер dir + 0x01) {// бағытын анықтаңыз, сіздің бағдарламалық жасақтамаңызға және сымға ++ немесе --z; } басқа {++ z; }} // қалғандары үшін де if (diff & 0x0c) {if (dir & 0x04) {++ y; } басқа { -y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } басқа {++ x; }}

Түйме басылған кезде біз ағымдағы XYZ мәнін терминалдық бағдарламаға жібереміз.

Сериялық деректер баяу, бірақ қалыпты жұмыс кезінде кодерлердің позициялары бұл уақыт ішінде өзгермейді.

Деректер шикізат ретінде жіберіледі. Сіз математиканы жасай аласыз және деректерді мм немесе дюйммен жібере аласыз және т.

5 -қадам: Бірінші сканерлеу

Бірінші сканерлеу
Бірінші сканерлеу
Бірінші сканерлеу
Бірінші сканерлеу
Бірінші сканерлеу
Бірінші сканерлеу
Бірінші сканерлеу
Бірінші сканерлеу

Ұпай жинау - баяу процесс, мен зондты сол жақ жоғарғы бұрышқа қойып, Arduino -ны қалпына келтіремін.

Бұл үйдегі позицияны нөлге теңестіреді.

Содан кейін зондты мақсатты орынға жылжытыңыз, оны ұстап тұрыңыз және «суретке түсіру» түймесін басыңыз.

Үлкен үлгіні алу үшін мен тек 140 ұпай жинадым, сондықтан соңғы өнім туралы егжей -тегжейлі айтуға болмайды.

Деректерді. PCD файлына сақтап, тақырыпты қосыңыз

#. PCD v.7 - Point Cloud Data файлының форматы НҰСҚА.7 ЕРІСТЕР x y z МАЗМҰНЫ 4 4 4 F F F COUNT 1 1 1 WINTH (сіздің ұпай санауыңыз) БИІКТІКТІҢ 1 КӨРІНІСІ 0 0 0 1 1 0 0 0 Ұпай (сіздің ұпай саны)

Тақырыпқа нүкте санауды қойыңыз, бұл сізге жол нөмірлерін беретін кез келген редакторға оңай.

Нүктелердің үстінде freeCad көрінуі мүмкін, содан кейін олар freeCad -тен. PLY файлы ретінде экспортталады.

MeshLab -те. PLY ашыңыз және объектіні шығарыңыз. Орындалды !!

Ұсынылған: