Turinys:

XYZ taškų skaitytuvas naudojant išgelbėtus rotacinius kodavimo įrenginius: 5 žingsniai
XYZ taškų skaitytuvas naudojant išgelbėtus rotacinius kodavimo įrenginius: 5 žingsniai

Video: XYZ taškų skaitytuvas naudojant išgelbėtus rotacinius kodavimo įrenginius: 5 žingsniai

Video: XYZ taškų skaitytuvas naudojant išgelbėtus rotacinius kodavimo įrenginius: 5 žingsniai
Video: Как правильно выбрать оборудование для диагностики, чиптюнинга и работы с иммобилайзерами 2024, Lapkritis
Anonim
XYZ taškų skaitytuvas naudojant išgelbėtus rotacinius kodavimo įrenginius
XYZ taškų skaitytuvas naudojant išgelbėtus rotacinius kodavimo įrenginius

Iš savo darbo vietos įsigijęs gana daug išmestų rotacinių optinių kodavimo įrenginių, pagaliau nusprendžiau su jais nuveikti ką nors įdomaus/naudingo.

Neseniai nusipirkau naują 3D spausdintuvą savo namams ir kas gali jį pagirti geriau nei 3D skaitytuvas! Šis projektas taip pat suteikė man puikią galimybę panaudoti savo 3D spausdintuvą reikiamoms dalims gaminti.

Prekės

Optiniai kodavimo įrenginiai ir atitinkami optiniai jutikliai

Arduino UNO

pasirenkamas prototipų skydas

plieniniai strypai

prieiga prie 3D spausdintuvo

1 žingsnis: optiniai kodavimo įrenginiai

Optiniai kodavimo įrenginiai
Optiniai kodavimo įrenginiai
Optiniai kodavimo įrenginiai
Optiniai kodavimo įrenginiai
Optiniai kodavimo įrenginiai
Optiniai kodavimo įrenginiai

Šiam projektui galėtų būti naudojamas beveik bet kuris sukamasis kodavimo įrenginys, jei jis suteiks palyginti daug „paspaudimų“per mm. Akivaizdu, kad skirtingiems kodavimo įrenginiams reikės tinkamo montavimo sprendimo.

Aš naudoju tęstinumo matuoklį, kad galėčiau atsekti foto jutiklių prijungimo schemą.

2 žingsnis: 3D spausdintos dalys

3D spausdintos dalys
3D spausdintos dalys
3D spausdintos dalys
3D spausdintos dalys

Šiose dalyse yra sukamieji kodavimo įrenginiai ir bėgiai yra slankiojami. Vieno kodavimo įrenginio korpuso gale yra dvi skylės, prie kurių galima pritvirtinti skersinius bėgelius. Dvigubo kodavimo įrenginio korpusas yra tik du atskiri korpusai, sujungti stačiu kampu.

Sukūriau šiuos laikiklius ant „fusion360“, kad tiktų mano pasirinkti kodavimo įrenginiai ir bėgeliai. Kodavimo velenas turi trumpą guminį apvalkalo gabalėlį, kuris padės geriau suimti nerūdijančio plieno veleną.

Norite, kad velenas laisvai slystų ir nukristų per korpusą, kai jis laikomas vertikaliai, tačiau jis turi pakankamai paspausti kodavimo įrenginį, kad neslystų. Man veikė tai, kad veleno skaidrė sutapo su kodavimo velenu 0,5 mm. Šliaužtinė guma yra pakankamai minkšta, kad tokiu būdu deformuotųsi ir užtikrintų gerą sukibimą.

3 žingsnis: laidų schema

Elektros schema
Elektros schema

Grandinė yra labai paprasta. Opto jutikliams reikia tam tikros srovės IR spinduliuotės diodams, įžeminimo ir traukimo rezistorių fotodiodams.

Aš nusprendžiau 5mA serijiniams spinduliavimo diodams, šiame konkrečiame kodavimo įrenginyje įtampos kritimas per diodus yra 3,65 V. Aš naudoju 5 V maitinimą iš „Arduino“, kuris rezistoriui palieka 1,35 V, esant 5 mA, tai yra 270 omų.

Prisitraukimams buvo pasirinktas 10k omų, nes fotodiodai gali nuskęsti tik nedidelę srovę, 10k omų taip pat buvo naudojamas mygtukui. Prie prototipo plokštės, jau prijungtos prie žemės, galima naudoti mygtuką, tiesiog aprūpinkite ją ištraukiamuoju rezistoriumi ir prijunkite prie norimo įvesties kaiščio.

4 žingsnis: „Arduino“kodas

Arduino kodas
Arduino kodas
Arduino kodas
Arduino kodas
Arduino kodas
Arduino kodas

Kodą reikia šiek tiek paaiškinti, nes jo veikimas gali būti ne iš karto akivaizdus, tačiau jį reikėjo taip optimizuoti, kad būtų galima pakankamai greitai apdoroti 3 koduotuvus.

Pirma, mes norime apdoroti tik krypties duomenis, jei pasikeitė kodavimo įrenginio padėtis.

pokyčiai = nauja_vertybė ^ išsaugota vertė;

Norėdami gauti daugiau skiriamosios gebos iš savo kodavimo įrenginių, turėjau apdoroti tiek kylančius, tiek krintančius kraštus.

Mano sąrankoje mano skiriamoji geba yra 24 paspaudimai per 1 cm.

Tai palieka mums keletą scenarijų.

S1 yra pastovus 0, o S2 perjungtas nuo 0 iki 1

S1 yra pastovus 0, o S2 perjungtas nuo 1 iki 0

S1 yra pastovus 1, o S2 perjungiamas nuo 0 iki 1

S1 yra pastovus 1, o S2 perjungiamas nuo 1 iki 0

S2 yra pastovus 0, o S1 perjungtas nuo 0 iki 1

S2 yra pastovus 0, o S1 perjungtas nuo 1 iki 0

S2 yra pastovus 1, o S1 perjungiamas nuo 0 iki 1

S2 yra pastovus 1, o S1 perjungiamas nuo 1 iki 0

Šios sąlygos geriau suprantamos aukščiau esančiose tiesos lentelėse, taip pat kiekviena sąlyga suteikia „kryptį“, savavališkai pavadintą 0 arba 1.

Diagramos suteikia mums du svarbius įkalčius:

1) viena diagrama yra visiškai atvirkštinė kitai, taigi, jei turime vieną, galime lengvai apskaičiuoti kitą tiesiog apversdami išvestį. Mes apverčiame išvestį tik tuo atveju, jei keičiasi vienas kaištis, o ne kitas, mes galime savavališkai pasirinkti vieną.

2) pati diagrama yra tiesiog S1 ir S2 signalų XOR. (kita diagrama yra NĖRA).

Dabar suprasti kodą paprasta.

// skaityti PORT lygiagrečiai // prisiminti, kad gretimos poros priklauso tai pačiai kodavimo būsenai = PINB & 0x3f; // kokie kaiščiai pasikeitė, jei kokia nors diff = hold ^ būsena; // XOR greta esantys S1 ir S2 signalai, norint gauti tiesos lentelę // paprasčiausias būdas yra pasidaryti dabartinės būsenos kopiją // ir perkelti ją į dešinę vienu bitu lookup = state >> 1; // dabar bitai sulygiuoti XOR dir = lookup ^ state; // atminkite, kad lentelę reikia apversti, jei vienas iš įvesties elementų liko pastovus, mums nereikia IF // teiginio. Šiuo metu norimos krypties bitas // yra kiekvienos poros dešinysis kintamojo „dir“kintamasis // kairysis bitas yra beprasmis // kintamasis „diff“turi bitą, kuris pakeitė „set“// taigi mes arba „01“arba „10“// XOR tai su „dir“baitu apvers // reikšmingą bitą. dir ^= diferencialas; // dabar atnaujinti sulaikymo kintamąjį hold = state; // jei pasikeitė bet kuris šio kodavimo įrenginio bitas if (diff & 0x03) {// nustatykite kryptį, jei (dir & 0x01) {// pagal jūsų hadware ir laidus ++ arba ---z; } else {++ z; }} // taip pat likusiems, jei (skirtumas & 0x0c) {jei (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}

Paspaudus mygtuką, siunčiame dabartinę XYZ reikšmę į terminalo programą.

Serijiniai duomenys yra lėti, tačiau įprasto veikimo metu koduotojų padėtis per tą laiką nesikeis.

Duomenys siunčiami kaip neapdoroti skaičiai. Galite atlikti skaičiavimus ir siųsti duomenis mm arba coliais ir tt. Manau, kad neapdorotos vertės yra tokios pat geros, nes vėliau programinėje įrangoje galime pakeisti objektą.

5 veiksmas: pirmasis nuskaitymas

Pirmasis nuskaitymas
Pirmasis nuskaitymas
Pirmasis nuskaitymas
Pirmasis nuskaitymas
Pirmasis nuskaitymas
Pirmasis nuskaitymas
Pirmasis nuskaitymas
Pirmasis nuskaitymas

Taškų surinkimas yra lėtas procesas, aš pakeliu zondą viršutiniame kairiajame kampe ir iš naujo nustatau „Arduino“.

Tai nulis padėties kaip namuose.

Tada perkelkite zondą į taikinio vietą, laikykite jį stabiliai ir paspauskite „momentinės nuotraukos“mygtuką.

Už šį gana didelį mėginio gabalą paėmiau tik ~ 140 taškų, todėl galutinio produkto detalumas nėra didelis.

Išsaugokite duomenis į. PCD failą ir pridėkite antraštę

#. PCD v.7 - „Point Cloud“duomenų failo formatas VERSIJA.7 LAUKAI x y z 4 4 4 F TIPAS

Įdėkite taškų skaičių į antraštę, tai lengva padaryti bet kuriame redaktoriuje, kuris pateikia eilutės numerius.

Virš taškų galima pamatyti „freeCad“, tada jie eksportuojami iš „freeCad“kaip. PLY failas.

Atidarykite. PLY „MeshLab“ir padėkite objektą ant paviršiaus. Padaryta!!

Rekomenduojamas: