สารบัญ:

สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิป Direct Digital Synthesis (DDS) 3 ขั้นตอน
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิป Direct Digital Synthesis (DDS) 3 ขั้นตอน

วีดีโอ: สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิป Direct Digital Synthesis (DDS) 3 ขั้นตอน

วีดีโอ: สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิป Direct Digital Synthesis (DDS) 3 ขั้นตอน
วีดีโอ: Avayan Electronics on Stepper Motors 2024, ธันวาคม
Anonim
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)
สเต็ปเปอร์มอเตอร์ที่ควบคุมโดย MIDI พร้อมชิปการสังเคราะห์ทางดิจิตอลโดยตรง (DDS)

เคยมีความคิดแย่ๆ ที่ต้องทำเป็นมินิโปรเจ็กต์ไหม? ฉันกำลังเล่นสเก็ตช์ที่ฉันสร้างขึ้นสำหรับ 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

การเขียนโปรแกรมและการตั้งค่า MIDI
การเขียนโปรแกรมและการตั้งค่า 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: การทดสอบและทดลอง

ได้เวลาเล่นสเต็ปเปอร์มอเตอร์ของคุณแล้ว!

ตามที่ระบุไว้ แนวคิดทั้งหมดที่อยู่เบื้องหลังนี้เป็นการทดลองแบบไม่ต้องผูกมัด ดังนั้นไม่ว่าอย่างไรก็ตาม ทำการทดลองของคุณเอง!

แนะนำ: