
INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-23 12:53

Nadat ek 'n groot aantal weggegooide roterende optiese encoders van my werk gekry het, het ek uiteindelik besluit om iets lekker/nuttig daarmee te doen.
Ek het onlangs 'n nuwe 3D -drukker vir my huis gekoop, en wat kan dit beter komplimenteer as 'n 3D -skandeerder! Hierdie projek het my ook die perfekte geleentheid gebied om my 3D -drukker te gebruik om die benodigde onderdele te vervaardig.
Voorrade
Optiese encoders en ooreenstemmende optiese sensors
Arduino UNO
opsionele prototipe skild
staalstaafrails
toegang tot 'n 3D -drukker
Stap 1: Die optiese enkoders



Byna elke roterende enkodeerder kan vir hierdie projek gebruik word, solank dit 'n relatief groot aantal 'klik' per mm bied. Dit is duidelik dat verskillende encoders 'n geskikte monteeroplossing benodig.
Ek het 'n kontinuïteitsmeter gebruik om die bedradingsdiagram vir die fotosensors op te spoor.
Stap 2: 3D -gedrukte onderdele


Hierdie dele huisves die draaikoders en bied 'n glybaan vir die spoor. Die enkel encoder behuising het twee gate in die rug vir die dwars relings om te monteer. Die dubbele encoder -behuising is eenvoudig twee enkelhuise wat in die regte hoeke saamgesmelt is.
Ek het hierdie houers op fusion360 ontwerp om by my keuse van encoders en relings te pas; die as van die encoder het 'n kort stuk slingervaste rubbermantel om dit beter by die as van vlekvrye staal te hou.
U wil hê die as moet vrylik gly en deur die behuizing val as dit vertikaal vasgehou word, maar dit moet genoeg druk op die encoder uitoefen om nie te gly nie. Wat vir my gewerk het, was om die skyfie vir die as met 0,5 mm te laat oorvleuel met die encoder -as. Die slingervel rubber is sag genoeg om met die hoeveelheid te vervorm en goeie trekkrag te bied.
Stap 3: Bedradingsdiagram

Die kring is baie eenvoudig. Die optosensors benodig 'n mate van stroom vir die IR-emitterdiodes, 'n grond- en optrekweerstand vir die fotodiodes.
Ek het besluit op 5mA vir die in-reeks emitterdiodes; in hierdie spesifieke encoder is die spanningsval oor die diodes 3,65V. Ek gebruik 'n 5V -toevoer van die Arduino, wat 1,35V oorlaat vir die weerstand, by 5mA werk dit uit op 270 ohm.
10k ohm is gekies vir die pull-ups, aangesien die fotodiodes slegs 'n klein stroom kan sink; 10k ohm is ook gebruik vir die drukknop. Daar is 'n knoppie beskikbaar vir gebruik op die prototipe-bord wat reeds op die aarde gekoppel is; voorsien dit net van 'n optrekweerstand en dra dit na die gewenste invoerpen.
Stap 4: Arduino -kode



Die kode benodig 'n bietjie verduideliking, aangesien die werking daarvan nie onmiddellik voor die hand liggend is nie, maar dit moes op hierdie manier geoptimaliseer word om 3 encoders vinnig genoeg te kon verwerk.
Eerstens wil ons slegs rigtingsdata verwerk AS daar 'n verandering in die encoder -posisie was.
veranderings = nuwe_waarde ^ gestoorde waarde;
Om meer resolusie van my encoders te kry, moes ek stygende en dalende rande verwerk.
Op my opstelling is my resolusie 24 klik per 1 cm.
Dit laat ons met 'n paar scenario's.
S1 is konstant 0 en S2 wissel van 0 na 1
S1 is konstant 0 en S2 wissel van 1 na 0
S1 is konstant 1 en S2 wissel van 0 na 1
S1 is konstant 1 en S2 wissel van 1 na 0
S2 is konstant 0 en S1 wissel van 0 na 1
S2 is konstant 0 en S1 wissel van 1 na 0
S2 is konstant 1 en S1 wissel van 0 na 1
S2 is konstant 1 en S1 wissel van 1 na 0
Hierdie toestande word beter verstaan in die waarheidstabelle hierbo, ook lewer elke voorwaarde 'n 'rigting', willekeurig 0 of 1 genoem.
Die kaarte gee ons twee belangrike leidrade:
1) die een grafiek is die volledige omgekeerde van die ander, so as ons een het, kan ons die ander een maklik bereken deur die uitset eenvoudig om te draai. Ons draai die uitset slegs om as die een pen verander en nie die ander nie, ons kan die een willekeurig kies.
2) die grafiek self is bloot die XOR van die S1- en S2 -seine. (die ander grafiek is die NIE hiervan nie).
Om die kode te verstaan, is eenvoudig.
// lees parallel in PORT // onthou aangrensende pare behoort tot dieselfde encoder -toestand = PINB & 0x3f; // watter penne verander het as daar enige verskil = hou ^ toestand is; // XOR aangrensende S1- en S2 -seine om die waarheidstabel te kry // die maklikste manier is om 'n afskrif van die huidige toestand te maak // en dit met 'n bietjie opsoek na regs te skuif = toestand >> 1; // nou word stukkies in lyn gebring vir XOR dir = opzoek ^ toestand; // onthou, die tabel moet omgekeer word as een // van die insette konstant bly; ons het nie 'n IF // verklaring hiervoor nodig nie. Tans is die gewenste rigtingbit // die regterkantste bit van elke paar in die 'dir' -veranderlike // die bit van die linkerkant is betekenisloos // die' diff 'veranderlike het die bit wat' set '// verander het, sodat ons óf het '01' of '10' // XOR dit met die 'dir' byte sal // die betekenisvolle bietjie omkeer of nie. dir ^= verskil; // werk nou hou veranderlike hou = toestand op; // as een van die bitjies vir hierdie encoder verander het as (diff & 0x03) {// bepaal die rigting as (dir & 0x01) {// gebaseer op jou hadware en bedrading óf ++ óf ---z; } anders {++ z; }} // dito vir die res as (diff & 0x0c) {if (dir & 0x04) {++ y; } anders { -j; }} if (diff & 0x30) {if (dir & 0x10) {--x; } anders {++ x; }}
As u op die knoppie druk, stuur ons die huidige XYZ -waarde na 'n terminale program.
Die reeksdata is stadig, maar tydens normale werking sal die posisies van die encoders in elk geval nie gedurende hierdie tyd verander nie.
Die data word as rou tellings gestuur. U kan die wiskunde doen en die data in mm of duim stuur, ens. Ek vind dat rou waardes net so goed is omdat ons die voorwerp later in sagteware kan skaal.
Stap 5: Eerste skandering




Dit is 'n stadige proses om die punte bymekaar te maak, ek vloer die sonde in die linker boonste hoek en stel die Arduino terug.
Dit nul die posisie as tuiste.
Beweeg dan die sonde na die plek op die teiken, hou dit konstant en druk op die 'snapshot' knoppie.
Vir hierdie taamlik groot monsterstuk het ek slegs ~ 140 punte geneem, so detail is nie goed oor die finale produk nie.
Stoor die data in 'n. PCD -lêer en voeg die opskrif by
#. PCD v.7 - Puntwolk -data lêerformaat VERSIE.7 VELDE x y z GROOTTE 4 4 4 TIPE F F F TEL 1 1 1 WIDTH (u puntetelling) HOOGTE 1 VIEWPOINT 0 0 0 1 0 0 0 PUNTE (u puntetelling)
Sit u puntetelling in die kop, dit is maklik vir enige redakteur wat u reëlnommers bied.
Bo die kolletjies kan in freeCad gesien word, word dit dan uit freeCad uitgevoer as 'n. PLY -lêer.
Maak die. PLY op MeshLab oop en maak die voorwerp oop. Klaar !!
Aanbeveel:
Arduino Nano -klok met aanpasbare helderheid met behulp van prototipe PCB van NextPCB.com: 11 stappe

Arduino Nano -klok met aanpasbare helderheid met behulp van prototipe PCB van NextPCB.com: Almal wou 'n horlosie hê wat tyd en datum saam wys. In hierdie projek sal ek u wys hoe u 'n arduino -nano -klok met aanpasbare helderheid kan bou met behulp van RTC en 'n ontwerp PCB van NextPCB
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe

Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe

Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Voorgespreekte instandhouding van roterende masjiene met behulp van 'n vibrasie en Thingspeak: 8 stappe

Voorlopige instandhouding van roterende masjiene met behulp van 'n vibrasie en Thingspeak: Roterende masjiene soos windturbines, hidroturbines, induksiemotors, ens, het verskillende soorte slytasie en skeur. Die meeste van hierdie foute en slytasie word veroorsaak deur abnormale vibrasies in die toestel. Hierdie masjiene word gereeld onder swaar
Hoe om van 0 tot 99 te tel met behulp van 8051 mikrobeheerder met 7 segmentweergawe: 5 stappe (met foto's)

Hoe om van 0 tot 99 te tel Met behulp van 8051 mikrobeheerder met 7 -segmentweergawe: Hallo almal, in hierdie tutoriaal gaan ons u vertel hoe om van 0 tot 99 te tel met twee 7 -segment -skerms