Satura rādītājs:

XYZ punktu skeneris, izmantojot izglābtos rotācijas kodētājus: 5 soļi
XYZ punktu skeneris, izmantojot izglābtos rotācijas kodētājus: 5 soļi

Video: XYZ punktu skeneris, izmantojot izglābtos rotācijas kodētājus: 5 soļi

Video: XYZ punktu skeneris, izmantojot izglābtos rotācijas kodētājus: 5 soļi
Video: A-GEO Darbnīca. Stonex x120Go un DJI L1 topogrāfiskā plāna izgatavošana izmantojot TerraSolid. 2024, Jūlijs
Anonim
XYZ punktu skeneris, izmantojot izglābtos rotācijas kodētājus
XYZ punktu skeneris, izmantojot izglābtos rotācijas kodētājus

Iegādājies no savas darba vietas diezgan daudz izmestu rotējošu optisko kodētāju, es beidzot nolēmu ar viņiem darīt kaut ko jautru/noderīgu.

Es nesen iegādājos jaunu 3D printeri savām mājām, un kas to varētu papildināt labāk par 3D skeneri! Šis projekts arī sniedza man lielisku iespēju izmantot savu 3D printeri nepieciešamo detaļu ražošanai.

Piegādes

Optiskie kodētāji un atbilstošie optiskie sensori

Arduino UNO

izvēles prototipu vairogs

tērauda stieņu sliedes

piekļuve 3D printerim

1. darbība: optiskie kodētāji

Optiskie kodētāji
Optiskie kodētāji
Optiskie kodētāji
Optiskie kodētāji
Optiskie kodētāji
Optiskie kodētāji

Šim projektam varētu izmantot gandrīz jebkuru rotējošu kodētāju, ja vien tas nodrošināja salīdzinoši lielu “klikšķu” skaitu uz mm. Acīmredzot dažādiem kodētājiem būs nepieciešams piemērots montāžas risinājums.

Es izmantoju nepārtrauktības mērītāju, lai izsekotu foto sensoru elektroinstalācijas shēmu.

2. darbība: 3D drukātās detaļas

3D drukātas detaļas
3D drukātas detaļas
3D drukātas detaļas
3D drukātas detaļas

Šajās daļās ir rotējošie kodētāji un sliede sliedei. Viena kodētāja korpusam aizmugurē ir divi caurumi šķērssijas uzstādīšanai. Divkāršais kodētāja korpuss ir vienkārši divi atsevišķi korpusi, kas sapludināti kopā taisnā leņķī.

Šos stiprinājumus es izstrādāju uz fusion360, lai tie atbilstu maniem kodētāju un sliežu izvēlei. Kodētāja vārpstā ir īss siksnas gumijas apvalks, lai tas labāk satvertu nerūsējošā tērauda vārpstu.

Jūs vēlaties, lai vārpsta brīvi slīdētu un izkristu caur korpusu, turot to vertikāli, tomēr tai ir jāpieliek pietiekams spiediens uz kodētāju, lai tas neslīdētu. Man izdevās atļaut vārpstas slaidam pārklāties ar kodētāja vārpstu par 0,5 mm. Slingshot gumija ir pietiekami mīksta, lai tādā veidā deformētos un nodrošinātu labu saķeri.

3. darbība: elektroinstalācijas shēma

Elektroinstalācijas shēma
Elektroinstalācijas shēma

Ķēde ir ļoti vienkārša. Opto sensoriem ir nepieciešama zināma strāva IS emitēšanas diodēm, zemējuma un uzvilkšanas rezistori fotodiodēm.

Es nolēmu 5mA sērijveida emitēšanas diodēm, šajā konkrētajā kodētājā sprieguma kritums starp diodēm ir 3,65 V. Es izmantoju 5 V barošanas avotu no Arduino, kas rezistoram atstāj 1,35 V, pie 5 mA tas ir 270 omi.

Pievilkšanai tika izvēlēts 10k omi, jo fotodiodes var nogremdēt tikai nelielu strāvu, 10k omi tika izmantoti arī spiedpogai. Pie prototipa tāfeles, kas jau ir pievienota zemei, ir pieejama poga, vienkārši nodrošiniet tai pievelkamo rezistoru un pievienojiet to vēlamajai ievades tapai.

4. solis: Arduino kods

Arduino kods
Arduino kods
Arduino kods
Arduino kods
Arduino kods
Arduino kods

Kodam ir vajadzīgs neliels skaidrojums, jo tā darbība var nebūt uzreiz acīmredzama, tomēr tas bija jāoptimizē šādā veidā, lai varētu pietiekami ātri apstrādāt 3 kodētājus.

Pirmkārt, mēs vēlamies apstrādāt tikai virziena datus, JA kodētāja atrašanās vieta ir mainījusies.

izmaiņas = jauna_vērtība ^ saglabāta vērtība;

Lai iegūtu lielāku izšķirtspēju no kodētājiem, man bija jāapstrādā gan augošās, gan krītošās malas.

Manā iestatījumā mana izšķirtspēja ir 24 klikšķi uz 1 cm.

Tas mums atstāj dažus scenārijus.

S1 ir nemainīgs 0 un S2 ir pārslēgts no 0 uz 1

S1 ir nemainīgs 0 un S2 ir pārslēgts no 1 uz 0

S1 ir nemainīgs 1, un S2 pārslēdzas no 0 uz 1

S1 ir nemainīgs 1, un S2 pārslēdzas no 1 uz 0

S2 ir nemainīgs 0 un S1 ir pārslēgts no 0 uz 1

S2 ir nemainīgs 0 un S1 ir pārslēgts no 1 uz 0

S2 ir nemainīgs 1 un S1 pārslēdzas no 0 uz 1

S2 ir nemainīgs 1 un S1 pārslēdzas no 1 uz 0

Šie nosacījumi ir labāk saprotami iepriekš minētajās patiesības tabulās, turklāt katrs nosacījums dod “virzienu”, patvaļīgi nosauktu 0 vai 1.

Diagrammas sniedz mums divas būtiskas norādes:

1) viena diagramma ir pilnīga otrāda otrai, tādēļ, ja mums tāda ir, mēs varam viegli aprēķināt otru, vienkārši apgriežot rezultātu. Mēs apgriežam izvadi tikai tad, ja mainās viena tapa, nevis otra, mēs varam izvēlēties vienu patvaļīgi.

2) pati diagramma ir vienkārši S1 un S2 signālu XOR. (otra diagramma ir šī NAV).

Tagad koda izpratne ir vienkārša.

// lasīt PORT paralēli // atcerēties, ka blakus esošie pāri pieder vienam kodētāja stāvoklim = PINB & 0x3f; // kādas tapas ir mainījušās, ja ir kāds dif = hold ^ stāvoklis; // XOR blakus esošie S1 un S2 signāli, lai iegūtu patiesības tabulu // vienkāršākais veids ir izveidot pašreizējā stāvokļa kopiju // un pārvietot to pa labi ar vienu bitu uzmeklēšanu = stāvoklis >> 1; // tagad biti ir izlīdzināti XOR dir = lookup ^ state; // atcerieties, ka tabula ir jāapgriež otrādi, ja viena no ievadēm palika nemainīga, mums šim nolūkam nav nepieciešams IF // paziņojums. Pašlaik vēlamais virziena bits // ir katra pāra labās puses bits mainīgajā 'dir' // kreisajā rokā nav nozīmes // mainīgajam 'diff' ir bits, kas mainījis 'set' //, tāpēc mums vai nu ir '01' vai '10' // XOR tas ar 'dir' baitu apvērs // nozīmīgo bitu vai ne. dir ^= dif; // tagad atjauniniet aizturēšanas mainīgo hold = state; // ja kāds no bitiem šim kodētājam ir mainījies, ja (diff & 0x03) {// nosaka virzienu, ja (dir & 0x01) {// pamatojoties uz jūsu hadware un vadiem vai nu ++, vai ---z; } cits {++ z; }} // tas pats par pārējo, ja (dif. & 0x0c) {ja (dir & 0x04) {++ y; } cits {--y; }} ja (dif. & 0x30) {ja (dir & 0x10) {--x; } cits {++ x; }}

Nospiežot pogu, mēs nosūta pašreizējo XYZ vērtību termināļa programmai.

Sērijas dati ir lēni, bet normālas darbības laikā kodētāju pozīcijas šajā laikā tik un tā nemainīsies.

Dati tiek nosūtīti kā neapstrādāti skaitļi. Jūs varētu veikt matemātiku un nosūtīt datus mm vai collās utt. Es uzskatu, ka neapstrādātas vērtības ir tikpat labas, jo mēs varam mērogot objektu vēlāk programmatūrā.

5. darbība: pirmā skenēšana

Pirmā skenēšana
Pirmā skenēšana
Pirmā skenēšana
Pirmā skenēšana
Pirmā skenēšana
Pirmā skenēšana
Pirmā skenēšana
Pirmā skenēšana

Punktu savākšana ir lēns process, es novietoju zondi augšējā kreisajā stūrī un atiestatīju Arduino.

Tas nulles pozīciju kā mājās.

Pēc tam pārvietojiet zondi uz mērķa atrašanās vietu, turiet to stabili un nospiediet momentuzņēmuma pogu.

Par šo diezgan lielo parauga gabalu es paņēmu tikai ~ 140 punktus, tāpēc galaprodukta detaļas nav lielas.

Saglabājiet datus. PCD failā un pievienojiet galveni

#. PCD v.7 - Punktu mākoņu datu faila formātsVERSIJA.7 LAUKI x y z 4. IZMĒRS 4 4 4 TIPA F F F SKAITS

Ievietojiet punktu skaitu galvenē, tas ir viegli jebkurā redaktorā, kas nodrošina rindu numurus.

Virs punktiem var redzēt freeCad, pēc tam tie tiek eksportēti no freeCad kā. PLY fails.

Atveriet. PLY vietnē MeshLab un atklājiet objektu. Gatavs !!

Ieteicams: