Saya mempersembahkan kepada Anda pemindai DIY yang didasarkan pada smartphone Android.
Ketika merancang dan membuat pemindai, pertama-tama, saya tertarik memindai objek besar. Minimum - sosok seseorang dalam pertumbuhan penuh dengan akurasi - setidaknya 1-2 mm.
Kriteria ini telah berhasil dicapai. Berhasil memindai objek dalam cahaya alami (tanpa sinar matahari langsung). Bidang pemindaian ditentukan oleh sudut pengambilan kamera smartphone dan jarak di mana sinar laser mempertahankan kecerahan yang cukup untuk deteksi (pada siang hari di dalam ruangan). Ini adalah sosok seseorang dengan tinggi penuh (1,8 meter) dengan lebar kerja 1,2 meter.
Pemindai itu dibuat berdasarkan pertimbangan "dan apakah akan melakukan sesuatu yang lebih atau kurang bermanfaat dan menarik ketika tidak ada yang dilakukan." Semua ilustrasi didasarkan pada contoh objek "uji" (mengunggah pindaian manusia tidak benar).
Seperti yang telah ditunjukkan oleh pengalaman, untuk pemindai jenis perangkat lunak ini, perangkat ini merupakan perangkat sekunder dan paling sedikit waktu yang dihabiskan untuk itu (untuk versi final. Terlepas dari percobaan dan opsi buntu). Oleh karena itu, saya tidak akan menyentuh fitur perangkat lunak dalam artikel (Tautan ke kode sumber di akhir artikel.)
Tujuan artikel ini adalah untuk membahas tentang kebuntuan cabang dan masalah yang dikumpulkan dalam perjalanan untuk membuat versi kerja terakhir.
Untuk pemindai, versi final menggunakan:
- Samsung S5 Phone
- Laser merah dan hijau dengan lensa untuk garis (garis 90 derajat) pada 30 mW dengan optik kaca (bukan yang termurah).
- Motor stepper 35BYGHM302-06LA 0.3A, 0.9 °
- A4988 Stepper Driver Motor
- Modul Bluetooth HC-05
- Papan STM32F103C8t
Driver A4988 ditetapkan setengah langkah, yang dengan 15-> 120 gearbox menghasilkan 400 * 2 * 8 langkah per PI.
Pilihan teknologi pemindaian.
Berbagai opsi berikut dipertimbangkan.
Proyektor LED.
Opsi dipertimbangkan dan dihitung. Bahkan proyektor mahal tidak memiliki resolusi yang tepat untuk mencapai akurasi yang diperlukan. Dan bahkan tidak layak untuk membicarakan yang murah.
Pemindaian mekanis sinar laser dalam kombinasi dengan kisi difraksi.
Idenya diuji dan dianggap cocok. Tetapi tidak untuk kinerja DIY, karena alasan:
- Kami membutuhkan laser yang cukup kuat, sehingga setelah difraksi, tanda-tandanya cukup cerah (jarak ke lensa smartphone adalah 1,.2 meter). Dan mataku menyesal. Laser dot dengan 30mW tidak berguna.
- Persyaratan untuk pemindaian mekanik presisi di 2 pesawat terlalu tinggi untuk kinerja DIY.
Pemindaian mekanis standar dari garis laser pada objek stasioner pemindaian.
Pada akhirnya, opsi tersebut dipilih dengan dua laser warna berbeda.
- Berbagai warna laser memungkinkan untuk secara mandiri mendeteksi mereka dalam satu bingkai.
- Lokasi laser di sisi berlawanan dari kamera memungkinkan Anda untuk mendapatkan dua pemindaian dalam satu pass.
- Dua pemindaian sekaligus memungkinkan Anda menilai kualitas penyelarasan pemindai secara objektif (pemindaian harus menyatu dan tumpang tindih).
Ternyata, kriteria terakhir adalah yang paling penting. Kualitas pemindaian sepenuhnya ditentukan oleh keakuratan mengukur dimensi geometris dan sudut pemindai. Dan kehadiran dua pemindaian dari dua laser memungkinkan Anda untuk segera mengevaluasi kualitas pemindaian:
Awan titik berkumpul. Yaitu pesawat yang ditangkap oleh dua laser berkumpul di seluruh permukaan.
Versi mekanik yang gagal pada 28BYJ-48.
Meskipun sejak awal saya berasumsi bahwa ini adalah opsi jalan buntu yang tidak memberikan akurasi yang diperlukan, saya masih memeriksanya dengan berbagai trik:
- Sumbu motor ditetapkan oleh bantalan.
- Menambahkan elemen gesekan dan stopper untuk pengambilan sampel clearance gearbox.
- Upaya untuk menentukan "posisi tepat" oleh fototransistor oleh paparan laser
Pengulangan kembali ke tempat yang sama dari garis laser ternyata rendah - 2-3 mm pada jarak 1,5 meter. Selama operasi gir, meskipun terlihat halus, sentakan 1-3 mm terlihat pada jarak 1,5 meter.
Yaitu 28BYJ-48 benar-benar tidak cocok untuk pemindai objek besar yang kurang lebih akurat.
Persyaratan pemindaian berdasarkan pengalaman saya
Elemen wajib dari sweep harus berupa gearbox.Jangan salah tentang mode langkah 1 / x. Percobaan menunjukkan bahwa dalam mode 1/16 pada langkah mikro A4988 tidak seragam. Dan pada 1/8, ketidakmerataan ini terlihat di mata.
Solusi paling optimal untuk gearbox adalah penggunaan sabuk gigi. Meskipun ternyata agak rumit, mudah dibuat dan akurat.
Keakuratan pemosisian (lebih tepatnya, pengulangan posisi dari posisi awal laser untuk pemindaian) laser ternyata sekitar 0,5 mm untuk 5 mm lebar garis laser pada jarak 4 meter. Yaitu pada jarak pemindaian (1,2-1,8 meter) umumnya sulit untuk diukur.
Positioning - optocouplers (bukan nama Cina) pada slot di disk di bawah laser.
Masalah dengan mentransmisikan sinyal kontrol dari telepon ke modul kontrol untuk laser dan motor stepper
Saluran kontrol ternyata menjadi hambatan dalam hal kecepatan pemindaian. Karena ini adalah pengembangan santai DIY untuk kesenangan Anda sendiri, semua metode komunikasi dengan smartphone telah dicoba.
Transmisi sinyal kontrol melalui jack Audio (jack Audio telepon => osiloskop)
Cara paling menghambat untuk mengirimkan data secara real time. Ya, bahkan dengan waktu mengambang. Hingga 500 ms (!) Dari aktivasi perangkat lunak transmisi data audio ke tampilan aktual sinyal di jack Audio.
Eksotis ini diperiksa, karena, di tempat kerja, saya harus berurusan dengan pembaca kartu chip seluler.
Fotodioda pada layar ponsel cerdas (irisan layar ponsel => fototransistor + STM32F103)
Demi menarik, bahkan metode eksotis seperti itu diuji sebagai phototransistors dengan matriks 2x2 dalam bentuk jemuran di layar.
Meskipun metode pengiriman informasi dari ponsel ini adalah yang tercepat, tetapi pada dasarnya tidak lebih cepat (10 ms vs 50ms) daripada Bluetooth, yang akan tahan dengan kekurangannya (jepitan pada layar).
Saluran IR (telepon => TSOP1736-> STM32F103)
Praktis diverifikasi dan metode transmisi melalui saluran IR. Bahkan beberapa implementasi protokol transfer data harus dilakukan.
Tetapi IR juga ternyata sangat tidak nyaman (tidak nyaman untuk memasang sensor foto pada ponsel), dan tidak jauh lebih cepat daripada Bluetooth.
Modul WiFi (telepon => ESP8266-RS232-> STM32F103)
Hasil pemeriksaan modul ini ternyata benar-benar mengecewakan. Runtime request-response (echo) ternyata mengambang tak terduga di kisaran 20-300 ms (rata-rata 150 ms). Mengapa dan apa - tidak mengerti. Saya hanya menemukan artikel yang menggambarkan upaya yang gagal untuk menggunakan ESP8266 untuk pertukaran data real-time dengan persyaratan waktu permintaan / respons yang ketat.
Yaitu ESP8266 dengan "standar" TCP -> firmware RS232 tidak cocok untuk tujuan tersebut.
Pilihan yang dipilih untuk modul kontrol dan transmisi sinyal
Akhirnya, setelah semua percobaan, saluran Bluetooth (modul HC-05) dipilih. Ini memberikan waktu respons-respons transfer data yang stabil (dan ini yang paling penting) sebesar 40 ms.
Waktunya cukup besar dan sangat memengaruhi waktu pemindaian (setengah dari total waktu).
Namun pilihan terbaik tidak tercapai.
Sebagai modul kontrol, papan tersebar luas dengan SM32F103C8T.
Metode untuk mendeteksi garis dalam bingkai.
Cara termudah untuk mengisolasi garis laser dalam bingkai adalah dengan menggunakan pengurangan bingkai dengan laser dimatikan dan bingkai dengan laser.
Pada prinsipnya, pencarian dengan bingkai juga bekerja tanpa pengurangan. Tapi itu bekerja jauh lebih buruk di siang hari. Meskipun mode ini ditinggalkan di perangkat lunak untuk uji perbandingan (foto mode di bawah. Semua foto lainnya dengan mode pengurangan bingkai).
Nilai praktis opsi tanpa mengurangi bingkai rendah.
Adalah mungkin dan mungkin untuk mengekstrak sinyal laser dari informasi berisik ini. Namun, dia tidak repot.
Opsi dengan pengurangan bingkai bekerja dengan baik.
Setiap percobaan dengan upaya untuk mendekati garis dan memproses seluruh frame menunjukkan bahwa semakin kompleks algoritme, semakin sering "membuat kesalahan" dan bahkan memperlambat pemrosesan dengan cepat. Algoritma tercepat (dan termudah) untuk menemukan laser (titik laser) pada garis horizontal adalah:
- Untuk setiap titik garis, jumlah kuadrat dari tingkat warna laser (RGB) di jendela yang ditentukan dalam konfigurasi dipertimbangkan (13 px - nilai optimal yang optimal untuk jendela)
- Titik laser adalah bagian tengah jendela dengan nilai maksimum jumlah tingkat "warna".
Waktu untuk memproses satu frame dengan mencari "hijau" dan "garis merah" adalah 3ms.
Titik awan untuk laser merah dan hijau dihitung secara terpisah. Dengan penyesuaian mekanis yang tepat, mereka berkurang dengan akurasi <1 mm.
Akurasi dan keselarasan
Akurasi itu dalam 1 mm pada jarak 1,2 meter. Sebagian besar karena resolusi kamera ponsel (1920x1080) dan lebar sinar laser.
Sangat penting untuk mendapatkan pemindaian yang benar untuk mengkonfigurasi statis dan dinamis. Akurasi / ketidaktepatan terlihat jelas saat memuat kedua awan titik di MeshLab. Idealnya, titik awan harus bertemu, saling melengkapi.
Parameter statis ditetapkan seakurat mungkin sekali:
- Garis singgung dari sudut pandang kamera.
- Panjang "bahu" laser (dari pusat lensa ke sumbu rotasi).
Dan tentu saja, fokus maksimum lensa laser pada jarak pemindaian yang diberikan dan "vertikalitas" garis laser.
Parameter dinamis dari sudut aktual posisi laser relatif terhadap bidang virtual frame harus disesuaikan setiap waktu lagi ketika mencampur telepon di dudukan. Untuk ini, mode konfigurasi dalam perangkat lunak dibuat. Dengan mengurangi layar laser ke tengah dan menyesuaikan sudut, perlu untuk mengatur jarak yang dihitung sedekat mungkin dengan jarak (diukur) sebenarnya untuk kedua laser.
Sebelum fine tuning:
Setelah penyesuaian:
Kesimpulan
Mungkin desain ini bisa diulangi oleh siapa saja. Saya memotong semua detail dari fiberglass ke CNC.
Tentu saja, tanpa mesin penggilingan CNC, sulit untuk membuat katrol di bawah laser. Tetapi dengan mempertimbangkan fakta bahwa Anda membutuhkan sudut rotasi maksimum 90 derajat, dengan kesabaran yang memadai, katrol juga dapat dipotong dengan file.
Tetapi lebih baik melakukannya di CNC. Persyaratan untuk permainan aksial rakitan putar tinggi. Kualitas pemindaian 100% ditentukan oleh keakuratan pabrikan dan penyelarasan.
Pemindai melakukannya di latar belakang. Kadang-kadang, sebentar-sebentar selama beberapa bulan. Karena itu, saya tidak bisa menilai kompleksitas total dari penciptaannya.
Total biaya struktur tidak terlalu tinggi. Seperti yang diperlihatkan percobaan saya, meskipun jauh dari pemindai industri benda besar, Anda bisa mendapatkan pindaian yang cukup baik.
Kualitas pemindaian terutama dipengaruhi oleh keakuratan bagian mekanis. Dalam hal ini, di DIY sulit untuk berurusan dengan mekanik yang dibuat untuk pemindai industri.
Kode sumber