กลับไปหน้ารวมไฟล์
stand-alone-powermeter-with-a-thorlabs-pm101-and-arduino-ee13f3.md

เชื่อมต่อ Arduino ของคุณกับ Thorlabs PM101

ในโปรเจคนี้ เราจะเชื่อม Thorlabs PM101 เข้ากับ Arduino ผ่านพอร์ตอนุกรม เพื่อให้น้องสามารถอ่านค่าที่วัดได้เลย ตัวอย่างการใช้งานก็เช่น แสดงค่าบน Arduino แล้วทำเครื่องวัดกำลังแสงแบบพกพาใช้เองเลย!

ภาพรวมโปรเจค

โปรเจค "Opto-Meter" นี้ คือการย้ายอุปกรณ์ในแล็บที่ต้องอยู่ติดโต๊ะ มาเป็น เครื่องมือวัดแบบพกพา (Standalone Portable Instrumentation) โดยการเชื่อมต่อเซนเซอร์วัดกำลังแสงระดับมืออาชีพอย่าง Thorlabs PM101 เข้ากับ Arduino ทำให้เราวัดกำลังแสงเลเซอร์ได้อย่างแม่นยำสูง โดยไม่ต้องพึ่งพีซีเลย สิ่งสำคัญคือการทำ การแปลงสัญญาณระดับฮาร์ดแวร์ (UART Translation) และ การสื่อสารด้วยคำสั่ง SCPI (SCPI Command Forensics) เพื่อสร้างสะพานเชื่อมระหว่างเซนเซอร์ระดับอุตสาหกรรมกับระบบโอเพ่นซอร์ส

ลงลึกเรื่องเทคนิค

  • การวิเคราะห์อินเตอร์เฟซฮาร์ดแวร์ (RS232 vs. UART):
    • การเปลี่ยนจาก Bipolar เป็น Unipolar: โดยปกติ PM101 จะใช้การสื่อสารแบบ RS232 ที่มีแรงดันสูง (+/- 5V ถึง +/- 12V) เพื่อให้เข้ากับ Arduino ได้ เราต้องสลับสวิตช์บนแผงวงจรด้านในให้สัญญาณไหลผ่านเส้นทาง UART แบบ TTL (0V ถึง 5V) แทน การปรับแต่งขั้นตอนนี้สำคัญมาก เพราะป้องกันไม่ให้แรงดันสูงทำลายชิป ATmega328P ของเรา
    • การแมปขาของ Sub-D 15 พิน: โปรเจคนี้ระบุขา TxD, RxD และ GND ที่เจาะจงบนคอนเนคเตอร์ 15 พินของ PM101 เพื่อให้มั่นใจว่าสัญญาณจะส่งได้สมบูรณ์สำหรับการใช้งานในแล็บ
  • การใช้งานโปรโตคอล SCPI:
    • การส่งคำสั่งมาตรฐาน: อุปกรณ์ของ Thorlabs ใช้โปรโตคอล Standard Commands for Programmable Instruments (SCPI) เฟิร์มแวร์บน Arduino จะส่งสตริงคำสั่งข้อความธรรมดา (เช่น MEAS:POW?) และรอรับคำตอบในรูปแบบสัญกรณ์วิทยาศาสตร์
    • การแยกสตริงสัญกรณ์วิทยาศาสตร์: ค่ากำลังแสงมักจะถูกส่งกลับมาในรูปแบบเลขยกกำลัง (เช่น 2.45e-04) โปรเจคนี้จะแสดงวิธีแยกสตริงเหล่านี้ให้เป็นตัวแปรทศนิยม เพื่อใช้คำนวณและแสดงผลแบบเรียลไทม์
  • การสร้างสะพาน Software Serial แบบอะซิงโครนัส:
    • การจัดการทรัพยากร: โดยการใช้ไลบรารี SoftwareSerial บนพิน 10 และ 11 โปรเจคนี้จะสงวน UART หลักของฮาร์ดแวร์ (พิน 0/1) ไว้สำหรับดีบักและบันทึกข้อมูลไปยังพีซี สิ่งนี้สร้างสถาปัตยกรรม "Dual-Bus" ที่ Arduino ทำหน้าที่เป็นสะพานส่งผ่านข้อมูลอัจฉริยะ

ขั้นตอนวิศวกรรมและการลงมือทำ

ขั้นตอนที่ 1: เตรียมอุปกรณ์

ต้องปรับโหมดการทำงานของ PM101 จาก RS232 (±5 V) เป็น UART ก่อน

  1. คลายสกรูที่ยึดคอนเนคเตอร์ 15pin sub-d ออก
  2. คลายสกรู TX9 ทั้ง 4 ตัวที่แผงด้านหน้าของเซนเซอร์
  3. ดึงแผงวงจร (PCB) ออกมา
  4. สลับสวิตช์ทั้งสองจากตำแหน่ง PC RS232 Operation (ค่าเริ่มต้น - สวิตช์ทั้งคู่อยู่ตำแหน่งบน) ไปที่ตำแหน่ง ± 5 V level UART (สวิตช์ทั้งคู่อยู่ตำแหน่งล่าง)

รายละเอียดเพิ่มเติมเกี่ยวกับการสลับไปใช้ UART ดูได้ในคู่มือ "Write your own application" บทที่ 2.1

  • ขั้นตอนการแปลงระดับสัญญาณแบบละเอียด:
    1. เปิดฝา: ใช้ไขควง Torx หมุนสกรู TX9 เพื่อเปิดฝาและเข้าถึงแผงวงจรควบคุม SCPI ด้านใน
    2. สลับสวิตช์ลอจิก: เลื่อนสวิตช์ DIP ภายในไปที่ตำแหน่ง UART เพื่อปรับแต่งสเตจเอาต์พุตของทรานซีฟเวอร์
    3. ปรับ Baud Rate: ตั้งค่าให้ PM101 ใช้ Baud Rate เดียวกับ Arduino (เช่น 9600 หรือ 115200) โดยใช้เครื่องมือ Thorlabs Instrument Communicator

ขั้นตอนที่ 2: ติดตั้งและตั้งค่า

ตั้งค่า Baud Rate ของ PM101 ให้ตรงกับที่ Arduino Uno รองรับ โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:

  1. ใช้ฟังก์ชัน "Set Baudrate" ในไดรเวอร์ TLPM
  2. ส่งคำสั่ง SCPI "SYST:SEN:TRAN:BAUD" ผ่าน Thorlabs Instrument Communicator หรือ Thorlabs OPM Terminal

ขั้นตอนที่ 3: ประกอบวงจร

เชื่อมต่อขาทั้งสี่ของ Thorlabs PM101 เข้ากับบอร์ด Arduino Uno ตามแผนภาพ layout.png ที่แนบมากับสเก็ตช์ จัดไปวัยรุ่น!

| PM101 Pin | Arduino Uno Pin | | TxD | Pin 10 | | RxD | Pin 11 | | VxD | 5V | | GND | GND |

  • จัดการเรื่องไฟ (Power Management):
    • PM101 ตัวนี้เราเลี้ยงไฟตรงจากขา 5V ของ Arduino เลยจ้า ถ้าอยากเอาไปใช้ข้างนอกแบบพกพา ก็แค่เสริมด้วย boost-converter กับแบต Li-Po เข้าไปให้ Arduino อีกที รับรองได้เครื่องมือวิทยาศาสตร์แบบพกพาส่วนตัวเลย
  • เพิ่มจอให้มันดูเท่ (Handheld HMI Integration):
    • แม้ว่าตัว bridge พื้นฐานจะส่งข้อมูลกลับมาแสดงบน terminal ได้ แต่โครงสร้างมันถูกออกแบบมาให้ ต่อ OLED/LCD เพิ่มได้สบายๆ เลยนะ ใส่จอเข้าไปเมื่อไหร่ PM101 จากเซ็นเซอร์เงียบๆ จะกลายเป็นเครื่องวัดกำลังแบบพกพาเต็มตัวทันที แสดงหน่วย (วัตต์, dBm) แบบเรียลไทม์จัดเต็ม

ขั้นที่ 4: เอาโค้ดลงไปรัน (Load the code) อัพโหลดโค้ดจาก sketch นี้ลงบอร์ด Arduino ของน้องได้เลย อย่าลืมเช็คบอร์ดกับพอร์ตนะ ไม่งั้น error แน่

สรุปสั้นๆ

Opto-Meter โครงการนี้คือพิมพ์เขียวสำหรับ การแฮกเครื่องมือวิทยาศาสตร์ (Scientific Instrument Hacking) เลยนะพี่น้อง พอเราเข้าใจการแปลงสัญญาณจาก มาตรฐาน RS232 แบบลับเฉพาะ ในแล็บ มาเป็น ลอจิกแบบ UART Bridge แบบโอเพ่นซอร์ส แล้ว เราก็สามารถหยิบเซ็นเซอร์ระดับอุตสาหกรรมแพงๆ มาสร้างเป็นอุปกรณ์วัดแบบพกพาได้เองเลย สู้งานนะน้อง!


ความแม่นยำระดับวิทยาศาสตร์: เชื่อมมาตรฐานแล็บผ่านการวิเคราะห์ SCPI

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino Web Editor"
author: "Cathanys"
category: "Lab Stuff"
components:
  - "1x Thorlabs PM101"
  - "1x Arduino"
description: "This is an example how to connect a Thorlabs PM101 with an Arduino. Feel free to add a Display, Record function and all you need to handle the power measurement values."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://create.arduino.cc/editor/cathanys/7ee46233-065b-4249-9849-8bbd99636032/preview?embed"
encryptedPayload: "U2FsdGVkX1982VH1YDOSyBEgnXRwpyARu9NVZkUzOHY+dy5xmhsJ9aXdJS/R8BepikzrMFUv7gwF5KudpMQUJme15reeN5RxmmHvIeFh1eU="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/stand-alone-powermeter-with-a-thorlabs-pm101-and-arduino-ee13f3_cover.jpg"
lang: "en"
likes: 0
passwordHash: "e5aa36a66697e322ed8b8eb79dc04363c1bc7e026fe52bed07eb147d80a82e25"
price: 1499
seoDescription: "Build a Stand-alone Powermeter using Thorlabs PM101 and Arduino. Learn to add a Display and Record function for power measurement."
tags:
  - "Communication"
title: "วัดกำลังแสงเทพๆ ด้วย Thorlabs PM101 + Arduino งานง่ายแต่หล่อ!"
tools: []
videoLinks: []
views: 1431