Để cắt nhiễu trong lấy mẫu sóng sine , mình nghe nói đến từ DITHER. Mình tìm thì toàn tiếng anh đọc hoài cũng chưa hiểu vì trình độ tiếng anh thấp. Đại khái chỉ hiểu sơ sơ là làm tròn các giá trị mẫu gần với điểm biên độ chia trước. Các bác Việt Nam mình choiư audio cũng nhiều mà hầu như ko thấy đề cập đến tư dithering này. Ko biết diễn đàn có cao thủ nào về vấn đèe này chỉ giáo cho mình ít. Định làm cái class d voiứ atmega nhưng chưa biết cách dithering tín hiệu.!
Thông báo
Collapse
No announcement yet.
Vấn đề kĩ thuật xử lí nhiễu trong chuyển đổi tái tạo sóng sin.
Collapse
X
-
Đây là đoạn code của một người nước ngoài, nó code trên trình khác codevision nên phần dither mà mình chưa hiểu được. Mong có bác nào phân tích giúp.
Code:#include <avr/interrupt.h> #include <avr/sleep.h> #include <stdint.h> typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t u8; typedef int32_t s32; typedef int16_t s16; typedef int8_t s8; #define DACP OCR0A #define DACN OCR0B __attribute__((naked)) int main(void) { // CLKPR = 0b10000000; // 16 MHz from the high freq PLL clock // CLKPR = 0b00000000; // Configure ports DDRB = 0b11110111; // OC0AB are L/R PWM output. Drive unused pins low (helps noise). PORTB = 0b00000000; // No activate pull-ups // DDRB = 0b00000011; // ADC ADMUX = 0b00010011; // PB3, AVcc, 10 bit, 2.56VRef ADCSRA = 0b11001101; // CPU/32 sampling rate; Sampling freq: 16 MHz / 32 / 13 = 39 kHz // Power reduction PRR = 0b00001010; // Clock-gate USI and Counter1. MCUCR = 0b00100000; // PWM TCCR0A = 0b10100011; // Fast PWM TCCR0B = 0b00000001; // Increment TCNT0 at CPU; Sampling freq: 16MHz / 256 = 64 kHz (= MAX) //TIMSK = 0b10; // Interrupt on overflow sei(); while(1) { sleep_cpu(); } } #if 0 inline s16 min(s16 a, s16 b) { return (a<b)?a:b; } inline s16 max(s16 a, s16 b) { return (a>b)?a:b; } // 0% duty cycle at idle. Pulses too narrow at low volume. ISR(ADC_vect) { static u8 last_error; u16 adc = ADC; s16 val = (s16)(adc >> 1) - 256; u8 error = adc & 1; u8 dither = error & last_error; last_error = error - dither; val += dither; val = min(max(val, -255),255); DACN = max(val, 0); DACP = max(-val, 0); } #else // 50% duty cycle at idle. Slightly less efficient, but better sounding. ISR(ADC_vect) { //ISR(TIMER0_OVF_vect) { static u8 last_error; u16 adc = ADC; s8 val1 = (u8)(adc >> 2) - 128; u8 val2 = (u8)(adc & 0b10) >> 1; u8 error = adc & 1; u8 dither = error & last_error; last_error = error - dither; u8 pos = 128 + val1 + val2; u8 neg = 128 - val1 - dither; DACP = pos; DACN = neg; if(val1 == 127) DACP = 255; if(val1 == -128) DACN = 255; } #endif
http://rdimitrov.twistedsanity.net/b...0D%20Amplifier
- 1 like
Comment
-
Dither mô tả nôm na là trộn thêm một ít nhiễu (ồn xám) và tín hiệu có sẵn. Mặc dù việc này có thể làm tăng lượng nhiễu tổng lên một chút, nhưng theo một cách nào đó nó làm cho tín hiệu trở nên "thân thiện" với giác quan của người, Thường áp dụng trong việc xử lý ảnh và âm thanh. Ảnh sau khi dithering thì "dễ coi" hơn. Âm thanh sau khi dithering thì "dễ nghe" hơn.
Comment
-
Thôi đùng làm nữa . Cái này bán đầy chợ trời . Giá có hơn trăm ngàn . Mua về mà ngâm cứu .
Tôi không biết cái mô tê gì về lập trình . Nhưng mà cái sampling thaaos hơn 44Khz chỉ để điều khiển mô tơ quay thuận nghịch thì được . Chứ để nghe thì chịu khó sampling cao hơn 500Khz .
Mấy cái ampli classD của " niên doanh " . Dùng sampling tới 300Khz bị khách hàng tảy chay hết rồi .Chuyên làm các mạch điện tử bí hiểm và kỳ quặc .
nguyendinhvan1968@gmail.com
Mobil : 0903 252 168 Chỉ gọi từ 09 giờ đến 17 giờ . Từ 18 giờ ngoài vùng phủ sóng
Comment
-
Nguyên văn bởi TP_Electro Xem bài viếtTrình độ thẩm âm của mình chỉ mức ấy nên ko cần lấy mẫu cao. Hơn nữa tự làm trải nghiệm là chính. Nhạc CD cũng chỉ lấy mẫu cở đó thôi hà.
Cái đầu CD đắt hay rẻ là ở thiết kế mạch lọc analog sau tầng DAC .
Còn ở ampli . Không làm được cái mạch lọc như thế đâu ạ . Nếu làm cái mạch lọc analog với biên độ tín hiệu +- 40 50v với dòng điện vài ampe thì ... Lắp mạch công suất analog cho nó .... vuông .
Hehe !Chuyên làm các mạch điện tử bí hiểm và kỳ quặc .
nguyendinhvan1968@gmail.com
Mobil : 0903 252 168 Chỉ gọi từ 09 giờ đến 17 giờ . Từ 18 giờ ngoài vùng phủ sóng
Comment
-
Về thuật ngữ Dithering thì ae có thể xem tài liệu con ADC LTC2107 (https://www.analog.com/en/products/l...oduct-overview )để hiểu chi tiết hơn, họ có nói qua rằng: đó là việc đưa tín hiệu nhiễu chủ động ở ngõ vào analog, sau đó sẽ hiệu chỉnh lại - correction ở phần số. Điều này giúp phân tích và làm giảm phần phi tuyến của ADC. Nó cũng không có tác dụng toàn dải tần số mà chỉ được một số dải thôi. Tuy nhiên, việc làm tăng hay giảm nhiễu nền thì còn tùy thuộc nhiều vào điều kiện sử dụng.
Ý chủ topic muốn dạng sóng âm thanh là sine chuẩn để âm thanh nghe tốt hơn là đúng rồi, chất lượng âm thanh sẽ trung thực hơn. Nhưng vấn đề là không mấy khi người ta làm mạch lọc suy hao lớn ngay đầu ra. Vì tổn hao nhiều, làm bộ khuếch đại nóng, tốn điện, và cũng không khả thi khi tần số âm thanh thay đổi liên tục.
Vấn đề sóng âm thanh không sine như tín hiệu mã hóa thì mình phải xem lại chuỗi tín hiệu: codec (giải mã DAC) -> khuếch đại đệm -> lọc band -> khuếch đại công suất-> lọc band -> Loa. Đây là chuỗi tín hiệu cơ bản truyền thống.
- Sóng sin đã bị méo ngay từ chỗ DAC, vì vậy có một số con codec đắt tiền là vì nó có độ phân giải cao như 24bit, 32 bit, tốc độ trích mẫu cũng cao hơn, độ méo tuyến tính cũng nhỏ hơn. VÌ vậy cần con codec tốt trước đã.
- Các bộ khuếch đại đệm cũng làm méo tín hiệu, phát sinh các sóng hài bậc thứ. -> cũng phải chọn loại có độ linear - tuyến tính cao,
Do khuếch đại ở tầng trước thường xuất hiện sóng hài thứ cấp, "ảnh" của tín hiệu, nhiễu nền cao hơn nên cần một bộ lọc + suy hoa để loại bỏ dải tần số cao và hạ thấp ngưỡng tín hiệu. Để đảm bảo ngưỡng tín hiệu tốt trước khi đưa vào tầng khuếch đại công suất.
- Tầng khuếch đại công suất có nhiều cấu trúc tùy thuộc vào công suất và chất lượng như Class A,B, AB, D. Cũng giống như tầng khuếch đại đệm, mạch cũng không khuếch đại tuyến tính theo mức và theo tần số như lí tưởng. Nên việc chọn lựa các transistor/ sò khuếch đại cần kĩ lưỡng, việc thiết lập điều kiện làm việc như nhiệt độ, điện áp, dòng, tách dải tần cho từng loại là phương pháp truyền thống thường làm.
- Lọc band ở đây đơn thuần là dạng passive giúp loại bỏ sóng hài bậc cao - ảnh của tín hiệu vào với suy hao vừa phải mà không làm méo/ giảm công suất ngõ ra. Vì mạch khuếch đại muốn đưa công suất ra tối đa cần phối hợp trở kháng với loa. Nếu trở kháng mạch lọc quá lớn sẽ làm tổn hao nhiều.
Xuất phát từ những vấn đề của hệ thống mạch khuếch đại tuyến tính thuần túy, hệ thống hiện đại sẽ thêm phần xử lí số như FPGA để khắc phục điều này. Sẽ có mạch đo/giám sát tín hiệu đầu ra, so sánh với tín hiệu ngõ vào. FPGA sẽ hiệu chỉnh tín hiệu trước khi đưa vào codec DAC, khi đó tín hiệu codec nhận được không phải là dạng sine, nó đã được làm méo và sau tầng khuếch đại nó bị méo lần nữa thành sine chuẩn. Thủ tục và thao tác như trên gọi là kĩ thuật DPD (https://en.wikipedia.org/wiki/Predistortion). Thế nên không cần thiết các bộ lọc công suất lớn, cũng như hiệu suất toàn dải cũng được cải thiện.
Về class D thì nên chọn loại có giám sát đầu ra, nó sẽ giúp hiệu chỉnh lại sai lệch và cải thiện chất lượng của tín hiệu ngõ ra.Đam mê là sức mạnh vượt qua tất cả, mỗi ngày ...
- 4 yêu thích
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
hôm nay, 07:44 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamCám ơn những lời chúc tốt đẹp của em.
Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.
Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....-
Channel: Tâm tình dân kỹ thuật
hôm nay, 02:00 -
-
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.
Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.
Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:18 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.
Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:51 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.
Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:39 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.
Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:28 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi bqvietThiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.20-02-2025, 17:22
Comment