- IC PT2258
- Cách thức hoạt động của IC PT2258
- Sơ đồ
- Thành phần bắt buộc
- Mã Arduino
- Kiểm tra mạch điều khiển âm lượng âm thanh kỹ thuật số
- Cải tiến thêm
Chiết áp là một thiết bị cơ học sử dụng một thiết bị có thể đặt điện trở theo giá trị mong muốn, do đó thay đổi dòng điện đi qua nó. Có nhiều ứng dụng cho chiết áp, nhưng phần lớn chiết áp được sử dụng làm bộ điều khiển âm lượng cho bộ khuếch đại âm thanh.
Một chiết áp không kiểm soát độ lợi của tín hiệu, nhưng nó tạo thành một bộ chia điện áp và đó là lý do tại sao tín hiệu đầu vào bị suy giảm. Vì vậy, trong dự án này, tôi sẽ chỉ cho bạn cách xây dựng Bộ điều khiển âm lượng kỹ thuật số của bạn với IC PT2258 và giao diện nó với Arduino để điều khiển âm lượng của mạch khuếch đại. Bạn cũng có thể kiểm tra các mạch liên quan đến Âm thanh khác nhau tại đây bao gồm máy đo VU, mạch điều chỉnh âm sắc, v.v.
IC PT2258
Như tôi đã đề cập trước đó, PT2258 là một vi mạch được sản xuất để sử dụng như một Bộ điều khiển âm lượng điện tử 6 kênh , vi mạch này sử dụng công nghệ CMOS được thiết kế đặc biệt cho các ứng dụng âm thanh-video đa kênh.
IC này cung cấp Giao diện điều khiển I2C với dải suy giảm từ 0 đến -79dB ở 1dB / bước và đi kèm trong gói DIP hoặc SOP 20 chân.
Một số tính năng cơ bản bao gồm,
- 6 kênh đầu vào và đầu ra (Đối với hệ thống âm thanh gia đình 5.1)
- Địa chỉ I2C có thể lựa chọn (Đối với ứng dụng Daisy-chain)
- Tách kênh cao (Đối với ứng dụng tiếng ồn thấp)
- Tỷ lệ S / N> 100dB
- Điện áp hoạt động là 5 đến 9V
Cách thức hoạt động của IC PT2258
IC này truyền và nhận dữ liệu từ vi điều khiển qua đường SCL và SDA. SDA và SCL tạo nên giao diện bus. Các đường dây này phải được kéo lên cao bằng hai điện trở 4,7K để đảm bảo hoạt động ổn định.
Trước khi chúng ta đi vào hoạt động phần cứng thực tế, đây là mô tả chức năng chi tiết của IC. Nếu bạn không muốn biết tất cả những điều này, bạn có thể bỏ qua phần này vì tất cả phần chức năng được quản lý bởi thư viện Arduino.
Xác nhận dữ liệu
- Dữ liệu trên đường SDA được coi là ổn định khi tín hiệu SCL ở mức CAO.
- Trạng thái CAO và THẤP của đường SDA chỉ thay đổi khi SCL THẤP.
Điều kiện Bắt đầu và Dừng
Điều kiện bắt đầu được kích hoạt khi
- SCL được đặt thành CAO và
- SDA chuyển từ Trạng thái CAO sang THẤP.
Điều kiện dừng được kích hoạt khi
- SCL được đặt thành CAO và
- SDA chuyển từ trạng thái THẤP sang CAO
Ghi chú! Thông tin này rất hữu ích để gỡ lỗi các tín hiệu.
Định dạng dữ liệu
Mỗi byte được truyền đến Dòng SDA bao gồm 8 bit, tạo thành một byte. Mỗi byte phải được theo sau bởi một Bit xác nhận.
Nhìn nhận
Xác nhận đảm bảo hoạt động ổn định và đúng quy trình. Trong Xung đồng hồ cảm nhận, bộ vi điều khiển kéo chân SDA lên CAO tại thời điểm chính xác thiết bị ngoại vi (bộ xử lý âm thanh) kéo xuống (THẤP) đường SDA.
Thiết bị ngoại vi (PT2258) hiện đã được định địa chỉ và nó phải tạo xác nhận sau khi nhận một byte, nếu không, dòng SDA sẽ vẫn ở mức Cao trong Xung đồng hồ thứ chín (thứ 9). Nếu điều này xảy ra, bộ truyền chính sẽ tạo Thông tin DỪNG để hủy quá trình truyền.
Điều đó rõ ràng không cần phải có để chuyển dữ liệu hợp lệ.
Lựa chọn địa chỉ
Địa chỉ I2C của IC này phụ thuộc vào trạng thái của CODE1 (Pin số 17) và CODE2 (Pin số 4).
CODE1 (Mã PIN số 17) |
CODE2 (Mã PIN số 4) |
ĐỊA CHỈ HEX |
0 |
0 |
0X80 |
0 |
1 |
0X84 |
1 |
0 |
0X88 |
1 |
1 |
0X8C |
Logic cao = 1
Logic Thấp = 0
Giao thức giao diện
Giao thức giao diện bao gồm những điều sau:
- Một bit bắt đầu
- Byte địa chỉ chip
- ACK = Bit xác nhận
- Một byte dữ liệu
- Một chút dừng lại
Một chút dọn phòng
Sau khi bật nguồn, IC cần đợi ít nhất 200ms trước khi truyền bit dữ liệu đầu tiên, nếu không, quá trình truyền dữ liệu có thể không thành công.
Sau khi trì hoãn, điều đầu tiên cần làm là xóa sổ đăng ký bằng cách gửi “0XC0” đến dòng I2C, điều này đảm bảo hoạt động bình thường.
Bước trên xóa toàn bộ thanh ghi, bây giờ chúng ta cần đặt một giá trị cho thanh ghi, nếu không, thanh ghi lưu trữ giá trị rác và chúng ta nhận được kết quả có tàn nhang.
Để đảm bảo điều chỉnh âm lượng thích hợp, cần phải gửi bội số 10dB theo sau là mã 1dB đến bộ suy hao theo trình tự, nếu không, vi mạch có thể hoạt động bất thường. Sơ đồ dưới đây làm rõ điều đó hơn.
Cả hai phương pháp trên sẽ hoạt động bình thường.
Để đảm bảo hoạt động tốt, hãy đảm bảo rằng tốc độ truyền dữ liệu I2C không bao giờ vượt quá 100KHz.
Đó là cách bạn có thể truyền một byte tới vi mạch và làm suy giảm tín hiệu đầu vào. Phần trên là tìm hiểu cách hoạt động của IC, nhưng như tôi đã nói trước đó, chúng ta sẽ sử dụng thư viện Arduino để giao tiếp với IC quản lý tất cả mã cứng và chúng ta chỉ cần thực hiện một số lệnh gọi hàm.
Tất cả thông tin trên được lấy từ datasheet, vui lòng tham khảo để biết thêm thông tin.
Sơ đồ
Hình ảnh trên cho thấy sơ đồ thử nghiệm của Mạch điều khiển âm lượng dựa trên PT2258. Nó được lấy từ biểu dữ liệu và được sửa đổi theo nhu cầu.
Để trình diễn, mạch được xây dựng trên một bảng mạch không hàn với sự trợ giúp của sơ đồ được hiển thị ở trên.
Ghi chú! Tất cả các thành phần được đặt càng gần càng tốt để giảm độ tự cảm và điện trở của điện dung ký sinh.
Thành phần bắt buộc
- PT2258 IC - 1
- Bộ điều khiển Arduino Nano - 1
- Bảng mạch chung - 1
- Đầu vít 5mm x 3 - 1
- Nút ấn - 1
- Điện trở 4,7K, 5% - 2
- Điện trở 150K, 5% - 4
- Điện trở 10k, 5% - 2
- Tụ điện 10uF - 6
- Tụ điện 0,1uF - 1
- Jumper Wires - 10
Mã Arduino
Để đơn giản, tôi sẽ sử dụng thư viện PT2258 từ GitHub, được tạo bởi sunrutcon.
Đây là một thư viện được viết rất tốt, đó là lý do tại sao tôi quyết định sử dụng nó, nhưng vì nó rất cũ, nó có một chút lỗi và chúng tôi cần phải sửa nó trước khi có thể sử dụng nó.
Đầu tiên, tải xuống và giải nén thư viện từ kho lưu trữ GitHub.
Bạn sẽ nhận được hai tệp trên sau khi giải nén.
#include #include
Tiếp theo, mở tệp PT2258.cpp bằng Trình soạn thảo văn bản yêu thích của bạn, tôi đang sử dụng Notepad ++.
Bạn có thể thấy rằng “w” của thư viện dây là chữ cái nhỏ, không tương thích với các phiên bản Arduino mới nhất và bạn cần thay thế nó bằng chữ hoa “W”, vậy là xong.
Bạn có thể tìm thấy mã hoàn chỉnh cho Bộ điều khiển âm lượng PT2258 ở cuối phần này. Ở đây các phần quan trọng của chương trình được giải thích.
Chúng tôi bắt đầu mã bằng cách bao gồm tất cả các tệp thư viện bắt buộc. Thư viện Wire được sử dụng để giao tiếp giữa Arduino và PT2258. Thư viện PT2258 chứa tất cả thông tin định thời I2C quan trọng và xác nhận. Các ezButton thư viện được sử dụng để giao tiếp với push-nút.
Thay vì sử dụng các hình ảnh mã bên dưới, hãy sao chép tất cả các phiên bản mã từ tệp mã và đặt chúng được Định dạng như chúng ta đã từng làm trong các dự án khác
#include
Tiếp theo, tạo các đối tượng cho hai nút và chính thư viện PT2258.
PT2258 pt2258; ezButton nút_1 (2); ezButton button_2 (4);
Tiếp theo, xác định mức âm lượng. Đây là mức âm lượng mặc định mà IC này sẽ khởi động.
Khối lượng Int = 40;
Tiếp theo, khởi tạo UART và đặt tần số đồng hồ cho bus I2C.
Serial.begin (9600); Wire.setClock (100000);
Điều rất quan trọng là phải đặt xung nhịp I2C, nếu không, IC sẽ không hoạt động vì tần số xung nhịp tối đa được hỗ trợ bởi IC này là 100KHz.
Tiếp theo, chúng ta thực hiện một chút công việc quản lý với câu lệnh if else để đảm bảo IC đang giao tiếp đúng với bus I2C.
If (! Pt2258.init ()) Serial.printIn (“PT2258 Được Khởi tạo Thành công”); Else Serial.printIn (“Không thể bắt đầu PT2258”);
Tiếp theo, chúng ta đặt độ trễ cho các nút bấm.
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
Cuối cùng, khởi động IC PT2258 bằng cách thiết lập nó với âm lượng kênh và số Pin mặc định.
/ * Kết hợp PT với âm lượng mặc định và Pin * / Pt2258.setChannelVolume (âm lượng, 4); Pt2258.setChannelVolume (tập, 5);
Điều này đánh dấu sự kết thúc của phần Void Setup () .
Trong phần Loop , chúng ta cần gọi hàm lặp từ lớp button; đó là một tiêu chuẩn thư viện.
Nút_1.loop (); // Định mức thư viện Button_2.loop (); // Định mức thư viện
Phần if bên dưới là để giảm âm lượng.
/ * nếu nút 1 được nhấn nếu điều kiện là đúng * / If (button_1.ispressed ()) {Volume ++; // Tăng bộ đếm âm lượng. // Câu lệnh if này đảm bảo khối lượng không vượt quá 79 If (volume> = 79) {Volume = 79; } Serial.print (“volume:“); // in mức volume Serial.printIn (volume); / * đặt âm lượng cho kênh 4 nằm trong PIN 9 của IC PT2558 * / Pt2558.setChannelVolume (âm lượng, 4); / * đặt âm lượng cho kênh 5 Là mã PIN 10 của IC PT2558 * / Pt2558.setChannelVolume (âm lượng, 5); }
Phần if bên dưới là để tăng âm lượng.
// Điều tương tự cũng xảy ra đối với nút 2 If (button_2.isPressed ()) {Volume--; // câu lệnh if này đảm bảo mức âm lượng không xuống dưới 0. If (volume <= 0) Volume = 0; Serial.print (“volume:“); Serial.printIn (tập); Pt2258.setChannelVolume (tập, 4); Pt2558.setChannelVolume (tập, 5); }
Kiểm tra mạch điều khiển âm lượng âm thanh kỹ thuật số
Để kiểm tra mạch, thiết bị sau đã được sử dụng
- Một máy biến áp có một vòi 13-0-13
- 2 loa 4Ω 20W làm tải.
- Nguồn âm thanh (Điện thoại)
Trong một bài viết trước, tôi đã hướng dẫn các bạn cách tạo Bộ khuếch đại âm thanh 2x32 Watt đơn giản với IC TDA2050, tôi cũng sẽ sử dụng nó cho phần trình diễn này.
Tôi đã làm rối loạn chiết áp cơ học và làm chập hai dây dẫn với hai dây cáp nhỏ.
Giờ đây, với sự trợ giúp của hai nút nhấn, âm lượng của bộ khuếch đại có thể được điều khiển.
Cải tiến thêm
Mạch có thể được sửa đổi thêm để cải thiện hiệu suất của nó. Các cải tiến như mạch có thể được thực hiện đối với PCB để loại bỏ thêm tiếng ồn do phần kỹ thuật số của vi mạch tạo ra. Chúng tôi cũng có thể thêm một bộ lọc bổ sung để loại bỏ tiếng ồn tần số cao. Ngoài ra, hãy xem các mạch Khuếch đại âm thanh khác và các dự án liên quan đến Âm thanh khác.
Tôi hy vọng bạn thích bài viết này và học được điều gì đó mới từ nó. Nếu bạn có bất kỳ nghi ngờ nào, bạn có thể hỏi trong phần bình luận bên dưới hoặc có thể sử dụng diễn đàn của chúng tôi để thảo luận chi tiết.