สร้าง Oscilloscope แบบดิจิตอลผ่าน Arduino: 3 ขั้นตอน

สร้าง Oscilloscope แบบดิจิตอลผ่าน Arduino: 3 ขั้นตอน

สารบัญ:

Anonim

คนที่เห็นบ่อยครั้งที่ทำออสซิลโลสโคปแบบดิจิตอลออนไลน์ DSO จะต้องมีหน่วยแปลงอนาล็อกเป็นดิจิตอลตาม d / วงจรการแปลงสามารถแบ่งออกเป็นสองโหมด: 1. ชิป ADC พิเศษ + ชิปเดี่ยว 2. ใช้ ADC ชิปเดียวภายใน ตัวแปลง สำหรับรุ่นแรกที่ฉันลองใช้สองรุ่น (ดูบล็อกของฉัน: http://blog.Sina.com.CN/ntwhq) วงจรนี้มีความซับซ้อนมากกว่าเล็กน้อยส่วนประกอบก็ยากที่จะทำให้เสร็จสมบูรณ์มันเป็นเรื่องยากสำหรับผู้เริ่มต้น โครงสร้างที่สองนั้นค่อนข้างง่ายและง่ายต่อการทำ แต่มีข้อเสียเปรียบที่สำคัญนั่นคือด้วยแบนด์วิธที่แคบซึ่งเป็นหนึ่งในงานที่พบได้ทั่วไปคือเพื่อนในต่างประเทศของ http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope htm แบนด์วิดท์ของสโคปเพียง 7.7KHz ผู้ใช้ในประเทศและการผลิต AVR ชิปตัวเดียวของ STC แต่แบนด์วิดท์จริงน้อยกว่า 10KHz นอกจากนี้คุณยังสามารถเลือกใช้ Fusion PCB เพื่อสร้างบอร์ด PCB แทนการบัดกรีด้วยตัวเอง

วัสดุ:

ขั้นตอนที่ 1: รหัส

เมื่อเร็ว ๆ นี้เห็นเพื่อนสุทธิกับ Arduino oscilloscope มันอาจจะง่ายกว่าวิธีที่สองข้างต้น แต่ผลลัพธ์ของพวกเขาไม่เหมาะแบนด์วิดท์แคบ ดังนั้นฉันจึงอยากลองและดูและไม่มีวิธีที่ดีในการแก้ปัญหานี้ ผลิตโดยการทดลองและปรับเปลี่ยนรหัสอย่างต่อเนื่องและปรับปรุงอัตราการแปลงตัวอย่าง d / a ให้ได้ผลลัพธ์ที่ดีมาก

พารามิเตอร์หลักของผลิตภัณฑ์สุดท้าย: การตอบสนองความถี่: แหล่งจ่ายไฟ 10Hz-50KHz: หน้าจอ LCD LCD 5V: 128x64 (ST7920) พื้นที่แสดงผลการวัด: 96x64 แสดงข้อมูล: 32x64 แสดงความถี่ของสัญญาณทดสอบ Vpp และซิงค์เพิ่มเติม: ทริกเกอร์ขอบที่เพิ่มขึ้นความเร็วในการสแกน: 0.02ms / div ~ 10ms / div ถือเก้า 1-2-5 ฟังก์ชั่นค้างไว้: ตรึงรูปคลื่นและพารามิเตอร์ที่แสดงประการที่สองการทดสอบขั้นพื้นฐานการใช้ประโยชน์จากโครงการ Arduino ที่ใหญ่ที่สุดคือทรัพยากรที่อุดมสมบูรณ์ ความรู้เกี่ยวกับ SCM ฉันใช้พื้นที่เก็บข้อมูล u8glib LCD ทำให้การโปรแกรมง่ายขึ้นหรือไดรฟ์ LCD จะเสียค่าใช้จ่ายเป็นจำนวนมาก ดาวน์โหลด U8glib: u8glib_arduino_v1.13.zip (989.55 KB, ดาวน์โหลด: 2577) นี่คือวงจรการทดสอบครั้งแรกของฉันสำหรับอาคาร Arduino UNO ของ 12864 LCD LCD โดยใช้การควบคุม ST7920 ตราบใดที่วิธีการป้อนข้อมูลในรหัสต่อไปนี้รวบรวมหลังจากดาวน์โหลดคุณสามารถบรรลุฟังก์ชั่นพื้นฐานของดิจิตอลออสซิลโลสโคป # รวม // คำสั่ง U8GLIB_ST7920_128X64_4X u8g (13, 12, 11); คำชี้แจง LCD SPI Com: SCK = 13, MOSI = 12, CS = 11 int x, y; พิกัดจุดที่เป็นจุดด้อยของบัฟเฟอร์ 128; การตั้งค่าโมฆะอาร์เรย์ที่เก็บข้อมูลแคช () {} ตัวอย่างช่องว่างตัวอย่าง () {สำหรับ (x = 0; x <128; x ++) บัฟเฟอร์ x = analogRead (A0); การสุ่มสัญญาณสำหรับ (x = 0; x <128; x ++) บัฟเฟอร์ x = 63- (บัฟเฟอร์ x >> 4); คำนวณค่า y} แสดง void draw () {สำหรับ (x = 0; x <127; x ++) u8g.drawLine (x, บัฟเฟอร์ x, x, บัฟเฟอร์ x + 1); วาดเส้นสองเส้น u8g.drawLine (64,0,64,63); วาดแกน u8g.drawLine (0,32,128,32); สำหรับ (x = 0; x <128; x + = 8) // วาดสเกลแกน u8g.drawLine (x, 31, x, 33); สำหรับ (x = 0; x <64; x + = 8) u8g.drawLine (63, x, 65, x); u8g.drawFrame (0,0,128,64); วาดเส้นขอบ} void loop () {sample (); ตัวอย่าง u8g.firstPage (); หน้าจอที่ชัดเจนจะวาด (); แสดงในขณะที่ (u8g.nextPage ());

}

ขั้นตอนที่ 2: วงจร

การใช้วงจรทดสอบ Arduino ของฉันวัดโดยตรงโดยใช้ analogRead () ฟังก์ชั่นเพื่อทำการแปลงโฆษณา / การแปลงความเร็ว 111 μsให้ช้าลงดังนั้นแบนด์วิดท์มากคือ 1KHz สิ่งที่สำคัญที่สุดต่อไปคือการปรับปรุงความเร็วของอนาล็อกดิจิตอล การแปลงในขณะที่เพิ่มคุณสมบัติอื่น ๆ

ประการที่สามโปรแกรมล่าสุดนี่คือซอร์สโค้ดล่าสุดที่ใช้โปรดเก็บโลโก้การบูตของฉันไว้ฮ่า ๆ Arduino_oscilloscope.zip (2.72 KB, ดาวน์โหลด: 2710)

ชิพโปรแกรม 1.1V ADC ใช้การอ้างอิงแรงดันไฟฟ้าที่กล่าวถึงข้างต้นหากคุณต้องการใช้แรงดันไฟฟ้าอ้างอิง 5V ภายนอกควรเป็นโปรแกรม ADMUX = 0xe0; ถึง: ADMUX = 0x60; Vpp = (V_max-V_min) * 1.1 / 255; อ่าน: Vpp = (V_max-V_min) * 5/255;

ใช้ Fusion PCB สามารถสร้างแผงวงจรที่ดีขึ้นมาก

สี่เครื่องสร้างการทดลองโดยใช้ Arduino UNO ด้านบนการ์ดจริงเมื่อใช้ Arduino PRO mini เพื่อให้มีปริมาณน้อย

แผนภูมิวงจรรวม:

รายการส่วนประกอบหลัก: ชื่อหมายเลข Arduino PRO mini 1 LCD12864 LCD (ST7920) 1 ตัวเก็บประจุอิเล็กโทรไลต์ (100 μ 25V) 1 โพเทนชิออมิเตอร์ (50k) 1 รูจาน 1 สวิตช์ไฟ 3 ตลับ 1 ตลับแบตเตอรี่ 2 ปุ่มสวิทช์

1 เชื่อม Arduino PIN mini มินิ

2 ส่วนประกอบของแผงวงจรเชื่อม

3 ทำให้แผ่นหลุม LCD

4 ประกอบแผงวงจร

5 ทำให้กรณีที่ฉันใช้การปรับโครงสร้างการชาร์จของกล่องสมบัติที่มีปลอกพลาสติกในสถานที่ที่เหมาะสมในหลุม

6, การชุมนุม

ใส่แผงวงจรลงในกล่องโดยให้แผงสีขาวหนาติดกับด้านในของแผงด้านหน้า

ขั้นตอนที่ 3: อัปโหลดและทดสอบ

เนื่องจาก Arduino PRO mini ไม่ได้เปิดวงจรพอร์ตอนุกรม USB ดังนั้นการถ่ายโอนผ่านพอร์ตอนุกรม USB ดาวน์โหลดก่อนที่จะดาวน์โหลดโปรแกรม

การแก้ไขข้อบกพร่องของออสซิลโลสโคปนั้นง่ายมากเพียงแค่ต้องปรับโพเทนชิออมิเตอร์ 50k กึ่งกลางแนวการสแกนแนวนอน ฉันใช้แหล่งกำเนิดสัญญาณ

โลโก้บูท

การทดสอบ:

คำอธิบายบางอย่าง

1 นี้เป็นหนึ่งใน Oscilloscopes ดิจิตอลที่ง่ายที่สุดคุณสามารถปรับปรุงบนพื้นฐานของเรื่องนี้;

2 คุณอาจสังเกตเห็นว่าฉันไม่ได้ใช้พอร์ต I / O 0-7 ซึ่งเป็นไมโครคอมพิวเตอร์ชิพ AVR แบบ 8 บิตและปากนี่คือสิ่งที่ฉันเตรียมไว้สำหรับการอัพเกรดครั้งต่อไปโดยใช้ชิป ADC พิเศษ สามารถใช้เป็นการป้อนข้อมูลถ้าคุณสนใจออสซิลโลสโคปแล้วฉันจะพิจารณาอัปเกรด

3 งานรีบเร่งและมีข้อบกพร่องและข้อบกพร่องของโปรดแนะนำคุณมีคำถามใด ๆ ที่คุณคลองที่นี่