Kazalo:
- Zaloge
- Korak: Optični kodirniki
- 2. korak: 3D natisnjeni deli
- 3. korak: Shema ožičenja
- 4. korak: Arduino koda
- 5. korak: Prvi pregled
Video: Skener XYZ točk z rešenimi rotacijskimi kodirniki: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Ko sem s svojega delovnega mesta kupil kar veliko zavrženih rotacijskih optičnih kodirnikov, sem se končno odločil, da z njimi naredim nekaj zabavnega/uporabnega.
Pred kratkim sem za svoj dom kupil nov 3D tiskalnik in kaj bi ga lahko pohvalilo bolje kot 3D skener! Ta projekt mi je tudi dal odlično priložnost, da svoj 3D tiskalnik zaposlim za izdelavo potrebnih delov.
Zaloge
Optični dajalniki in ustrezni optični senzorji
Arduino UNO
opcijski ščit za izdelavo prototipov
jeklene tirnice
dostop do 3D tiskalnika
Korak: Optični kodirniki
Za ta projekt bi lahko uporabili skoraj kateri koli rotacijski dajalnik, če vam zagotavlja relativno veliko število 'klikov' na mm. Očitno bodo različni dajalniki potrebovali ustrezno rešitev za montažo.
Uporabil sem merilnik kontinuitete, da sem izsledil shemo ožičenja za foto-senzorje.
2. korak: 3D natisnjeni deli
V teh delih so vrtljivi dajalniki in drsnik za tirnico. Eno ohišje dajalnika ima zadaj dve luknji za pritrditev prečnih tirnic. Ohišje dvojnega dajalnika je preprosto dve enojni ohišji, združeni pod pravim kotom.
Te nosilce na fusion360 sem oblikoval tako, da ustrezajo moji izbiri kodirnikov in tirnic, gred dajalnika ima kratek kos gumijastega plašča, ki omogoča boljši oprijem gredi iz nerjavečega jekla.
Želite, da gred prosto drse in da pade skozi ohišje, če jo držite navpično, vendar mora na dajalnik pritisniti dovolj, da ne zdrsne. Zame je uspelo, da se drsnik gredi prekriva z gredjo dajalnika za 0,5 mm. Gumica iz praćke je dovolj mehka, da se za toliko deformira in zagotavlja dober oprijem.
3. korak: Shema ožičenja
Vezje je zelo preprosto. Opto-senzorji potrebujejo nekaj toka za diode IR oddajnika, ozemljitvene in vlečne upore za foto diode.
Odločil sem se za 5mA za serijske oddajne diode, pri tem dajalniku je padec napetosti na diodah 3,65V. Uporabljam napajanje 5V iz Arduina, ki pušča 1,35 V za upor, pri 5mA to deluje 270 ohmov.
Za vleke je bilo izbranih 10 k ohmov, saj lahko foto diode potonejo le pri majhnem toku, 10 k ohmov je bilo uporabljenih tudi za potisni gumb. Na prototipni plošči je že na voljo gumb, ki je že priključen na ozemljitev, le pritrdite ga z vlečnim uporom in ga priključite na želeni vhodni zatič.
4. korak: Arduino koda
Koda potrebuje malo razlage, saj njeno delovanje morda ni takoj očitno, vendar jo je bilo treba na ta način optimizirati, da je lahko dovolj hitro obdelal 3 kodirnike.
Najprej želimo obdelati podatke o smeri, če je prišlo do spremembe položaja dajalnika.
spremembe = nova_vrednost ^ shranjena vrednost;
Za večjo ločljivost kodirnikov sem moral obdelati naraščajoče in padajoče robove.
Na moji nastavitvi je moja ločljivost 24 klikov na 1 cm.
To nam pusti nekaj scenarijev.
S1 je konstanta 0 in S2 preklopi od 0 do 1
S1 je konstanta 0 in S2 preklopi iz 1 na 0
S1 je konstanta 1 in S2 preklopi od 0 do 1
S1 je konstanta 1 in S2 preklopi od 1 do 0
S2 je konstanta 0 in S1 preklopi od 0 do 1
S2 je konstanta 0 in S1 preklopi iz 1 na 0
S2 je konstanta 1 in S1 preklopi od 0 do 1
S2 je konstanta 1 in S1 preklopi od 1 do 0
Ti pogoji so bolje razumljeni v zgornjih tabelah resničnosti, prav tako vsak pogoj daje "smer", poljubno poimenovano 0 ali 1.
Lestvice nam dajejo dva ključna namiga:
1) en grafikon je popolnoma obraten od drugega, zato če ga imamo, lahko drugega preprosto izračunamo tako, da preprosto obrnemo izhod. Izhod obrnemo le, če se en pin spreminja, drugega pa ne, enega lahko poljubno izberemo.
2) sam grafikon je preprosto XOR signalov S1 in S2. (drugi grafikon NI tega).
Zdaj je razumevanje kode preprosto.
// beremo v PORT -u vzporedno // zapomnimo si, da sosednji pari pripadata istemu kodirniku = PINB & 0x3f; // kateri zatiči so se spremenili, če je razlika = hold ^ stanje; // XOR sosednja signala S1 in S2 za pridobitev tabele resničnosti // najlažji način je, da naredimo kopijo trenutnega stanja // in ga premaknemo v desno z enim bitnim iskanjem = stanje >> 1; // zdaj so biti poravnani za XOR dir = iskanje ^ stanje; // ne pozabite, da je treba tabelo obrniti, če je eden od vhodov // konstanten, za to ne potrebujemo stavka IF //. Trenutno je želeni smerni bit // desni bit vsakega para v spremenljivki 'dir' // levi bit je nesmiseln // spremenljivka 'diff' ima bit, ki je spremenil 'set' // zato imamo bodisi '01' ali '10' // XOR to z bajtom 'dir' bo // obrnilo ali ne pomenljivo bit. dir ^= razlika; // zdaj posodobi spremenljivko hold hold = state; // če se je kateri koli bit spremenil za ta kodirnik if (diff & 0x03) {// določi smer if (dir & 0x01) {// glede na vašo programsko opremo in ožičenje ++ ali ---z; } else {++ z; }} // enako tudi za ostale if (diff & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } else {++ x; }}
Ko pritisnete gumb, pošljemo trenutno vrednost XYZ v terminalski program.
Serijski podatki so počasni, vendar se med normalnim delovanjem položaji dajalnikov v tem času vseeno ne bodo spreminjali.
Podatki se pošljejo kot surovo štetje. Lahko bi izračunali in podatke poslali v mm ali palcih itd. Ugotovil sem, da so surove vrednosti prav tako dobre, ker lahko predmet kasneje prilagodimo v programski opremi.
5. korak: Prvi pregled
Zbiranje točk je počasen proces, sondo postavim v zgornji levi kot in ponastavim Arduino.
To izniči položaj doma.
Nato premaknite sondo na mesto na tarči, jo držite pri miru in pritisnite gumb 'snapshot'.
Za ta precej velik vzorec sem vzel le ~ 140 točk, zato podrobnosti o končnem izdelku niso odlične.
Shranite podatke v datoteko. PCD in dodajte glavo
#. PCD v.7 - Oblika podatkovne datoteke v oblaku točk VERSION.7 POLJA x y z VELIKOST 4 4 4 TIP F F F COUNT 1 1 1 ŠIRINA (vaše število točk) VIŠINA 1 POGLEDA 0 0 0 1 0 0 0 TOČK (vaše število točk)
Število točk vnesite v glavo, to je enostavno v vsakem urejevalniku, ki vam posreduje številke vrstic.
Nad pikami lahko vidite v freeCadu, nato pa jih izvozite iz freeCad kot datoteko. PLY.
Odprite. PLY na MeshLabu in površino predmeta. Končano!!
Priporočena:
Cevni predojačevalnik PA1 DIY: Učinkovito zgrajen z rešenimi komponentami: 13 korakov
Cevni predojačevalnik PA1 DIY: Učinkovito zgrajen z rešenimi komponentami: Obstaja veliko virov o gradnji cevnih predojačevalnikov na spletu in v tiskani obliki, zato sem mislil, da bom delil nekaj drugačnega. Ta navodila zajemajo konstrukcijo odprtokodnega cevnega predojačevalca moje zasnove in ne samo, da je to
Uporaba IC gonilnika prikazovalnika točk/palic LM3914: 5 korakov
Uporaba IC gonilnika prikazovalnika točk LM3914: Čeprav je bil LM3914 priljubljen izdelek poznega 20. stoletja, živi in je še vedno zelo priljubljen. Ponuja preprost način za prikaz linearne napetostne ravni z uporabo ene ali več skupin po deset LED z najmanj hrupa. LM3914 lahko naročite v
Nadzor do 68 točk z Arduino Mega in ESP8266: 14 koraki
Nadzor do 68 točk z Arduino Mega in ESP8266: Z uporabo električne sheme, ki sem jo dal na voljo v formatu PDF, je v današnjem projektu Arduino Mega povezan z ESP8266, da omogoči delovanje WiFi. Predvsem za avtomatizacijo stanovanj vezje deluje tudi z Bluetoothom in je
Lekcija 6 avtomobilskih tankov Arduino-Upravljanje vročih točk Bluetooth in Wifi: 4 koraki
Arduino Tank Car Lekcija 6-Bluetooth in Wifi Hot Spot Control: V tej lekciji se naučimo, kako upravljati mobilno aplikacijo Robot za avto prek WiFi in Bluetooth. Uporabljamo samo esp8266 wifi espasion board kot razširitveno ploščo in nadzorujemo avtomobil cisterno prek IR sprejemnika v prejšnjih lekcijah. V tej lekciji se bomo naučili
Arduino števec točk: 5 korakov
Arduino števec točk: Ta števec točk Arduino bo prešteval število košaric, ki jih naredite z uporabo desetletnega števca/ločevalnika CD4026BE, da bo preštel število narejenih košar in to število prikazal na 7 -segmentnem zaslonu. Arduino v paru s fotorezistorjem (deluje kot