Spectrum Analyzer

Lab 6: Spectrum Analyzer

Part 3 - Oscilloscope & Signal Processing


1. โครงสร้างภาพรวมของ Lab

Why? - ทำไมต้องเรียนรู้เรื่องนี้

  • FFT คือหัวใจของ Signal Analysis: Fast Fourier Transform เปลี่ยนสัญญาณจาก Time Domain ไปเป็น Frequency Domain ช่วยให้เห็น "ส่วนประกอบความถี่" ของสัญญาณ ซึ่งมองไม่เห็นจาก oscilloscope ธรรมดา

  • Power Quality Analysis: ในระบบไฟฟ้า FFT ใช้วิเคราะห์ Harmonics, THD (Total Harmonic Distortion), Inter-harmonics เพื่อประเมินคุณภาพไฟฟ้าตาม IEEE 519

  • Vibration Monitoring: ในโรงงาน FFT ใช้ตรวจจับปัญหาเครื่องจักร (bearing fault, imbalance, misalignment) จาก vibration spectrum

  • Smart Energy: Power meter รุ่นใหม่ใช้ FFT วิเคราะห์กำลังไฟฟ้าแบบ real-time สำหรับ Smart Grid, Energy Audit

  • EE Application: ออกแบบ Anti-aliasing filter, Power Quality Analyzer, Vibration-based Predictive Maintenance, Audio Equalizer

What? - จะได้เรียนรู้อะไร

  1. FFT Concept: Time Domain to Frequency Domain transformation

  2. Simplified FFT Implementation: DFT algorithm สำหรับ embedded (ไม่ต้องใช้ library)

  3. Bar Chart Spectrum Display: แสดง frequency bins ด้วย bar chart

  4. Frequency Resolution & Nyquist: เข้าใจ bin resolution, maximum frequency

  5. Peak Frequency Detection: ค้นหาความถี่ที่มีพลังงานสูงสุด

  6. Dual View: Time domain + Frequency domain แสดงพร้อมกัน

How? - จะทำอย่างไร

  1. สร้างสัญญาณ test (sine, square, ฯลฯ) ที่เลือกได้

  2. คำนวณ FFT (Simplified DFT) ของสัญญาณ

  3. แสดง spectrum ด้วย Bar chart (bins สีฟ้า)

  4. ค้นหาและแสดง peak frequency

  5. เพิ่ม gain control สำหรับปรับ sensitivity

  6. สร้าง dual view (waveform + spectrum)


2. หลักการทำงานและ Flowchart

2.1 FFT Concept

2.2 Frequency Bins


3. ฟังก์ชันสำคัญ

3.1 FFT Functions

Function
Description

simple_dft()

Simplified DFT calculation

find_peak_frequency()

ค้นหา dominant frequency

generate_test_signal()

สร้างสัญญาณทดสอบ

3.2 LVGL Bar Chart Setup

Function
Description

lv_chart_set_type(chart, LV_CHART_TYPE_BAR)

Bar chart mode

lv_obj_set_style_pad_column(chart, 2, 0)

CRITICAL: spacing ระหว่าง bar


4. Code เต็ม

4.1 Constants and Global Variables

4.2 Simplified DFT Implementation

4.3 Signal Generation

4.4 Display Update

4.5 Callbacks

4.6 Main Function


5. องค์ความรู้และเทคนิค

5.1 CRITICAL: Bar Chart Spacing

5.2 Windowing Functions (สำหรับปรับปรุง FFT)

5.3 Spectrum Characteristics ของ Waveform แต่ละชนิด

5.4 DFT vs FFT Performance


6. แบบฝึกหัด

Exercise 1: Spectrum Display with Peak Marker

โจทย์: เพิ่ม Peak marker และ frequency label บน FFT chart:

  • วาดเส้นแนวตั้ง (หรือ marker) ที่ตำแหน่ง peak frequency

  • แสดง frequency label ที่จุด peak

  • เพิ่ม "2nd Peak" detection (ความถี่ที่มีพลังงานสูงเป็นอันดับ 2)

  • แสดง power ratio ระหว่าง 1st peak กับ 2nd peak

Exercise 2: Dual View Synchronized

โจทย์: สร้าง Time + Frequency dual view ที่ synchronized:

  • Time domain chart (บน) แสดง waveform

  • Frequency domain chart (ล่าง) แสดง spectrum

  • เพิ่ม Slider ปรับ frequency (100-2000 Hz)

  • เมื่อปรับ frequency ทั้ง 2 charts อัพเดทพร้อมกัน

  • แสดง bin number และ frequency ของ peak

  • ประยุกต์ใช้: Power Quality Analysis - สังเกต harmonics เมื่อเปลี่ยนจาก sine เป็น square


7. References


Last updated

Was this helpful?