Chuyển đổi tín hiệu PWM thành tín hiệu tương tự


9

Tôi đang cố gắng nghĩ ra cách tốt nhất để chuyển đổi tín hiệu PWM thành tín hiệu tương tự. Tôi có thể sử dụng bộ lọc RC, nhưng điều đó đòi hỏi tần số PWM rất cao để tạo ra sự tái tạo tín hiệu trung thực. Trong trường hợp của tôi, tôi đang xử lý tần số âm thanh cho tín hiệu tương tự - lên đến 20 kHz. Vì vậy, những lựa chọn khác là gì?


2
Làm thế nào bạn có được tín hiệu PWM đại diện lên đến 20kHz mà không có tần số PWM rất cao ở nơi đầu tiên?
Martin

3
@Thomas, Tốt, vì vậy bạn cần một bộ lọc thông thấp hoạt động với một cuộn khá dốc.
Martin

1
@Thomas - Bạn đã thực sự nhìn vào tần số âm thanh của bạn? 20 kHz là về giới hạn lý thuyết của tín hiệu âm thanh, có lẽ không phải là tiêu chuẩn bạn cần đáp ứng. Giọng nói, ví dụ, có thể được thể hiện tốt hoàn toàn dưới 3 kHz.
Kevin Vermeer

1
@reemrevnivek Tùy thuộc vào ứng dụng của bạn, <3khz có thể hoàn toàn không được chấp nhận. Bạn có thể nhận được ý chính của một giọng nói trong phạm vi này, nhưng để nói rằng nó có thể được mã hóa thực sự trong phạm vi này là không chính xác.
Joe Mac

1
@JoeMac Một cuộc gọi điện thoại tiêu chuẩn được mã hóa với âm thanh 8 bit với tốc độ mẫu là 8 KHz. Nhưng bộ lọc chống khử thông thường được đặt cho mức cắt 3 KHz (và bộ lọc thông cao sẽ cắt mọi thứ bên dưới khoảng 300 Hz). Vì vậy, đối với nhiều ứng dụng lời nói, 3 KHz là tốt. Cao hơn âm thanh tốt hơn, tuy nhiên, nhưng không thêm vào sự dễ hiểu.

Câu trả lời:


11

Câu trả lời đơn giản là bạn không thể. Có một số điều đi ngược lại với bạn:

  1. sẽ là để có chất lượng âm thanh tốt, bạn cần phải rất chính xác trong việc tạo ra PWM. Điều này khá khó khăn, vì tần số xung nhịp chính của bạn (tần số mà logic được sử dụng để tạo ra PWM từ) sẽ phải ở khoảng 100 MHz chỉ để có được mức tương đương với một bộ xử lý 11 bit. Có nhiều cách để tạo ra PWM tốt mà không cần điều đó, nhưng sau đó bạn sẽ bắt đầu với tín hiệu tương tự và do đó sẽ không gặp phải vấn đề này.

  2. như đã lưu ý, bạn sẽ cần một bộ lọc siêu dốc của bộ lọc. Chỉ để phù hợp với bộ tương đương DAC 11 bit của bạn, bạn cần khoảng 60 dB / quãng tám - điều này không hợp lý ngay cả đối với người chuyên nghiệp. Có rất nhiều khó khăn khi thực hiện loại bộ lọc này, đó là lý do tại sao mọi người đã đến Delta-Sigma DAC cho âm thanh của họ, đòi hỏi khoảng 6 db / quãng tám.

  3. Nếu bộ lọc của bạn không phải là 60 db / quãng tám thì bạn sẽ cần tần số PWM là siêu cao. Nếu bạn có 60 db / quãng tám thì bạn có thể có tần số PWM là 40KHz. Ở mức 54 db / quãng tám thì có thể 80 KHz sẽ hoạt động. 48 db / quãng tám = 160 KHz. V.v. Rất nhanh bạn vào dải tần cao - và sau đó tần số xung nhịp chính của bạn sẽ phải ở mức GHz.

Tất cả là không bị mất, tuy nhiên. Bạn có thực sự cần phải lọc ra những thứ tần số cao? Trong nhiều ứng dụng (không phải tất cả), bạn không thể lọc nó hoặc sử dụng bộ lọc RC đơn giản ở mức 1-5 MHz. Vẫn sẽ có những thứ tần số cao nhận được nhưng loa hoặc tai của bạn sẽ lọc tất cả. Nhưng âm thanh vẫn sẽ tệ. AM Radio vào một ngày chất lượng xấu. Nó là như vậy.

Cập nhật: Số của tôi cho số 3, ở trên, có phần sai. Nhưng trước khi tôi hiểu điều đó, hãy để tôi giải thích tôi lấy tất cả các số từ đâu.

  1. Giả sử bạn đang tạo ra PWM bằng logic kỹ thuật số (FPGA, Vi điều khiển, v.v.). Và sau đó hãy nói rằng tốc độ mẫu âm thanh của bạn và do đó tần số PWM của bạn là 48 KHz. Và bạn muốn độ phân giải 8 bit. Điều đó có nghĩa là tần số xung nhịp chính của bạn phải là 12.288 MHz. Tôi đã tính theo cách này: Master_Clk_Freq = Sample_Rate * 2 ^ n_bits. Làm điều đó một lần nữa cho độ phân giải 11 bit là 98.304 MHz.

  2. Độ ồn tốt nhất về mặt lý thuyết của một bộ xử lý lý tưởng là khoảng -6dB / Bit. Vì vậy, một bộ xử lý 24 bit không có nhiễu tốt hơn -144 db. (Lưu ý: Tôi đang chơi hơi lỏng lẻo với các điều khoản ở đây, kết hợp SNR, THD + N và dải động cùng nhau.) Tất nhiên, không có bộ xử lý 24 bit thực sự nào có thể làm được điều này, nhưng chúng ta đang nói về lý thuyết ở đây. Điều này có nghĩa là bộ xử lý 11 bit có mức nhiễu -66 db, do đó, có rất ít điểm trong việc tạo bộ lọc hoạt động tốt hơn mức này. AM Radio có tỷ lệ nhiễu tín hiệu xấp xỉ 60-ish dB để so sánh.

  3. Ok, đây là nơi tôi thực sự nhầm lẫn các con số. Giả sử rằng Tốc độ PWM = 48 KHz và bộ lọc Cutoff = 24 KHz (để làm cho phép toán dễ dàng). Với bộ lọc -60dB / tháng 10, chúng tôi sẽ là -63dB @ 48KHz. Nếu bộ lọc của chúng tôi được thay đổi thành -54dB / tháng 10 thì chúng tôi sẽ là -57dB @ 48 KHz và -62.4dB @ 50.4KHz. Điều này có nghĩa là bằng cách thay đổi bộ lọc của chúng tôi từ -60db / oct -54db / oct, chúng tôi sẽ phải thay đổi tốc độ PWM từ 48 KHz thành 50,4KHz để đạt được hiệu suất chặn bộ lọc tương tự. Không phải là tăng gấp đôi tần số PWM như tôi đã đề cập trước đây. Theo cách tương tự, nếu bộ lọc được thay đổi thành -18dB / tháng 10 (là thiết kế có thể quản lý được) thì tần số PWM sẽ phải là 104 KHz để vẫn có độ suy giảm bộ lọc -63dB ở tần số PWM. Tôi đã tính toán điều này bằng cách tạo một bảng tính nhỏ và chơi với các con số.


1
Câu trả lời này có thể được cải thiện rất nhiều nếu bạn giải thích cách bạn lấy được số của mình ... (DAC 11 bit, 60 db / octave 40 KHz, v.v.)
Kevin Vermeer

@reemrevnivek - Bạn nói đúng. Có lẽ đó là lý do tại sao tôi không nên viết câu trả lời ngay sau khi thức dậy vào buổi sáng ... Tôi phải đi họp ngay bây giờ, nhưng khi tôi làm xong tôi sẽ quay lại các con số và chắc chắn rằng chúng đúng .

Đây chính xác là lý do tại sao tôi nói bộ lọc RC có thể sẽ không phải là một tùy chọn. Tôi đã xem xét một cái gì đó khác, như tích hợp đường nối PWM lên, nắm bắt điện áp và sau đó đặt lại đoạn đường nối. Tôi sẽ xem liệu tôi có thể lấy một ví dụ hoạt động không ...
Thomas O

@reemrevnivek - Tôi đã cập nhật câu trả lời của mình với cách tôi nhận được các số. @ThomasO - Trong khi tích hợp PWM như bạn mô tả có thể làm cho dạng sóng kết quả trông hoàn toàn sạch sẽ, nó vẫn có tần số tăng đột biến ở tần số PWM. Vì vậy, bạn vẫn cần bộ lọc thông thấp khó chịu tương tự.

3

Bộ lọc thông thấp RC sẽ là giải pháp tự nhiên, nhưng bạn cũng có thể sử dụng vi điều khiển để đo chu kỳ nhiệm vụ và sử dụng giá trị đó để điều khiển một bộ xử lý. Để đo chu kỳ nhiệm vụ, bạn cần một bộ đếm thời gian với khả năng chụp đầu vào. Đồng hồ hẹn giờ của bạn càng cao, phép đo của bạn càng chính xác. Nếu vi điều khiển không có trên chip DAC, bạn có thể sử dụng bộ vi xử lý bên ngoài.


1

Tôi đang tích hợp đường nối PWM lên, bắt điện áp với một mẫu và giữ mạch và sau đó đặt lại đoạn đường nối. Điều này dường như có được một đại diện tương đối trung thực của tín hiệu, nhưng nó vẫn có một số vấn đề, như nhiễu PWM trên các đỉnh, và nó hơi phi tuyến. Nhưng, nó hoạt động khá tốt và cho phép tôi sử dụng tín hiệu PWM 100kHz.

nhập mô tả hình ảnh ở đây

Mô phỏng nó ở đây .


1
Đó là một điều mô phỏng trang web thú vị! Dù sao, khi bạn dọn sạch "Tiếng ồn PWM trên các đỉnh", bạn sẽ thấy rằng bạn có rất nhiều nhiễu lượng tử hóa (còn gọi là răng cưa) trên dạng sóng đầu ra. Tôi nghĩ rằng tiếng ồn mà bạn có bây giờ và bộ lọc 1K / 10nF trên đầu ra đang ẩn (nhưng không loại bỏ) tiếng ồn lượng tử hóa.

1

Một vấn đề chưa được đề cập là việc biết tín hiệu PWM được tạo ra như thế nào, đặc biệt là cạnh đầu, trung tâm hoặc cạnh đuôi xảy ra ở một tốc độ đồng nhất và liệu tín hiệu PWM có đại diện cho các mẫu có khoảng cách đều nhau hay không, liệu tín hiệu PWM có đại diện cho các mẫu được lấy tại các khoảng đồng nhất hoặc cho dù chúng đại diện cho giá trị của tín hiệu đầu vào tại thời điểm cạnh tăng, cạnh giảm hoặc cả hai. Biết làm thế nào một PWM được tạo ra, có thể thực hiện tốt công việc khôi phục tín hiệu gốc (cũng như có thể được phục hồi từ tín hiệu được lấy mẫu ở tốc độ PWM). Cố gắng tái tạo tín hiệu được lấy mẫu thông qua một số phương tiện khác với những gì được mong đợi là có thể gây ra méo pha.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.