หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ การสร้าง 3D Scanner | 3D Scan วัตถุที่บ้าน | Plot ใน Python

นี่คือ 3D Scanner โดยใช้ Ultrasonic Sensor ที่ถูกหมุนโดย Servo Motor ส่วนวัตถุที่ต้องการสแกนจะถูกหมุนโดย Motor และทำการ Plot ข้อมูลใน Python

โปรเจกต์ การสร้าง 3D Scanner | 3D Scan วัตถุที่บ้าน | Plot ใน Python

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

29,433 การดู
6 ถูกใจ

รายการอุปกรณ์และเครื่องมือ

1x Ultrasonic Sensor - HC-SR04
🛒 สั่งซื้อ
1x 9V 1A Switching Wall Power Supply
-
1x Dual H-Bridge motor drivers L293D
🛒 สั่งซื้อ
1x Geared DC Motor, 12 V
-
1x Breadboard, 170 Pin
🛒 สั่งซื้อ
1x SG90 Micro-servo motor
🛒 สั่งซื้อ
1x Servo Motor, Premium Male/Male Jumper Wires
-

แอปพลิเคชันและแพลตฟอร์ม

รายละเอียดและวิธีทำ

3D Scanner

การสาธิตแบบเต็มรูปแบบ

โปรเจกต์นี้เกี่ยวกับอะไร?

โปรเจกต์นี้เกี่ยวกับการสร้าง 3D Scanner ไว้ใช้งานเองที่บ้าน ซึ่งสามารถ Scan วัตถุใดก็ได้และให้ค่าพิกัด X, Y และ Z โดยพิกัดเหล่านี้สามารถนำไป Import สำหรับการ 3D Printing เพื่อทำสำเนาวัตถุเก่าหรือชิ้นส่วนที่ชำรุดได้

ทำไมคุณถึงตัดสินใจสร้างมันขึ้นมา?

ผมสร้างสิ่งนี้ขึ้นมาเพื่อช่วยให้ทำงานได้ง่ายขึ้น ผมมีวัตถุที่ต้องการทำสำเนาด้วยการ 3D Printing โดยอยากให้มันมีขนาดใหญ่ขึ้นเล็กน้อย วัตถุชิ้นนั้นมีความซับซ้อนมากจนยากที่จะวัดขนาดด้วยตัวเอง Scanner เครื่องนี้จึงเข้ามาช่วยในการ Scan วัตถุที่มีความซับซ้อนชิ้นนั้น

มันทำงานอย่างไร?

Scanner เครื่องนี้ขับเคลื่อนด้วย Microcontroller Atmega328p บนบอร์ด Arduino Uno โดยมี Ultrasonic Sensor ทำหน้าที่วัดระยะห่างระหว่างตัว Sensor กับวัตถุที่อยู่ด้านหน้า ตัว Sensor นี้ถูกติดตั้งเข้ากับ Servo Motor ในลักษณะที่สามารถหมุน Sensor ได้ตั้งแต่ 45° ถึง 135° ซึ่งจะทำให้เราได้ผลการ Scan วัตถุในแนวระนาบ 1 เส้น (1 line scan) จากนั้นวัตถุจะถูกหมุนไป 18° ในทิศทวนเข็มนาฬิกาด้วยความช่วยเหลือของ DC Motor ที่เชื่อมต่ออยู่ โดย Motor นี้จะหมุนทั้งหมด 20 ครั้ง ทำให้สามารถ Scan วัตถุได้ครบ 360° รอบตัว

การออกแบบโครงสร้างของ 3D Scanner

Ultrasonic Sensor ที่ติดตั้งอยู่กับ Servo Motor

Ultrasonic Sensor (HC-SR04) ถูกยึดเข้ากับ Horn ของ Servo Motor (SG-90) โดย Sensor จะทำหน้าที่อ่านค่าระยะทางในขณะที่ Motor หมุน Sensor ไปพร้อมๆ กัน

การจัดวาง Worm Gear เพื่อหมุนวัตถุ

วัตถุที่จะทำการหมุนจะถูกวางไว้บน Gear ซึ่ง Gear ตัวนี้ถูกขับเคลื่อนโดย Worm ที่ต่อเข้ากับ DC Motor การจัดวางแบบนี้ช่วยลดความเร็วรอบและเพิ่ม Torque ข้อดีอีกอย่างคือวัตถุจะยังคงตำแหน่งเดิมไว้ได้แม้จะไม่มีการจ่ายไฟ (Loss of power)

หลังจากเสร็จสิ้นการ Scan วัตถุจากบนลงล่างในแต่ละรอบ Motor ตัวนี้จะหมุนวัตถุไป 18° ในทิศทวนเข็มนาฬิกา

การติดตั้งและจัดวางอุปกรณ์ 3D Scanner

ภาพด้านบนแสดงภาพรวมการติดตั้งอุปกรณ์ทั้งหมดของ 3D Scanner

การพล็อตกราฟพิกัดจากการ Scan ด้วย Python Matplotlib

พิกัดที่ได้จาก 3D Scanner

Code ของ Arduino จะให้ค่าพิกัด X, Y และ Z จากนั้นพิกัดเหล่านี้จะถูกนำมาพล็อตกราฟด้วยความช่วยเหลือของ Library Matplotlib ในภาษาโปรแกรม Python

จำเป็นต้อง Import Library ต่อไปนี้

import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
from mpl_toolkits.mplot3d import Axes3D

Code ด้านล่างใช้สำหรับการ 3D Plot พิกัดต่างๆ

fig = plt.figure()
ax = plt.axes(projection ='3d')
ax.scatter(x, y, z, c=z, cmap='viridis', linewidth=0.5)
ax.set_title('3D Plot Of The Scan')
plt.show()

X, Y และ Z คือ List ที่เก็บค่าพิกัดตามลำดับ

วัตถุต้นแบบสำหรับ 3D Scanner

วัตถุด้านบนคือชิ้นที่ต้องการนำมา Scan ด้วย 3D Scanner

ผลลัพธ์จาก 3D Scanner

ภาพด้านบนแสดงกราฟจากการ Scan วัตถุ

ปัญหาและผลลัพธ์ที่ไม่สมบูรณ์

ผลการ Scan ยังไม่สมบูรณ์แบบเนื่องจากความคลาดเคลื่อนและอุปกรณ์ที่มีราคาประหยัด การจัดวาง Worm Gear ยังมีปัญหาเรื่องการขบกันเล็กน้อย อย่างไรก็ตาม นี่เป็นเพียงการสาธิตเทคโนโลยีเท่านั้น ซึ่งยังต้องมีการปรับปรุงแก้ไขอีกหลายส่วนเพื่อให้มีความแม่นยำมากขึ้น

และนี่คือวิธีการสร้าง 3D Scanner ที่บ้านด้วยอุปกรณ์ทั่วไป (Off-the-shelf components) และนำมาแสดงผลเป็นภาพด้วยความช่วยเหลือของ Matplotlib (Python)

Robotics EveryDay!!!

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: making-3d-scanner-3d-scan-object-at-home-plot-in-python-0f9bf1
2450 บาท
PromptPay QR Code