กลับไปหน้ารวมไฟล์
interleaving-oscilloscope-get-a-nice-20khz-wave-with-uno-3debd0.md

ชื่อโปรเจกต์: Interleaving Oscilloscope - สร้างคลื่น 20kHz ที่สวยงามด้วย UNO

ฉันต้องการจัดทำชุดคิทราคาประหยัด - เนื่องจากสถานการณ์ COVID-19 - สำหรับออสซิลโลสโคปสำหรับวิชาฟิสิกส์พื้นฐาน (วงจร LCR) ที่มหาวิทยาลัยรัฐบาลที่ไม่เสียค่าใช้จ่าย เพื่อให้นักศึกษาสามารถทำงานจากที่บ้านได้ ไม่เคยใช้ Arduino มาก่อน แต่ตัดสินใจเลือกทางนี้ ผมได้พบกับโปรเจกต์ดีๆ ของ Veldekiaan. แต่ผมจำเป็นต้องศึกษาเรโซแนนซ์และค่าคงที่เวลา L/R สำหรับตัวเหนี่ยวนำที่จะเสียบเข้ากับ protoboard ขนาดเล็ก: ดังนั้นผมจึงต้องการความเร็วที่สูงกว่าโปรเจกต์ดั้งเดิมของเขา ในขณะที่ยังคงรักษาความแม่นยำที่เหมาะสม จากนั้นผมจึงปรับแก้โค้ดของเขา (โปรเจกต์นี้อิงจากงานของเขาเป็นอย่างมาก) และเพิ่มการสุ่มตัวอย่างแบบ interleaving ที่สเกลที่เร็วที่สุด (100µs/div) ทำให้ได้ความละเอียดของเวลาที่ 3µs ผมยังได้เพิ่มตัวเลือก "Save Channel" ใน sketch ของ "Processing" ของเขา เพื่อให้นักศึกษาสามารถนำข้อมูลไปประมวลผลและปรับแต่งภายนอกได้ สำหรับการเชื่อมต่อที่นำเสนอ "Counter" จะไม่ทำงาน การนำซอฟต์แวร์มาใช้งานที่ผมทำเป็นการแก้ไขเฉพาะหน้าเพื่อให้โปรเจกต์นี้ทำงานได้ ซึ่งอาจไม่สามารถพกพาไปใช้กับอุปกรณ์อื่นได้ และแน่นอนว่ายังไม่ได้ถูกปรับให้เหมาะสมที่สุด นี่เป็นโพสต์แรกของผมที่นี่ และผมไม่มีเวลามากพอที่จะล็อกอินหรือตอบคำถาม: ขออภัยด้วยครับ ผมอาจจะทำได้บ้างเป็นบางครั้ง แต่ผมคิดว่านี่เป็นการต่อยอดที่ดีจากผลงานของ Veldekiaan ซึ่งจะเป็นประโยชน์ต่อหลายๆ คน

หน้าจอจากวงจร RC ที่แสดง

รายละเอียดทางเทคนิคเพิ่มเติม

การแฮกการสุ่มตัวอย่างความเร็วสูง

การสุ่มตัวอย่างของ Arduino Uno มาตรฐานนั้นช้าเกินไปสำหรับคลื่น 20kHz เทคนิค "Interleaving" นี้ผลักดันฮาร์ดแวร์ให้เกินขีดจำกัดที่ระบุไว้

  • หลักการทำงานของ ADC Interleaving: Arduino จะสุ่มตัวอย่างสัญญาณหลายครั้ง แต่ในแต่ละครั้งจะหน่วงเวลาการเริ่มต้นเล็กน้อย (ไม่กี่ microseconds) ด้วยการนำข้อมูลที่ "เลื่อนเล็กน้อย" เหล่านี้มาเชื่อมต่อกัน จะทำให้ได้อัตราการสุ่มตัวอย่างที่มีประสิทธิภาพสูงขึ้นมาก
  • การควบคุมพอร์ตโดยตรง: เพื่อให้ได้ความเร็วระดับนี้ เฟิร์มแวร์จะข้ามฟังก์ชัน analogRead() ที่ช้า และสื่อสารโดยตรงกับ registers ADMUX และ ADCSRA ซึ่งช่วยลดภาระการประมวลผลให้เกือบเป็นศูนย์

การแสดงผลด้วยภาพ

  • การแสดงผลด้วย Processing: ข้อมูลความถี่สูงจะถูกแสดงผลบน PC โดยใช้ Processing ซึ่งให้การแสดงผลคลื่น sine หรือ square wave ขนาด 20kHz ที่ชัดเจน ซึ่งโดยปกติแล้วจะต้องใช้อุปกรณ์ฮาร์ดแวร์พิเศษระดับกลาง

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

title: "Interleaving Oscilloscope - get a nice 20kHz wave with UNO"
description: "Based on a referenced project I implemented interleaved sampling for repetitive waves triggered at same point, achieving 3µs resolution."
author: "claudiolenz"
category: "Lab Stuff"
tags:
  - "oscilloscope"
  - "monitoring"
  - "education"
views: 11822
likes: 3
price: 2450
difficulty: "Intermediate"
components:
  - "1x Arduino UNO"
  - "1x AD9833 - DDS"
tools: []
apps:
  - "1x Processing"
downloadableFiles:
  - "https://projects.arduinocontent.cc/5b4763b5-8dee-4a41-841a-dc5a8d60d052.ino"
documentationLinks: []
passwordHash: "3c2067b0c31a5832d5aa1cc831a7bab0f10529c5cb14e7b4055be5605ba2aa65"
encryptedPayload: "U2FsdGVkX18rOoNGFxcsPJkmW112UtK1i2muwFNnU13jhLQfpABTKGuDPGditWuytT0iQpRwSbY8awXL9grfDgUFmQTjHbzWqFqoiySIbNI="
seoDescription: "Build an Interleaving Oscilloscope with Arduino UNO. Achieve 20kHz wave visualization using interleaved sampling and 3µs resolution."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/interleaving-oscilloscope-get-a-nice-20khz-wave-with-uno-3debd0_cover.jpg"
lang: "th"