Isi kandungan:

Modul Pemandu Laser DIY untuk Arduino: 14 Langkah (dengan Gambar)
Modul Pemandu Laser DIY untuk Arduino: 14 Langkah (dengan Gambar)

Video: Modul Pemandu Laser DIY untuk Arduino: 14 Langkah (dengan Gambar)

Video: Modul Pemandu Laser DIY untuk Arduino: 14 Langkah (dengan Gambar)
Video: laser module#shorts#shortvideo#m4tek#powergear 2024, November
Anonim
Image
Image

Dalam Instructable ini, saya akan menunjukkan pembinaan modul stereng pancaran laser dwi-paksi, menggunakan bahagian bercetak 3D dan komponen yang murah dari eBay.

Projek ini mempunyai persamaan dengan Arduino Laser Show dengan Full XY Control dan Arduino Laser Show With Real Galvos tetapi saya percaya adalah yang pertama menggunakan reka bentuk bercetak 3D dengan solenoid yang murah. Saya meletakkan semua fail reka bentuk di bawah GPLv3 supaya reka bentuk dapat diperbaiki dan diperbaiki.

Walaupun pada masa ini saya hanya mengumpulkan modul dan menulis beberapa kod ujian yang sangat asas, harapan saya adalah suatu hari saya dapat membawanya ke tahap seterusnya dengan memasukkan kod grafik vektor dari Voltan Analog Super Cepat yang Boleh Diperintahkan dari Arduino.

Langkah 1: Kumpulkan Bahagian Bercetak Bukan 3D

Pemasangan laser terdiri daripada bahagian berikut:

  • 4 solenoid mikro
  • Satu cermin 1/2 inci
  • Empat skru M3

Solenoid tertentu yang saya gunakan dibeli di eBay dengan harga $ 1.45 setiap satu. Cermin bulat dijumpai di lorong kraf di HobbyLobby - sebungkus 25 berharga kurang dari $ 3 dolar. Anda juga boleh menemui cermin di eBay.

Anda juga memerlukan penunjuk laser yang murah, sekali lagi, dari eBay. Laser violet bersama dengan lembaran vinil cahaya dalam gelap adalah kombo yang sangat baik untuk projek ini!

Set bantuan tangan tidak perlu, tetapi akan sangat berguna untuk memegang dan meletakkan penunjuk laser. Klip pengikat besar boleh digunakan untuk menahan butang kuasa.

Anda memerlukan Arduino (saya menggunakan Arduino Nano) dan cara untuk menggerakkan solenoid. Seperti yang dinyatakan oleh VajkF dalam komen, anda boleh menggunakan jambatan H yang telah dibuat seperti L298 atau L9110. Ini boleh didapati di eBay dengan harga beberapa dolar dan juga boleh digunakan untuk projek memandu motor dan robotik.

Oleh kerana saya tidak mempunyai jambatan H, saya membina pemacu saya sendiri daripada komponen yang berbeza:

  • Empat transistor bipolar NPN (saya menggunakan MPS3704)
  • Empat perintang (saya menggunakan perintang 1.2k ohm)
  • Empat dioda (saya menggunakan 1N4004)
  • Penyambung bateri dan bateri 9V

Komponen elektronik berasal dari makmal saya, jadi saya tidak mempunyai kos yang tepat untuknya, tetapi melainkan jika anda sudah mempunyai alat ganti atau dapat membersihkannya, mungkin lebih jimat untuk menggunakan jambatan H pra-binaan. Walaupun begitu, saya akan memberikan skema untuk membina sendiri.

Langkah 2: Cetak 3D Modul Pemandu Cermin

3D Cetak Modul Pemandu Cermin
3D Cetak Modul Pemandu Cermin
3D Cetak Modul Pemandu Cermin
3D Cetak Modul Pemandu Cermin

Modul stereng laser terdiri daripada dua bahagian bercetak 3D: pangkalan untuk memasang empat solenoid dan platform artikulasi untuk cermin.

Saya telah melampirkan dua fail STL untuk anda mencetak 3D, serta fail FreeCAD sekiranya anda perlu mengubah reka bentuk. Semua kandungan berada di bawah GPLv3, jadi anda bebas membuat dan berkongsi penambahbaikan anda!

Langkah 3: Pasang Modul Laser

Pasang Modul Laser
Pasang Modul Laser
Pasang Modul Laser
Pasang Modul Laser
Pasang Modul Laser
Pasang Modul Laser
  • Gunakan lem panas untuk melekatkan empat solenoid ke bahagian bawah.
  • Gunakan lem panas untuk melekatkan cermin di bahagian tengah bahagian atas.
  • Masukkan piston logam ke dalam solenoid dan kemudian letakkan bahagian atas pada tiang (tetapi jangan putar ke bawah). Putar bahagian atas sedikit dan menggunakan pemacu skru kecil, angkat setiap omboh ke kedudukannya. Bibir cakera harus meluncur ke alur pada omboh. Hati-hati, kerana engsel bercetak 3D sangat rapuh. Dengan kesabaran dan mungkin beberapa percubaan yang gagal, anda seharusnya dapat meletakkan keempat-empat piston tanpa memutar atau memberi tekanan pada engsel.
  • Setelah semua piston diletakkan, masukkan skru M3 sebahagian, tetapi sebelum mengetatkannya ke bawah, tekan setiap piston dengan perlahan dan pastikan cermin condong dengan bebas. Sekiranya tidak bergerak dengan bebas atau menangkap, mungkin perlu melepaskan pelat atas, mencabut satu atau lebih solenoid longgar dan memasangnya semula pada sudut sedikit keluar (meletakkan spacer di antara itu dan tiang tengah dapat membantu dengan ini).

Langkah 4: Cetak Kolar Pointer Laser

Cetak Kolar Pointer Laser
Cetak Kolar Pointer Laser
Cetak Kolar Pointer Laser
Cetak Kolar Pointer Laser

Kolar penunjuk laser sesuai di kepala penunjuk laser. Anda kemudian boleh menggunakan satu set tangan penolong untuk memegang kolar dan membolehkan anda meletakkan laser tepat di bangku simpanan anda.

Langkah 5: Pasang Litar Memandu

Pasang Litar Memandu
Pasang Litar Memandu

Litar pemacu ditunjukkan dalam skema. Seperti yang dinyatakan sebelum ini, versi saya dibina daripada komponen diskrit, tetapi anda juga boleh menggunakan jambatan H yang tersedia. Sekiranya anda memilih untuk membina sendiri, anda perlu membina empat salinan litar ini, satu untuk setiap empat solenoid.

Setiap litar akan disambungkan ke pin Arduino, dua untuk mengawal solenoid kiri dan kanan, dan dua untuk solenoid atas dan bawah. Ini perlu disambungkan ke pin berkemampuan PWM, seperti:

  • Pin 9: Atas Solenoid
  • Pin 3: Down Solenoid
  • Pin 11: Solenoid Kiri
  • Pin 10: Solenoid Kanan

Bateri 9V tunggal boleh digunakan untuk memandu keempat-empat litar pemacu solenoid atau anda boleh menggunakan bekalan kuasa bangku. Arduino akan mematikan kuasa USB dan tidak boleh disambungkan ke sisi positif bateri 9V. Walau bagaimanapun, sisi negatif bateri digunakan sebagai rujukan tanah dan harus disambungkan ke pin GND di Arduino dan juga pin pemancar pada transistor.

Langkah 6: Muat naik Contoh Kod

Muat naik Contoh Kod
Muat naik Contoh Kod

Contoh kod telah dikemas kini dengan ciri-ciri berikut:

  • Menyelaraskan frekuensi PWM sehingga mekanisme hampir senyap pada kelajuan rendah. Suara Motion Test 1 yang hilang sudah habis!
  • Menambah sebagai persamaan voltan berdasarkan kertas oleh Schimpf untuk "melariskan" tindak balas bukan linear solenoid.

Saya juga memasukkan pelaksanaan Lorenz Attractor berdasarkan kod dari blog ini.

Kesetiaan hasilnya agak banyak yang diinginkan, tetapi saya masih mengusahakannya!:)

Langkah-langkah berikutnya menggambarkan beberapa teknik yang digunakan dalam kod.

Langkah 7: Menurunkan Kelantangan

Dalam Uji Gerak 1 saya, anda dapat mendengar dengungan yang kuat, terutamanya semasa pergerakan naik dan turun. Ternyata ini disebabkan oleh frekuensi memotong PWM lalai dari Arduino berada dalam julat yang dapat didengar. Pengalihan voltan gegelung yang cepat dan cepat akan menyebabkan mereka bergetar pada frekuensi tersebut, menjadikannya menjadi pembesar suara kecil yang kecil.

Untuk menyelesaikan masalah ini, saya meningkatkan frekuensi PWM dalam kod:

#define PWM_FREQ_31372Hz 0x01 // Tetapkan frekuensi PWM ke 31372.55 Hz # tentukan PWM_FREQ_3921Hz 0x02 // Tetapkan frekuensi PWM ke 3921.16 Hz #define PWM_FREQ_980Hz 0x03 // Tetapkan frekuensi PWMT1BB_B1T1NBR & 0b11111000) | kekerapan; // Tetapkan frekuensi pemasa1 (pin 9 & 10) TCCR2B = (TCCR2B & 0b11111000) | kekerapan; // Tetapkan frekuensi pemasa2 (pin 3 & 11)}

Menetapkan frekuensi PWM Arduino adalah helah berguna untuk menenangkan solenoid atau motor. Bereksperimen dengan pilihan frekuensi yang berbeza untuk melihat mana yang memberikan hasil terbaik. Walaupun ia melibatkan beberapa pengaturcaraan yang lebih maju, sumber yang baik mengenai cara kerja pemasa ada di sini.

Langkah 8: Menala Voltan untuk Mengurangkan Penyelewengan

Menala Voltan untuk Mengurangkan Penyelewengan
Menala Voltan untuk Mengurangkan Penyelewengan

Ujian gerakan awal saya menunjukkan bahawa terdapat perbezaan yang signifikan dalam tindak balas solenoid. Dalam Motion Test 3 (gambar kiri), yang sepatutnya menjadi lingkaran bulat malah menjadi jaring segi empat dengan tepi bergerigi.

Untuk menyelesaikan masalah ini memerlukan sedikit matematik, tetapi saya dapat mencari kertas yang luar biasa di web yang membantu saya memahami masalah dengan cukup baik untuk menyelesaikannya dalam perisian.

Apa yang berikut menuntun anda melalui proses yang saya lalui untuk menyesuaikan sistem dan memperbaiki penampilan jejak yang dihasilkan!

Langkah 9: Menyempurnakan Perisian, Dengan Matematik

Menyempurnakan Perisian, Dengan Matematik
Menyempurnakan Perisian, Dengan Matematik
Menyempurnakan Perisian, Dengan Matematik
Menyempurnakan Perisian, Dengan Matematik

Rahsia untuk menyempurnakan sistem ternyata menjadi makalah yang sangat baik yang disebut "Penjelasan Terperinci mengenai Solenoid Force" oleh Paul H. Schimpf dari Universiti Washington Timur (pautan). Khususnya, persamaan 17 memberi saya kekuatan solenoid dari segi pelbagai istilah.

Istilah berikut mudah diukur:

  • R - Rintangan solenoid saya
  • l - Panjang solenoid
  • x - Perpindahan omboh dalam solenoid
  • V - Voltan merentasi solenoid

Saya juga tahu bahawa kekuatan yang dikeluarkan oleh solenoid harus mengimbangkan kekuatan dari mata air dicetak 3D pada cermin paksi dua. Kekuatan mata air diatur oleh undang-undang Hooke, yang dinyatakan sebagai berikut:

F = -kx

Walaupun saya tidak mengetahui nilai k, sekurang-kurangnya saya tahu bahawa kekuatan yang saya keluar dari persamaan 17 dari kertas Schimpf harus sama dengan kekuatan dari undang-undang Hooke.

Nilai alpha (α) adalah sukar. Walaupun persamaan 13 dan 14 menunjukkan cara mengira nilai-nilai ini dari luas solenoid (A), bilangan putaran (N) dan nilai kebolehtelapan magnetik (μ), saya tidak mahu merobek solenoid untuk mengira bilangan giliran, dan juga saya tidak mengetahui bahan dari mana teras solenoid saya dibuat.

Langkah 10: Penguji Komponen yang Murah Menjimatkan Hari

Penguji Komponen yang Murah Menjimatkan Hari!
Penguji Komponen yang Murah Menjimatkan Hari!
Penguji Komponen yang Murah Menjimatkan Hari!
Penguji Komponen yang Murah Menjimatkan Hari!
Penguji Komponen yang Murah Menjimatkan Hari!
Penguji Komponen yang Murah Menjimatkan Hari!

Ternyata, persamaan 15 dan 16 memberi saya apa yang saya perlukan. Saya mempunyai penguji komponen M328 yang murah yang saya beli dari eBay dengan harga $ 10. Ia dapat menggunakannya untuk mengukur induktansi solenoid saya dan saya mendapati bahawa dengan menekan angker pada kedalaman yang berbeza memberi saya nilai aruhan yang berbeza.

Mengukurnya dengan angker yang dimasukkan sepenuhnya memberi saya nilai L (0).

Panjang solenoid saya ialah 14mm, jadi saya mengukur induktansi dengan angker pada lima kedudukan dan ini memberi saya pelbagai nilai untuk L (x):

  • L (0.0) = 19.8 mH
  • L (3.5) = 17.7 mH
  • L (7.0) = 11.1 mH
  • L (10.5) = 9.3 mH
  • L (14) = 9.1 mH

Saya kemudian menggunakan spreadsheet untuk memetakan nilai saya berbanding nilai persamaan 15 dan 16, untuk pilihan μr tertentu dan kemudian mengubah pilihan saya sehingga saya menemui padanan yang baik. Ini berlaku ketika μr adalah 2.9, seperti yang ditunjukkan dalam grafik.

Langkah 11: Cari Pemalar Spring, Selesaikan Masalahnya

Image
Image
Analisis Masalah Semasa dan Kemungkinan Penyelesaian
Analisis Masalah Semasa dan Kemungkinan Penyelesaian

Satu-satunya yang tidak diketahui adalah K, pemalar spring. Saya mengukur ini dengan menggunakan 9V pada salah satu solenoid pada unit dwi-paksi saya dan mengukur jarak di mana cermin ditarik ke bawah. Dengan nilai-nilai ini, saya dapat menyelesaikan persamaan untuk K, yang saya dapati adalah sekitar 10.41.

Saya sekarang mempunyai nilai yang saya perlukan untuk menghitung tarikan solenoid pada pelbagai kedudukan sepanjang strok. Dengan menetapkan F (x) sama dengan daya spring dari undang-undang Hooke, saya dapat menyelesaikan voltan V yang diperlukan.

Grafik menunjukkan voltan yang diperlukan untuk memindahkan solenoid ke kedudukan x yang dikehendaki.

Di sebelah kanan, di mana voltan adalah sifar dan kedudukannya 3 mm, ini sepadan dengan titik rehat neutral solenoid apabila engsel bercetak 3D dilonggarkan sepenuhnya. Bergerak ke kiri pada grafik sepadan dengan menarik angker ke solenoid berbanding tarikan engsel bercetak 3D-ini pada mulanya memerlukan lebih banyak voltan, tetapi ketika angker semakin mendalam ke dalam solenoid, tarikan meningkat dan voltan pemanduan yang diperlukan akan hilang.

Hubungan ini jelas tidak linear, tetapi dengan persamaan dari kertas Schimpf, saya dapat menulis kod Arduino saya untuk menghasilkan voltan yang betul sehingga pesongan balok adalah linear:

kedudukan apunganToVoltage (apungan x) {

// Memulihkan kekuatan yang dilakukan oleh engsel (Hooke's Law) pada x yang dikehendaki. const float spring_F = -spring_K * (x - spring_X0); // Voltan sehingga daya tarikan solenoid sepadan dengan // daya pemulihan engsel kembali sqrt (-2 * R * R * (- spring_F) * solenoid_len / (a * L_0 * exp (-a * x / solenoid_len)))); }

Ini membawa kepada lingkaran yang lebih bulat daripada pada ujian gerakan asal saya. Misi tercapai!

Langkah 12: Soalan dan Jawapan Mengenai Litar Pemandu Menggunakan Komponen Diskrit

Mengapa saya tidak boleh menghubungkan solenoid terus ke Arduino?

Ini adalah masalah berapa banyak arus Arduino dapat disediakan tanpa mengalami kerosakan. Ini kira-kira 40mA setiap pin. Mengetahui bahawa Arduino beroperasi pada 5V, kita dapat menggunakan hukum Ohm untuk menghitung rintangan minimum beban yang diperlukan (dalam kes ini, solenoid). Membahagi 5 volt dengan 0.040 amp memberi kita 125 ohm. Sekiranya beban mempunyai rintangan yang lebih besar, kita dapat menghubungkannya terus ke Arduino, jika tidak, kita tidak boleh. Solenoid kecil biasanya mempunyai rintangan 50 ohm, jadi kami tidak dapat menggerakkannya terus dari Arduino. Sekiranya kita melakukannya, ia akan menarik 100mA, yang jelas terlalu banyak.

Mengapa anda menggunakan 9V untuk solenoid, tetapi 5V untuk Arduino?

Arduino berjalan pada 5V, tetapi ini terlalu sedikit untuk solenoid. Menggunakan transistor membolehkan kita memilih voltan untuk solenoid yang bebas daripada 5V yang digunakan untuk Arduino.

Bagaimana saya tahu sama ada transistor sesuai untuk projek ini?

Sama seperti Arduino, syarat utama ialah arus yang mengalir melalui solenoid tidak melebihi penilaian maksimum untuk transistor (khususnya, arus pemungut). Kita dapat dengan mudah mengira senario terburuk dengan mengukur rintangan solenoid dan kemudian membahagikan voltan bekalan dengan itu. Sekiranya arus bekalan 9V untuk solenoid, dan rintangan solenoida 50 ohm, senario terburuk menjadikan kita 180mA. MPS3704, misalnya, dinilai untuk arus pengumpul maksimum 600 mA, yang memberi kita margin sekitar 3.

Bagaimana saya menentukan nilai minimum rintangan untuk meletakkan antara output Arduino dan dasar transistor?

Keluaran Arduino akan menghubungkan kaki asas transistor bipolar melalui perintang penghad semasa. Oleh kerana Arduino beroperasi pada 5V, kita sekali lagi dapat menggunakan hukum Ohm untuk menghitung rintangan yang diperlukan untuk mengehadkan arus di bawah 40mA. Maksudnya, bahagikan 5 volt dengan 0.04 ampere untuk memperoleh nilai sekurang-kurangnya 125 ohm. Nilai perintang yang lebih tinggi akan menurunkan arus, sehingga memberi kita margin keselamatan yang lebih besar.

Adakah nilai maksimum untuk rintangan itu yang tidak boleh melebihi?

Ternyata, ya. Transistor mempunyai apa yang dikenali sebagai keuntungan semasa. Sebagai contoh, jika keuntungan adalah 100, ini bermakna jika kita memasukkan 1mA ke dalam pangkalan, maka hingga 100mA akan mengalir melalui beban yang dikendalikan oleh transistor. Sekiranya kita memasukkan 1.8mA ke pangkalan, maka hingga 180mA akan mengalir melalui beban. Oleh kerana kita mengira lebih awal bahawa pada 9V, 180mA mengalir melalui solenoid, maka arus asas 1.8mA adalah "titik manis", dan kurang dan solenoid kita tidak akan menyala sepenuhnya.

Kami tahu Arduino mengeluarkan 5V dan kami mahu arus 1.8mA mengalir, jadi kami menggunakan hukum Ohm (R = V / I) untuk mengira rintangan (R = V / I). 5V dibahagi dengan 1.8mA memberikan rintangan 2777 ohm. Oleh itu, dengan anggapan yang kami buat, kami menjangkakan rintangan antara 125 dan 2777 - memilih sesuatu seperti 1000 ohm memberi kami margin keselamatan yang cukup baik.

Langkah 13: Analisis Masalah Semasa dan Kemungkinan Penyelesaian

Analisis Masalah Semasa dan Kemungkinan Penyelesaian
Analisis Masalah Semasa dan Kemungkinan Penyelesaian

Prototaip semasa menunjukkan potensi, tetapi beberapa masalah tetap ada:

  1. Pergerakan di sepanjang paksi X dan Y nampaknya tidak tegak lurus.
  2. Terdapat lompatan apabila cermin berubah arah.
  3. Resolusi agak rendah dan terdapat corak tangga yang kelihatan.
  4. Pada kelajuan gerakan yang lebih tinggi, jalur laser diputarbelitkan oleh getaran dan deringan.

Isu 1) mungkin disebabkan oleh reka bentuk engsel fleksibel bercetak 3D yang menghantar gerakan sepanjang satu paksi ke paksi tegak lurus.

Isu 2) disebabkan oleh kelambatan pada gandingan antara piston penggerak dan platform cermin, ini menyebabkan cermin tersentak dan melangkau peralihan antara paksi X dan Y. Pergerakan secara tiba-tiba ini mengarah ke jurang berbentuk X yang gelap di mana titik laser melakukan pergerakan yang tidak terkawal dengan lebih pantas.

Isu 3) berlaku kerana Arduino PWM lalai hanya mempunyai tahap 255 dan sebilangan besar terbuang kerana bentuk lengkung voltan. Ini dapat ditingkatkan dengan ketara dengan penggunaan timer1, yaitu 16-bit dan akan mampu 65536 nilai unik.

Masalah 4) berlaku kerana cermin dan gelongsor solenoid (omboh) merupakan jisim bergerak yang banyak.

Oleh kerana isu 1) dan 2) berkaitan dengan reka bentuk mekanikal, satu kemungkinan adalah dengan mengeluarkan piston logam dan menggantinya dengan magnet kecil tanah jarang yang dilekatkan terus ke plat kecondongan. Solenoid adalah gegelung terbuka yang akan menarik atau menghalau magnet tanpa melakukan hubungan fizikal. Ini akan menyebabkan pergerakan lebih lancar dan menghilangkan kemungkinan tersentak, sekaligus mengurangkan jumlah jisim.

Mengurangkan jisim adalah penyelesaian utama untuk masalah 4), tetapi masalah yang tersisa dapat disasarkan secara langsung dalam perisian dengan menerapkan profil kawalan gerakan dalam perisian untuk mempercepat dan memperlambat cermin dengan cara terkawal. Ini sudah banyak dilakukan dalam firmware pencetak 3D dan kaedah serupa mungkin juga berfungsi di sini. Berikut adalah beberapa sumber yang berkaitan dengan kawalan gerakan yang berlaku untuk pencetak 3D:

  • "Matematik Profil Kawalan Gerak", Chuck Lewin (pautan)
  • "Gerakan Terkawal Jerk Dijelaskan", (pautan)

Saya mengesyaki bahawa menambahkan profil kawalan gerakan trapezoid akan membolehkan cermin dipacu pada kelajuan yang jauh lebih tinggi tanpa artifak berdering atau getaran.

Langkah 14: Kerja Masa Depan dan Aplikasi yang Mungkin

Walaupun membangun penyelesaian untuk masalah ini memerlukan banyak kerja, saya berharap modul stereng sumber terbuka ini dapat menjadi alternatif yang berpatutan untuk projek berasaskan galvanometer dalam aplikasi seperti:

  • Pertunjukan laser yang murah untuk DJ dan VJ.
  • Paparan vektor elektro-mekanikal untuk permainan arked vintaj seperti Vectrex.
  • Pencetak 3D SLA jenis resin DIY yang dalam semangat gerakan RepRap, dapat mencetak modul stereng laser sendiri.
  • Panning digital atau penstabilan imej optik untuk kamera.
Peraduan Arduino 2017
Peraduan Arduino 2017
Peraduan Arduino 2017
Peraduan Arduino 2017

Hadiah Kedua dalam Peraduan Arduino 2017

Disyorkan: