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

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