สร้างเครื่องวัด LC Meter สไตล์คลาสสิกด้วย Arduino: เปลี่ยนความต้านทานให้เป็นความถี่!

ถ้าคุณเป็นสายประดิษฐ์หรือนักวิทยุสมัครเล่น การวัดค่าขดลวด (Inductor - L) และตัวเก็บประจุ (Capacitor - C) ถือเป็นเรื่องที่หลีกเลี่ยงไม่ได้ แต่แทนที่เราจะซื้อเครื่องวัดแพงๆ วันนี้เราจะมาสร้างเครื่อง LC Meter ด้วยตัวเอง โดยอิงจากวงจรสุดคลาสสิกตั้งแต่ยุค 1920s อย่าง "Franklin Oscillator" ครับ!

โปรเจกต์นี้ไม่ได้เน้นสร้างเครื่องที่แม่นยำระดับห้องแล็บ แต่เน้นความสนุกในการเรียนรู้ว่า "เราจะเปลี่ยนค่าความต้านทาน (Impedance) อนาล็อก ให้กลายเป็นความถี่ (Frequency) ที่ไมโครคอนโทรลเลอร์อย่าง Arduino สามารถอ่านและคำนวณได้อย่างไร" แค่เปลี่ยนมุมมอง ปัญหาก็ง่ายขึ้นเยอะ!

Franklin Oscillator LC Meter

หลักการทำงาน (The Principle)

วงจร Franklin Oscillator ประกอบด้วยวงจรเรโซแนนซ์ LC ทำงานร่วมกับตัวขยายสัญญาณแบบกลับเฟส (ใช้ชิป 74HCU04) หลักการของมันฉลาดมากครับ:

  • เราจะเอาอุปกรณ์ที่ต้องการวัด (DUT) ไปต่อเพิ่มในวงจร LC
  • วงจรจะสร้างความถี่การสั่น (Oscillation frequency) ออกมา
  • เมื่อนำความถี่นี้ไปเปรียบเทียบกับความถี่ดั้งเดิมของวงจร เราจะสามารถแก้สมการหาค่าของอุปกรณ์ตัวนั้นได้ทันที!

ความแม่นยำของระบบนี้แทบจะขึ้นอยู่กับสิ่งเดียวเลย คือ ตัวเก็บประจุอ้างอิง (Reference Capacitor) ที่เราเอามาใช้เป็นมาตรฐานในการคาลิเบรต (Calibration)

Oscillator Details
คลิกเพื่อดูรูปวงจรและสมการการทำงาน (View More)
Detail Image
LC Circuit
Equation and Circuit
LCM7 PCB

จำลองการทำงานด้วย LTSpice

ก่อนจะต่อวงจรจริง ผู้เขียนได้จำลองการทำงานในโปรแกรม LTSpice เพื่อยืนยันว่าวงจร Franklin ทำงานได้จริงกับชิป 74HCU04 ใครอยากลองเล่นเอง ทำตามนี้ได้เลยครับ:

  • ดาวน์โหลดและนำไฟล์ 74hcu04.asy ไปวางในโฟลเดอร์ sym ของ LTspice
  • นำไฟล์ข้อมูล 74hc.lib ไปวางในไดเรกทอรีที่เกี่ยวข้อง และตั้งค่าคำสั่ง .lib 74hc.lib ใน SPICE Directive
  • เพิ่มแหล่งจ่ายไฟ DC 5V ให้กับ Vcc
  • ตั้งค่าเงื่อนไขเริ่มต้น (Initial condition) เป็น .ic V(n003) = 1V เพื่อกระตุ้นให้เกิดการสั่น (Oscillation)
LTSpice Setup

กระบวนการทำงานของโค้ด (The Sketch Overview)

ระบบการนับความถี่จะแบ่งเป็น 2 ช่วง คือ ช่วงคาลิเบรต (Calibration flow) และ ช่วงวัดค่า (Measuring flow) ลองดู Flow การทำงานจำลองด้านล่างนี้ได้เลยครับ:

คลิกเพื่อดูและคัดลอกโครงสร้างโค้ดการวัดค่า (View More)
/* โครงสร้างการทำงาน (Pseudo-code) สำหรับวัดความถี่ LC Meter 
   ใช้ร่วมกับบอร์ด Arduino Nano / ATmega328P
*/

void startMeasurement() {
  // 1. รอให้ความถี่การสั่นคงที่
  waitForStableOscillation();
  
  // 2. นับจำนวนพัลส์ตามเวลา Gate time
  countPulses(); 
  
  // 3. หาค่าเฉลี่ย N ครั้ง จนกว่าความถี่ที่ติดกันจะต่างกันไม่เกิน 0.5%
  averageFrequencies();
}

void calibrationFlow() {
  // วัดความถี่ตั้งต้น (freq1)
  float freq1 = measureFreq();
  
  // ใส่ตัวเก็บประจุอ้างอิง (Cref) เข้าไปในวงจร
  insertCref(); 
  
  // วัดความถี่ครั้งที่ 2 (freq2)
  float freq2 = measureFreq();
  
  // คำนวณค่า L และ C ของวงจรตั้งต้น
  solveBaseTankParameters(freq1, freq2);
  storeParameters();
}

void measuringFlow() {
  // นำอุปกรณ์ที่ต้องการวัด (DUT) เข้าสู่วงจร
  insertDUT();
  
  // ทำการวัดและคำนวณค่า
  float finalValue = measureAndCalculate();
  printToScreen(finalValue);
}

อัปเดตล่าสุด: เทียบกับ NanoVNA และการปรับปรุงเวอร์ชันใหม่

ผู้สร้างได้นำ LC Meter DIY ตัวนี้ไปเทียบกับเครื่องมือระดับโปรอย่าง NanoVNA (Vector Network Analyzer) ปรากฏว่า LC Meter ของเรา "อ่านค่าง่ายกว่าและใช้งานสะดวกกว่า" ในงานพันขดลวดทั่วไป! เพราะ NanoVNA จะแสดงผลเป็นกราฟ Smith chart ซึ่งต้องมานั่งตีความอีกที แถมเมื่อวัดขดลวดขนาด 10mH ตัว NanoVNA กลับแสดงค่าเพี้ยนเนื่องจากผลของ Self-resonance ในขณะที่ LC Meter DIY ยังอ่านค่าได้ปกติ

คลิกเพื่อดูรูปภาพการเปรียบเทียบกับ NanoVNA (View More)
Comparison 1
Comparison 2
Comparison 3

การอัปเกรดในเวอร์ชัน V7 และ V8:

ในเวอร์ชันแรกๆ ผู้สร้างใช้ Relay เพื่อทำการคาลิเบรตอัตโนมัติ แต่มันมีปัญหาเรื่องราคาแพงและหาซื้อยาก ในเวอร์ชัน V7 เขาจึงเปลี่ยนมาใช้ สวิตช์ 6 ขา DPDT (Double-Pole Double-Throw) สับสวิตช์ด้วยมือแทน ซึ่งเขาบอกว่า "การคาลิเบรตด้วยมือคือฟีเจอร์ ไม่ใช่บั๊ก!" เพราะเราทำแค่ตอนเปิดเครื่องครั้งเดียว และทำให้เรารู้สถานะของวงจรอย่างโปร่งใสที่สุดครับ


คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา

อ้างอิงและเรียบเรียงโดย: Globalbyteshop Blog

แหล่งที่มาหลัก:
- โปรเจกต์โดย Nobcha: Turning impedance into frequency: an LC experiment (Hackaday.io)
- ข้อมูลเพิ่มเติม: Building an LC meter with a Franklin Oscillator (Hackaday.com)
- คู่มือการประกอบ ARD_LCM_MANUAL (GitHub)

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี