Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Arduino LIDAR

Komponen dan persediaan

Arduino UNO
× 1
Sensor Pencari Jangkauan ToF SparkFun - VL6180
VL53L0X untuk jarak jauh dan VL6180X untuk jarak dekat. disini saya menggunakan VL6180X
× 1
motor servo
× 1

Aplikasi dan layanan online

Arduino IDE
Memproses

Tentang proyek ini

Beberapa hal tentang LiDAR

LIDAR (Light Detection and Ranging) adalah sistem penginderaan jauh optik yang dapat mengukur jarak suatu target dengan menyinarinya dengan cahaya. Teknologi LIDAR digunakan dalam Robotika untuk persepsi lingkungan serta klasifikasi objek. Kemampuan teknologi LIDAR untuk menyediakan peta ketinggian 2D dari medan, jarak presisi tinggi ke tanah, dan kecepatan pendekatan dapat memungkinkan pendaratan yang aman dari kendaraan robot dan berawak dengan tingkat presisi yang tinggi.

LIDAR terdiri dari pemancar yang menerangi target dengan sinar laser, dan penerima yang mampu mendeteksi komponen cahaya yang pada dasarnya koaksial dengan sinar yang ditransmisikan. Sensor penerima menghitung jarak, berdasarkan waktu yang dibutuhkan cahaya untuk mencapai target dan kembali. Mekanisme mekanis dengan cermin menyapu berkas cahaya untuk menutupi pemandangan yang diperlukan dalam bidang atau bahkan dalam tiga dimensi, menggunakan cermin anggukan yang berputar.

Salah satu cara untuk mengukur waktu penerbangan untuk berkas cahaya adalah dengan menggunakan laser berdenyut dan kemudian mengukur waktu yang telah berlalu secara langsung. Elektronik yang mampu menyelesaikan picoseconds diperlukan dalam perangkat semacam itu dan karena itu harganya sangat mahal. Metode lain adalah mengukur pergeseran fasa cahaya yang dipantulkan.

Laser inframerah collimated digunakan untuk pengukuran pergeseran fasa. Untuk permukaan, memiliki kekasaran lebih besar dari panjang gelombang cahaya datang, refleksi difus akan terjadi. Komponen sinar infra merah akan kembali hampir sejajar dengan pancaran sinar benda.

Sensor mengukur pergeseran fasa antara sinyal yang ditransmisikan dan dipantulkan. Gambar menunjukkan bagaimana teknik ini dapat digunakan untuk mengukur jarak. Panjang gelombang sinyal modulasi mematuhi persamaan:

c =f  

di mana c adalah kecepatan cahaya dan f frekuensi modulasi dan panjang gelombang modulasi yang diketahui.

Jarak total D' yang ditempuh oleh cahaya yang dipancarkan adalah:

D' =B + 2A =B + (θ * ) / 2π 

dimana A adalah jarak yang diukur. B adalah jarak dari unit pengukuran fase. Jarak yang diperlukan D, antara beam splitter dan target, oleh karena itu diberikan oleh

D =* / 4π 

di mana adalah perbedaan fasa yang diukur secara elektronik antara berkas cahaya yang ditransmisikan dan dipantulkan.

Dapat ditunjukkan bahwa rentang berbanding terbalik dengan kuadrat amplitudo sinyal yang diterima, yang secara langsung memengaruhi akurasi sensor.

(disalin dari http://home.roboticlab.eu/en/examples/sensor/lidar).

Sebagai bagian dari proyek tahun terakhir saya, saya memerlukan peta 2D sekitar untuk kendaraan otonom saya, jadi saya memilih LiDAR karena sangat cepat dan akurat. Tidak seperti sonar yang memantulkan gelombang ultrasonik, 'kerucut' penginderaan sangat sempit.

VL6180x atau Vl53l0x adalah sensor optik dari STMicroelectronics .VL53L0x jauh lebih presisi dan tidak memiliki masalah linieritas atau 'pencitraan ganda' di mana Anda tidak dapat mengetahui apakah suatu objek sangat jauh atau sangat dekat.

Sensor waktu terbang ini sebenarnya digunakan di ponsel kita untuk mengatur fokus kamera.

Diagram Sirkuit

Instal perpustakaan Adafruit

Kode Arduino

#include #include "Adafruit_VL6180X.h"#include Adafruit_VL6180X vl =Adafruit_VL6180X();Servo myservo;float pos =0;const float Pi =3.14159; void setup() { myservo.attach (9); Serial.begin(115200); while (!Serial) { delay(1); }jika (! vl.begin()) { while (1); } }void loop() { untuk (pos =0; pos <=180; pos +=.5) { myservo.write(pos); rentang uint8_t =vl.readRange(); Serial.println(String(rentang)+"p"+String(pos*Pi/180)+"p"+String(pos)); penundaan (10); } /*untuk (pos =180; pos>=0; pos -=.5) { myservo.write(pos); rentang uint8_t =vl.readRange(); { Serial.println(String(rentang)+"p"+String(pos*Pi/180)+"p"+String(pos)); delay(10);} }*/ myservo.write(0); delay(2000);} 

Memproses kode (rujuk proyek radar lain jika Anda membutuhkan antarmuka radar yang baik) ubah nomor port Arduino (misalnya "COM 3") sebelum menjalankan.

import processing.serial.*;Serial myPort;String val;int range,i=0;float pos;void setup(){ size(550.500); String portName ="COMx";//x=nomor port arduino Anda myPort =Serial baru(ini, namaport, 115200); background(255);}void draw(){ if ( myPort.available()> 0) { val =myPort.readStringUntil('\n'); if(val!=null) { String[] nums=split(val,"p");//membagi data yang diterima diurutkan dengan 'p' if(nums.length==3) { range=int(nums[0 ]); //string ke konversi integer pos=float(nums[1]); i=int(angka[2]); if(i==180){ latar belakang(255); } } }}translate(25,-50);line(250.500.250-2*(range*cos(pos)),500-2*(range*sin(pos))); } 

Kecepatan sensor dibatasi hingga 10Hz dan respons servo buruk pada kecepatan tinggi. Jika ada yang berencana membuat LIDAR kecepatan tinggi gunakan motor stepper atau motor DC dengan sistem umpan balik. gunakan slip ring untuk rotasi terus menerus (https://www.adafruit.com/product/736).

Setiap pertanyaan, saran dipersilahkan!

Kode

  • Kode Arduino
  • memproses kode
Kode ArduinoArduino
#include #include "Adafruit_VL6180X.h"#include Adafruit_VL6180X vl =Adafruit_VL6180X();Servo myservo;float pos =0;const float Pi =3.14159; void setup() { myservo.attach (9); Serial.begin(115200); while (!Serial) { delay(1); } if (! vl.begin()) { while (1); } }void loop() { untuk (pos =0; pos <=180; pos +=.5) { myservo.write(pos); rentang uint8_t =vl.readRange(); Serial.println(String(rentang)+"p"+String(pos*Pi/180)+"p"+String(pos)); penundaan (10); } /*untuk (pos =180; pos>=0; pos -=.5) { myservo.write(pos); rentang uint8_t =vl.readRange(); { Serial.println(String(rentang)+"p"+String(pos*Pi/180)+"p"+String(pos)); penundaan (10); } }*/ myservo.write(0); delay(1000);}
memproses kodeMemproses
import processing.serial.*;Serial myPort;String val;int range,i=0;float pos;void setup(){ size(550.500); frameRate(36); String portName ="COMx";//x=nomor port arduino Anda myPort =Serial baru(ini, portName, 115200); latar belakang (255); }void draw(){ if ( myPort.available()> 0) { val =myPort.readStringUntil('\n'); if(val!=null) { String[] nums=split(val,"p");//membagi data yang diterima diurutkan dengan 'p' if(nums.length==3) { range=int(nums[0 ]); //string ke konversi integer pos=float(nums[1]); i=int(angka[2]); if(i==180){ latar belakang(255); } } } }translate(25,-50);line(250.500.250-2*(range*cos(pos)),500-2*(range*sin(pos))); }

Proses manufaktur

  1. Lentera Gas
  2. Penunjuk Laser
  3. Senter
  4. Kaleidoskop
  5. Laser Semikonduktor
  6. Foto
  7. Sinyal Lalu Lintas
  8. Lampu
  9. Serat Optik
  10. Kodiak 3D LiDAR