สารบัญ:

เครื่องกำเนิดสัญญาณ AD9833: 3 ขั้นตอน
เครื่องกำเนิดสัญญาณ AD9833: 3 ขั้นตอน

วีดีโอ: เครื่องกำเนิดสัญญาณ AD9833: 3 ขั้นตอน

วีดีโอ: เครื่องกำเนิดสัญญาณ AD9833: 3 ขั้นตอน
วีดีโอ: Arduino Dual Function Generator with AD9833 2024, กรกฎาคม
Anonim
เครื่องกำเนิดสัญญาณ AD9833
เครื่องกำเนิดสัญญาณ AD9833
เครื่องกำเนิดสัญญาณ AD9833
เครื่องกำเนิดสัญญาณ AD9833

เครื่องกำเนิดสัญญาณเป็นอุปกรณ์ทดสอบที่มีประโยชน์มาก อันนี้ใช้โมดูล AD9833 และ Arduino Nano นั่นคือทั้งหมดไม่ใช่ PCB คุณสามารถเพิ่มจอแสดงผล OLED ได้ AD9833 สามารถสร้างคลื่นไซน์ สามเหลี่ยม และสี่เหลี่ยมจาก 0.1 Hz ถึง 12.5 MHz - ซอฟต์แวร์ในโครงการนี้จำกัดที่ 1Hz ถึง 100kHz

มีคำแนะนำอื่น ๆ ที่ใช้ Arduino และ AD9833 ที่นี่และที่นี่ วิธีนี้ง่ายกว่าและสามารถใช้เป็นเครื่องกวาดได้ เครื่องกำเนิดไฟฟ้าแบบกวาดช่วยทดสอบการตอบสนองความถี่ของตัวกรอง แอมพลิฟายเออร์ และอื่นๆ ไม่เหมือนกับการออกแบบ Instructables อื่น ๆ สิ่งนี้ไม่รวมแอมพลิฟายเออร์หรือการควบคุมแอมพลิจูด แต่คุณสามารถเพิ่มได้หากต้องการ

ขั้นตอนที่ 1: เครื่องกำเนิดสัญญาณที่ง่ายที่สุด

เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด
เครื่องกำเนิดสัญญาณที่ง่ายที่สุด

สำหรับเครื่องกำเนิดสัญญาณที่ง่ายที่สุด คุณเพียงแค่ประสานโมดูล AD9833 เข้ากับด้านหลังของ Arduino Nano ไม่จำเป็นต้องใช้ PCB

โมดูล AD9833 ที่ฉันเลือกนั้นคล้ายกับโมดูลนี้ ฉันไม่ได้บอกว่าเป็นซัพพลายเออร์ที่ดีที่สุดหรือถูกที่สุด แต่คุณควรซื้อที่ดูเหมือนรูปนั้น (หรือรูปด้านบน)

การเชื่อมต่อระหว่างโมดูลคือ:

  • พื้นดินที่เชื่อมต่อกัน
  • D2 = FSync
  • D3 = Clk
  • D4 = ข้อมูล
  • D6 = Vcc ของ AD9833

AD9833 ใช้พลังงานจาก data pin D6 ของ Arduino - Arduino สามารถจ่ายกระแสไฟได้เพียงพอ ฉันได้เพิ่มตัวเก็บประจุแยกคัปปลิ้ง 100n เพราะฉันคิดว่าฉัน "ควร" แต่ฉันไม่เห็นความแตกต่างใดๆ - มีตัวเก็บประจุแยกคัปปลิ้งบนบอร์ดโมดูล AD9833 แล้ว

หากคุณเป็นแฟนซี คุณอาจกังวลเกี่ยวกับ "อนาล็อกกราวด์" กับ "กราวด์ดิจิทัล" แต่ถ้าคุณเป็นคนแฟนซี คุณจะต้องใช้เงินมากกว่า 4 ปอนด์

เครื่องกำเนิดสัญญาณที่ง่ายที่สุดถูกควบคุมและขับเคลื่อนผ่านสาย USB จากพีซี USB จำลองพอร์ตอนุกรมที่ทำงานที่ 115200bps (8 บิต ไม่มีความเท่าเทียมกัน) คำสั่งคือ:

  • '0'..'9': เลื่อนตัวเลขเป็นอาร์เรย์ความถี่ "นาที"
  • 'S': ตั้งค่าความถี่ AD9833 และสร้างคลื่นไซน์
  • 'T': ตั้งค่าความถี่และสร้างคลื่นสามเหลี่ยม
  • 'Q': ตั้งค่าความถี่และสร้างคลื่นสี่เหลี่ยม
  • 'R': รีเซ็ต AD9833
  • 'M': คัดลอกอาร์เรย์ความถี่ "นาที" ลงในอาร์เรย์ "สูงสุด"
  • 'G': กวาดจาก "min" เป็น "max" ใน 1 วินาที
  • 'H': กวาดจาก "min" เป็น "max" เกิน 5 วินาที
  • 'I': กวาดจาก "min" เป็น "max" เกิน 20 วินาที

โปรแกรม Arduino ประกอบด้วยอาร์เรย์ 6 ตัว "min" และ "max" สองตัว หากคุณส่งตัวเลขจะถูกเปลี่ยนเป็นอาร์เรย์ "min" หากคุณส่ง 'S' อักขระอาร์เรย์ "min" จะถูกแปลงเป็น ความถี่ลองจินต์แล้วส่งไปที่ AD9833 เลยส่งสตริง

002500S

จะตั้งค่าเอาต์พุต AD9833 เป็นคลื่นไซน์ 2500Hz คุณต้องส่งทั้ง 6 หลักเสมอ ความถี่ต่ำสุดคือ 000001 และความถี่สูงสุดคือ 999999

หากคุณส่ง 'M' อาร์เรย์ "min" จะถูกคัดลอกไปยังอาร์เรย์ "max" หากคุณส่ง 'H' AD9833 จะส่งสัญญาณออกความถี่ที่เพิ่มขึ้นเรื่อยๆ เป็นเวลา 5 วินาที เริ่มต้นที่ความถี่ "นาที" และ 5 วินาทีต่อมาที่ความถี่ "สูงสุด" ดังนั้น

020000M000100SH

กวาดจาก 100Hz ถึง 20kHz การเปลี่ยนแปลงความถี่เป็นแบบลอการิทึม ดังนั้นหลังจาก 1 วินาที ความถี่จะเป็น 288Hz หลังจาก 2 วินาที 833Hz จากนั้น 2402, 6931 และ 20000 ความถี่จะเปลี่ยนทุกมิลลิวินาที

การวนซ้ำจะหยุดเมื่อ Arduino ได้รับอักขระอื่น ดังนั้นระวังอย่าส่งคำสั่งตามด้วย carriage-return หรือ line-feed อักขระพิเศษนั้นจะยุติการวนซ้ำ หากคุณกำลังใช้ Serial Monitor จะมีกล่องที่ด้านล่างขวาที่อาจบอกว่า "Both NL & CR" ซึ่ง (ฉันคิดว่า) ส่งอักขระตามคำสั่งของคุณ ตั้งค่าเป็น "ไม่มีการสิ้นสุดบรรทัด"

คุณสามารถดาวน์โหลดโปรแกรม Windows EXE ที่ด้านล่างซึ่งจะส่งคำสั่งที่จำเป็นหรือเขียนเองก็ได้ ไฟล์ Arduino INO ก็อยู่ที่นี่เช่นกัน

ขั้นตอนที่ 2: เพิ่ม OLED

เพิ่ม OLED
เพิ่ม OLED
เพิ่ม OLED
เพิ่ม OLED
เพิ่ม OLED
เพิ่ม OLED

หากคุณเพิ่ม OLED และปุ่มสองปุ่ม เครื่องกำเนิดสัญญาณสามารถทำงานได้โดยลำพังโดยไม่ต้องใช้พีซี

บรรดาผู้ที่ได้อ่านคำสั่งออสซิลโลสโคปของฉันจะรับรู้ถึงความคล้ายคลึงกัน คุณสามารถเพิ่มโมดูล AD9833 ลงในออสซิลโลสโคปของฉันเพื่อสร้าง "ออสซิลโลสโคปและเครื่องกำเนิดสัญญาณในกล่องไม้ขีดไฟ"

จอแสดงผลเป็น OLED ขนาด 1.3 นิ้วที่ทำงานที่ 3.3V ซึ่งควบคุมโดยชิป SH1106 ผ่านบัส I2C

ค้นหา OLED ขนาด 1.3 นิ้วใน eBay ฉันไม่ต้องการแนะนำผู้ขายรายใดรายหนึ่งเนื่องจากลิงก์ล้าสมัยอย่างรวดเร็ว เลือกหนึ่งรายการที่ดูเหมือนรูปภาพนั้น โดยพูดว่า "I2C" หรือ "IIC" และมีหมุดสี่ตัวที่ระบุว่า VDD GND SCL SDA (จอแสดงผลบางจอดูเหมือนจะมีหมุดในลำดับที่แตกต่างกัน โปรดตรวจสอบ ชื่อที่ถูกต้องสำหรับนาฬิกาของ I2C คือ "SCL" แต่บน eBay กระดานอาจมีป้ายกำกับว่า "SCK" เหมือนในรูปภาพ)

คำอธิบายที่สมบูรณ์ของไลบรารี OLED อยู่ใน oscilloscope ของฉันที่สอนได้ในขั้นตอนที่ 8 คุณควรดาวน์โหลดและติดตั้งไลบรารีไดรเวอร์ SimpleSH1106.zip ซึ่งอยู่ในขั้นตอนที่ 8 (ฉันไม่ต้องการอัปโหลดสำเนาอื่นที่นี่และต้องเก็บรักษาไว้สองชุด.)

สามารถดาวน์โหลดไฟล์ INO ได้ด้านล่าง หมายเลขพินที่ใช้สำหรับ OLED ถูกประกาศประมาณบรรทัดที่ 70 หากคุณได้สร้าง "ออสซิลโลสโคปและเครื่องกำเนิดสัญญาณในกล่องไม้ขีดไฟ" และต้องการทดสอบไฟล์ INO นี้ด้วย หมายเลขพินสำรองจะเปิดใช้งานผ่าน #define

ฉันได้แสดงเลย์เอาต์สตริปบอร์ดสำหรับวงจรแล้ว มีแถบแถบสองแถบ - อันหนึ่งสำหรับ Nano และ AD9833 และอีกอันสำหรับจอแสดงผล พวกเขาควรทำแซนวิช แผงจะแสดงจากด้านส่วนประกอบ สายไฟที่ยืดหยุ่นได้ดีเชื่อมเข้ากับบอร์ดทั้งสอง ติดบอร์ดพร้อมกับขาตั้งแบบบัดกรี ในไดอะแกรมของฉัน ทองแดงของสตริปบอร์ดแสดงเป็นสีฟ้า เส้นสีแดงคือเส้นลวดบนแผ่นกระดานหรือสายอ่อนที่เชื่อมแผงเข้าด้วยกัน ฉันไม่ได้แสดงพลังและ "สัญญาณ" นำไปสู่

โมดูล AD9833 ถูกบัดกรีที่ด้านทองแดงของแผ่นแถบ - ด้านตรงข้ามกับนาโน บัดกรีหมุดบนแถบทองแดงจากนั้นใส่ AD9833 เข้ากับพวกมันแล้วบัดกรีให้แน่น

จอแสดงผลจะแสดงความถี่เดียวหรือความถี่ "ต่ำสุด" และ "สูงสุด"

มีปุ่มกดสองปุ่ม: ปุ่ม "แนวนอน" เพื่อเลือกตัวเลขของความถี่ และปุ่ม "แนวตั้ง" เพื่อเปลี่ยนตัวเลขนั้น

ฉันจ่ายไฟให้กับเครื่องกำเนิดสัญญาณจากวงจรที่ฉันกำลังพัฒนา - ฉันมักจะมี 5V ที่เวิร์กสเตชันของฉัน

ขั้นตอนที่ 3: การพัฒนาในอนาคต

การพัฒนาในอนาคต
การพัฒนาในอนาคต

สามารถใช้แบตเตอรี่ได้หรือไม่? ใช่ เพียงเพิ่ม 9V PP3 ที่เชื่อมต่อกับพิน RAW ของนาโน โดยทั่วไปจะใช้ 20mA

สามารถใช้พลังงานจากเซลล์ลิเธียมเพียงเซลล์เดียวได้หรือไม่? ฉันไม่เห็นว่าทำไม คุณควรเชื่อมต่อ OLED Vdd และตัวต้านทานแบบดึงขึ้นกับแบตเตอรี่ 3.7V (ฉันสงสัยว่าเอาต์พุต 3.3V ของ Arduino จะทำงานอย่างถูกต้องหรือไม่)

เครื่องกำเนิดการกวาดมีประโยชน์มากกว่าเมื่อทดสอบการตอบสนองความถี่ของตัวกรอง หากคุณสร้างกราฟแอมพลิจูดและความถี่ได้ การวัดแอมพลิจูดของสัญญาณนั้นยาก คุณต้องแลกกับการเสื่อมสลายของตัวตรวจจับซองจดหมายของคุณเทียบกับการกระเพื่อมสำหรับความถี่ต่ำและเวลาตอบสนองสำหรับความถี่สูง เมื่อสร้างเครื่องตรวจจับแอมพลิจูดของคุณแล้ว คุณสามารถป้อนเอาต์พุตไปยัง ADC ของ Arduino ของ "เครื่องกำเนิดสัญญาณที่ง่ายที่สุด" จากนั้นส่งผลพร้อมกับความถี่ปัจจุบันไปยังพีซี

หน้านี้เป็นจุดเริ่มต้นที่มีประโยชน์หรือค้นหา Google สำหรับ "ตัวตรวจจับซองจดหมาย" หรือ "ตัวตรวจจับจุดยอด" ในวงจรที่แนะนำข้างต้น คุณจะต้องตั้งค่าความถี่ของสัญญาณ รอให้เสถียร ตั้งค่าพิน Arduino A0 เป็นเอาต์พุตดิจิตอลต่ำ รอปล่อย C ตั้งค่า A0 เป็นอินพุต รอ จากนั้นวัดด้วย ADC แจ้งให้เราทราบว่าคุณไปอย่างไร

แนะนำ: