Các trường hợp sử dụng cho ADC bên ngoài


9

Hầu hết các Vi điều khiển (uC) có Bộ chuyển đổi Tương tự sang Kỹ thuật số (ADC) như là một phần của bộ ngoại vi của chúng, điều này là phi thường vì điều này tích hợp hai thành phần vào một gói. Các ADC này thường được đăng ký ánh xạ, điều này cho phép dữ liệu được trích xuất nhanh chóng và dễ dàng.

Mặc dù tích hợp chặt chẽ này, bạn vẫn có thể mua ADC bên ngoài. Tôi có thể thấy một số trường hợp cho những điều này:

  • ADC cần được cách ly khỏi uC.
  • Độ sâu bit của các mẫu ADC cần phải cao hơn ADC của uC.
  • Điện áp để cảm nhận là xa vi điều khiển và các đường tương tự dài không được chấp nhận.
  • Điện áp để cảm nhận là trong một môi trường khắc nghiệt không phù hợp với uC.
  • Các mẫu ADC bên ngoài nhanh hơn nhiều so với ADC của uC.
  • Điện áp tham chiếu cho một số mẫu khác với các điện áp khác, yêu cầu nhiều chân Vref (và do đó nhiều ADC bên ngoài).
  • UC hiện tại không có đủ các kênh ADC và chi phí đặt một uC mới là không đủ.
  • ADC bên ngoài tiêu thụ ít năng lượng hơn ADC của uC (tôi sẽ cần một ví dụ để tin vào điều đó).
  • Các kênh ADC phải được lấy mẫu đồng thời (kịch bản hiếm).
  • Chi phí phần mềm lập trình tại thời điểm sản xuất lớn hơn chi phí của phần ADC đắt hơn (không chắc).
  • PCB có giới hạn về không gian và không có uC nào có thể phù hợp (không chắc).

Đây là tất cả tốt và tốt, nhưng điều gây ấn tượng với tôi là kỳ lạ là các ADC bên ngoài thường khá đắt hơn so với các đối tác uC của chúng, nhưng vẫn cung cấp chức năng tương đương. Chẳng hạn, bạn có thể mua một bộ phận EFM32Z với ADC 1Msps 12 bit (có tham chiếu nội bộ) với giá khoảng 1 đô la , hoặc bạn có thể mua một bộ ADC 200 bit 200 bit tương đương với giá khoảng 3,50 đô la (cùng tốc độ (ish), cùng số công suất, v.v.) và thực hiện cùng một nhiệm vụ (trích xuất dữ liệu ADC).

Câu hỏi sau đó trở thành: có lý do thuyết phục nào mà một kỹ sư sẽ ủng hộ ADC bên ngoài hơn ADC của uC khi cái sau có thể thực hiện cùng chức năng không?


1
Lấy mẫu đồng thời thực sự là một kịch bản khá phổ biến trong một số không gian ứng dụng, như xử lý tín hiệu.
Jason R

Câu trả lời:


12

Nếu ADC bên trong của vi điều khiển của bạn thực hiện công việc bạn cần thì không, không cần ADC bên ngoài. Nhưng sau đó, đó không phải là mục đích của họ.

Bạn đã đề cập đến hầu hết các lý do cho một ADC bên ngoài, nhưng có một vài lý do nữa và theo tôi, đó là một số lý do quan trọng nhất:

  1. Bạn cần một công nghệ lấy mẫu khác - ví dụ ADC bên trong là SAR, nhưng bạn cần thực hiện Delta Sigma.
  2. ADC bên trong, vì nó là bên trong và có cùng điểm chết với MCU chính, sẽ không bao giờ được giải phóng 100% khỏi tiếng ồn của phần còn lại của MCU, do đó, bên ngoài có thể tạo ra tiếng ồn cực thấp
  3. Bộ vi điều khiển / SoC / FPGA của bạn không có ADC. Hai thứ hai rất có thể - hầu hết các SoC và FPGA phổ biến đều không có ADC nào cả. Vâng, bạn có thể có được những thứ đó, nhưng nhiều người thì không. Vì vậy, bạn thêm một cái bên ngoài.

Đối với điểm 3, lấy Raspberry Pi làm ví dụ. Điều đó hoàn toàn không có ADC, bạn phải thêm một cái bên ngoài để thực hiện bất kỳ công việc tương tự nào.


Bây giờ thật thú vị. Khi bị nhiễu, thay vì trả tiền để có ADC bên ngoài, sẽ đạt được kết quả tương tự bằng cách lấy ADC uC có độ sâu bit cao hơn và bỏ qua các bit có ý nghĩa nhỏ nhất của kết quả được lấy mẫu (điều này rõ ràng giả định rằng thời gian chuyển đổi thêm từ các bit bổ sung không phải là một yếu tố cản trở).
TRIS chấp nhận

3
Xử lý tín hiệu sau thực tế chỉ có thể giúp chống nhiễu từ các quá trình không phụ thuộc vào thời gian mẫu (và do đó đóng góp nhiễu "ngẫu nhiên"). Phần lớn tiếng ồn trong hệ thống bộ xử lý sẽ là kết quả của các biến thể trong cung cấp điện và tải mặt đất được đồng bộ hóa một chút với quy trình lấy mẫu; cách duy nhất để tránh chúng là ADC sử dụng đường ray cung cấp riêng của nó. Lưu ý rằng việc cách ly hoàn toàn là không cần thiết, vì nhiều ADC có thể dễ dàng chịu đựng được 100mV hoặc hơn giữa VDD / VSS tương tự và kỹ thuật số.
supercat

9

Một vài lý do khác để ủng hộ một ADC bên ngoài:

  1. Nhiều bộ phận ADC bên ngoài bao gồm các đầu vào vi sai, trong khi các bộ chuyển đổi tích hợp của vi điều khiển thường không có. Trong trường hợp đầu vào có nhiều nhiễu chế độ chung, điều đó có thể rất quan trọng.

  2. Nhiều bộ phận ADC bên ngoài bao gồm một tầng khuếch đại trước bộ chuyển đổi, do đó cho phép bộ chuyển đổi đo trực tiếp tín hiệu trở kháng cao. Trên nhiều bộ vi điều khiển, hành động lấy mẫu tín hiệu đầu vào có thể làm phiền nó. Tùy thuộc vào bản chất của tín hiệu đầu vào, điều này có thể làm tăng đáng kể thời gian thu cần thiết để thực hiện các phép đo chính xác.

  3. Ngay cả khi một ADC bên trong có chiều rộng mười hai bit, điều đó thường không có nghĩa là nó sẽ đọc chính xác đến một phần trong năm 4096. Một ADC bên ngoài thông thường sẽ có thông số kỹ thuật tốt hơn so với bên trong, ngay cả khi cả hai đều có cùng độ sâu bit được quảng cáo.

Việc tích hợp ADC vào vi điều khiển thật dễ dàng. Tích hợp một ADC tốt khó hơn nhiều. Đoán là phổ biến hơn.


1
Các ADC SAR chịu một chút từ việc sạc điện tích, bởi vì trong giây lát, việc kết nối mảng tụ điện lấy mẫu với đầu vào sẽ phá vỡ những gì được đo. Nếu nguồn đầu vào không phục hồi đủ nhanh, điều này gây ra lỗi đo. Độ phân giải nhiều hơn thường đòi hỏi một điện dung lấy mẫu nội bộ lớn hơn. Độ phân giải Delta-sigma chỉ phụ thuộc vào việc mở rộng bộ đếm kỹ thuật số. (Mặc dù thông số kỹ thuật INL / DNL có độ phân giải cao không phải là chuyện nhỏ để đạt được.)
MarkU

@supercat: Tôi chưa bao giờ coi giai đoạn khuếch đại là một phần của chuyển đổi. Điều này mở ra con đường lấy mẫu mạch thú vị.
TRIS chấp nhận

2
@MarkU: Tôi đã quan sát thấy vấn đề phun phí trong một số mạch. Thật kỳ lạ, một số bộ chuyển đổi dường như cố gắng tính phí đầu vào theo giá trị được lấy mẫu trước đó (từ bất kỳ đầu vào nào được lấy mẫu trước), một số bộ chuyển đổi được tính bằng 0 và ít nhất một người có vẻ tùy tiện ("ngẫu nhiên") sạc nó lên cao hơn hoặc điện áp thấp hơn mà tôi thấy khá khó chịu. Tôi không hiểu tại sao một phần sẽ làm sau này; ngay cả khi nó phải sạc về một thứ gì đó, thì việc sạc về 0 luôn sẽ tốt hơn so với sạc theo giá trị "ngẫu nhiên" nào đó.
supercat

4

Một lý do khác để một số ADC bên ngoài tồn tại: chúng tồn tại khá lâu so với micros với các ADC bên trong và được thiết kế thành nhiều sản phẩm. Có thể lâu hơn 20 hoặc 30 năm. (Có lẽ không phải là trường hợp cho phần SOIC được liên kết, mặc dù nó có thể là một biến thể thu nhỏ được hiện đại hóa của một phần cổ điển)

Trường hợp ADC không có độ phân giải, độ chính xác hoặc tốc độ cao, nhưng lại có giá cao, đây có thể là lý do.

Ngay cả đối với các thiết kế mới, có thể tốt hơn là sử dụng lại các khối hoạt động tốt, thay vì tái thiết kế xung quanh một phần mới hơn (ngay cả khi tích hợp kết quả làm giảm chi phí BOM). Việc tái cấu trúc đó có thể tốn kém; quá trình phê duyệt thử nghiệm và quy định, thậm chí nhiều hơn như vậy.

Bây giờ nếu bạn bắt đầu từ đầu và vi điều khiển đã chọn của bạn có đủ các kênh ADC đáp ứng yêu cầu của bạn, không có điều nào ở trên áp dụng.


2

Tôi nhận ra đây là một câu hỏi rất cũ, nhưng đó là một câu hỏi chúng tôi tranh luận trong nội bộ khá thường xuyên.

Bạn nói đúng, sẽ là bất thường khi chọn ADC bên ngoài nếu phiên bản bên ngoài chính xác tương đương về chức năng. Tuy nhiên, theo kinh nghiệm của tôi, micros giá rẻ thường có các ADC khá tệ với độ trôi nhiệt độ, số bit thấp (10 - 12 bit) và tiếng ồn từ VCC (trong một số trường hợp) (mặc dù trong trường hợp ngược) có thể đúng. .. bạn có thể cải thiện S / N nếu bạn quá mẫu và có tiếng ồn. Trong các hoạt động phát triển sản phẩm của chúng tôi, thật hiếm khi lựa chọn MCU dựa trên chất lượng của ADC hiện tại. Thông thường đó là nhiều hơn về toolchain, chi phí, phần sụn còn tồn tại, vv Các ADC bên trong thường bị giới hạn trong các tác vụ không quan trọng như đọc điện áp pin.

Với các kính hiển vi khác nhau, cũng có thể có các vấn đề với bộ định thời được chia sẻ cần độc quyền cho thời gian lấy mẫu nhanh, nhưng can thiệp vào những thứ khác trong MCU (cổng nối tiếp phần mềm, ISR, v.v.) khi chúng được độc quyền cho ADC.

Ngoài ra, VREF là gì? Nếu bạn đang sử dụng VCC làm tài liệu tham khảo trong phần sụn, ngay cả khi bạn hiệu chỉnh với VCC "thực", giá trị đó có thể dao động khá lớn trong quá trình hoạt động. Nếu bạn có một thiết bị dòng điện cao trên bo mạch (radio, wifi, MCU, v.v.) với mức sử dụng dòng điện thoáng qua lớn, VCC có thể giảm xuống 4,8 volt trong khi truyền và nếu mẫu của bạn xảy ra trong cửa sổ đó và bạn chuyển đổi một cách ngây thơ 0-1023 ADC đọc giá trị thành điện áp với ADC_VAL / 1023 * 5.0 - bạn đã mất một độ chính xác 200mV. Hoặc, nếu bạn có các chế độ năng lượng khác nhau (USB, Mụn cóc tường, pin) - VCC tại MCU có thể thay đổi (đặc biệt là với USB). Các ADC bên ngoài (thậm chí với cùng số bit) có thể cung cấp vref bên trong rắn trong điều kiện VCC dao động.

Độ phân giải khá quan trọng. Tôi tưởng tượng có một số sử dụng (trong thế giới thực) cho độ phân giải 10-12 bit, nhưng đối với bất kỳ loại ứng dụng nào trong thế giới thực (phát hiện khí, đo âm, đo gia tốc, đo nhiệt độ chính xác, v.v.) thường là 16 bit độ phân giải tối thiểu để đạt được tín hiệu đầy đủ đến các đặc tính nhiễu và độ phân giải. Ngay cả một MCU 32 bit thực sự đẹp như SAMD của Atmel cũng bị giới hạn ở các ADC nội bộ 12 bit.

Jitter đồng hồ cũng là một vấn đề và cũng có một số thiếu sót cố hữu khi các micrô 8 bit khác được yêu cầu để cung cấp đọc rộng 12 bit và nó cần ít nhất 2 chu kỳ đồng hồ để thao tác giá trị 12 bit, điều này có thể không đúng với một ADC bên ngoài (vì chúng có thể có bộ dao động bên trong).

Cũng có những lúc khoảng cách vật lý với đầu dò của bạn và cách ly với MCU là quan trọng. Một số đầu dò rất nhạy cảm đòi hỏi sức mạnh điều hòa của riêng chúng, máy bay mặt đất bị cô lập và ampe chopper xuyên cực kỳ nhạy cảm với 0,01% thụ động.

Đôi khi có những lý do thuyết phục cho việc sử dụng ADC nội bộ. DMA là một lý do ... tỷ lệ lấy mẫu là một lý do khác. Dễ quá khổ là khác. Kết nối các ADC bên ngoài ở tốc độ dữ liệu cao có thể ăn rất nhiều chân I / O đa năng có giá trị và tạo nên một thiết kế phức tạp hơn. Ngoài ra, nhiều ADC chúng tôi đã sử dụng dựa trên I2C, do đó tốc độ lấy mẫu rất hạn chế bởi tốc độ bus I2C. Ngay cả ở tốc độ 1mb / giây, việc đọc 16 bit cũng mất một thời gian dài.


Đây là cái nhìn sâu sắc tuyệt vời! Khi nhiều năm trôi qua (và kinh nghiệm của tôi tăng lên) tôi sẽ phải đồng ý: các ADC MCU nội bộ có thể khá tệ hại.
TRIS chấp nhận
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.