Làm thế nào để thực hiện một micrô khuếch đại tương tự sạch để chuyển đổi kỹ thuật số?


12

Tôi đã hỏi một vài câu hỏi liên quan đến dự án này trong vài ngày qua, nhưng tôi dường như không thể kết hợp tất cả lại với nhau.

Tôi nối một mic điện tử vào một opamp và đưa ra đầu ra cho vi điều khiển arduino của tôi. ADC trên vi điều khiển chuyển đổi phạm vi từ 0 đến 5 vV thành số 10 bit (0 đến 1023).

Tôi đã thử 3 chip amp khác nhau:

  • LM386 - Tôi đã nhận được phản hồi rằng con chip này không tốt cho mục đích này, vì nó không phải là opamp và nó không hoạt động chính xác như mong đợi.
  • LM58 - công trình
  • UA741 - hoạt động, khuếch đại nhiều hơn LM58

Tôi đã theo dõi sơ đồ này một cách chính xác (ngoại trừ tôi đã làm rối tung các giá trị điện trở để có được mức tăng tốt): Tôi đã sử dụng 50k ohm cho R5 và 10 ohm cho R2. nhập mô tả hình ảnh ở đây

Vấn đề là đầu ra từ hai chip sau không "sạch". AnalogRead () trên Arduino luôn đọc giá trị khác không ngay cả khi tôi không tạo ra tiếng ồn trong mic. Việc đọc phản ứng đúng khi tôi tạo ra tiếng ồn, nhưng giá trị "không" là khác không. Đôi khi, giá trị "không" thậm chí còn thấp thoáng khi đọc hết. Hy vọng rằng có ý nghĩa.

Bạn có thể giúp tôi sắp xếp này?

Cũng như không quan trọng, thông tin bổ sung: Cuối cùng, tôi đang cố gắng tạo ra một cái gì đó như thế này .


Bạn có chắc chắn bạn có C2 tại chỗ? Điện áp DC im lặng sau C2 là gì?
Majenko

Có tôi có C2 tại chỗ. Đó là khoảng 2 volt. Tôi không biết điều này có ý nghĩa gì không: có thể có một số hiện tại bị mắc kẹt (?) Trong vòng lặp giữa pin 2 và 6, đầu ra và đảo ngược đầu vào không?
Shubham

Làm thế nào về điện áp DC im lặng sau C2 với nó bị ngắt khỏi chân đầu vào Arduino?
Majenko

Sự hiện diện của C2 có nghĩa là đầu ra của preamp sẽ dao động trong khoảng 0V - chứ không phải 2.5V mà nó đang hoạt động ở bên trong.
Majenko

Một điều khác - bạn có thể muốn trượt một diode shottky nhỏ vào giữa pre-amp C2 và đầu vào Arduino - loại bỏ các điện áp âm mà bạn thực sự không quan tâm. Một điều nữa tôi đã làm là thêm một tụ điện khác giữa đầu vào analog và mặt đất để làm mịn tín hiệu ra một chút. Làm cho đồng hồ VU ít nhấp nháy hơn.
Majenko

Câu trả lời:


17

Loại bỏ các tụ điện đầu ra. Mạch đó có lẽ có nghĩa là tạo ra tín hiệu quanh 0, vì vậy tụ điện ở đó để chặn phần bù 1/2 Vdd. Tuy nhiên, vi điều khiển muốn xem tín hiệu tập trung vào khoảng 1/2 Vdd, vì vậy hãy loại bỏ tụ điện.

Microcphones cần rất nhiều lợi ích. Electrets có thể nhạy cảm, nhưng bạn vẫn có thể cần mức tăng điện áp 1000. Mức tăng trong mạch của bạn là tỷ lệ R5 so với R2, nhưng điều này chỉ hoạt động trong giới hạn của những gì opamp có thể làm.

Các giá trị bạn đã đề cập ở trên sẽ mang lại cho bạn mức tăng 5000. Đó là nhiều hơn nhiều so với bạn nên cố gắng đạt được từ một giai đoạn opamp duy nhất. Không chỉ điện áp bù sẽ được nhân với mức tăng này, mà opamp sẽ không thể cung cấp mức đó trên toàn dải tần số. Ở băng thông khuếch đại 1 MHz, bạn sẽ chỉ đạt được mức tăng dưới 200 Hz. Ngay cả phần bù đầu vào 1 mV cũng trở thành 5 V sau khi khuếch đại 5000.

R2 cũng là trở kháng mà micro nhìn thấy sau tụ điện đầu vào. Bạn cần điều này lớn hơn một chút so với trở kháng của micrô với bộ kéo và tụ điện đầu vào ở tần số quan tâm thấp nhất. 10 là quá nhỏ cho điều đó. 10 kΩ sẽ là một giá trị tốt hơn.

Hãy thử hai giai đoạn với mức tăng 30 hoặc hơn cho người mới bắt đầu và xem nơi nào đưa bạn đến. Đó là một lợi ích mà nó có thể xử lý trên các tần số hợp lý với khoảng trống đủ để phản hồi hoạt động. Bạn cũng cần ghép điện dung hai giai đoạn để điện áp bù đầu vào không tích lũy qua tất cả các giai đoạn.

Chỉnh sửa: Đã thêm mạch

Tôi đã không có thời gian để vẽ một mạch đêm qua khi tôi viết bài trả lời ở trên. Đây là một mạch nên làm điều đó:

Điều này có mức tăng điện áp khoảng 1000, đủ để có một micro electret hợp lý. Tôi có thể là một chút quá nhiều, nhưng nó dễ dàng để thêm một số suy giảm.

Cấu trúc liên kết khá khác với mạch của bạn. Điều quan trọng nhất cần lưu ý là nó không cố gắng tạo ra toàn bộ lợi ích trong một giai đoạn. Mỗi giai đoạn có mức tăng khoảng 31. Điều đó để lại nhiều khoảng trống đạt được ở tần số âm thanh tối đa 20 kHz cho phản hồi, do đó mức tăng sẽ được dự đoán độc đáo và bằng phẳng trên dải tần số âm thanh do MCP6022 có băng thông khuếch đại điển hình sản phẩm 10 MHz. Yếu tố giới hạn rất có thể sẽ là micro.

Không giống như những gì tôi đã nói trước đây, hai giai đoạn không cần phải được kết hợp điện dung để ngăn chặn điện áp bù tích lũy cùng với mức tăng. Đó là bởi vì trong mạch này, mỗi giai đoạn chỉ có mức tăng DC là 1, do đó phần bù cuối cùng chỉ bằng hai lần bù opamp. Các opamp này chỉ có bù 500 500V, do đó, bù cuối cùng chỉ là 1 mV do các opamp. Sẽ có nhiều hơn do sự không phù hợp của R3 và R4. Trong mọi trường hợp, DC đầu ra sẽ đủ gần tới 1/2 nguồn cung để không ăn vào phạm vi A / D một cách có ý nghĩa.

Độ tăng DC 1 trên mỗi giai đoạn đạt được bằng cách ghép điện dung đường dẫn chia phản hồi với mặt đất. Các tụ điện chặn DC, vì vậy mỗi giai đoạn chỉ là một người theo dõi thống nhất cho DC. Độ lợi AC đầy đủ được nhận ra khi trở kháng của tụ điện (C3 ở giai đoạn đầu tiên) trở nên nhỏ so với điện trở chia thấp hơn (R7 ở giai đoạn đầu tiên). Điều này bắt đầu xảy ra ở khoảng 16 Hz. Một nhược điểm của phương pháp này là hằng số thời gian để giải quyết là C3 lần R7 + R5, không chỉ R7. Mạch này sẽ mất vài giây hoặc lâu hơn để ổn định sau khi được bật.


Khi tôi lấy nắp ra khỏi đầu ra, arduino thấy đầu vào khoảng 3 volt. Tôi xin lỗi, nhưng bạn có thể giải thích ý của bạn bằng điện áp bù không? Để có được 1000 điểm, với R2 là 10 nghìn Ohm, tôi cần 10 triệu ohm cho R5? Bạn có chắc về điều này? Độ lợi là tỷ số giữa R5 và R2 phải không?
Shubham

@Shubham: Mạch của bạn đang cố gắng nhân điện áp bù của opamp với 5000, vì vậy không có gì ngạc nhiên khi đầu ra được gắn vào một đường ray. Không có opamp là hoàn hảo. Điện áp bù đầu vào là điện áp giữa hai đầu vào khi đầu ra ở giữa. Về lý thuyết, hai đầu vào sẽ bằng nhau sau đó. Thông số điện áp bù đầu vào cho bạn biết nó cách xa lý tưởng này bao xa.
Olin Lathrop

@Shubham: Bạn sẽ cần 10 MOhm cho điện trở phản hồi nếu bạn cố gắng có một giai đoạn tạo ra tất cả mức tăng. Như tôi đã nói, đó là một ý tưởng tồi.
Olin Lathrop

Cảm ơn tất cả sự giúp đỡ, học hỏi rất nhiều ở đây. Vì vậy, có hai giai đoạn tăng 30 mỗi lần cho tôi tổng số tiền lãi là 900, phải không? Tôi sẽ thử điều này bằng cách sử dụng LM58 (đó là những gì tôi đã nói dối) và báo cáo lại
Shubham

Cuối cùng nó đã làm việc! Cảm ơn bạn đã cho tôi sơ đồ đó! Nhưng tôi chỉ nhận được phạm vi ADC khoảng 200. Giá trị ADC im lặng sẽ cao hơn một chút so với điểm giữa (512), nhưng không quan trọng tôi tạo ra bao nhiêu tiếng ồn trong mic, giá trị ADC sẽ không vượt quá 200 giá trị im lặng. Có lẽ tôi đã thiết lập mũ và điện trở hạn chế điều này.
Shubham

5

Như bạn nói, giá trị kỹ thuật số sẽ từ 0 đến 1023. Giữa phạm vi này không phải là 0, nó là 512 (tương ứng với điện áp khoảng 2,5). Để im lặng, bạn sẽ thấy một cái gì đó ở giữa phạm vi như thế này. Không nhất thiết phải là 512, nhưng nó phải gần. Điều này được gọi là "bù DC". Tín hiệu được dịch chuyển lên trên và tập trung vào khoảng 2,5 V.

Nếu bạn đang đo 2 V và thấy các giá trị ADC khoảng 400, thì về cơ bản nó hoạt động tốt.

Các sóng âm thanh đi từ áp suất âm sang áp lực dương. Nếu điểm trung tâm là 0 và tín hiệu chỉ có thể được đo trong khoảng từ 0 đến 1023, thì các giá trị áp suất âm (-1023) sẽ bị cắt.

Ngoài ra, nó sẽ luôn dao động một chút do tầng nhiễu của ADC. (Và sẽ luôn có một số tiếng ồn âm thanh trong phòng cho dù bạn có yên tĩnh đến mức nào.)


Ohhh giải thích "DC offset" Tôi tiếp tục thấy trong các câu trả lời khác. Có cách nào để loại bỏ bù DC nhưng đặt nắp ở đâu đó không?
Shubham

@Shubham: Bạn MUỐN bù DC. Quá trình ADC sẽ không hoạt động mà không có một. Nắp C2 là những gì đảm bảo rằng bạn có một cái. Tuy nhiên, trong trường hợp này có lẽ không có nhiều khác biệt, vì đầu ra của U1 đã được bù. Bạn có thể đo giá trị DC ở mỗi bên của C2 không?
endolith

@Shubham: Nếu bạn muốn nói rằng bạn muốn các phép đo kỹ thuật số của bạn tập trung vào khoảng 0 thay vì 512, bạn chỉ cần trừ phần bù trong phần mềm hoặc tốt hơn là triển khai bộ lọc thông cao kỹ thuật số trong phần mềm.
endolith

3

Bạn có thể đăng tờ spec trên micro đó không? Không có lý do gì bạn cần tăng 5000 với mic điện tử trừ khi bạn có một thiết bị trống không có FET bên trong. Nếu đó là trường hợp, preamp cần phải nhìn khác đi nhiều.

Ngoài ra, mạch bạn đã sử dụng không có lợi cho việc sử dụng làm pre-amp cho mic điện tử.

Tôi khuyên bạn nên:

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

R5 / R4 thiết lập mức tăng và có thể được điều chỉnh mà không cần vặn với trở kháng đầu vào của mạch. R3 có thể từ 2k -> 10k ish. 10k sẽ có xu hướng cải thiện hiệu suất méo, nếu bạn điều chỉnh mức này quá thấp, bạn nên suy nghĩ lại các giá trị cho R1 và R2 để khắc phục trở kháng đầu vào.

Một điều cũng rất quan trọng là nguồn cung cấp năng lượng được phân tách đầy đủ vì mọi tiếng ồn sẽ truyền vào micro.

Vì các câu trả lời khác đã đề cập đến điểm "không" của bạn sẽ là ~ 512 khi bạn đọc ADC và sẽ dao động một chút bất kể bạn làm gì.

Nếu mục tiêu của bạn là nhấp nháy đèn để đáp ứng với cấp độ, bạn không nên thực hiện các bài đọc tức thời với arduino vì tôi nghi ngờ bạn sẽ có thể lấy mẫu đủ nhanh để khiến nó phản hồi tốt. Thay vào đó, hãy phát hiện mức trung bình hoặc mức trung bình trong miền tương tự và đặt khoảng thời gian trung bình theo tỷ lệ tương ứng với bất kỳ tỷ lệ lấy mẫu nào của bạn.

EDIT: Thêm về làm điều này với một máy dò đỉnh

Vấn đề bạn sẽ gặp ở đây là arduino có tốc độ lấy mẫu tương đối hạn chế, tôi nghĩ mức tối đa của bạn sẽ là khoảng 10khz, điều đó có nghĩa là bạn chỉ có thể giải quyết tối đa tín hiệu âm thanh 5khz. Đó là với arduino làm rất ít ngoại trừ chạy ADC, nếu bạn cần thực hiện bất kỳ công việc thực tế nào (và bạn làm một số để đạt được mức) thì tốc độ lấy mẫu sẽ thấp hơn.

Hãy nhớ rằng bạn đã lấy các mẫu tín hiệu thô rời rạc , chỉ vì bạn có sóng hình sin đầy đủ cho ADC không có nghĩa là bạn sẽ không nhận được số 0 từ ADC, bạn sẽ nhận được các mẫu tại các điểm khác nhau của sóng . Với âm nhạc thực, tín hiệu thu được sẽ khá phức tạp và bạn sẽ có các mẫu ở khắp mọi nơi.

Bây giờ, nếu tất cả những gì bạn đang cố gắng đo là mức tín hiệu đầu vào và không quan tâm đến việc thực sự có biểu diễn kỹ thuật số của tín hiệu, thì bạn có thể sử dụng bộ phát hiện đỉnh đơn giản sau bộ pre-amp này để làm như vậy.

Điều này làm cho nó biến tín hiệu âm thanh của bạn thành một điện áp đại diện cho mức cao nhất của nó. Khi bạn đo điện áp này với ADC, bạn sẽ có một giá trị ngay lập tức biểu thị mức tín hiệu tại thời điểm đọc. Bạn vẫn sẽ có một chút chao đảo vì âm thanh là một dạng sóng phức tạp, luôn thay đổi, nhưng điều này sẽ dễ xử lý trong phần mềm.

Một bộ phát hiện đỉnh mà không giữ thực sự chỉ là một bộ chỉnh lưu với bộ lọc ở đầu ra. Trong trường hợp này, chúng ta cần xử lý tín hiệu mức thấp và duy trì độ chính xác vì vậy chúng ta cần phải làm nhiều hơn một chút so với những gì sẽ được thực hiện cho mạch chỉnh lưu trung bình của bạn. Họ mạch này được gọi là "chỉnh lưu chính xác".

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

Có khoảng một tỷ cách khác nhau để làm điều này nhưng tôi đi theo mạch này, nó dường như hoạt động tốt nhất khi sử dụng một nguồn cung cấp duy nhất. Điều này sẽ diễn ra sau khi mạch pre-amp đã được thảo luận và đầu vào có thể được ghép nối AC hay không, mặc dù nó chạy từ một nguồn cung cấp, nó sẽ thực sự hoạt động tốt với điện áp đầu vào âm miễn là bạn không vượt quá đỉnh có sẵn- điện áp cực đại từ các ampe kế.

OP1 hoạt động như một diode (gần như) lý tưởng giải quyết vấn đề giảm điện áp thông thường trên diode khi khắc phục. Hầu như bất kỳ diode tín hiệu nhỏ nào cũng sẽ hoạt động cho D1, một cái gì đó với việc giảm điện áp chuyển tiếp thấp hơn sẽ tăng độ chính xác nhưng tôi nghi ngờ nó sẽ quan trọng đối với việc sử dụng của bạn.

C1 và R4 hoạt động như một bộ lọc thông thấp để làm mượt đầu ra, bạn có thể chơi với các giá trị của chúng để phù hợp với hiệu suất với những gì bạn đang cố gắng (và tốc độ lấy mẫu của bạn).

Bạn có thể có thể sử dụng cùng một mô hình op amp mà bạn sử dụng trong pre-amp nhưng Rail-to-Rail và tốc độ quay cao là lý tưởng cho mạch này. Nếu bạn gặp vấn đề về độ ổn định, hãy tăng R1, R2 và R3 lên 100k ohm.


Mic là mic ngưng tụ điện tiêu chuẩn. Tôi sẽ tạo ra R3 10K, Vcc của tôi là 5,9V vì vậy sẽ ổn nếu R1 và R2 cũng 10K? Opamp nào bạn muốn giới thiệu: LM58 hoặc 741? Có cách nào để tôi có thể đưa điểm "không" xuống 0 hoặc gần 0 không? "Thay vào đó, hãy phát hiện mức trung bình hoặc mức trung bình trong miền tương tự và đặt khoảng thời gian trung bình theo tỷ lệ tương ứng với bất kỳ tỷ lệ lấy mẫu nào của bạn." - Bạn có thể cho tôi biết thêm một chút chi tiết về điều này? Nghe có vẻ thú vị và tôi thực sự muốn xem xét nó. Xin lỗi tôi có nhiều câu hỏi ... Tôi là sinh viên EE ở trường đại học vẫn đang học.
Shubham

Tôi đã thử mạch khuyến nghị của bạn (nó sạch hơn nhiều so với những gì tôi đang sử dụng, đầu ra ít ngẫu nhiên hơn). Tôi đã sử dụng 1M Ohm cho R5 và 1k Ohm cho R4, cho mức khuếch đại 1000. Khi tôi thực hiện một số phép đo với DMM, opamp sẽ cho công suất im lặng khoảng 3 volt và C3 giảm xuống còn khoảng 1,5 volt. Ngoài ra, khi tôi loại bỏ R5, nó không tạo ra bất kỳ sự khác biệt nào đối với đầu ra ... bạn có chắc mức tăng là R4 / R5 không?
Shubham

1
R3 đặt điểm thiên vị của FET bên trong micrô, (R1 | | R2) || R3 đặt trở kháng đầu vào AC được nhìn thấy bởi micrô. Đặt điểm "0" thành 0 không thể được giải quyết bằng bất cứ điều gì trong miền tương tự, đó là chức năng của ADC trong arduino có một nguồn cung cấp năng lượng duy nhất. Tất cả những gì bạn phải làm là trừ ~ 512 từ mỗi mẫu nếu bạn muốn âm thanh bằng 0 (đảm bảo bạn sử dụng loại dữ liệu đã ký vì điều này có nghĩa là có thể có giá trị âm)
Đánh dấu

R4 / R5 là mức tăng, tuy nhiên mức tăng 1000 có thể vượt quá giới hạn của opamp ở tần số bạn đã kiểm tra. C2 trong mạch chỉ ở đó để giúp giảm thiểu bất kỳ độ lệch DC nào trong đầu ra khỏi phản hồi và không ảnh hưởng đến mức tăng.
Đánh dấu

Đánh dấu, C1 so với R1 // R2 có tần số giới thiệu bộ lọc thông cao 1,3 kHz. Đó là trên một phần tốt của tần số giọng nói và 6 quãng tám trên giới hạn thấp hơn "HiFi". Điều này có thể ổn nếu anh ta chỉ muốn kích hoạt âm thanh kích hoạt, nhưng không tốt nếu anh ta muốn âm thanh số hóa bình thường.
Olin Lathrop
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.