Mundarija:

Qutqarilgan aylanuvchi kodlovchi yordamida XYZ nuqta skaneri: 5 qadam
Qutqarilgan aylanuvchi kodlovchi yordamida XYZ nuqta skaneri: 5 qadam

Video: Qutqarilgan aylanuvchi kodlovchi yordamida XYZ nuqta skaneri: 5 qadam

Video: Qutqarilgan aylanuvchi kodlovchi yordamida XYZ nuqta skaneri: 5 qadam
Video: [THE BEST ] Full Review of WZ5005E 5A 250W LCD Buck Converter with CC 10 Preset memory 2024, Noyabr
Anonim
Qutqarilgan aylanadigan kodlovchi yordamida XYZ nuqtali skaner
Qutqarilgan aylanadigan kodlovchi yordamida XYZ nuqtali skaner

Ish joyimdan juda ko'p tashlab yuborilgan aylanadigan optik enkoderlarni sotib olib, nihoyat ular bilan qiziqarli va foydali ish qilishga qaror qildim.

Men yaqinda uyim uchun yangi 3D printer sotib oldim va uni 3D skanerdan yaxshiroq nima iltifot qila oladi! Bu loyiha menga kerakli qismlarni ishlab chiqarish uchun 3D -printerimdan foydalanish uchun ajoyib imkoniyatni berdi.

Ta'minotlar

Optik kodlovchi va mos keladigan optik sensorlar

Arduino UNO

ixtiyoriy prototiplash qalqoni

po'latdan yasalgan relslar

3D printerga kirish

1 -qadam: Optik kodlovchi

Optik kodlovchilar
Optik kodlovchilar
Optik kodlovchilar
Optik kodlovchilar
Optik kodlovchilar
Optik kodlovchilar

Bu loyiha uchun deyarli har qanday aylanuvchi kodlovchi ishlatilishi mumkin, agar u sizga mm uchun nisbatan yuqori bosish imkonini bersa. Shubhasiz, har xil kodlovchi mos o'rnatish echimini talab qiladi.

Men uzluksizlikni o'lchash moslamasidan foydalanib, datchiklarning ulanish sxemasini oldim.

2 -qadam: 3D bosilgan qismlar

3D bosilgan qismlar
3D bosilgan qismlar
3D bosilgan qismlar
3D bosilgan qismlar

Bu qismlar aylanadigan enkoderlarni joylashtiradi va temir yo'l uchun slaydni beradi. Yagona kodlovchi korpusining orqa tomonida o'zaro chiziqlar o'rnatilishi uchun ikkita teshik bor. Ikkita kodlovchi korpus - bu to'g'ri burchak ostida birlashtirilgan ikkita bitta korpus.

Men bu fusion360 qurilmalarini o'zim tanlagan enkoder va relslarga mos ravishda ishlab chiqardim, enkoderning milida zanglamaydigan po'latdan yasalgan valni yaxshiroq ushlab turish uchun slingshot rezina niqobi qisqa bo'lakka ega.

Siz mil erkin siljishini va vertikal ushlab turganda korpusdan qulab tushishini xohlaysiz, lekin u sirg'almasligi uchun enkoderga etarlicha bosim o'tkazishi kerak. Men uchun ishlaydigan narsa, milning slaydini enkoder miliga 0,5 mm ga yopishishiga ruxsat berish edi. Slingshot kauchuki shunchalik yumshoqki, bu miqdor deformatsiyalanadi va yaxshi tortish imkoniyatini beradi.

3 -qadam: ulanish sxemasi

Ulanish diagrammasi
Ulanish diagrammasi

O'chirish sxemasi juda oddiy. Opto-datchiklar IQ-emition diodlari uchun bir oz tokni, fotodiodlar uchun er va tortish rezistorlarini talab qiladi.

Men ketma-ket emitrli diodlar uchun 5mA ga qaror qildim, bu maxsus enkoderda diodlardagi kuchlanish pasayishi 3.65V. Men Arduino -dan rezistor uchun 1,35V qoldiradigan 5V kuchlanishdan foydalanayapman, 5mA da bu 270 ohmga teng.

Olib tashlash uchun 10k ohm tanlangan, chunki fotodiodlar faqat kichik oqimni tushirishi mumkin, tugma uchun esa 10k ohm ishlatilgan. Erga ulangan prototip taxtasida foydalanish mumkin bo'lgan tugma mavjud, uni tortish qarshiligi bilan ta'minlang va kerakli kirish piniga ulang.

4 -qadam: Arduino kodi

Arduino kodi
Arduino kodi
Arduino kodi
Arduino kodi
Arduino kodi
Arduino kodi

Kod biroz tushuntirishga muhtoj, chunki uning ishlashi darhol aniq bo'lmasligi mumkin, lekin 3 ta kodlovchini tezda qayta ishlash uchun uni shunday optimallashtirish kerak edi.

Birinchidan, agar biz faqat kodlovchi pozitsiyasida o'zgarish bo'lsa, yo'nalish ma'lumotlarini qayta ishlashni xohlaymiz.

o'zgarishlar = new_value ^ saqlangan qiymat;

Enkoderlarimdan ko'proq aniqlik olish uchun men ko'tarilgan va tushgan qirralarni qayta ishlashim kerak edi.

O'rnatish paytida mening o'lchamim 1 sm uchun 24 marta bosiladi.

Bu bizga bir nechta stsenariylarni qoldiradi.

S1 doimiy 0 va S2 0 dan 1 gacha o'zgaradi

S1 doimiy 0 va S2 1 dan 0 gacha o'zgaradi

S1 doimiy 1 va S2 0 dan 1 gacha o'zgaradi

S1 doimiy 1 va S2 1 dan 0 gacha o'zgaradi

S2 - 0 doimiy va S1 - 0 dan 1 gacha

S2 doimiy 0 va S1 1 dan 0 gacha o'zgaradi

S2 doimiy 1 va S1 0 dan 1 gacha o'zgaradi

S2 doimiy 1 va S1 1 dan 0 gacha o'zgaradi

Bu shartlar yuqoridagi haqiqat jadvallarida yaxshiroq tushuniladi, shuningdek har bir shart o'zboshimchalik bilan 0 yoki 1 deb nomlangan "yo'nalish" ni beradi.

Grafika bizga ikkita muhim maslahat beradi:

1) bitta grafik ikkinchisining to'liq teskarisidir, shuning uchun agar bizda bo'lsa, biz chiqishni teskari aylantirish orqali boshqasini osongina hisoblashimiz mumkin. Biz chiqishni teskari tomonga o'zgartiramiz, ikkinchisi esa o'zgarmaydi.

2) grafikning o'zi S1 va S2 signallarining XOR -dir. (boshqa jadval - bu emas).

Endi kodni tushunish juda oddiy.

// PORTda parallel o'qiladi // qo'shni juftliklar bir xil kodlovchi holatiga tegishli ekanligini eslang = PINB & 0x3f; // qanday pinlar o'zgardi, agar diff = hold ^ state; // XOR qo'shni S1 va S2 signallari haqiqat jadvalini olish uchun // eng oson yo'li - hozirgi holatning nusxasini olish // uni bir oz qidirish = holat >> 1 bilan o'ngga siljitish; // endi bitlar XOR dir = search ^ state uchun hizalanadi; // esda tutingki, agar kirishlar // dan biri o'zgarmasa, jadvalni teskari o'zgartirish kerak, buning uchun bizga IF // ifodasi kerak emas. Hozirgi vaqtda kerakli yo'nalish biti - "dir" o'zgaruvchisidagi har bir juftlikning o'ng qo'li // chap qo'lning ma'nosi yo'q // "diff" o'zgaruvchisida "set" ni o'zgartirgan bit bor // shuning uchun bizda ham '01' yoki '10' // XOR 'dir' bayt bilan // teskari bo'ladi yoki ma'nosiz bit bo'lmaydi. dir ^= farq; // hozir hold o'zgaruvchining hold = holatini yangilang; // agar bu kodlovchi uchun har qanday bit ham o'zgargan bo'lsa, (diff & 0x03) {// yo'nalishni aniqlang, agar (dir & 0x01) {// sizning dasturiy ta'minotingiz va simlaringizga qarab ++ yoki --z; } boshqa {++ z; }} // qolganlar uchun ham agar if (diff & 0x0c) {if (dir & 0x04) {++ y; } boshqa { -y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } boshqa {++ x; }}

Tugma bosilganda biz joriy XYZ qiymatini terminal dasturiga yuboramiz.

Ketma -ket ma'lumotlar sekin, lekin normal ishlayotganda, bu vaqt davomida enkoderlarning joylashuvi o'zgarmaydi.

Ma'lumotlar xom hisob sifatida yuboriladi. Siz matematikani bajarishingiz va ma'lumotlarni mm yoki dyuym va boshqalarga yuborishingiz mumkin, menimcha, xom qiymatlar juda yaxshi, chunki biz ob'ektni keyinchalik dasturiy ta'minotda o'lchashimiz mumkin.

5 -qadam: Birinchi ko'rish

Birinchi ko'rish
Birinchi ko'rish
Birinchi ko'rish
Birinchi ko'rish
Birinchi ko'rish
Birinchi ko'rish
Birinchi ko'rish
Birinchi ko'rish

Ballarni yig'ish - bu sekin jarayon, men probni chap yuqori burchagiga qo'yaman va Arduino -ni qayta o'rnataman.

Bu uyning o'rnini nolga tenglashtiradi.

Keyin zondni maqsadli joyga o'tkazing, uni ushlab turing va "oniy tasvir" tugmasini bosing.

Bu juda katta namuna qismi uchun men ~ 140 ball oldim, shuning uchun yakuniy mahsulot haqida batafsil ma'lumot yo'q.

Ma'lumotni. PCD faylga saqlang va sarlavhani qo'shing

#. PCD v.7 - Nuqta bulutli ma'lumotlar fayl formati VERSION.7 DAVLATLAR x y z O'lcham 4 4 4 TUR F F F SONI 1 1 1 kengligi (sizning ballar soni) Balandlik 1 VIDEO 0 0 0 0 1 0 0 0 ballar (sizning ballar soni)

Sarlavhada nuqta sanashni qo'ying, bu sizga qator raqamlarini taqdim etadigan har qanday muharrirda oson.

Yuqoridagi nuqtalarni freeCad -da ko'rish mumkin, keyin ular freeCad -dan. PLY fayli sifatida eksport qilinadi.

MeshLab -da. PLY -ni oching va ob'ektni yuzasiga qo'ying. Bajarildi !!

Tavsiya: