บทเรียน 4.1 — จับสัญญาณดิจิทัลครั้งแรก

ต่อ logic analyzer เลือกอัตราสุ่มตัวอย่างและ trigger แล้ววัดเวลาของสัญญาณ

โมดูล 4 — Logic analyzer และ protocol analyzer

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เป้าหมาย

เมื่อจบบทเรียนนี้ คุณจะ

  1. ต่อสายกราวด์และสายสัญญาณของ logic analyzer กับบอร์ดได้ถูกต้อง
  2. เลือกอัตราสุ่มตัวอย่างที่เร็วพอสำหรับสัญญาณที่ต้องการวัด และอธิบายผลเมื่อช้าเกินไป
  3. วัดความกว้างพัลส์และความถี่ของสัญญาณไฟกะพริบจากภาพที่จับได้
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

ก่อนเริ่ม

  • logic analyzer ราคาประหยัดที่ใช้กับ sigrok ได้ (fx2lafw), ติดตั้ง PulseView
  • TESAIoT Dev Kit ที่ flash QWA309 Header I/O Test

ความปลอดภัยของเครื่องมือ logic analyzer ราคาประหยัดส่วนใหญ่ไม่มีการแยกกราวด์ กราวด์ของมันคือกราวด์ของคอมพิวเตอร์ ห้ามต่อกับวงจรที่กราวด์ไม่ใช่กราวด์เดียวกับคอมพิวเตอร์ หรือวงจรที่มีไฟบ้าน

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

ดูของจริงก่อน

กดปุ่ม PWM Out — จอเขียนว่ากำลังขับ P13.3 และ P13.4 เป็นคู่กลับเฟส 50 รอบ ครึ่งคาบเวลา 20 ms "ความถี่ประมาณ 25 Hz"

ต่อ LED ไว้ที่ P13.3 จะเห็นไฟกะพริบถี่จนเกือบดูเหมือนติดค้าง — ตาบอกได้แค่ "กะพริบเร็ว" แต่ตอบไม่ได้ว่า 25 Hz จริงไหม แต่ละพัลส์กว้างเท่ากันหรือเปล่า มัลติมิเตอร์ก็ตอบไม่ได้เพราะมันเฉลี่ยค่า เครื่องมือที่ตอบได้คือ logic analyzer

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

แนวคิด (1) — logic analyzer ทำงานอย่างไร

logic analyzer อ่านแรงดันของแต่ละช่องเป็นจังหวะคงที่ เทียบกับเกณฑ์ (threshold) แล้วเก็บเป็น 0 หรือ 1 — มันไม่รู้แรงดันจริง รู้แค่สูงหรือต่ำกว่าเกณฑ์

กราวด์ก่อนเสมอ ถ้าไม่ได้ต่อ GND เข้ากับ GND ของบอร์ด เครื่องไม่มีจุดอ้างอิง ภาพที่ได้จะมั่วหรือเป็นเส้นตรง ลำดับที่ดี: ต่อ GND → ต่อสายสัญญาณ → เปิดโปรแกรม (และถอดกลับด้าน)

ระดับแรงดันต้องเข้ากัน สัญญาณ 3.3 V เกือบทุกรุ่นอ่านได้ สัญญาณ 1.8 V บางรุ่นอยู่ใกล้เกณฑ์จนไม่น่าเชื่อถือ

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

แนวคิด (2) — อัตราสุ่มตัวอย่างต้องเร็วแค่ไหน

กฎหยาบ: อย่างน้อย 4 ตัวอย่างต่อพัลส์ที่แคบที่สุด วัดเวลาแม่นให้ใช้ 10 ตัวอย่างขึ้นไป

สัญญาณ ช่วงที่แคบที่สุด อัตราสุ่มที่เหมาะ
PWM 25 Hz ของโปรแกรมทดสอบ 20 ms 10 kHz ก็พอ
UART 115200 baud 8.68 µs 1 MHz (8.7 ตัวอย่าง/บิต)
I2C 400 kHz ราว 1.25 µs 4–10 MHz

ถ้าช้าเกินไป พัลส์แคบกว่า T_s อาจหายไปเลย หรือเกิด aliasing — สัญญาณเร็วที่ถูกสุ่มช้าเกินไปกลายเป็นภาพของสัญญาณที่ช้ากว่าและไม่มีอยู่จริง

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

แนวคิด (3) — aliasing: ภาพที่ดูสะอาดแต่โกหก

คลื่นสี่เหลี่ยม 1 kHz สุ่มที่ 1.1 kHz
ภาพที่ได้ครบรอบทุก 11 ตัวอย่าง = 1100/11 = 100 Hz
ความถี่ปลอมนี้คือ |1100 − 1000| Hz

ภาพดูสะอาดและน่าเชื่อ — นั่นคือเหตุผลที่ aliasing อันตราย มันไม่ได้ดูเหมือนความผิดพลาด

หน่วยความจำ จำนวนตัวอย่าง = f_s × เวลาที่จับ — สุ่ม 1 MHz นาน 5 s ได้ 5 ล้านตัวอย่างต่อช่อง ตั้งเร็วเกินจำเป็นกินหน่วยความจำและจับได้สั้นลง

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

แนวคิด (4) — trigger และการวัดเวลา

trigger คือเงื่อนไข "เริ่มเก็บตรงนี้" เช่น ขอบขาขึ้นของช่อง 0 — ทำให้เหตุการณ์อยู่ตำแหน่งเดิมทุกครั้งที่จับ

ความกว้างพัลส์ (t_high) = เวลาขอบขาลง − เวลาขอบขาขึ้นก่อนหน้า
คาบเวลา (T)             = เวลาขอบขาขึ้นถัดไป − เวลาขอบขาขึ้นแรก
ความถี่ (f)              = 1 / T
duty cycle              = t_high / T

วัดหลายคาบเวลาแล้วหารด้วยจำนวนคาบเวลาจะแม่นกว่าวัดคาบเวลาเดียว เพราะความคลาดราวหนึ่ง T_s ที่ขอบถูกหารเฉลี่ยไปด้วย

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

ตัวอย่างสมบูรณ์ — จับสัญญาณ PWM Out

1. รู้ก่อนว่าคาดอะไร   คาบเวลา ≈ 40 ms, ความถี่ ≈ 25 Hz, duty ≈ 50%, 50 รอบ
2. ต่อสาย   GND→GND, CH0→P13.3, CH1→P13.4
3. เลือกอัตราสุ่ม   ช่วงแคบสุด 20 ms → 10 kHz ได้ 200 ตัวอย่าง/ช่วง (เกินพอ)
4. เลือกเวลาจับ   ≥3 s
5. ตั้ง trigger   ขอบขาขึ้นของ CH0
6. วัด (ตัวอย่าง)  ขอบขึ้นลูกที่ 11 ที่ 401.0 ms
   คาบเวลาเฉลี่ย = 401.0/10 = 40.10 ms, f = 24.94 Hz, duty = 20.05/40.10 = 50.0%
7. ตีความ   ยาวกว่า 40 ms อยู่ 0.25% — มาจากเวลาของคำสั่งซอฟต์แวร์ที่หน่วงเวลา
8. นับรอบ   ต้องได้ 50 ขอบพอดี และ CH0/CH1 ต้องไม่เป็น 1 พร้อมกัน
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

ฝึกเติม / แล็บ

ฝึกเติม

  1. จะจับ UART 115200 baud ให้ได้ ≥8 ตัวอย่าง/บิต ต้องใช้อัตราสุ่มอย่างน้อยเท่าไร
  2. คลื่นสี่เหลี่ยม 900 Hz ถูกสุ่มที่ 1 kHz ภาพที่เห็นจะมีความถี่เท่าไร

แล็บ ส่วน A สัญญาณกะพริบช้า (GPIO Out) — sample rate 10 kHz, 20 s, trigger ขอบขาขึ้น CH0 ทาย ความกว้างพัลส์ก่อนดูผล (ยาวหรือสั้นกว่า 700 ms)

แล็บ ส่วน B สัญญาณเร็วขึ้น (PWM Out) — วัดคาบเวลาเฉลี่ย 10 คาบเวลา, ความถี่, duty แล้วลองลดอัตราสุ่มจนเห็นความผิดปกติ

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เช็กความเข้าใจ

  1. ต่อสายสัญญาณของ logic analyzer เข้าขาของบอร์ดแล้ว แต่ลืมต่อสาย GND ผลที่น่าจะเกิดคืออะไร

    • ก) ภาพถูกต้องปกติ เพราะ USB ต่อกราวด์ให้เอง · ข) ภาพมั่ว เป็นเส้นคงที่ หรือเปลี่ยนเมื่อขยับสาย · ค) บอร์ดจะรีเซ็ต · ง) เครื่องวัดแรงดันจริงได้แทน 0/1
  2. ต้องการจับสัญญาณ UART 115200 baud ให้ได้อย่างน้อย 8 ตัวอย่างต่อบิต อัตราสุ่มข้อใดต่ำที่สุดที่ใช้ได้

    • ก) 115.2 kHz · ข) 230.4 kHz · ค) 500 kHz · ง) 1 MHz
  3. คลื่นสี่เหลี่ยม 1 kHz ถูกสุ่มที่ 1.1 kHz ภาพที่ได้จะแสดงความถี่เท่าไร

    • ก) 1 kHz · ข) 1.1 kHz · ค) 100 Hz · ง) 2.1 kHz
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

ไปต่อ

บทเรียนถัดไป ถอดรหัส I2C และ UART — ให้โปรแกรมอ่านความหมายของสัญญาณแทนเรา ตั้งแต่ address บน I2C ไปจนถึงไบต์บน UART

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

แหล่งที่มาและเครดิต

"อิเล็กทรอนิกส์และเครื่องมือวัดสำหรับนักพัฒนาระบบฝังตัว" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย
(Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program
สัญญาอนุญาต CC BY-NC 4.0

แผนภาพในบทเรียนนี้เป็นงานวาดของหลักสูตรนี้เอง (CC BY-NC 4.0)

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0