สารบัญ:
- ขั้นตอนที่ 1: เขียงหั่นขนม
- ขั้นตอนที่ 2: การเขียนโปรแกรมและการตั้งค่า MIDI
- ขั้นตอนที่ 3: การทดสอบและทดลอง
วีดีโอ: สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิป Direct Digital Synthesis (DDS) 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
เคยมีความคิดแย่ๆ ที่ต้องทำเป็นมินิโปรเจ็กต์ไหม? ฉันกำลังเล่นสเก็ตช์ที่ฉันสร้างขึ้นสำหรับ Arduino Due โดยมุ่งเป้าไปที่การสร้างเพลงด้วยโมดูล AD9833 Direct Digital Synthesis (DDS) … และเมื่อถึงจุดหนึ่งฉันก็คิดว่า "เฮ้ บางทีฉันควรจะติดตั้งสเต็ปเปอร์มอเตอร์/ไดรเวอร์ นี้". และความคิดนั้นก็เป็นสิ่งที่จุดประกายโครงการเล็กๆ ที่อิงจากเขียงหั่นขนมนี้
ในโครงการนี้จะมีโค้ดบางส่วนสำหรับการใช้ MIDI-over-USB เพื่อควบคุม Arduino Due และส่งคลื่นสี่เหลี่ยมระหว่างโมดูล AD9833 และไดรเวอร์สเต็ปเปอร์ นอกจากนี้ยังมีไดอะแกรมและคำแนะนำพื้นฐานสำหรับการเชื่อมต่อสิ่งนี้กับ Arduino Due
เสบียง:
สิ่งที่คุณต้องการสำหรับโครงการนี้:
Arduino Due
หมายเหตุ: รหัสนี้เขียนขึ้นสำหรับ Due แต่ควรใช้งานได้และ/หรือดัดแปลงสำหรับ Zero ด้วย มันใช้ไลบรารี MIDIUSB ของ Arduino ซึ่งต้องใช้พอร์ต USB ดั้งเดิม
เขียงหั่นขนม Solderless + จัมเปอร์
AD9833 โมดูลฝ่าวงล้อม
A4988 Stepper Driver (หรือเทียบเท่า)
NEMA 17 Stepper Motor (หรือคล้ายกัน)
- พาวเวอร์ซัพพลาย 24V (หมายเหตุ ฉันเลือกค่านี้ที่ 24 โวลต์ เพราะมันมากกว่าแรงดันไฟฟ้าของสเต็ปเปอร์มอเตอร์ที่ระบุ การใช้งานของคุณอาจแตกต่างกันหากคุณใช้มอเตอร์ที่ใหญ่กว่า)
ขั้นตอนที่ 1: เขียงหั่นขนม
แนวคิดพื้นฐานเบื้องหลังนี้คือ IC การสังเคราะห์ทางดิจิตอลโดยตรงจะสร้างคลื่นสี่เหลี่ยมเพื่อขับเคลื่อนพิน "ขั้นตอน" ของไดรเวอร์สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปเปอร์นี้จะเคลื่อนมอเตอร์ตามความถี่เสียงที่ระบุ ทิศทางของมอเตอร์ค่อนข้างจะเป็นไปตามอำเภอใจตราบเท่าที่มันก้าวไปที่ความถี่ที่ถูกต้อง
แนวทางที่ฉันชอบทำกับการทำ breadboarding คือการรันพินพาวเวอร์และกราวด์ก่อน จากนั้นจึงเริ่มรันการเชื่อมต่ออื่นๆ ที่ไม่ใช่พลังงานทั้งหมด
พื้น:
- เชื่อมต่อ AGND และ DGND Pins ของโมดูล AD9833 กับ GND Rail บนเขียงหั่นขนม
- เชื่อมต่อ GND Pins สองตัวบน Stepper Driver เข้ากับ GND Rail
- นำสิ่งนี้ไปยัง GND Pins ของ Arduino Due ตัวใดตัวหนึ่ง
3.3V พลังงาน:
- เชื่อมต่อ VDD Pin ของ Stepper Driver กับ V+ Rail. ของ breadboard
- เชื่อมต่อ VCC Pin ของ AD9833 Module กับ V+ Rail. ของ breadboard
- นำไปไว้ที่ 3.3V Pin. ของ Arduino Due
กำลังไฟ 24V:
- เชื่อมต่อพิน VMOT กับแหล่งจ่ายไฟ DC 24V (ขึ้นอยู่กับตัวเลือกของมอเตอร์ คุณอาจต้องการใช้รางจ่ายไฟที่สูงขึ้นหรือต่ำลง)
การเชื่อมต่อระหว่างโมดูลกับโมดูล:
- เชื่อมต่อพิน OUT จากโมดูล AD9833 เข้ากับพิน STEP ของไดรเวอร์มอเตอร์
การเชื่อมต่อไดร์เวอร์สเต็ปเปอร์:
- เชื่อมต่อการเชื่อมต่อ Stepper Motor กับพิน 2B/2A/1A/1B ขั้วไม่สำคัญ ตราบใดที่เฟสของไดรเวอร์ตรงกับขั้นตอนของสเต็ปเปอร์มอเตอร์
- เชื่อมต่อ RESET และ SLEEP Pins เข้าด้วยกัน และนำไปยัง Arduino Due Pin 8
- เชื่อมต่อ DIR Pin กับ 3.3V Rail
AD9833 การเชื่อมต่อโมดูล:
- เชื่อมต่อ SCLK กับขา SCK ของ Arduino Due โปรดทราบว่าพินนี้อยู่บนส่วนหัว ICSP ตัวผู้ 6 พิน ใกล้กับไมโครคอนโทรลเลอร์ ไม่ใช่บนส่วนหัวของตัวเมียภายนอกทั่วไป
- เชื่อมต่อ SDATA Pin กับขา MOSI ของ Due โปรดทราบว่าพินนี้อยู่บนส่วนหัว ICSP ตัวผู้ 6 พิน ใกล้กับไมโครคอนโทรลเลอร์ ไม่ใช่บนส่วนหัวของตัวเมียภายนอกทั่วไป
- เชื่อมต่อ FSYNC กับ Arduino Due Pin 6 (นี่คือพิน Chip Select สำหรับโครงการนี้)
เมื่อประกอบเขียงหั่นขนมเสร็จแล้วก็ถึงเวลาดูรหัส!
ขั้นตอนที่ 2: การเขียนโปรแกรมและการตั้งค่า MIDI
ภาพร่าง.ino ที่แนบมาจะใช้อินพุต USB-MIDI ผ่านพอร์ต Native USB ของ Arduino Due และจะใช้พวกมันเพื่อขับเคลื่อน AD9833 ชิปนี้มี DAC ที่ทำงานที่ 25MHz พร้อมความละเอียดความถี่ 28 บิต (รวมเกินสำหรับสิ่งที่จำเป็นที่นี่) และโค้ดส่วนใหญ่ในที่นี้กำหนดค่าให้ทำงานและส่งออกคลื่นสี่เหลี่ยม
หมายเหตุ: มีพอร์ต USB สองพอร์ต อันหนึ่งใช้สำหรับตั้งโปรแกรมบอร์ด และอีกอันจะใช้สำหรับการสื่อสาร MIDI-over-USB
โปรดทราบว่าสเก็ตช์นี้จะไม่ทำงานตามที่เป็นอยู่ใน Arduino Uno - โปรเจ็กต์นี้มีความต้องการเฉพาะสำหรับ Native USB ใน Arduino Due หรืออุปกรณ์ที่คล้ายกัน
ตัวเลือกการปรับแต่ง:
- มี 2 โหมดซึ่งสามารถตั้งค่าได้ด้วยคำจำกัดความมาโครตัวประมวลผลล่วงหน้า ถ้า "#define STOPNOTES" ยังคงไม่เสียหาย stepper จะหยุดระหว่างโน้ต สิ่งนี้ไม่เป็นที่ต้องการเสมอไป (เช่น การเล่น arpeggios แบบเร็ว) ดังนั้นหากต้องการเปลี่ยนพฤติกรรมนี้ เพียงลบหรือแสดงความคิดเห็นว่าคำสั่ง #define แล้ว stepper จะทำงานอย่างต่อเนื่องเมื่อเล่น
- ฉันใช้คีย์บอร์ด MIDI ขนาด 2 อ็อกเทฟราคาถูกที่มีปุ่มขึ้น/ลงคู่อ็อกเทฟ แต่ในกรณีที่คุณไม่มีตัวเลือกนั้น คุณสามารถเลื่อนการแปลความถี่ด้านล่างออกเทฟด้วยการคูณหรือหารด้วยยกกำลัง 2
การแปล MIDI เป็นความถี่เสร็จสิ้นด้วยบรรทัดนี้ในฟังก์ชัน playNote:int f_out = (int)(27.5*pow(2, ((float)midiNote-33)/12));
- ฉันมักจะใช้พีซีเพื่อเชื่อมต่อผ่าน USB MIDI - คุณสามารถทำได้จากซอฟต์แวร์ Digital Audio Workstation (DAW) ที่คุณชื่นชอบ หากคุณไม่มี การติดตั้งระบบนี้ค่อนข้างง่ายโดยใช้ LMMS ซึ่งเป็นแพลตฟอร์มโอเพ่นซอร์สฟรี เมื่อติดตั้งและใช้งานแล้ว เพียงตั้งค่า Arduino Due เป็นอุปกรณ์เอาต์พุต MIDI และหากคุณใช้แป้นพิมพ์ USB MIDI ให้ตั้งค่านั้นเป็นอินพุต
ขั้นตอนที่ 3: การทดสอบและทดลอง
ได้เวลาเล่นสเต็ปเปอร์มอเตอร์ของคุณแล้ว!
ตามที่ระบุไว้ แนวคิดทั้งหมดที่อยู่เบื้องหลังนี้เป็นการทดลองแบบไม่ต้องผูกมัด ดังนั้นไม่ว่าอย่างไรก็ตาม ทำการทดลองของคุณเอง!
แนะนำ:
วิธีใช้เครื่องกำเนิดสัญญาณความถี่ Arduino DDS AD9850: 7 ขั้นตอน
วิธีใช้เครื่องกำเนิดสัญญาณความถี่ Arduino DDS AD9850: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีสร้างเครื่องกำเนิดสัญญาณความถี่โดยใช้โมดูล AD9850 และ Arduino ดูวิดีโอ! หมายเหตุ: ฉันจัดการเพื่อให้ได้ความถี่สูงถึง +50MHz แต่คุณภาพสัญญาณได้รับ แย่ลงด้วยความถี่ที่สูงขึ้น
Geeetech Board ไปยัง Raspberry Pi ผ่านสาย USB แบบกำหนดเอง Direct Wired: 4 Steps
Geeetech Board ไปยัง Raspberry Pi ผ่านสาย USB แบบกำหนดเอง Direct Wired: Hello! คู่มือนี้จะแสดงวิธีสร้างสายเคเบิล USB แบบกำหนดเองกับ JST XH 4 พิน คุณจึงสามารถต่อ Raspberry Pi หรืออุปกรณ์ USB อื่นๆ เข้ากับบอร์ด Geeetech 2560 rev 3 บนเครื่องพิมพ์ Geeetech เช่น A10 ได้โดยตรง สายนี้เสียบเข้ากับ Parallel ที่สะดวก
Arduino TDCS Super Simples Transcranial Direct Current Stimulator (tDCS) DIY: 5 ขั้นตอน
Arduino TDCS Super Simples Transcranial Direct Current Stimulator (tDCS) DIY: Para fazer este tDCS ของ Arduino, ตัวต้านทาน, ตัวเก็บประจุและอัลกัน cabosส่วนประกอบ Arduino Pino D13 กับ PWM (pode ser alterado) Pino A0 como entrada analógica (สำหรับข้อเสนอแนะของ corrente) Pino GND apenas สำหรับ GND.Resist
RTL-SDR Direct Sampling Mod: 3 ขั้นตอน
RTL-SDR Direct Sampling Mod: ดองเกิลจำนวนมากไม่สามารถใช้ความถี่ที่ต่ำกว่า 30 เมกะเฮิร์ตซ์ อย่างไรก็ตาม เป็นไปได้ที่จะปรับเปลี่ยนอุปกรณ์บางอย่างโดยใช้วิธีการเรียกการสุ่มตัวอย่างโดยตรง ในการสุ่มตัวอย่างโดยตรง เราใช้สัญญาณโดยตรงกับ 'สมอง' ของดองเกิล โดยจะเลี่ยงผ่านเ
Vivado HLS Video IP Block Synthesis: 12 ขั้นตอน
Vivado HLS Video IP Block Synthesis: คุณเคยต้องการประมวลผลวิดีโอแบบเรียลไทม์โดยไม่ต้องเพิ่มเวลาแฝงหรือในระบบฝังตัวหรือไม่? บางครั้งใช้ FPGA (Field Programmable Gate Arrays) เพื่อทำเช่นนี้ อย่างไรก็ตาม การเขียนอัลกอริธึมการประมวลผลวิดีโอในข้อกำหนดฮาร์ดแวร์