สารบัญ:
- ขั้นตอนที่ 1: รับชิ้นส่วน
- ขั้นตอนที่ 2: วางแผนเค้าโครงส่วนประกอบ
- ขั้นตอนที่ 3: การประกอบ
- ขั้นตอนที่ 4: รวบรวมและโหลดเฟิร์มแวร์
- ขั้นตอนที่ 5: ทำความเข้าใจวงจร
- ขั้นตอนที่ 6: การใช้งานอุปกรณ์
วีดีโอ: MSP430 เครื่องวิเคราะห์สเปกตรัมเสียงของ Breadboard: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
โปรเจ็กต์นี้ใช้ไมโครโฟนและต้องการส่วนประกอบภายนอกเพียงเล็กน้อย ใช้เซลล์แบบเหรียญ 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 หมายถึงไม่มีการหน่วงเวลา กดค้างเพื่อยืนยันการตั้งค่า
- มัลติเพล็กซิ่งเซ็กเมนต์นำรวมถึงการหน่วงเวลาเพื่อชดเชยความแตกต่างของความสว่างสำหรับแต่ละแถว
แนะนำ:
Captain America Shield Breadboard LED Creative Switch: 5 ขั้นตอน
Captain America Shield Breadboard LED Creative Switch: โครงการ Creative Switch สำหรับ Art 150
Finite State Machine บน MSP430: 6 ขั้นตอน
Finite State Machine บน MSP430: ฉันจะแสดงวิธีตั้งโปรแกรม MSP430G2 Launchpad ด้วย Finite State Machines (FSM) โดยใช้ YAKINDU Statechart Tools โดยตรงใน Texas Instruments Code Composer Studio บทช่วยสอนนี้มีหกขั้นตอน: การติดตั้ง YAKINDU Statechart Tools เป็น
ตัวนับ MSP430 วินาที: 10 ขั้นตอน
เคาน์เตอร์ MSP430 วินาที: ยินดีต้อนรับ! การสร้างตัวนับวินาที: การใช้ CCStudio 8 และ MSP430F5529 สำหรับโครงการ ภาษา C เพื่อเข้ารหัสไมโครคอนโทรลเลอร์ การใช้โหมดพลังงานต่ำ ตัวจับเวลา และอินเตอร์รัปต์ เอาต์พุตจะแสดงผ่าน 7 Segment
การเขียนโปรแกรม MSP430 DIP โดยใช้ Ez430: 4 ขั้นตอน
การเขียนโปรแกรม MSP430 DIP การใช้ Ez430: เมื่อฉันพบโปรแกรมเมอร์ USB ez430 ของ TI ดูเหมือนว่าจะเป็นหนึ่งในวิธีที่ง่ายกว่าในการเริ่มต้นและใช้งาน MCU ฉันจะผิดได้อย่างไร มันมี ez ในชื่อ! ปรากฎว่ามันง่ายจริงๆ… ส่วนใหญ่ ez430 นั้นยอดเยี่ยมถ้าคุณต้องการ
Bling Out Breadboard ของคุณ (วิธีการเพิ่มไฟแสดงสถานะ LED ให้กับ Solarbotics Breadboard แบบโปร่งใส): 7 ขั้นตอน
Bling Out Your Breadboard (วิธีการเพิ่ม LED Power Indicator ให้กับ Solarbotics Transparent Breadboard): เขียงหั่นขนมแบบโปร่งใสเหล่านี้เหมือนกับเขียงหั่นขนมอิเล็กทรอนิกส์อื่น ๆ แต่มันชัดเจน! ดังนั้นสิ่งที่สามารถทำได้ด้วยเขียงหั่นขนมที่ชัดเจน? ฉันคิดว่าคำตอบที่ชัดเจนคือเพิ่มไฟ LED