Mục lục:

Máy phân tích phổ âm thanh bảng mạch bánh mì MSP430: 6 bước
Máy phân tích phổ âm thanh bảng mạch bánh mì MSP430: 6 bước

Video: Máy phân tích phổ âm thanh bảng mạch bánh mì MSP430: 6 bước

Video: Máy phân tích phổ âm thanh bảng mạch bánh mì MSP430: 6 bước
Video: [Học PIC] PIC Chương 2: Hoạt động của cổng vào ra GPIO P1: Ý nghĩa các thanh ghi, LED đơn và nút bấm 2024, Tháng mười hai
Anonim
Image
Image
Máy phân tích phổ âm thanh bảng mạch bánh mì MSP430
Máy phân tích phổ âm thanh bảng mạch bánh mì MSP430

Dự án này dựa trên micrô và yêu cầu các thành phần bên ngoài tối thiểu. 2 x ô đồng xu LR44 được sử dụng để tôi có thể có toàn bộ cấu trúc hoạt động trong giới hạn của một breadboard mini 170 điểm buộc. ADC10, đánh thức LPM ngắt TimerA, TimerA PWM như đầu ra, sử dụng nút, số học số nguyên được sử dụng và trình diễn.

Đặc trưng

  • Số nguyên 8 bit FFT 16 mẫu ở phân tách 500Hz
  • hiển thị 8 biên độ 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K phi tuyến tính
  • bản đồ logarit một phần để hiển thị biên độ, bị giới hạn vì độ phân giải đã được giảm đối với FFT 8 bit
  • Bộ khuếch đại micrô một giai đoạn TLC272 với mức tăng gấp 100 lần 100 lần (bạn có thể trải nghiệm w / 2 giai đoạn)
  • menu có thể lựa chọn cửa sổ Hamming tùy chọn
  • menu điều chỉnh độ sáng 4 mức
  • menu điều chỉnh 8 cấp tốc độ lấy mẫu / thời gian phản hồi
  • 2 x ô đồng xu LR44 được cấp nguồn "trên tàu"

Bước 1: Mua các bộ phận

Sau đây là những thứ cần thiết cho dự án này

  • MSP430G2452 (chip bổ sung từ TI Launchpad G2 hoặc bất kỳ MCU dòng 4K 20 chân MSP430G nào)
  • một breadboard mini 170 tie-point hoặc bảng hiệu suất cho cấu tạo pre-amp
  • TLC272 Op-amp kép
  • micro điện tử mini
  • Điện trở 47k (kéo lên), 100k, 2 x 10k, 1k
  • 1 x 0,1uF
  • dây nhảy
  • đầu cắm pin nam hàng đôi được sử dụng cho giá đỡ pin
  • 2 x pin đồng xu LR44

Bước 2: Lập kế hoạch bố cục thành phần

Dự án sẽ được xây dựng trên một breadboard mini 170 điểm buộc. Cách bố trí các thành phần như hình dưới đây. Lưu ý đặc biệt là ma trận LED 8x8 sẽ được đặt trên đầu MCU MSP430. Ngoài các thành phần, còn có các dây jumper kết nối được mô tả bằng các ký tự "+ ------ +".

G V + Gnd (bố cục 1 sân khấu) CHÚNG TÔI ĐANG SỬ DỤNG BỐ TRÍ NÀY + ========================================== ================= + c0 ………… c7 | MIC……. + ----- + + - +…. | 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 |…… |.. | b6 a7 | | c0 và r1 chia sẻ cùng một pin và sẽ không hiển thị | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | * ứng dụng có thể có để có c6 + c0 + r1 | | | V + | | | G b6 b7 T R a7 a6 b5 b4 b3 | | cái này sẽ giải phóng b6 cho đồng hồ xtal 32khz | | | TLC272 | | | | | | | ra - + G | | | + a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | | o || o o o. + - +.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o- [10k] - o……… | |. o- [1k] o o o………._. | | o ---- [10k] ----------- o……. o o | + ================================================= ==== +.1uF 100k Nút ADC 10k + ----------------- +

chúng tôi chỉ đang sử dụng một giai đoạn của TLC272

Bước 3: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp

Bạn có thể bắt đầu đặt các thành phần dựa trên bố cục breadboard. Vì đó là nghệ thuật ASCII nên có thể không rõ ràng lắm. Bạn có thể ghép nối các bức ảnh trong bước này để xác định tất cả các kết nối.

Cần phải cẩn thận để xác định vị trí của các chip IC. Thường có một dấu chấm trên một trong các góc để biểu thị chân số 1 của thiết bị.

Tôi đã sử dụng dây cáp ethernet CAT5 và chúng rất dễ làm việc trên các dự án breadboard. Nếu bạn có cáp CAT5 cũ, bạn có thể cắt nó ra và bạn sẽ thấy có 6 sợi dây xoắn bên trong. Chúng hoàn hảo cho breadboards.

Bước 4: Biên dịch và tải chương trình cơ sở

Mã nguồn thường nằm trên kho lưu trữ github của tôi.

Đối với dự án cụ thể này, tệp nguồn C duy nhất nfft.c được đóng gói trong kho lưu trữ bộ sưu tập breadboard của tôi. Bạn chỉ cần nfft.c

Tôi đang sử dụng mps430-gcc để biên dịch phần sụn nhưng nó sẽ hoạt động tốt với TI CCS. Bạn có thể tránh tất cả những rắc rối khi cài đặt IDE hoặc trình biên dịch bằng cách truy cập vào đám mây TI CCS, là một IDE dựa trên web. Nó thậm chí sẽ tải phần sụn xuống thiết bị mục tiêu của bạn.

Đây là một ví dụ về lệnh biên dịch w / switch

msp430 - gcc -Os - Tất cả -chức năng-phần -fdata-phần -fno-nội tuyến-chức năng nhỏ -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- phần -I / energygia-0101E0016 / cứng / msp430 / lõi / msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Tôi đang sử dụng TI Launchpad G2 làm lập trình viên để lập trình MCU.

Bước 5: Hiểu về mạch

Hiểu mạch
Hiểu mạch
Hiểu mạch
Hiểu mạch

Sơ đồ mạch được trình bày bên dưới

MSP430G2452 hoặc tương tự, cần 4K Flash TLC272 Dual Op-Amp, GBW @ 1,7Mhz, độ lợi @ x100, băng thông lên đến 17Khz

* chúng tôi chỉ đang sử dụng một giai đoạn của TLC272

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1 - + | | | | | Vcc | | | | đầu kéo (47k) Vcc Vcc | --------------- | | | | _ | | | + -1 | ----. Vcc | 8- + | | | | | | | ^.--- | 7 | | 16- + | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _ + / / / | | / | --- (xem cách bố trí breadboard) |.1u | | | | | / _ + / | | / | ------_ + - || --- | - [1k] - + - 2 | --- + | | | | | 15 GPIO | | | | + ---------- 3 | ----- + + - | - | 6 | P1.1-P1.7 | | 8x8 | | | + -4 | Gnd + - | 5 | P2.0-P2.7 | | Đèn LED | | + | | --------------- | | | ma trận | ((O)) |. | | / U0026quot; | _ | | MIC | | 10k | + -20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

Lái xe bằng đèn LED

Ma trận LED có 8 x 8 phần tử. Chúng được điều khiển bởi 15 chân GPIO. Chúng được ghép với w / 8 hàng và lược đồ 8 cột. Vì chỉ có 15 chân sau khi chúng ta sử dụng 1 chân cho đầu vào ADC, nên việc ghép kênh có hàng 1 và cột 0 dùng chung một chân duy nhất. Điều này có nghĩa là đèn LED cụ thể trên hàng 1 và cột 0 không thể sáng. Đây là một thỏa hiệp vì không có đủ chân GPIO để điều khiển tất cả các phần tử LED.

Ghi âm

Âm thanh được thu qua micrô tụ điện trên bo mạch chủ trên Gói hỗ trợ giáo dục. Vì tín hiệu micrô nhỏ, chúng tôi cần khuếch đại nó đến mức mà msp430 ADC10 có thể sử dụng với độ phân giải hợp lý. Tôi đã sử dụng một bộ khuếch đại op-amp hai tầng cho mục đích này.

Bộ khuếch đại op-amp bao gồm hai giai đoạn, mỗi giai đoạn đạt được khoảng 100 lần. Tôi đã sử dụng TLC272 vì nó cũng là một phần rất phổ biến và nó hoạt động với w / 3V. Băng thông khuếch đại vào khoảng 1,7Mhz có nghĩa là đối với mức tăng 100x của chúng tôi, chúng tôi chỉ có thể đảm bảo nó sẽ hoạt động tốt (tức là duy trì mức tăng mà chúng tôi muốn) dưới 17Khz. (1.7Mhz / 100).

Ban đầu tôi định làm cho máy phân tích phổ này đo được đến 16-20Khz, nhưng cuối cùng tôi thấy khoảng 8Khz là đủ tốt để hiển thị âm nhạc. Điều này có thể được thay đổi bằng cách thay thế LM358 w / thứ gì đó của âm thanh được xếp hạng và thay đổi tốc độ lấy mẫu. Chỉ cần tìm băng thông khuếch đại của op-amps bạn chọn.

Lấy mẫu và FFT

Hàm FFT được sử dụng là mã "fix_fft.c" mà nhiều dự án đã áp dụng, nó đã trôi nổi trên internet trong một số năm. Tôi đã thử phiên bản 16 bit và phiên bản 8 bit. Cuối cùng, tôi đã sử dụng phiên bản 8 bit vì mục đích của tôi, tôi không thấy có sự tiến bộ lớn trên phiên bản 16 bit.

Tôi không hiểu rõ về cơ chế FFT ngoại trừ việc chuyển đổi miền thời gian sang miền tần số. Điều đó có nghĩa là tốc độ (thời gian) của các mẫu âm thanh, sau khi cung cấp cho chức năng tính toán FFT, sẽ ảnh hưởng đến tần số của biên độ mà tôi đang nhận được. Vì vậy, bằng cách điều chỉnh tốc độ cho âm thanh mẫu, kết quả là tôi có thể xác định được dải tần.

TimerA 0 CCR0 được sử dụng để giữ thời gian lấy mẫu. Đầu tiên chúng tôi xác định số đếm chúng tôi cần để đạt được tần số băng tần (tương ứng với tốc độ đồng hồ DCO của chúng tôi là 16Mhz). tức là TA0CCR0 được đặt thành (8000 / (BAND_FREQ_KHZ * 2)) - 1; trong đó BAND_FREQ_KHZ đối với tôi là 8. Nó có thể được thay đổi nếu bạn có một op-amp tốt hơn và / hoặc muốn nó khác đi.

Dải tần số và tỷ lệ biên độ

Chương trình cơ sở xử lý 16 băng tần tại một lần quét và thời gian bắt tạo ra khoảng cách 500Hz giữa các ngân hàng này. Ma trận LED có 8 cột và sẽ chỉ hiển thị 8 dải / biên độ. Thay vì hiển thị một trong hai dải tần, danh sách dải tần phi tuyến tính được sử dụng để hiển thị các dải tần động hơn (về mặt âm nhạc). Danh sách bao gồm khoảng trống 500Hz ở dải tần thấp, khoảng trống 1KHz ở dải tần trung và dải tần 1.5Khz ở dải tần cao.

Biên độ của các dải riêng lẻ được thu nhỏ xuống 8 mức, được biểu thị bằng số 'chấm' nằm ngang trên màn hình ma trận LED. Các mức biên độ được thu nhỏ thông qua một bản đồ phi tuyến tính chuyển kết quả FFT thành một trong 8 dấu chấm. Một loại tỷ lệ logarit được sử dụng vì nó thể hiện tốt nhất nhận thức của chúng ta về các mức âm thanh.

Có logic AGC được tích hợp sẵn và máy phân tích phổ sẽ cố gắng thu nhỏ các mức biên độ khi có nhiều mức đỉnh được phát hiện trong các chu kỳ trước đó. Điều này được thực hiện với một bảng so sánh thước trượt.

Bước 6: Vận hành thiết bị

  • Phím bấm ngắn trong chế độ hiển thị sẽ xoay vòng qua màn hình không chấm, một chấm, 2 chấm và 3 chấm.
  • Nhấn và giữ vào chế độ cài đặt, nhấn và tiếp theo sẽ xoay qua menu.
  • Các mục menu chuyển động qua 'Tùy chọn cửa sổ búa', 'Làm mờ', 'Tốc độ lấy mẫu / làm mới'.
  • Trong chế độ thiết lập 'Cửa sổ Hamming', các lần nhấn ngắn chuyển sang chế độ không làm mờ, nhấn 1, cắt 2, nhấn 3, nhấn và giữ cài đặt xác nhận.
  • Trong chế độ thiết lập 'Dimmer', các thao tác nhấn ngắn sẽ xoay vòng qua các mức độ sáng có sẵn từ 0 đến 3, nhấn và giữ để xác nhận cài đặt.
  • Trong chế độ thiết lập 'Tốc độ lấy mẫu / Làm mới', các lần nhấn ngắn sẽ xoay vòng thông qua các tốc độ làm mới có sẵn từ 0 đến 7, 0 có nghĩa là không có độ trễ, nhấn và giữ cài đặt xác nhận.
  • Ghép kênh phân đoạn Led bao gồm độ trễ thời gian để bù đắp chênh lệch độ sáng cho các hàng riêng lẻ.

Đề xuất: