สารบัญ:

MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard: 6 ขั้นตอน
MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard: 6 ขั้นตอน

วีดีโอ: MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard: 6 ขั้นตอน

วีดีโอ: MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard: 6 ขั้นตอน
วีดีโอ: Audio Spectrum Analyzer 2024, พฤศจิกายน
Anonim
Image
Image
MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard
MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard

โปรเจ็กต์นี้ใช้ไมโครโฟนและต้องการส่วนประกอบภายนอกเพียงเล็กน้อย ใช้เซลล์แบบเหรียญ 2 x LR44 เพื่อให้โครงสร้างทั้งหมดทำงานในขอบเขตของเขียงหั่นขนมขนาดเล็ก 170 จุดผูก ADC10, TimerA ขัดจังหวะการปลุก LPM, TimerA PWM เช่นเอาต์พุต, การใช้ปุ่ม, เลขคณิตจำนวนเต็มถูกนำมาใช้และแสดงให้เห็น

คุณสมบัติ

  • ตัวอย่าง FFT จำนวนเต็ม 8 บิต 16 ตัวอย่างที่การแยก 500Hz
  • แสดง 8 แอมพลิจูดของ 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K ไม่เป็นเชิงเส้น
  • แผนที่ลอการิทึมบางส่วนเพื่อแสดงแอมพลิจูด จำกัดเนื่องจากความละเอียดลดลงสำหรับ 8 บิต FFT
  • TLC272 ไมค์หนึ่งสเตจขยายที่ 100x คูณ 100x (คุณสามารถสัมผัสได้ด้วย 2 สเตจ)
  • เมนูเลือกได้ Hamming window
  • เมนูปรับความสว่างได้ 4 ระดับ
  • เมนูปรับ 8 ระดับอัตราการสุ่มตัวอย่าง/เวลาตอบสนอง
  • 2 x LR44 เซลล์แบบเหรียญขับเคลื่อน "บนเครื่อง"

ขั้นตอนที่ 1: รับชิ้นส่วน

ต่อไปนี้คือสิ่งที่จำเป็นสำหรับโครงการนี้

  • MSP430G2452 (ชิปพิเศษจาก TI Launchpad G2 หรือ 4K 20 พิน MSP430G ซีรีส์ MCU)
  • บอร์ดเขียงหั่นขนมขนาดเล็ก 170 tie-point หรือบอร์ด perf สำหรับการก่อสร้างพรีแอมป์
  • TLC272 ออปแอมป์คู่
  • ไมโครโฟนอิเล็กเตรตขนาดเล็ก
  • 47k (ดึงขึ้น), 100k, 2 x 10k, ตัวต้านทาน 1k
  • 1 x 0.1uF
  • สายจัมเปอร์
  • หัวเข็มหมุดตัวผู้สองแถวสำหรับใส่แบตเตอรี่
  • 2 x LR44 แบตเตอรี่เซลล์แบบเหรียญ

ขั้นตอนที่ 2: วางแผนเค้าโครงส่วนประกอบ

โครงการนี้จะถูกสร้างขึ้นบนเขียงหั่นขนมขนาดเล็ก 170 จุด เค้าโครงของส่วนประกอบดังแสดงด้านล่าง หมายเหตุพิเศษคือต้องวางเมทริกซ์ LED 8x8 ไว้บน MSP430 MCU นอกจากส่วนประกอบแล้ว ยังมีสายจัมเปอร์ที่เชื่อมต่อด้วยอักขระ "+------+"

G V+ Gnd (เลย์เอาต์ 1 ฉาก) เรากำลังใช้เลย์เอาต์นี้ +==================================== ==================+ c0…………c7 | ไมค์…… +-----+ +--+…. | r0 o o o o o o o | o||o +-----[100k]---------------+….. | r1 X o o o o o o |. +--------------+--+. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o | o o o o o o o o o o o o o o o…… |.. | b6 a7 | | c0 และ r1 ใช้พินเดียวกันและจะไม่แสดง | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | *แอพพลิเคชั่นที่เป็นไปได้ที่จะมี c6 + c0 + r1 | | |V+ | | |G b6 b7 T R a7 a6 b5 b4 b3| | สิ่งนี้จะเพิ่ม b6 สำหรับนาฬิกา xtal 32khz | | | TLC272 | | | | | | | ออก - + G| | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2| | | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | | o||o oo +--+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o-[10k]--o……… | |. o-[1k]o oo………._. | | o----[10k]-----------o…… o o | +================================================ ====+.1uF 100k 10k ปุ่ม ADC +-----------------+

เราใช้ TLC272 เพียงขั้นตอนเดียว

ขั้นตอนที่ 3: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ

คุณสามารถเริ่มวางส่วนประกอบตามเค้าโครงเขียงหั่นขนม เนื่องจากเป็นศิลปะ ASCII จึงอาจไม่ชัดเจนนัก คุณสามารถจับคู่กับรูปถ่ายในขั้นตอนนี้เพื่อระบุการเชื่อมต่อทั้งหมด

ต้องใช้ความระมัดระวังในการวางตำแหน่งชิป IC โดยปกติจะมีจุดอยู่ที่มุมใดมุมหนึ่งเพื่อระบุพิน 1 ของอุปกรณ์

ฉันเคยใช้สายเคเบิลอีเทอร์เน็ต CAT5 และทำงานในโครงการเขียงหั่นขนมได้ง่ายมาก หากคุณมีสาย CAT5 แบบเก่า คุณสามารถตัดมันออกได้ และคุณจะพบว่ามีสายบิดเกลียวอยู่ 6 เส้นอยู่ภายใน เหมาะสำหรับเขียงหั่นขนม

ขั้นตอนที่ 4: รวบรวมและโหลดเฟิร์มแวร์

ซอร์สโค้ดมักจะอยู่ในที่เก็บ github ของฉัน

สำหรับโปรเจ็กต์นี้โดยเฉพาะ ไฟล์ต้นฉบับ C ไฟล์ nfft.c ถูกรวมไว้ในที่เก็บคอลเลกชั่นเขียงหั่นขนมของฉัน คุณแค่ต้องการ nfft.c

ฉันใช้ mps430-gcc เพื่อคอมไพล์เฟิร์มแวร์ แต่ควรไปได้ดีกับ TI CCS คุณสามารถหลีกเลี่ยงปัญหาทั้งหมดในการติดตั้ง IDE หรือคอมไพเลอร์ได้โดยไปที่ TI CCS cloud ซึ่งเป็น IDE บนเว็บ มันยังจะดาวน์โหลดเฟิร์มแวร์ไปยังอุปกรณ์เป้าหมายของคุณ

นี่คือตัวอย่างคำสั่งคอมไพล์ด้วยสวิตช์

msp430--gcc -Os -Wall -ffunction-sections -fdata-sections -fno-inline-small-functions -Wl, -Map=nfft.map, --cref -Wl, --relax -Wl, --gc- ส่วน -I/energia-0101E0016/ฮาร์ดแวร์/msp430/cores/msp430 -mmcu=msp430g2553 -o nfft.elf nfft.c

ฉันใช้ TI Launchpad G2 เป็นโปรแกรมเมอร์เพื่อตั้งโปรแกรม MCU

ขั้นตอนที่ 5: ทำความเข้าใจวงจร

เข้าใจวงจร
เข้าใจวงจร
เข้าใจวงจร
เข้าใจวงจร

แผนผังวงจรแสดงไว้ด้านล่าง

MSP430G2452 หรือใกล้เคียง ต้องใช้ 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 gain, แบนด์วิดท์สูงสุด 17Khz

* เราใช้ TLC272 เพียงขั้นตอนเดียว

._.

| MSP430G2452 | Vcc | | | +-----------------------2|ADC0 |1--+ | | | |. | Vcc | | | | ดึงขึ้น (47k) Vcc Vcc | --------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (ดูรูปแบบเขียงหั่นขนม) |.1u | | | | | /_+\ | | / |------_ +--||---|-[1k]--+-2|---+ | | | | | 15 GPIO | | | | +----------3|----+ +-|--|6 | P1.1-P1.7| | 8x8 | | | +-4|Gnd +--|5 | P2.0-P2.7| | LED | |+ | | --------------- | | | เมทริกซ์| ((O)) |. | | / | |_| |ไมค์ | |10k | +-20|Gnd \|--------- | |_| | | |_| _|_ _|_ _|_ _|_ /// /// /// ///

LED Driving

เมทริกซ์ LED มีขนาด 8 x 8 องค์ประกอบ ขับเคลื่อนด้วยหมุด GPIO 15 พิน เป็นแบบมัลติเพล็กซ์ที่มี 8 แถวและแบบแผน 8 คอลัมน์ เนื่องจากมีเพียง 15 พินหลังจากที่เราใช้ 1 พินสำหรับอินพุต ADC มัลติเพล็กซ์จึงมีแถว 1 และคอลัมน์ 0 ที่ใช้พินเดียวร่วมกัน ซึ่งหมายความว่าไฟ LED เฉพาะบนแถวที่ 1 และคอลัมน์ 0 ไม่สามารถติดสว่างได้ นี่เป็นการประนีประนอมเนื่องจากมีพิน GPIO ไม่เพียงพอที่จะขับเคลื่อนองค์ประกอบ LED ทั้งหมด

บันทึกเสียง

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

เครื่องขยายเสียง op-amp ประกอบด้วยสองขั้นตอน แต่ละขั้นตอนมีอัตราขยายประมาณ 100x ฉันได้ใช้ TLC272 เนื่องจากเป็นส่วนที่ใช้กันทั่วไปและใช้งานได้กับ 3V แบนด์วิดธ์เกนที่ประมาณ 1.7Mhz หมายความว่าสำหรับเกน 100x ของเรา เราสามารถรับประกันได้ว่ามันจะทำงานได้ดี (เช่น รักษาอัตราขยายที่เราต้องการ) ให้ต่ำกว่า 17Khz (1.7 เมกะเฮิร์ตซ์ / 100)

เดิมทีฉันตั้งใจจะทำให้ตัววิเคราะห์สเปกตรัมนี้วัดได้ถึง 16-20Khz แต่ในที่สุดฉันก็พบว่าประมาณ 8Khz นั้นดีพอที่จะแสดงเพลงได้ สิ่งนี้สามารถเปลี่ยนแปลงได้โดยการแทนที่ LM358 ด้วยบางสิ่งที่มีการให้คะแนนเสียงและเปลี่ยนอัตราการสุ่มตัวอย่าง เพียงมองหาแบนด์วิดธ์เกนของ op-amps ที่คุณเลือก

การสุ่มตัวอย่างและFFT

ฟังก์ชัน FFT ที่ใช้คือรหัส "fix_fft.c" ที่หลายโครงการนำมาใช้ ซึ่งใช้กันอย่างแพร่หลายในอินเทอร์เน็ตมาหลายปีแล้ว ฉันได้ลองรุ่น 16 บิตและรุ่น 8 บิตแล้ว ในที่สุดฉันก็เลือกรุ่น 8 บิตตามจุดประสงค์ของฉัน ฉันไม่เห็นความก้าวหน้าครั้งสำคัญในเวอร์ชัน 16 บิต

ฉันไม่มีความเข้าใจที่ดีเกี่ยวกับกลไก FFT ยกเว้นว่าเป็นโดเมนเวลาเป็นการแปลงโดเมนความถี่ นั่นหมายถึงอัตรา (เวลา) ของตัวอย่างเสียงหลังจากป้อนฟังก์ชันการคำนวณ FFT จะส่งผลต่อความถี่ของแอมพลิจูดที่ฉันได้รับ ดังนั้นโดยการปรับอัตราเป็นเสียงตัวอย่าง ฉันสามารถกำหนดย่านความถี่ตามผลลัพธ์ได้

TimerA 0 CCR0 ใช้เพื่อเก็บเวลาสุ่มตัวอย่าง ก่อนอื่นเรากำหนดจำนวนที่เราต้องใช้เพื่อให้ได้ความถี่แบนด์ (สอดคล้องกับอัตรานาฬิกา DCO ของเราที่ 16 เมกะเฮิร์ตซ์) เช่น TA0CCR0 ตั้งค่าเป็น (8000/(BAND_FREQ_KHZ*2))-1; โดยที่ BAND_FREQ_KHZ คือ 8 สำหรับฉัน สามารถเปลี่ยนได้ถ้าคุณมี op-amp ที่ดีกว่าและ / หรือต้องการให้แตกต่างออกไป

แถบความถี่และมาตราส่วนแอมพลิจูด

เฟิร์มแวร์ประมวลผล 16 แบนด์ในการกวาดครั้งเดียว และระยะเวลาในการจับภาพจะสร้างการแยก 500Hz ระหว่างธนาคารเหล่านี้ เมทริกซ์ LED มี 8 คอลัมน์ และจะแสดงเพียง 8 แบนด์/แอมพลิจูด แทนที่จะแสดงแถบความถี่ทุกๆ สองแถบ รายการแถบความถี่ที่ไม่ใช่เชิงเส้นจะใช้เพื่อแสดงแถบความถี่แบบไดนามิกมากขึ้น (ในแง่ของดนตรี) รายการคือช่องว่าง 500Hz ที่ความถี่ต่ำ ช่องว่าง 1KHz ในแถบกลาง และแถบความถี่ 1.5Khz ในระดับเสียงสูง

แอมพลิจูดของแถบแต่ละแถบถูกลดขนาดลงเหลือ 8 ระดับ ซึ่งแสดงด้วยจำนวน 'จุด' แนวนอนบนจอแสดงผลเมทริกซ์ LED ระดับแอมพลิจูดจะถูกลดขนาดลงผ่านแผนที่ที่ไม่เป็นเชิงเส้นซึ่งแปลผลลัพธ์ FFT ให้เป็นหนึ่งใน 8 จุด มาตราส่วนแบบลอการิทึมถูกนำมาใช้เนื่องจากแสดงถึงการรับรู้ระดับเสียงของเราได้ดีที่สุด

มีตรรกะ AGC ในตัว และเครื่องวิเคราะห์สเปกตรัมจะพยายามลดระดับแอมพลิจูดเมื่อตรวจพบระดับสูงสุดหลายระดับในรอบก่อนหน้า ทำได้โดยใช้ตารางเปรียบเทียบไม้บรรทัดแบบเลื่อน

ขั้นตอนที่ 6: การใช้งานอุปกรณ์

  • การกดแป้นสั้นๆ ในโหมดการแสดงผลจะวนไปเรื่อยๆ โดยไม่มีจุด จุด 1 จุด 2 จุด และ 3 จุด
  • กดค้างเพื่อเข้าสู่โหมดการตั้งค่า กดค้างครั้งต่อมาจะหมุนผ่านเมนู
  • รายการเมนูวนผ่าน 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'
  • ในโหมดการตั้งค่า 'Hamming Window' การกดสั้นๆ จะวนไปเรื่อยๆ โดยไม่มีการแฮม, แฮม 1, แฮม 2, แฮม 3, การกดค้างเพื่อยืนยันการตั้งค่า
  • ในโหมดการตั้งค่า 'Dimmer' การกดสั้นๆ จะหมุนเวียนไปตามระดับความสว่างที่มีตั้งแต่ 0 ถึง 3 กดค้างเพื่อยืนยันการตั้งค่า
  • ในโหมดการตั้งค่า 'อัตราการสุ่มตัวอย่าง / รีเฟรช' การกดสั้นๆ จะหมุนเวียนไปตามอัตราการรีเฟรชที่มีตั้งแต่ 0 ถึง 7, 0 หมายถึงไม่มีการหน่วงเวลา กดค้างเพื่อยืนยันการตั้งค่า
  • มัลติเพล็กซิ่งเซ็กเมนต์นำรวมถึงการหน่วงเวลาเพื่อชดเชยความแตกต่างของความสว่างสำหรับแต่ละแถว

แนะนำ: