
Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:41

Kun olin hankkinut työpaikaltani melko suuren määrän käytöstä poistettuja pyöriviä optisia enkoodereita, päätin lopulta tehdä jotain hauskaa/hyödyllistä heidän kanssaan.
Olen äskettäin ostanut uuden 3D -tulostimen kotiin ja mikä voisi täydentää sitä paremmin kuin 3D -skanneri! Tämä projekti tarjosi minulle myös täydellisen mahdollisuuden käyttää 3D -tulostinta tarvittavien osien valmistamiseen.
Tarvikkeet
Optiset kooderit ja vastaavat optiset anturit
Arduino UNO
valinnainen prototyyppisuojus
teräspalkit
pääsy 3D -tulostimeen
Vaihe 1: Optiset enkooderit



Lähes mitä tahansa pyörivää anturia voitaisiin käyttää tähän projektiin, kunhan se tarjosi suhteellisen paljon napsautuksia millimetriä kohti. Ilmeisesti erilaiset anturit vaativat sopivan asennusratkaisun.
Käytin jatkuvuusmittaria valokuva-antureiden kytkentäkaavion jäljittämiseen.
Vaihe 2: 3D -tulostetut osat


Nämä osat sisältävät pyörivät anturit ja tarjoavat liukukiskon. Yksittäisessä anturikotelossa on takana kaksi reikää poikkikiskojen kiinnittämistä varten. Kaksoiskooderikotelo on yksinkertaisesti kaksi yksittäistä koteloa, jotka on sulatettu yhteen oikeassa kulmassa.
Suunnittelin nämä kiinnikkeet fusion360: een sopivaksi valitsemiini enkoodereihin ja kiskoihin. Anturin akselissa on lyhyt hihnakuori, joka auttaa pitämään ruostumattomasta teräksestä valmistetun akselin paremmin.
Haluat akselin liukuvan vapaasti ja putoavan kotelon läpi, kun sitä pidetään pystysuorassa, mutta sen on kohdistettava tarpeeksi painetta anturiin, jotta se ei luista. Minulle toimi se, että akselin liukumäki pääsi päällekkäin anturin akselin kanssa 0,5 mm. Rintareppu on riittävän pehmeää muodonmuutokseen ja tarjoamaan hyvän pidon.
Vaihe 3: Kytkentäkaavio

Piiri on hyvin yksinkertainen. Optoanturit vaativat jonkin verran virtaa infrapunalähettimen diodeille, maadoitus- ja vetovastusvastuksia fotodiodille.
Päätin 5 mA: n sarjasarjoille, tässä kooderissa jännitehäviö diodien välillä on 3,65 V. Käytän Arduinon 5 V: n syöttöä, joka jättää 1,35 V: n vastuksen, 5 mA: n kohdalla tämä on 270 ohmia.
Nostoihin valittiin 10 k ohmia, koska fotodiodit voivat upottaa vain pienen virran, 10 k ohmia käytettiin myös painikkeessa. Prototyyppikortilla, joka on jo kytketty maahan, on käytettävissä painike, varmista vain vetovastus ja kytke se haluttuun tulotappiin.
Vaihe 4: Arduino -koodi



Koodi tarvitsee hieman selitystä, koska sen toiminta ei välttämättä ole heti ilmeistä, mutta se oli optimoitava tällä tavalla, jotta se pystyy käsittelemään kolme kooderia riittävän nopeasti.
Ensinnäkin haluamme käsitellä vain suuntatietoja, JOS kooderin sijainti on muuttunut.
muutokset = uusi_arvo ^ tallennettu arvo;
Saadakseni enemmän tarkkuutta koodereistani jouduin käsittelemään sekä nousevia että laskevia reunoja.
Asetuksessani resoluutio on 24 napsautusta per 1 cm.
Tämä jättää meille muutamia skenaarioita.
S1 on vakio 0 ja S2 on vaihdettu 0: sta 1: een
S1 on vakio 0 ja S2 on vaihdettu 1: stä 0: een
S1 on vakio 1 ja S2 vaihtaa 0: sta 1: een
S1 on vakio 1 ja S2 vaihtaa 1: stä 0: een
S2 on vakio 0 ja S1 on vaihdettu 0: sta 1: een
S2 on vakio 0 ja S1 on vaihdettu 1: stä 0: een
S2 on vakio 1 ja S1 vaihtaa 0: sta 1: een
S2 on vakio 1 ja S1 vaihtaa 1: stä 0: een
Nämä ehdot ymmärretään paremmin yllä olevissa totuustaulukoissa, ja myös jokainen ehto antaa "suunnan", jonka nimi on mielivaltaisesti 0 tai 1.
Kaaviot antavat meille kaksi tärkeää vihjettä:
1) yksi kaavio on toisen käänteinen, joten jos meillä on yksi, voimme helposti laskea toisen yksinkertaisesti kääntämällä tuotoksen. Käännämme lähdön vain, jos yksi nasta vaihtuu ja toinen ei, voimme valita yhden mielivaltaisesti.
2) kaavio itsessään on yksinkertaisesti S1- ja S2 -signaalien XOR. (toinen kaavio EI ole tästä).
Nyt koodin ymmärtäminen on yksinkertaista.
// lukee PORT: ssa rinnakkain // muista, että vierekkäiset parit kuuluvat samaan kooderin tilaan = PINB & 0x3f; // mitkä nastat ovat muuttuneet, jos diff = hold ^ tila; // XOR -viereiset S1- ja S2 -signaalit totuustaulukon saamiseksi // helpoin tapa on kopioida nykyinen tila // ja siirtää se oikealle yhden bitin haulla = tila >> 1; // nyt bitit on kohdistettu XOR: lle dir = lookup ^ state; // Muista, että taulukko on käännettävä, jos yksi // tuloista pysyi vakiona, emme tarvitse IF // -lausetta tähän. Tällä hetkellä haluttu suunnan bitti // on jokaisen parin oikea käsi bitti muuttujassa "dir" // vasen käsi on merkityksetön // muuttujan "diff" bitti on muuttanut "set" // joten meillä on joko '01' tai '10' // XOR tämä "dir" tavulla joko // kääntää tai ei merkitsevää bittiä. dir ^= ero; // päivitä nyt hold -muuttuja hold = state; // jos jompikumpi bitti on muuttunut tälle enkooderille if (diff & 0x03) {// määritä suunta if (dir & 0x01) {// hadware -ohjelmiston ja johdotuksen perusteella joko ++ tai ---z; } muu {++ z; }} // sama muillekin if (diff & 0x0c) {if (dir & 0x04) {++ y; } muu {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } muu {++ x; }}
Kun painiketta painetaan, lähetämme nykyisen XYZ -arvon pääteohjelmalle.
Sarjatiedot ovat hitaita, mutta normaalikäytön aikana anturien sijainnit eivät muutu tänä aikana.
Tiedot lähetetään raakamäärinä. Voit tehdä laskutoimituksia ja lähettää tiedot millimetreinä tai tuumina jne. Mielestäni raaka -arvot ovat yhtä hyviä, koska voimme skaalata objektin myöhemmin ohjelmistossa.
Vaihe 5: Ensimmäinen skannaus




Pisteiden kerääminen on hidas prosessi, nostan anturin vasemmassa yläkulmassa ja nollaan Arduinon.
Tämä nollaa aseman kotona.
Siirrä sitten mittapää kohteen kohdalle, pidä sitä vakaasti ja paina 'tilannekuva' -painiketta.
Tästä melko suuresta näytekappaleesta otin vain ~ 140 pistettä, joten yksityiskohdat eivät ole suuria lopputuotteessa.
Tallenna tiedot. PCD -tiedostoon ja lisää otsikko
#. PCD v.7 - Point Cloud -tiedostomuoto VERSIO.7 KENTTÄ x x z KOKO 4 4 4 TYYPPI F F F COUNT 1 1 1 LEVEYS (pistemääräsi) KORKEUS 1 NÄKYMÄPISTE 0 0 0 1 0 0 0 PISTETTÄ (pistemäärä)
Laita pistemäärä otsikkoon, tämä on helppoa millä tahansa editorilla, joka tarjoaa sinulle rivinumerot.
Pisteiden yläpuolella näkyy freeCad, ja ne viedään sitten freeCadista. PLY -tiedostona.
Avaa. PLY MeshLabissa ja pistä kohde pintaan. Tehty!!
Suositeltava:
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: 7 vaihetta

Hallitse talon valoja Google Assistantin avulla Arduinon avulla: (Päivitys 22.8.2020: Tämä ohje on 2 vuotta vanha ja perustuu joihinkin kolmansien osapuolien sovelluksiin. Kaikki heidän puolellaan tehdyt muutokset saattavat tehdä projektista toimimattoman. Se voi olla tai ei työskentele nyt, mutta voit seurata sitä viitteenä ja muokata sen mukaan
Useiden ESP-keskustelujen tekeminen ESP-NOW: n avulla ESP32: n ja ESP8266: n avulla: 8 vaihetta

Useiden ESP-keskustelujen tekeminen ESP-NYT: n avulla ESP32: n ja ESP8266: n avulla: Käynnissä olevassa projektissani tarvitsen useita ESP: itä puhuakseni keskenään ilman reititintä. Tätä varten käytän ESP-NOW-ohjelmaa langattoman viestinnän tekemiseen keskenään ilman ESP: n reititintä
Ihmisen ja tietokoneen käyttöliittymä: Function a Gripper (valmistaja Kirigami) ranneliikkeen avulla EMG: n avulla: 7 vaihetta

Ihmisen ja tietokoneen käyttöliittymä: Function a Gripper (valmistaja Kirigami) ranneliikkeen avulla EMG: n avulla: Joten tämä oli ensimmäinen kokeiluni ihmisen ja tietokoneen välisessä käyttöliittymässä. pythonin ja arduinon kautta ja käytti origamipohjaista tarttujaa
Suuntautumisen opiskelu Raspberry Pi: n ja MXC6226XU: n avulla Pythonin avulla: 6 vaihetta

Suuntautumisen opiskelu Raspberry Pi: n ja MXC6226XU: n avulla Pythonin avulla: Äänet ovat yksinkertaisesti osa ajoneuvon työskentelyä. Hyvin viritetyn ajoneuvomoottorin humina on upea ääni. Renkaiden kulutuspinnat nurisevat tietä vasten, tuuli huutaa peilien, muovikappaleiden ja kojelaudan kappaleiden ympäri
Ohjaa lediä kaikkialla maailmassa Internetin avulla Arduinon avulla: 4 vaihetta

Ohjaa johtoa ympäri maailmaa Internetin avulla Arduinon avulla: Hei, olen Rithik. Aiomme tehdä Internet -ohjattavan ledin puhelimellasi. Aiomme käyttää ohjelmistoja, kuten Arduino IDE ja Blynk. Se on yksinkertainen ja jos onnistuit, voit hallita niin monta elektronista komponenttia kuin haluat Asioita, joita tarvitsemme: Laitteisto: