4 คะแนน โดย GN⁺ 2025-11-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • อธิบายหลักการสำคัญของการออกแบบวงจรออสซิลเลเตอร์และความยากของการนำไปใช้งานจริงเป็นลำดับขั้น
  • วิเคราะห์ว่าทำไมวงจร MOSFET เดี่ยวจึงไม่เกิดการออสซิลเลตเพราะมีจุดเสถียร และเสนอโครงสร้าง Schmitt triggerเพื่อแก้ปัญหานี้
  • สร้างrelaxation oscillatorบนพื้นฐานของ Schmitt trigger เพื่อให้ได้ความถี่ที่เสถียรประมาณ 3 kHz
  • จากนั้นแนะนำวงจรออสซิลเลเตอร์อย่างง่ายที่ใช้ออปแอมป์ (op-amp) และเปรียบเทียบความต่างระหว่างค่าที่คำนวณตามทฤษฎีกับค่าที่วัดได้จริง
  • สุดท้ายอธิบายหลักการสร้างคลื่นไซน์ผ่านphase-shift oscillator โดยอาศัยการเปลี่ยนเฟสของ RC filter พร้อมเน้นย้ำความสำคัญของความแม่นยำในการออกแบบวงจรแอนะล็อกและการตรวจสอบเชิงทดลอง

แนวคิดพื้นฐานและความยากของออสซิลเลเตอร์

  • เงื่อนไขสำคัญของออสซิลเลเตอร์คือการมีอัตราขยายสัญญาณ (gain) และหากไม่มีอัตราขยาย การสั่นจะค่อย ๆ ดับลง
  • แม้ว่าวงจรขยายบางวงจรอาจออสซิลเลตขึ้นมาโดยบังเอิญได้ แต่การออกแบบออสซิลเลเตอร์แอนะล็อกที่เสถียรด้วยตนเองนั้นทำได้ยาก
  • วงจรออสซิลเลเตอร์ที่พบได้บ่อยบนอินเทอร์เน็ตมักไม่เสถียรหรือจำเป็นต้องใช้อุปกรณ์เฉพาะทาง (เช่น center-tap inductor, หลอดไส้)
  • เป้าหมายคือการสร้างออสซิลเลเตอร์ที่เข้าใจง่ายและคาดการณ์ความถี่ได้ด้วยตนเองโดยไม่ต้องอาศัยข้อมูลอ้างอิงภายนอก

ข้อจำกัดของการพยายามทำให้ออสซิลเลตด้วย MOSFET เดี่ยว

  • พยายามใช้งาน MOSFET แบบ n-channel ราวกับเป็นสวิตช์เพื่อให้เกิดการออสซิลเลต แต่ในทางปฏิบัติกลับมีจุดสมดุลเสถียรอยู่ ทำให้การสั่นหยุดลง
  • ยกตัวอย่างกราฟ Vgs–Idของทรานซิสเตอร์ BS170 ซึ่งแสดงสถานะเสถียรที่มีกระแสประมาณ 300 µA ไหลอยู่แถว ๆ 2 V
  • สถานะนี้เทียบได้กับ “สวิตช์ที่เปิดอยู่ครึ่งหนึ่ง” จึงไม่สามารถรักษาการออสซิลเลตต่อเนื่องได้

การสวิตช์อย่างเสถียรด้วย Schmitt trigger

  • เสนอวงจร Schmitt trigger ในฐานะสวิตช์อิเล็กทรอนิกส์ที่ไม่มีจุดเสถียรตรงกลาง
  • เมื่ออินพุตเป็น 0 V ทรานซิสเตอร์ด้านขวาจะนำกระแส และเมื่ออินพุตเกินประมาณ 2.6 V ทรานซิสเตอร์ด้านซ้ายจะเปิด ขณะที่ด้านขวาจะปิด
  • ระหว่างกระบวนการนี้เกิดpositive feedback ทำให้วงจรไม่ค้างอยู่ในสถานะกึ่งกลาง
  • อินพุตเปิดที่ 2.6 V และปิดที่ 2.2 V จึงเกิดhysteresis 400 mV

Relaxation oscillator ที่อิง Schmitt trigger

  • ป้อนสัญญาณเอาต์พุตของ Schmitt trigger กลับไปยังอินพุต และเพิ่มการหน่วงเวลาแบบ ตัวต้านทาน–คาปาซิเตอร์ (RC) เพื่อควบคุมความถี่ออสซิลเลชัน
  • ในแหล่งจ่าย 5 V สังเกตได้ว่าความถี่ออสซิลเลชันอยู่ที่ประมาณ 3 kHz
  • แรงดันบนคาปาซิเตอร์แกว่งอยู่ระหว่าง 2.2 V~2.6 V และคำนวณเวลาในการชาร์จ·คายประจุได้เป็น 154 µs และ 167 µs ตามลำดับ
  • แม้ว่าวงจรจะลดความซับซ้อนได้ แต่หากต้องการใช้ชิ้นส่วนน้อยลง การใช้ออปแอมป์ (op-amp) จะมีประสิทธิภาพกว่า

ออปแอมป์แบบ relaxation oscillator

  • เมื่อจัดค่า R1 = R2 = R3 อินพุตไม่กลับเฟสจะคงอยู่ที่แรงดันเฉลี่ยของแหล่งจ่าย·กราวด์·เอาต์พุต (⅓~⅔ Vsupply)
  • ในสถานะเริ่มต้น คาปาซิเตอร์มีค่า 0 V จึงทำให้เอาต์พุตเพิ่มขึ้น และเมื่อคาปาซิเตอร์ชาร์จจนถึง ⅔ Vsupply เอาต์พุตจะกลับสถานะ
  • จากนั้นคาปาซิเตอร์คายประจุจาก ⅔ → ⅓ Vsupply ทำให้เกิดการออสซิลเลตเป็นคาบ
  • สำหรับวงจร 5 V, Rcap = 10 kΩ, C = 1 µF ตามทฤษฎีได้ความถี่ 75 Hz ขณะที่ค่าที่วัดได้จริงคือ 70 Hz
  • สาเหตุของความคลาดเคลื่อนคือข้อจำกัดของการประมาณว่าเป็นกระแสคงที่ไม่สมบูรณ์ และเมื่อปรับ R3 เป็น 47 kΩ จะได้ผลลัพธ์ที่แม่นยำยิ่งขึ้น

การคำนวณความถี่และสมการทั่วไป

  • เมื่อ R1 = R2 สามารถรวมตัวต้านทานทั้งสองเข้าด้วยกันเพื่อทำให้เรียบง่ายเป็นสมการแบ่งแรงดัน
  • เนื่องจากแรงดันของคาปาซิเตอร์แกว่งรอบ ½ Vsupply จึงสามารถคำนวณคาบในรูป t = Δv · C / I โดยใชักระแสเฉลี่ย
  • แสดงการหาความถี่จริงจากค่าตัวอย่าง (R1 = R2 = 10 kΩ, R3 = 47 kΩ)

ออสซิลเลเตอร์แบบ phase-shift

  • ดัดแปลง negative feedback ของvoltage follower แบบออปแอมป์เพื่อทำให้เกิดการกลับเฟสที่ความถี่เฉพาะ
  • ต่อ RC low-pass filter แบบอนุกรมหลายขั้น เพื่อให้แต่ละขั้นเลื่อนเฟส -60° รวมเป็นการเลื่อนเฟส -180°
  • ใช้สมการความสัมพันธ์แบบ arctan ของแต่ละขั้น RC เพื่อคำนวณความถี่ดังกล่าว
  • ทั้งสามขั้นให้ผลลัพธ์เหมือนกัน และเกิดการออสซิลเลชันที่ความถี่กลับเฟส

ลักษณะของรูปคลื่นและการจำลอง

  • เนื่องจากอัตราขยายของแอมป์ไม่ได้ถูกจำกัด เอาต์พุตจึงมีลักษณะเป็นคลื่นสี่เหลี่ยม แต่รูปคลื่นที่ผ่าน RC filter จะใกล้เคียงคลื่นไซน์
  • ผลการจำลองแสดงให้เห็นว่าพฤติกรรมของคลื่นสี่เหลี่ยม (สีน้ำเงิน) และคลื่นไซน์ (สีเทา) แทบจะตรงกัน
  • หากต้องการทำให้รูปคลื่นเอาต์พุตเป็นคลื่นไซน์บริสุทธิ์ สามารถปรับอัตราขยายหรือใช้วิธีขยายสัญญาณที่อินพุตไม่กลับเฟส

ข้อพิจารณาในการออกแบบวงจร

  • เพิ่มอิมพีแดนซ์ของแต่ละขั้น RC ทีละ 10 เท่าเพื่อลดผลกระทบจากการโหลดระหว่างกันให้เหลือน้อยที่สุด
  • หากใช้อิมพีแดนซ์เท่ากันทั้งหมด การคำนวณtransfer functionของอุปกรณ์ทั้งหกตัวจะซับซ้อนมากขึ้น
  • ในเอกสารอ้างอิงยังมีวิธีใช้ high-pass filter และทรานซิสเตอร์เดี่ยวเช่นกัน แต่การสร้างใช้งานจริงทำได้ค่อนข้างยาก
  • วงจรในบทความนี้อ้างอิงจากโครงสร้างเครื่องกำเนิดคลื่นไซน์·สี่เหลี่ยมแบบความเพี้ยนต่ำที่มีการอภิปรายไว้ในบทความของ Electronic Design

1 ความคิดเห็น

 
GN⁺ 2025-11-23
ความคิดเห็นบน Hacker News
  • มีมุกเก่าในวงการอิเล็กทรอนิกส์ว่า “ถ้าอยากสร้างออสซิลเลเตอร์ ก็ลองสร้างแอมป์ดู”
    ทำให้นึกถึงบทความใน Television Magazine ที่เคยอ่านเมื่อยุค 80 ซึ่งพูดถึงบันทึกการซ่อมของวิทยุ Philips
    ในนั้นมีคำสั่งซ่อมว่า “Fix VIUPS” ซึ่งเป็นการเปลี่ยนแค่ตัวต้านทานไม่กี่ตัวกับคาปาซิเตอร์ไม่กี่ตัว
    ผู้เขียนสงสัยว่ามันคืออะไรเลยติดต่อไปถึงสำนักงานใหญ่ของ Philips สุดท้ายวิศวกรก็ตอบว่า “VIUPS คือชื่อของเสียงที่มันร้องตอนเสีย” — “VIUPS VIUPS VIUPS”

    • เวอร์ชันที่ฉันเคยได้ยินคือ “แอมป์จะออสซิลเลต แต่ออสซิลเลเตอร์จะไม่ออสซิลเลต
    • สาธิตเรื่องนี้ได้ง่ายด้วยเทคนิค no-input โดยเอาเอาต์พุตของออดิโอมิกเซอร์กลับไปต่อเข้ากับอินพุต จะเกิดฟีดแบ็กและสร้างโทนเสียงได้หลายแบบ
      แต่ต้องทำอย่างระวัง — วิดีโอสาธิต
    • เห็นด้วยเลย เป็นเรื่องที่ resonates จริง ๆ
    • วิธีที่ง่ายที่สุดในการกวนเพื่อนบ้านด้วยวิทยุ AM คือปรับเกนของ เครื่องรับ AM แบบ regenerative ให้สูงเกินไป
      มันจะออสซิลเลตและปล่อยสัญญาณรบกวนที่ความถี่เดียวกันออกมา ถ้าเพิ่มไมโครโฟนคาร์บอนเข้าไปแล้วเร่งเกนสุด ก็จะกลายเป็นเครื่องส่ง AM แบบง่าย ๆ
  • LC oscillator สร้างได้ค่อนข้างง่าย
    ฉันเคยทำโปรแกรมที่สุ่มสร้างโทโพโลยีของวงจร แล้วใช้ การจำลอง SPICE ตรวจว่ามันออสซิลเลตหรือไม่
    ผลคือพบว่ารูปแบบที่ง่ายที่สุดประกอบด้วยตัวเหนี่ยวนำ 1 ตัว คาปาซิเตอร์ 2 ตัว ตัวต้านทาน 1 ตัว และทรานซิสเตอร์ 1 ตัว
    ฉันเรียกวงจรกลุ่มนี้ว่า “LCCRT oscillator” และเมื่อสร้างชุดความเป็นไปได้ทั้งหมดออกมา ก็พบว่ามีโทโพโลยีที่ไม่ซ้ำกัน 12 แบบ
    พอลองทดสอบจริงก็พบว่ามันเสถียร และยังเอาไปใช้กับเครื่องตรวจจับโลหะด้วย — ลิงก์โปรเจกต์

    • ถึงจะบอกว่าเป็นออสซิลเลเตอร์ “ใหม่” แต่จริง ๆ แล้วทั้งหมดเป็นแค่รูปแปรของ Collpitts oscillator ต้องถ่อมตัวหน่อย เพราะโครงสร้างพวกนี้ถูกศึกษามาตั้งแต่ร้อยปีก่อนแล้ว
    • ในฐานะคนจบ CS ที่รู้อิเล็กทรอนิกส์แค่ระดับเริ่มต้น ฉันสงสัยว่าทำไมบทความถึงโฟกัสที่ทรานซิสเตอร์มากกว่า LC oscillator
    • เจ๋งมาก! ถ้าลองจัดหมวดหมู่ตาม Q-factor น่าจะยิ่งน่าสนใจ
    • แนวทางนี้น่าประทับใจมาก ฉันไล่ดูในรีโพแล้วได้แรงบันดาลใจเยอะเลย
    • โพสต์บน Hacker News ทีไร มักเกิดเรื่องแบบนี้เสมอ — มีคนมา ถล่มด้วยความรู้
  • ตอนเด็ก ๆ ที่เริ่มเล่นอิเล็กทรอนิกส์ ถ้าจะสร้างออสซิลเลเตอร์ก็ต้องสร้างแอมป์ก่อน และถ้าจะสร้างแอมป์ก็กลับต้องสร้างออสซิลเลเตอร์ก่อน
    ความทะเยอทะยานของเด็ก 7 ขวบใหญ่เกินกว่าทักษะทางเทคนิค จริง ๆ หลังลองผิดลองถูกอยู่นาน ฉันถึงทำให้แอมป์ไม่ออสซิลเลตได้
    ตอนนั้นยังอ่านรหัสสีตัวต้านทานไม่เป็นด้วยซ้ำ แต่ดันคิดว่าตัวเองเป็น

    • ฉันชอบคำว่า “ความทะเยอทะยานของเด็ก 7 ขวบ” มาก เป็นท่าทีที่ไม่ควรทำหายเลย
    • บ่อยครั้งสิ่งที่ขวางเราไว้คือ ความเข้าใจแบบผู้ใหญ่ ที่บอกว่า “อันนี้เป็นไปไม่ได้”
    • ถ้าเอาคำถาม “ทำไม?” ของเด็ก 3 ขวบมารวมกับความทะเยอทะยานของเด็ก 7 ขวบ เราอาจได้อัจฉริยะที่มีประสิทธิผลที่สุดในโลก
  • อยากอธิบายสั้น ๆ เรื่อง หลอดไฟ(lightbulb) ที่พูดถึงในบทความ
    เหตุผลที่การได้คลื่นไซน์สะอาด ๆ จากออสซิลเลเตอร์เป็นเรื่องยาก ก็คือปัญหา การทำให้เกนเสถียร
    ถ้าเกนต่ำเกินไป การสั่นจะหายไป แต่ถ้าสูงเกินไปก็จะอิ่มตัวและเกิดฮาร์มอนิก
    หลอดไฟทำตัวเหมือนตัวต้านทานเชิงเส้นในช่วงเวลาสั้น ๆ และเป็นตัวต้านทานไม่เชิงเส้นในช่วงเวลายาว
    เมื่อไส้หลอดร้อนขึ้น ความต้านทานจะเพิ่มขึ้น จึงใช้สิ่งนี้ทำ ออสซิลเลเตอร์แบบ self-stabilizing ได้
    ถ้าใช้หลอดไฟเป็นตัวต้านทานปรับเกนของแอมป์ ก็จะได้คลื่นไซน์ที่เกือบสมบูรณ์แบบ

  • ออสซิลเลเตอร์ก็คือการเอา เกนไปคร่อมรอบ ๆ เฟสดีเลย์(>90 องศา) เท่านั้นเอง
    ปัญหาคือจะทำให้มัน คาดเดาได้และเสถียร แค่ไหน
    หัวใจสำคัญคือทำให้มันไวต่อปัจจัยภายนอกน้อยลง เช่น อุณหภูมิ แรงดันไฟ และเวลา ซึ่งถ้าจะศึกษาเรื่องนี้ แนวคิดอย่าง Allan Variance ก็ช่วยได้

    • เหมือนมีม “วาดส่วนที่เหลือของนกฮูกสิ” การสร้างออสซิลเลเตอร์ไม่ได้ง่ายอย่างที่พูด
      แม้หลังการประดิษฐ์หลอดสุญญากาศแล้ว ก็ยังต้องใช้เวลาอีกนานกว่าจะสร้างออสซิลเลเตอร์ที่เสถียรได้
      สุดท้ายก็มีบริษัทที่ทำสำเร็จ และนั่นก็คือ Hewlett-Packard
  • เคยอ่านมาว่าการประดิษฐ์ออสซิลเลเตอร์จริง ๆ แล้วเป็น อุบัติเหตุ
    มีคนกำลังสร้างแอมป์อยู่แล้วต่ออินพุตกับเอาต์พุตผิด จนเกิดเสียง “ปี๊บ” ขึ้นมา และนั่นก็เป็นจุดเริ่มต้นของออสซิลเลเตอร์
    ตอนนั้นการสร้างความถี่สูงยังต้องใช้เครื่องกำเนิดไฟฟ้า AC ซึ่งไปได้สุดราว 15kHz
    จากความผิดพลาดนี้เอง แนวคิดเรื่อง positive feedback จึงถือกำเนิดขึ้น และหลังจากนั้นวงจรออสซิลเลเตอร์แบบคลาสสิกต่าง ๆ ก็ทยอยตามมา

  • มีวงจรอยู่สองแบบที่ยังไม่ได้ถูกพูดถึง
    แบบหนึ่งคือ “Two Transistor Metronome” ซึ่งฉันเคยทำกับพ่อเมื่อตอนอายุ 7–8 ขวบ
    มันคือ relaxation oscillator ที่ทรานซิสเตอร์สองตัวทำงานคล้าย SCR — ลิงก์วงจร
    ออสซิลเลเตอร์ใน Roland TB303 หรือซีรีส์ Korg MS ก็ใช้โครงสร้างคล้ายกัน

    • ที่ฉันนึกถึงคือ Astable Multivibrator น่าจะเป็นวงจรเดียวกัน
      โดยทั่วไปมักเป็นเวอร์ชันที่ใช้ทรานซิสเตอร์ NPN สองตัว — ลิงก์อ้างอิง
  • ฉันเคยลองทำ signal injector เพื่อดีบักกีตาร์เอฟเฟ็กต์
    แต่ Astable Multivibrator สร้างฮาร์มอนิกมากเกินไป จนได้ยินตั้งแต่ที่ภาคอินพุตเลย
    มันให้ความรู้สึกเหมือน ดันสัญญาณแบบ Juggernaut
    นี่เลยกลายเป็นจุดเริ่มต้นที่ดีในการเรียนเรื่องฟิลเตอร์ และสุดท้ายฉันก็สร้างคลื่นไซน์ที่สะอาดได้

  • ที่ออสซิลเลเตอร์ยาก ก็เพราะเราเรียกร้อง ความแม่นยำตามสเปก สูงมาก
    ยกตัวอย่างเช่น ออสซิลเลเตอร์สำหรับนาฬิกาอาจมีแค่ 5 ชิ้นส่วน แต่ต้องคลาดเคลื่อนไม่เกิน 1 วินาทีต่อวัน (100ppm)
    การทำให้ผ่านทุกเงื่อนไข ทั้งพลังงาน การสตาร์ต ความเสถียรต่ออุณหภูมิ ฯลฯ เป็นเรื่องยาก
    ถ้าแค่ต้องการให้มันสั่น ก็ทำ noise generator ก็พอ
    สำหรับมือใหม่ ออสซิลเลเตอร์ที่ง่ายที่สุดคือ 555 timer แม้จะคลาดเคลื่อนราว ±10% แต่ก็พอสำหรับงานส่วนใหญ่
    555 มีโครงสร้างง่าย ๆ คือคอมพาเรเตอร์ 2 ตัว ตัวแบ่งแรงดัน และคาปาซิเตอร์
    แต่เพราะวงจรสมัยใหม่ต้องเร็วและแม่นยำกว่านี้ ถ้าเป็นบทความสำหรับผู้เริ่มต้นก็ควรอธิบายโดยยึด 555 เป็นศูนย์กลาง

  • ถ้าสนใจอิเล็กทรอนิกส์สายดนตรี ขอแนะนำ ช่อง YouTube ของ Moritz Klein

    • แค่เห็นลิงก์ก็รู้เลยว่าต้องเป็น Moritz Klein แน่ ๆ