Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Tôi đã có một dải LED RGB 12v xung quanh tủ TV của mình trong một thời gian và nó được điều khiển bởi một trình điều khiển LED nhàm chán cho phép tôi chọn một trong số 16 màu được lập trình sẵn!
Tôi nghe rất nhiều loại nhạc giúp tôi có động lực nhưng ánh sáng không phù hợp với tâm trạng. Để khắc phục điều đó, tôi quyết định lấy tín hiệu âm thanh được cấp cho loa của tôi thông qua AUX (giắc cắm 3,5 mm), xử lý và điều khiển dải RGB cho phù hợp.
Các đèn LED phản ứng với âm nhạc dựa trên cường độ của các tần số Bass (Thấp), Treble (Trung) và Cao.
Dải tần số - Màu sắc như sau:
Thấp - Đỏ
Giữa - Xanh lục
Cao - Xanh lam
Dự án này liên quan đến rất nhiều thứ tự làm vì toàn bộ mạch được xây dựng từ đầu. Điều này sẽ khá dễ dàng nếu bạn đang thiết lập nó trên một breadboard, nhưng khá khó khăn để hàn nó vào PCB.
Quân nhu
(x1) Dải LED RGB
(x1) Arduino Uno / Nano (Mega được khuyến nghị)
(x1) TL072 hoặc TL082 (TL081 / TL071 cũng tốt)
(x3) Bóng bán dẫn NPN TIP120 (TIP121, TIP122 hoặc MOSFET kênh N như IRF540, IRF 530 cũng tốt)
(x1) tuyến tính chiết áp 10kOhm
(x3) Điện trở 100kOhm 1 / 4watt
(x1) Tụ điện 10uF
(x1) Tụ gốm 47nF
(x2) Đầu nối âm thanh 3,5 mm - Nữ
(x2) Pin 9V
(x2) Đầu nối pin 9V
Bước 1: Tìm hiểu các loại dải LED RGB
Có hai loại dải LED cơ bản, loại "tương tự" và "kỹ thuật số".
Các dải kiểu tương tự (hình 1) có tất cả các đèn LED được kết nối song song và vì vậy nó hoạt động giống như một đèn LED ba màu cực lớn; bạn có thể đặt toàn bộ dải thành bất kỳ màu nào bạn muốn, nhưng bạn không thể kiểm soát màu của từng đèn LED. Chúng rất dễ sử dụng và khá rẻ.
Các dải kiểu Kỹ thuật số (hình 2) hoạt động theo một cách khác. Chúng có một chip cho mỗi đèn LED, để sử dụng dải, bạn phải gửi dữ liệu được mã hóa kỹ thuật số đến các chip. Tuy nhiên, điều này có nghĩa là bạn có thể điều khiển từng đèn LED riêng lẻ! Vì độ phức tạp của chip nên chúng đắt hơn.
Nếu bạn cảm thấy khó khăn trong việc xác định sự khác biệt giữa các dải loại tương tự và kỹ thuật số,
- Loại Anolog sử dụng 4 chân, 1 chân dương chung và 3 chân âm, tức là một chân cho mỗi màu RGB.
- Loại kỹ thuật số sử dụng 3 chân, dương, dữ liệu và nối đất.
Tôi sẽ sử dụng dải loại Analog, bởi vì
- Có rất ít hoặc không có Tài liệu hướng dẫn nào dạy cách tạo dải kiểu Analog phản ứng âm nhạc. Phần lớn trong số họ tập trung vào loại hình Kỹ thuật số và việc khiến họ phản ứng với âm nhạc sẽ dễ dàng hơn.
- Tôi đã có một số dải kiểu Analog nằm xung quanh.
Bước 2: Khuếch đại tín hiệu âm thanh
Tín hiệu âm thanh được gửi qua giắc cắm âm thanh là
tín hiệu tương tự dao động trong phạm vi + 200mV và -200mV. Bây giờ đây là một vấn đề là chúng tôi muốn đo tín hiệu âm thanh bằng một trong các đầu vào tương tự của Arduino vì đầu vào tương tự của Arduino chỉ có thể đo điện áp từ 0 đến 5V. Nếu chúng tôi cố gắng đo điện áp âm trong tín hiệu âm thanh từ đó, Arduino sẽ chỉ đọc 0V và cuối cùng chúng tôi sẽ cắt phần dưới cùng của tín hiệu.
Để giải quyết vấn đề này, chúng ta phải khuếch đại và bù đắp tín hiệu âm thanh để chúng nằm trong phạm vi 0-5V. Lý tưởng nhất là tín hiệu có biên độ 2,5V dao động xung quanh 2,5V sao cho điện áp cực tiểu của nó là 0V và điện áp cực đại của nó là 5V.
Khuếch đại
Bộ khuếch đại là bước đầu tiên trong mạch, nó tăng biên độ của tín hiệu từ khoảng + hoặc - 200mV đến + hoặc - 2,5V (lý tưởng). Chức năng khác của bộ khuếch đại là bảo vệ nguồn âm thanh (thứ tạo ra tín hiệu âm thanh ngay từ đầu) khỏi phần còn lại của mạch. Tín hiệu khuếch đại đi ra sẽ cung cấp tất cả dòng điện của nó từ bộ khuếch đại, vì vậy bất kỳ tải nào đặt lên nó sau này trong mạch sẽ không bị nguồn âm thanh "cảm nhận" (trong trường hợp của tôi là điện thoại / iPod / máy tính xách tay). Thực hiện việc này bằng cách thiết lập một trong các bộ khuếch đại op-a trong gói TL072 hoặc TL082 (hình 2) trong cấu hình bộ khuếch đại không đảo.
Biểu dữ liệu của TL072 hoặc TL082 nói rằng nó nên được cấp nguồn với +15 và -15V, nhưng vì tín hiệu sẽ không bao giờ được khuếch đại trên + hoặc - 2.5V nên bạn có thể chạy op-amp với thứ gì đó thấp hơn. Tôi đã sử dụng hai pin chín vôn mắc nối tiếp để tạo nguồn điện + hoặc - 9V.
Nối dây + V (chân 8) và –V (chân 4) của bạn với op-amp. Nối dây tín hiệu từ giắc cắm đơn đến đầu vào không đảo (chân 3) và kết nối chân đất của giắc cắm với tham chiếu 0V trên nguồn điện áp của bạn (đối với tôi đây là điểm nối giữa hai pin 9V mắc nối tiếp). Nối một điện trở 100kOhm giữa đầu ra (chân 1) và đầu vào đảo ngược (chân 2) của op-amp. Trong mạch này, tôi đã sử dụng một chiết áp 10kOhm có dây như một biến trở để điều chỉnh độ lợi (số lượng mà bộ khuếch đại khuếch đại) của bộ khuếch đại không đảo của tôi. Nối dây nồi côn tuyến tính 10K này giữa đầu vào đảo ngược và tham chiếu 0V.
Dc bù đắp
Mạch bù DC có hai thành phần chính: một bộ phân áp và một tụ điện. Bộ chia điện áp được làm từ hai điện trở 100k mắc nối tiếp từ nguồn 5V của Arduino xuống đất. Vì các điện trở có cùng điện trở nên hiệu điện thế ở điểm nối giữa chúng bằng 2,5V. Điểm giao nhau 2,5V này được gắn với đầu ra của bộ khuếch đại thông qua tụ điện 10uF. Khi điện áp trên mặt khuếch đại của tụ điện tăng và giảm, nó làm cho điện tích tích lũy trong giây lát và đẩy ra khỏi mặt của tụ điện được gắn vào điểm giao nhau 2,5V. Điều này làm cho điện áp tại điểm nối 2,5V dao động lên và xuống, xoay quanh 2,5V.
Như thể hiện trong sơ đồ, kết nối dây dẫn âm của tụ điện 10uF với đầu ra từ bộ khuếch đại. Kết nối mặt còn lại của nắp với điểm nối giữa hai điện trở 100k mắc nối tiếp giữa 5V và đất. Ngoài ra, thêm một tụ điện 47nF từ 2,5V xuống đất.
Bước 3: Phân hủy tín hiệu thành tổng số hình sin cố định - Lý thuyết
Tín hiệu âm thanh được gửi qua bất kỳ giắc cắm 3,5 mm nào nằm trong
dải tần từ 20 Hz đến 20 kHz. Nó được lấy mẫu ở 44,1 kHz và mỗi mẫu được mã hóa trên 16 bit.
Để giải cấu trúc các tần số nguyên tố cơ bản tạo nên tín hiệu âm thanh, chúng tôi áp dụng Biến đổi Fourier cho tín hiệu, biến đổi này sẽ phân rã tín hiệu thành tổng các hình sin đứng yên. Nói cách khác, phân tích Fourier chuyển đổi một tín hiệu từ miền ban đầu của nó (thường là thời gian hoặc không gian) thành một biểu diễn trong miền tần số và ngược lại. Nhưng tính toán nó trực tiếp từ định nghĩa thường quá chậm để trở nên thực tế.
Hình cho thấy tín hiệu trông như thế nào trong miền thời gian và tần số.
Đây là nơi mà thuật toán Fast Fourier Transform (FFT) khá hữu ích!
Theo định nghĩa, Một FFT nhanh chóng tính toán các phép biến đổi như vậy bằng cách phân tích nhân tử của ma trận DFT thành tích của các thừa số thưa thớt (hầu hết là 0). Kết quả là, nó quản lý để giảm độ phức tạp của việc tính toán DFT từ O (N2), điều này phát sinh nếu người ta chỉ đơn giản áp dụng định nghĩa của DFT, cho O (N log N), trong đó N là kích thước dữ liệu. Sự khác biệt về tốc độ có thể rất lớn, đặc biệt là đối với các tập dữ liệu dài trong đó N có thể lên đến hàng nghìn hoặc hàng triệu. Khi có lỗi làm tròn, nhiều thuật toán FFT chính xác hơn nhiều so với việc đánh giá định nghĩa DFT một cách trực tiếp hoặc gián tiếp.
Nói một cách dễ hiểu, nó chỉ có nghĩa là thuật toán FFT là một cách nhanh hơn để tính Biến đổi Fourier của bất kỳ tín hiệu nào. Điều này thường được sử dụng trên các thiết bị có khả năng tính toán thấp.