
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47

Miután meglehetősen sok eldobott forgó optikai kódolót szereztem be a munkahelyemről, végül úgy döntöttem, hogy valami szórakoztató/hasznos dolgot csinálok velük.
Nemrégiben vásároltam egy új 3D nyomtatót az otthonomhoz, és mi bókolhatna vele jobban, mint egy 3D szkenner! Ez a projekt tökéletes lehetőséget biztosított számomra, hogy 3D nyomtatómat a szükséges alkatrészek gyártásához használjam.
Kellékek
Optikai kódolók és megfelelő optikai érzékelők
Arduino UNO
opcionális prototípuspajzs
acélrúd-sínek
hozzáférés a 3D nyomtatóhoz
Lépés: Az optikai kódolók



Szinte bármilyen forgó kódoló használható ebben a projektben, feltéve, hogy viszonylag nagy számú kattintást biztosít mm -enként. Nyilvánvalóan a különböző kódolók megfelelő szerelési megoldást igényelnek.
Folyamatossági mérőt használtam a fotoérzékelők kapcsolási rajzának felkutatásához.
2. lépés: 3D nyomtatott alkatrészek


Ezek az alkatrészek a forgó jeladókat tartalmazzák, és csúszást biztosítanak a sín számára. Az egykódolású ház hátsó részén két lyuk található a keresztlécek rögzítéséhez. A kettős kódolóház egyszerűen két egy ház, amelyek derékszögben össze vannak olvasztva.
Ezeket a rögzítéseket a fusion360 -ra terveztem, hogy megfeleljenek a választott jeladóknak és síneknek, az enkóder tengelyén egy rövid csúzliból készült gumihüvely található, hogy jobban megfogja a rozsdamentes acél tengelyt.
Azt szeretné, ha a tengely szabadon csúszna, és függőlegesen tartva esne át a házon, de kellő nyomást kell kifejtenie a jeladón, hogy ne csússzon el. Nekem az működött, hogy lehetővé tettem, hogy a tengely csúszda 0,5 mm -rel átfedésben legyen a jeladó tengelyével. A csúzli gumi elég puha ahhoz, hogy ilyen mértékben deformálódjon, és jó tapadást biztosítson.
3. lépés: bekötési rajz

Az áramkör nagyon egyszerű. Az opto-érzékelők némi áramot igényelnek az infravörös sugárzó diódákhoz, egy földelő és felhúzó ellenállást a fotodiódákhoz.
A soros emitter diódák esetében 5 mA mellett döntöttem, ebben a kódolóban a diódák feszültségcsökkenése 3,65 V. Az Arduino 5V -os tápegységét használom, ami 1.35V -ot hagy az ellenállásnak, 5mA -nál ez 270 ohm.
A felhúzásokhoz 10 k ohmot választottak, mivel a fotódiodák csak kis áramot képesek elnyelni, a nyomógombhoz 10 k ohmot is használtak. Van egy gomb a prototípus táblán való használathoz, amely már csatlakoztatva van a földhöz, csak szereljen fel egy felhúzó ellenállást, és kösse be a kívánt bemeneti csapba.
4. lépés: Arduino kód



A kód egy kis magyarázatra szorul, mivel a működése nem feltétlenül azonnal nyilvánvaló, mégis úgy kellett optimalizálni, hogy 3 kódolót elég gyorsan fel tudjon dolgozni.
Először is csak az irányadatokat szeretnénk feldolgozni, HA a kódoló helyzetében változás történt.
changes = new_value ^ tárolt érték;
Annak érdekében, hogy a kódolóim nagyobb felbontást érjenek el, mind az emelkedő, mind a csökkenő éleket feldolgoznom kellett.
A beállításomnál a felbontásom 24 kattintás 1 cm -enként.
Így marad néhány forgatókönyv.
S1 állandó 0 és S2 0 -ról 1 -re vált
S1 állandó 0 és S2 1 -ről 0 -ra vált
S1 állandó 1 és S2 0 -ról 1 -re vált
S1 állandó 1 és S2 1 -ről 0 -ra vált
S2 állandó 0 és S1 0 -ról 1 -re vált
S2 állandó 0 és S1 1 -ről 0 -ra vált
S2 állandó 1, S1 0 -ról 1 -re vált
S2 állandó 1 és S1 1 -ről 0 -ra vált
Ezeket a feltételeket a fenti igazságtáblázatok jobban megértik, és mindegyik feltétel „irányt” ad, tetszőlegesen 0 vagy 1 névvel.
A diagramok két fontos támpontot adnak nekünk:
1) az egyik diagram a másik teljes fordítottja, tehát ha van ilyen, akkor könnyen kiszámíthatjuk a másikat a kimenet egyszerű megfordításával. Csak akkor fordítjuk meg a kimenetet, ha az egyik érintkező változik, a másik nem, akkor tetszőlegesen választhatunk egyet.
2) maga a diagram egyszerűen az S1 és S2 jelek XOR -ja. (a másik táblázat a NEM erről szól).
Most a kód megértése egyszerű.
// PORT -ban párhuzamosan olvasva // ne feledje, hogy a szomszédos párok ugyanabba a kódolóállapotba tartoznak = PINB & 0x3f; // milyen csapok változtak, ha bármilyen diff = hold ^ állapot; // A XOR szomszédos S1 és S2 jeleket kapja az igazságtáblázathoz // legegyszerűbb módja annak, ha másolatot készít az aktuális állapotról //, és egy bites kereséssel jobbra tolja = állapot >> 1; // most a bitek igazítva vannak XOR -hoz dir = lookup ^ state; // ne feledje, a táblázatot meg kell fordítani, ha az egyik bemenet // állandó maradt, ehhez nincs szükség IF // utasításra. Jelenleg a kívánt irány bit // a "dir" változó minden párjának jobb bitje // a bal oldali bit értelmetlen // a "diff" változó bitje megváltoztatta a "set" // így A '01' vagy a '10' // XOR ezt a 'dir' bájttal // megfordítja, vagy nem, az értelmes bitet. dir ^= diff; // most update hold változó hold = state; // ha bármelyik bit megváltozott ehhez a kódolóhoz if (diff & 0x03) {// határozza meg az irányt, ha (dir & 0x01) {// a hadware és a vezetékek alapján ++ vagy ---z; } else {++ z; }} // ugyanez a többire if (diff & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}
A gomb megnyomásakor az aktuális XYZ értéket elküldjük egy terminál programnak.
A soros adatok lassúak, de normál működés közben a kódolók helyzete nem változik ez idő alatt.
Az adatokat nyers számként küldik el. Megteheted a matematikát, és elküldheted az adatokat mm -ben vagy hüvelykben stb. Úgy találom, hogy a nyers értékek ugyanolyan jók, mert később az objektumot méretezhetjük a szoftverben.
5. lépés: Első vizsgálat




A pontok összegyűjtése lassú folyamat, emelem a szondát a bal felső sarokban, és visszaállítom az Arduino -t.
Ez nullázza az otthoni pozíciót.
Ezután helyezze a szondát a célpontra, tartsa stabilan, és nyomja meg a "pillanatfelvétel" gombot.
Ehhez a meglehetősen nagy mintadarabhoz csak ~ 140 pontot vettem, így a részletesség nem nagyszerű a végterméken.
Mentse az adatokat egy. PCD fájlba, és adja hozzá a fejlécet
#. PCD v.7 - Point Cloud Data fájlformátum VERSION.7 FIELDS x y z MÉRET 4 4 4 TÍPUS F F F COUNT 1 1 1 SZÉLESSÉG (a pontszám) 1 MAGASSÁG VIEWPOINT 0 0 0 1 0 0 0 PONT (a pontszám)
Tegye a pontszámot a fejlécbe, ez egyszerű minden olyan szerkesztőben, amely sorszámokat biztosít.
A pontok felett láthatók a freeCad -ban, majd exportálják őket a freeCad -ból. PLY fájlként.
Nyissa meg a. PLY -t a MeshLab -on, és tegye felszínre az objektumot. Kész!!
Ajánlott:
Egyszerű automatizált pont -pont vasútmodell: 10 lépés (képekkel)

Egyszerű, automatizált pont -pont modellvasút: Az Arduino mikrovezérlők nagyszerűek a vasútmodellek elrendezésének automatizálásához. Az elrendezések automatizálása számos célra hasznos, például az elrendezés elhelyezése egy kijelzőn, ahol az elrendezési művelet programozható úgy, hogy a vonatokat automatizált sorrendben futtassa. Az l
Pont-pont feszültségvezérelt oszcillátor: 29 lépés

Pont-pont feszültségvezérelt oszcillátor: Szia! Találtál egy projektet, ahol veszünk egy igazán olcsó mikrochipet, egy CD4069-et (szép), és ragasztunk hozzá néhány alkatrészt, és kapunk egy nagyon hasznos hangszóró-feszültségvezérelt oszcillátort! Az általunk gyártott változat csak fűrész- vagy rámpahullámmal rendelkezik, ami
Crossfader Circuit Pont-pont: 16 lépés (képekkel)

Crossfader Circuit Point-to-Point: Ez egy crossfader áramkör. Két bemenetet fogad el, és elhalványul közöttük, a kimenet a két bemenet (vagy csak az egyik bemenet) keveréke. Ez egy egyszerű áramkör, nagyon hasznos és könnyen felépíthető! Megfordítja a rajta áthaladó jelet
Kettős romlású Eurorack Pont-pont áramkör: 12 lépés

Dual Decay Eurorack Pont-pont áramkör: Ennek az oktatóanyagnak az a célja, hogy bemutassa, hogyan készíthet DUAL DECAY áramkört a moduláris szintetizátorhoz. Ez egy pont-pont áramkör, amely nem tartalmaz PCB-t, és egy másik módszert mutat be a funkcionális szintetizátor áramkörök minimális alkatrészekkel történő felépítésére
Automatizált pont -pont modellvasút udvari mellékvágánygal: 10 lépés (képekkel)

Automatizált pontvasút -modellvasút udvari burkolattal: Az Arduino mikrovezérlők nagy lehetőségeket nyitnak meg a modellvasutakban, különösen az automatizálás területén. Ez a projekt egy példa erre az alkalmazásra. Ez az egyik korábbi projekt folytatása. Ez a projekt egy pontból áll