Isi kandungan:

Pengimbas Titik XYZ Menggunakan Encoders Rotary Salvaged: 5 Langkah
Pengimbas Titik XYZ Menggunakan Encoders Rotary Salvaged: 5 Langkah

Video: Pengimbas Titik XYZ Menggunakan Encoders Rotary Salvaged: 5 Langkah

Video: Pengimbas Titik XYZ Menggunakan Encoders Rotary Salvaged: 5 Langkah
Video: Cara pakai X2S Mini #mobileprinter #portableprinter #technology 2024, Julai
Anonim
Pengimbas Titik XYZ Menggunakan Pengekod Rotary Salvaged
Pengimbas Titik XYZ Menggunakan Pengekod Rotary Salvaged

Setelah memperoleh sebilangan besar pengekod optik putar yang dibuang dari tempat kerja saya, saya akhirnya memutuskan untuk melakukan sesuatu yang menyeronokkan / berguna dengan mereka.

Saya baru-baru ini membeli pencetak 3D baru untuk rumah saya dan apa yang dapat memujinya lebih baik daripada pengimbas 3D! Projek ini juga memberi saya peluang terbaik untuk menggunakan pencetak 3D saya untuk mengeluarkan bahagian yang diperlukan.

Bekalan

Pengekod optik dan sensor optik yang sepadan

Arduino UNO

perisai prototaip pilihan

rel palang keluli

akses ke pencetak 3D

Langkah 1: Pengekod Optik

Pengekod Optik
Pengekod Optik
Pengekod Optik
Pengekod Optik
Pengekod Optik
Pengekod Optik

Hampir mana-mana pengekod putar dapat digunakan untuk projek ini, asalkan ia memberi anda 'klik' per mm yang cukup tinggi. Jelas pengekod yang berbeza memerlukan penyelesaian pemasangan yang sesuai.

Saya menggunakan meter kesinambungan untuk mengesan gambarajah pendawaian untuk sensor foto.

Langkah 2: Bahagian Bercetak 3D

Bahagian Bercetak 3D
Bahagian Bercetak 3D
Bahagian Bercetak 3D
Bahagian Bercetak 3D

Bahagian ini menempatkan pengekod putar dan menyediakan slaid untuk rel. Perumahan pengekod tunggal mempunyai dua lubang di bahagian belakang agar rel silang dipasang. Perumahan pengekod ganda hanyalah dua rumah tunggal yang disatukan pada sudut yang betul.

Saya merancang pelekap ini di fusion360 agar sesuai dengan pilihan pengekod dan rel saya, batang pengekod mempunyai kepingan pendek sarung getah katapel, untuk membantunya mencengkam batang keluli tahan karat dengan lebih baik.

Anda mahu poros meluncur dengan bebas dan jatuh melalui perumahan apabila dipegang secara menegak, namun ia mesti memberi tekanan yang cukup pada pengekod agar tidak tergelincir. Apa yang berjaya bagi saya ialah membiarkan slaid agar poros bertindih dengan aci pengekod sebanyak 0.5mm. Getah slingshot cukup lembut untuk ubah bentuknya dan memberikan daya tarikan yang baik.

Langkah 3: Diagram Pendawaian

Gambarajah pendawaian
Gambarajah pendawaian

Litarnya sangat mudah. Sensor opto memerlukan sedikit arus untuk diod pemancar IR, ground dan resistor penarik untuk dioda foto.

Saya memutuskan 5mA untuk diod pemancar dalam siri, dalam pengekod khusus ini penurunan voltan merentasi diod adalah 3.65V. Saya menggunakan bekalan 5V dari Arduino, yang meninggalkan 1.35V untuk perintang, pada 5mA ini berfungsi menjadi 270 ohm.

10k ohm dipilih untuk pull-up kerana dioda foto hanya dapat mengalirkan arus kecil, 10k ohm juga digunakan untuk menekan butang. Terdapat butang yang tersedia untuk digunakan pada papan prototaip yang sudah disambungkan ke tanah, cukup sediakan resistor penarik dan pasangkannya ke pin input yang dikehendaki.

Langkah 4: Kod Arduino

Kod Arduino
Kod Arduino
Kod Arduino
Kod Arduino
Kod Arduino
Kod Arduino

Kod ini memerlukan sedikit penjelasan kerana pengoperasiannya mungkin tidak jelas, namun ia harus dioptimumkan dengan cara ini untuk dapat memproses 3 pengekod dengan cukup cepat.

Pertama, kita hanya mahu memproses data arah JIKA ada perubahan pada kedudukan pengekod.

perubahan = nilai_ baru ^ nilai tersimpan;

Untuk mendapatkan lebih banyak resolusi dari pengekod saya, saya harus memproses kedua sisi naik dan turun.

Pada persediaan saya, resolusi saya adalah 24 klik per 1cm.

Ini meninggalkan kita dengan beberapa senario.

S1 adalah pemalar 0 dan S2 bertukar dari 0 hingga 1

S1 adalah pemalar 0 dan S2 bertukar dari 1 hingga 0

S1 adalah pemalar 1 dan S2 beralih dari 0 hingga 1

S1 adalah pemalar 1 dan S2 beralih dari 1 hingga 0

S2 adalah pemalar 0 dan S1 beralih dari 0 hingga 1

S2 adalah pemalar 0 dan S1 bertukar dari 1 hingga 0

S2 adalah pemalar 1 dan S1 beralih dari 0 hingga 1

S2 adalah pemalar 1 dan S1 beralih dari 1 hingga 0

Keadaan ini lebih baik difahami dalam jadual kebenaran di atas, juga setiap keadaan menghasilkan 'arah', dengan sewenang-wenangnya dinamakan 0 atau 1.

Carta memberi kita dua petunjuk penting:

1) satu carta adalah kebalikan lengkap yang lain, jadi jika kita mempunyai satu, kita dapat menghitung yang lain dengan mudah dengan hanya membalikkan output. Kami membalikkan output hanya jika satu pin berubah dan bukan yang lain, kami dapat memilih satu dengan sewenang-wenangnya.

2) carta itu sendiri hanyalah XOR dari isyarat S1 dan S2. (carta yang lain adalah BUKAN dari ini).

Kini memahami kodnya adalah mudah.

// baca dalam PORT secara selari // ingat pasangan bersebelahan tergolong dalam keadaan pengekod yang sama = PINB & 0x3f; // pin apa yang telah berubah jika ada keadaan diff = hold ^; // XOR isyarat S1 dan S2 bersebelahan untuk mendapatkan jadual kebenaran // Cara paling senang adalah dengan membuat salinan keadaan semasa // dan mengalihkannya ke kanan dengan satu bit = keadaan >> 1; // kini bit diselaraskan untuk keadaan XOR dir = look ^ ^; // ingat, jadual perlu dibalikkan jika satu // input tetap, kami tidak memerlukan pernyataan IF // untuk ini. Saat ini bit arah yang diinginkan // adalah bit tangan kanan setiap pasangan dalam pemboleh ubah 'dir' // bit tangan kiri tidak bermakna // pemboleh ubah 'diff' mempunyai bit yang berubah 'set' // jadi kita sama ada '01' atau '10' // XOR ini dengan bait 'dir' akan // membalikkan atau tidak sedikit makna. dir ^ = perbezaan; // sekarang kemas kini terus pemboleh ubah tahan = keadaan; // jika salah satu bit telah berubah untuk pengekod ini jika (diff & 0x03) {// tentukan arah jika (dir & 0x01) {// berdasarkan hadware dan pendawaian anda sama ada ++ atau - --z; } lain {++ z; }} // ditto untuk selebihnya jika (diff & 0x0c) {if (dir & 0x04) {++ y; } lain {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } lain {++ x; }}

Apabila butang ditekan, kami menghantar nilai XYZ semasa ke program terminal.

Data bersiri lambat, tetapi semasa operasi normal, kedudukan pengekod tidak akan berubah selama ini.

Data dihantar sebagai jumlah mentah. Anda boleh melakukan matematik dan mengirim data dalam mm atau inci dll. Saya dapati nilai mentah sama baiknya kerana kita dapat menskalakan objek kemudian dalam perisian.

Langkah 5: Imbasan Pertama

Imbasan Pertama
Imbasan Pertama
Imbasan Pertama
Imbasan Pertama
Imbasan Pertama
Imbasan Pertama
Imbasan Pertama
Imbasan Pertama

Mengumpulkan poin adalah proses yang perlahan, saya meletakkan probe di sudut kiri atas dan menetapkan semula Arduino.

Ini menunjukkan kedudukan sebagai rumah.

Kemudian pindahkan probe ke lokasi pada sasaran, tahan dengan stabil dan tekan butang 'snapshot'.

Untuk kepingan sampel yang agak besar ini saya hanya mengambil ~ 140 mata, jadi perinciannya tidak bagus pada produk akhir.

Simpan data ke dalam fail. PCD, dan tambahkan tajuk

#. PCD v.7 - Format fail Data Awan TitikVERSI.7 BIDANG x y z UKURAN 4 4 4 JENIS F F F COUNT 1 1 1 WIDTH (jumlah titik anda) TINGGI 1 PANDANGAN 0 0 0 1 0 0 0 POIN (jumlah titik anda)

Letakkan kiraan titik anda di tajuk, ini mudah dilakukan pada mana-mana editor yang memberi anda nombor baris.

Di atas titik dapat dilihat di freeCad, mereka kemudian dieksport dari freeCad sebagai file. PLY.

Buka. PLY di MeshLab dan permukaan objek. Selesai !!

Disyorkan: