Sisukord:

XYZ -punktiskanner päästetud pöördkoodrite abil: 5 sammu
XYZ -punktiskanner päästetud pöördkoodrite abil: 5 sammu

Video: XYZ -punktiskanner päästetud pöördkoodrite abil: 5 sammu

Video: XYZ -punktiskanner päästetud pöördkoodrite abil: 5 sammu
Video: Джон Роулингс «Чего требует от нас Господь?» Иезекииль 22:17 1990 МЕЖДУНАРОДНЫЕ СУБТИТРЫ 2024, Juuli
Anonim
XYZ -punktiskanner päästetud pöördkoodrite abil
XYZ -punktiskanner päästetud pöördkoodrite abil

Olles omandanud oma töökohalt üsna suure hulga äravisatud pöörlevaid optilisi kodeerijaid, otsustasin lõpuks nendega midagi lõbusat/kasulikku teha.

Ostsin hiljuti oma koju uue 3D -printeri ja mis võiks seda paremini kiita kui 3D -skanner! See projekt andis mulle ka suurepärase võimaluse kasutada oma 3D -printerit vajalike osade tootmiseks.

Tarvikud

Optilised kodeerijad ja vastavad optilised andurid

Arduino UNO

valikuline prototüüpimise kilp

terasvarda rööpad

juurdepääs 3D -printerile

Samm: optilised kodeerijad

Optilised kodeerijad
Optilised kodeerijad
Optilised kodeerijad
Optilised kodeerijad
Optilised kodeerijad
Optilised kodeerijad

Selle projekti jaoks võib kasutada peaaegu kõiki pöördkodeerijaid, kui see annab teile suhteliselt palju klikke millimeetri kohta. Ilmselt vajavad erinevad kodeerijad sobivat paigalduslahendust.

Fotoandurite ühendusskeemi leidmiseks kasutasin järjepidevuse mõõturit.

2. samm: 3D -prinditud osad

3D trükitud osad
3D trükitud osad
3D trükitud osad
3D trükitud osad

Need osad sisaldavad pöörlevaid kodeerijaid ja pakuvad rööpa jaoks liugurit. Üksiku kodeerija korpuse tagaküljel on kaks auku rööbaste paigaldamiseks. Kahekordse kodeerija korpus on lihtsalt kaks üksikut korpust, mis on kokku sulatatud täisnurga all.

Kujundasin need kinnitusdetailid fusion360 -le, et need sobiksid minu enkodeerijate ja rööbaste valikuga, kodeerija võllil on lühike kummist kest, mis aitab roostevabast terasest võllist paremini kinni hoida.

Soovite, et võll libiseks vabalt ja kukuks läbi korpuse, kui seda hoitakse vertikaalselt, kuid see peab andurile piisavalt survet avaldama, et see ei libiseks. Minu jaoks toimis see, kui lubati võlli liuguril 0,5 mm ulatuses kattuda kodeerimisvõlliga. Kumm on piisavalt pehme, et selle võrra deformeeruda ja tagada hea veojõu.

Samm: ühendusskeem

Juhtmestiku skeem
Juhtmestiku skeem

Ahel on väga lihtne. Optoandurid vajavad IR-kiirgusdioodide jaoks teatud voolu, fotodioodide jaoks maandus- ja tõmbetakistusi.

Otsustasin seeria emitterdioodide jaoks 5 mA, selles konkreetses kodeerijas on dioodide pingelangus 3,65 V. Ma kasutan Arduino 5 V toiteallikat, mis jätab takistile 1,35 V, 5 mA juures on see 270 oomi.

Tõmbamiseks valiti 10 k oomi, kuna fotodioodid suudavad ainult väikese voolu alla lasta, 10 k oomi kasutati ka nupu jaoks. Prototüüpplaadil, mis on juba maaga ühendatud, on saadaval nupp, varustage see lihtsalt tõmmatava takistiga ja ühendage see soovitud sisendtihvtiga.

Samm: Arduino kood

Arduino kood
Arduino kood
Arduino kood
Arduino kood
Arduino kood
Arduino kood

Kood vajab väikest selgitust, kuna selle toimimine ei pruugi kohe ilmne olla, kuid seda tuli optimeerida sel viisil, et oleks võimalik piisavalt kiiresti töödelda kolme kodeerijat.

Esiteks tahame töödelda ainult suunaandmeid, KUI kodeerija asukoht on muutunud.

muudatused = uus_väärtus ^ salvestatud väärtus;

Kooderite suurema eraldusvõime saamiseks pidin töötlema nii tõusvaid kui ka langevaid servi.

Minu seadistuses on minu eraldusvõime 24 klõpsu 1 cm kohta.

See jätab meile mõned stsenaariumid.

S1 on konstant 0 ja S2 lülitub 0 -lt 1 -le

S1 on konstant 0 ja S2 lülitatakse 1 -lt 0 -le

S1 on konstant 1 ja S2 vahetab 0 -lt 1 -le

S1 on konstant 1 ja S2 vahetab 1 -lt 0 -le

S2 on konstant 0 ja S1 lülitub 0 -lt 1 -le

S2 on konstant 0 ja S1 lülitatakse 1 -lt 0 -le

S2 on konstant 1 ja S1 vahetab 0 -lt 1 -le

S2 on konstant 1 ja S1 vahetab 1 -lt 0 -le

Neid tingimusi on ülaltoodud tõetabelites paremini mõista, samuti annab iga tingimus suuna, mille suvaline nimi on 0 või 1.

Diagrammid annavad meile kaks olulist vihjet:

1) üks diagramm on teisele pöördvõrdeline, nii et kui meil on üks, saame teise lihtsalt välja arvutada, väljundit lihtsalt ümber pöörates. Me pöörame väljundi ümber ainult siis, kui üks tihvt muutub ja teine mitte, saame ühe meelevaldselt valida.

2) diagramm ise on lihtsalt S1 ja S2 signaalide XOR. (teine diagramm EI OLE sellest).

Nüüd on koodi mõistmine lihtne.

// lugeda PORT -is paralleelselt // mäletan, et kõrvuti asuvad paarid kuuluvad samasse kodeerija olekusse = PINB & 0x3f; // millised nööpnõelad on muutunud, kui mõni diff = hold ^ olek; // XOR külgnevad S1 ja S2 signaalid tõetabeli saamiseks // lihtsaim viis on teha koopia praegusest olekust // ja nihutada see ühe bitise otsingu abil paremale = olek >> 1; // nüüd on bitid joondatud XOR jaoks dir = lookup ^ state; // pidage meeles, et tabel tuleb ümber pöörata, kui üks // sisenditest jäi konstantseks, me ei vaja selleks IF // lauset. Praegu on soovitud suuna bit // muutuja 'dir' iga paari parempoolne bit // vasakpoolne bitt on mõttetu // muutuja 'diff' on bit, mis muutis 'set' // nii et meil on "01" või "10" // XOR see koos "dir" baidiga kas // pöörab tähendusliku biti ümber või mitte. dir ^= erinevus; // nüüd uuenda hoidmismuutuja hold = state; // kui selle kodeerija kumbki bitt on muutunud, kui (diff & 0x03) {// määrake suund, kui (dir & 0x01) {// põhineb teie hadware ja juhtmestikul kas ++ või ---z; } muu {++ z; }} // sama ülejäänud jaoks, kui (erinevus & 0x0c) {kui (dir & 0x04) {++ y; } muu {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } muu {++ x; }}

Nupu vajutamisel saadame praeguse XYZ väärtuse terminaliprogrammi.

Seeriaandmed on aeglased, kuid tavapärase töö ajal ei muutu kodeerijate asukohad selle aja jooksul niikuinii.

Andmed saadetakse toorena. Võite teha matemaatikat ja saata andmed millimeetrites või tollides jne. Leian, et toores väärtused on sama head, kuna saame objekti hiljem tarkvara abil skaleerida.

Samm: esimene skannimine

Esimene skannimine
Esimene skannimine
Esimene skannimine
Esimene skannimine
Esimene skannimine
Esimene skannimine
Esimene skannimine
Esimene skannimine

Punktide kogumine on aeglane protsess, tõstan sondi vasakus ülanurgas ja lähtestan Arduino.

See nullib positsiooni kodus.

Seejärel liigutage sond sihtmärgi asukohta, hoidke seda kindlalt ja vajutage hetktõmmise nuppu.

Selle üsna suure proovitüki jaoks võtsin vaid ~ 140 punkti, seega pole lõpptoote üksikasjad suured.

Salvestage andmed. PCD -faili ja lisage päis

#. PCD v.7 - punktipilvandmete failivorming VERSION.7 VÄLJAD x y z SUURUS 4 4 4 TÜÜP F F F LOENDUS 1 1 1 LAIUS (teie punktide arv) KÕRGUS 1 VAATEPUNKT 0 0 0 1 0 0 0 PUNKTI (teie punktide arv)

Pange punktide arv päisesse, see on lihtne iga redaktori puhul, mis pakub teile reanumbreid.

Täppide kohal on näha freeCad, seejärel eksporditakse need freeCadist. PLY -failina.

Avage. PLY MeshLabil ja asetage objekt pinnale. Valmis !!

Soovitan: