กลับไปหน้ารวมไฟล์
mini-oscilloscope-using-atmega328p-8489d2.md

ชื่อโปรเจกต์: Mini Oscilloscope using ATmega328p

Overview

ในงานวิศวกรรมเนี่ยนะ การจะดูว่าสัญญาณมันวิ่งยังไง ขึ้นลงแค่ไหน หรือจะเช็คความถี่ของอัลกอริทึม ไปจนถึงการคายประจุของไลน์ไฟเลี้ยง มันคือหัวใจสำคัญเลยเว้ย ปกติเราต้องมานั่งพลอต Vector ค่าความต่างศักย์ลงบนแกนเวลา (Time Axis) แต่จะมานั่งจดด้วยมือก็ใช่เรื่อง โปรเจกต์นี้เราเลยจัด Miniature Oscilloscope มาให้ เป็นอุปกรณ์สุดคูลที่ใช้อัลกอริทึมสุ่มเก็บตัวอย่างสัญญาณผ่านพวก Probe แล้วเอามาวาดรูป Waveform ลงบนจอ GLCD ให้เห็นกันจะๆ เอาไว้ใช้วิเคราะห์งานแบบหน้างานได้เลย จัดไปวัยรุ่น!

ประกอบเสร็จแล้วหล่อเท่เลย Mini Oscilloscope กำลังโชว์คลื่น sine wave ให้ดูแบบสดๆ

Mechanical Enclosure Fabrication (งานโครงสร้างต้องเป๊ะ)

เพื่อความแข็งแรงและช่วยกันสัญญาณรบกวน พี่เลยเลือกทำเคสแบบ Custom โดยใช้ไม้บัลซ่า (Balsa) เป็นหลัก พอดีตอนนั้นไม่มีเครื่อง 3D printing ให้ใช้ เลยต้องใช้ฝีมือช่างแบบแมนนวลกันหน่อยตามนี้:

  1. เอาเลื่อยเหล็ก (hacksaw) มาหั่นไม้บัลซ่าให้ได้ขนาดตามที่ออกแบบไว้
  2. ใช้กาว Fevicol แปะเชื่อมไม้ให้เป็นโครงสี่เหลี่ยม โดยกะระยะให้พอดีกับขอบจอ GLCD ของเรา
  3. ขั้นตอนนี้สำคัญ "ขัดวนไปครับน้อง" ใช้กระดาษทรายเบอร์ละเอียดขัดจนผิวไม้เนียนกริบ เพื่อให้ได้สัมผัสที่ลื่นไหลและดูเนี๊ยบที่สุด

Operational Heuristics and Analog-to-Digital Interfacing (เจาะลึกระบบประมวลผล)

พอเราเอา Probe ไปจิ้มวัดสัญญาณปุ๊บ เจ้าตัว ADC (Analog-to-Digital Converter) ในชิป ATmega328P มันจะเริ่มทำ Sampling ใน Loop วนไปเรื่อยๆ เพื่อเก็บค่าสัญญาณจากจุดที่เราวัด

  • Sampling Rate & Interval: ความเร็วในการเก็บข้อมูลจะขึ้นอยู่กับ Clock ของระบบ (หน่วยเป็น Samples Per Second - SPS) โดย ATmega328P จะคอยเก็บข้อมูลแรงดันที่แปลงเป็นดิจิทัลแล้วยัดลงใน RAM เพื่อพักข้อมูลไว้ทำ Waveform ต่อไป
  • Temporal Scaling (ซูมภาพแบบเซียนๆ): ถ้าเรากดสวิตช์ Div +ve โปรแกรมมันจะสั่ง Delay(T) เพื่อถ่วงเวลาตอน ADC ทำงาน ทำให้จุดข้อมูลบนจอ GLCD มันดูห่างขึ้น เป็นการจำลองการ Zoom Out ดูสัญญาณในแนวนอนนั่นเอง
  • Peak Detection Forensics: ตัว Software จะวิ่งไล่เช็คข้อมูลใน Buffer ทั้งหมด เพื่อหาว่าค่าไหนแรงที่สุด แล้วดึงค่านั้นมาโชว์เป็นแรงดัน Peak ให้เราดูแบบเรียลไทม์
การวางพิกัดจอ: โซน DISPLAY WAVEFORM จะอยู่ที่พิกัด (0,0)-(95,63) ส่วนพวกค่า INFO ต่างๆ จะถูกส่งไปโชว์ที่ (96,63)-(127,63) แยกกันชัดเจน

ข้อมูลทางคณิตศาสตร์ทั้งหมดจะถูกพ่นลงบนพิกัด Cartesian ในโซน DISPLAY WAVEFORM ส่วนพวกค่าวิเคราะห์อื่นๆ (เช่น ความถี่, แรงดันไฟฟ้าสูงสุด) จะไปโผล่ที่ช่อง INFO ข้างๆ กัน ทำให้เราเห็นภาพรวมของระบบได้ครบ จบในที่เดียว สู้งานนะน้อง!

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

title: "Mini Oscilloscope using ATmega328p"
description: "A compact signal visualization endpoint that autonomously renders temporal amplitude variations onto an integrated GLCD via algorithmic ADC sampling loops."
author: "Electramite"
category: ""
tags:
  - "embedded"
  - "communication"
views: 0
likes: 825
price: 2450
difficulty: "Easy"
components:
  - "0"
tools:
  - "2x Capacitor 22 pF"
  - "1x Single Turn Potentiometer- 10k ohms"
  - "1x Balsa Wooden sticks (for enclosure)"
  - "1x Soldering iron (generic)"
  - "1x Solder Flux, Soldering"
  - "3x Pushbutton Switch, Push-Pull"
  - "2x Perfboard PCBs"
  - "1x Toggle Switch, Toggle"
  - "1x ATmega328"
  - "1x 128*64 GLCD Display"
  - "1x Solder Wire, Lead Free"
  - "1x Hacksaw"
  - "1x 18650 3.7v Battery"
apps:
  []
downloadableFiles:
  - "https://github.com/electramite/embedded_system/tree/main/e%20yantra%20course/design_oscilloscope/design_oscilloscope"
  - "https://github.com/electramite/embedded_system/tree/main/e%20yantra%20course/design_oscilloscope/design_oscilloscope"
documentationLinks:
  []
passwordHash: "60e4bf0901323a8e8249c0b0346ae23a269740ac6b3b44178be3d354b732ec18"
encryptedPayload: "U2FsdGVkX1+KMkZIF4VHjvGu1IDGhEJ4u88p+flvgGUsugch/1502bQNsbDZE53NczNNcgjZNY5Cw8WUJf7JWsJd4wLvWr7E2EnbO4G3PxM="
seoDescription: "Construct an ATmega328P-based miniature oscilloscope bridging analog transduction limits with localized GLCD temporal signal plotting heuristics."
videoLinks: []
heroImage: "https://projects.arduinocontent.cc/16774831-5521-409e-9f73-4123b6cdfccf.jpg"
lang: "th"