ADC giá 2,97 USD tệ đến mức nào?
(excamera.substack.com)- Mô-đun ADS1115 ADC giá rẻ cung cấp tính năng gần như tương đương thông số chính thức
- Tính năng bộ khuếch đại độ lợi lập trình được cho phép đạt độ chính xác đo cao ngay cả trong các dải điện áp rất nhỏ
- Đã xác nhận một số bo mạch giá rẻ có sai lệch về tốc độ đo và độ chính xác
- Khi áp dụng thuật toán hiệu chuẩn đơn giản, có thể thu được kết quả khá chính xác
- Linh kiện giá rẻ có thể là hàng lỗi hoặc hàng nhái trong quá trình sản xuất, nhưng nhìn chung vẫn dùng ổn cho nhu cầu cơ bản
Thử nghiệm hiệu năng thực tế của ADS1115 ADC giá rẻ
Tổng quan
- Trong các công việc nhúng, thông thường người ta dùng ADC (bộ chuyển đổi tương tự-số) tích hợp trong vi điều khiển
- ADC tích hợp rẻ và nhanh, nhưng số bit đo thực tế (ENOB) chỉ ở mức 8~9 bit
- Gần đây đã tiến hành thử nghiệm mô-đun ADS1115 của Texas Instruments(TI)
- ADS1115 là ADC rời cung cấp độ chính xác tối đa 16 bit
Các đặc điểm chính của ADS1115
- Nhờ khả năng mở rộng dynamic range, khi đo điện áp nhỏ có thể đo chi tiết hơn tối đa 20 lần
- Thông qua programmable gain amplifier (PGA), có thể điều chỉnh toàn dải đo từ ±6.144 V xuống ±0.256 V
- LSB nhỏ nhất khoảng 7.8 μV (0.256 V ÷ 32768), nên có thể nhận ra cả những thay đổi rất nhỏ
- So với một bước khoảng 6mV của ADC tích hợp trong vi điều khiển thông thường (mốc 3.3V, 9 ENOB), độ phân giải vượt trội hơn hẳn
- Việc sử dụng điện áp tham chiếu nội bộ là một lợi thế so với các MCU như RP2040 vốn cần tham chiếu analog bên ngoài
Vấn đề giá cả và môi trường thử nghiệm
- ADS1115 có chênh lệch giá lớn: với số lượng 1.000 chiếc, Digikey khoảng $4 còn LCSC khoảng $0.60
- Đã mua bo breakout ADS1115 giá $2.97/chiếc trên Amazon (nhiều khả năng dùng linh kiện loại $0.60)
- Cũng dự định mua thêm bo giá cao (hàng chính hãng) của Adafruit để so sánh
Quá trình thử nghiệm thực tế
-
Đã thử bo giá rẻ bằng I²CMini và nguồn điện áp DC chính xác
-
Các điểm kiểm tra chính:
- Có hoạt động đúng như thông số hay không
- Hoặc có phải một linh kiện rẻ tiền khác đang bị bán nhầm thành ADS1115 hay không
-
Kết quả thử nghiệm
- Hoạt động cơ bản, đầu ra 16 bit, programmable gain amplifier, nhiều tốc độ lấy mẫu v.v. nhìn chung đều phù hợp với datasheet của TI
- Khi nối đầu vào ở differential mode thì luôn đo ra 0, khi đưa vào 2.5V thì đo chính xác, khi đảo cực thì xuất giá trị đối nghịch, nên không có vấn đề ở hoạt động cơ bản
Độ chính xác đo và sai số
- Data Rate (tốc độ lấy mẫu): theo thông số TI cho phép sai lệch trong khoảng ±10%
- Ở chế độ 8 SPS, ba bo chạy ở mức 6.5~7 SPS, hơi chậm hơn một chút
- Một bo chạy sai hoàn toàn ở mức 300 SPS, nên bị loại khỏi các thử nghiệm sau đó
- Khi đo điện áp chính xác (2.50067V) thì xuất ra 2.4883V, phát sinh sai số khoảng 12mV/0.5% (lớn hơn thông số chính thức của TI)
- Khi áp dụng thuật toán hiệu chuẩn tuyến tính đơn giản trên vi điều khiển, sai số được cải thiện xuống dưới 10 μV
Kết luận
- Nhiều khả năng đây là linh kiện lỗi hoặc linh kiện không đạt thông số so với hàng chính hãng đã lọt vào kênh phân phối hobby giá rẻ
- Về cơ bản vẫn có thể đo khá chính xác, và nếu hiệu chuẩn bằng phần mềm thì không có vấn đề lớn trong sử dụng thực tế
- Dự định sẽ lấy thêm bo chính hãng giá cao để thử lại trong cùng điều kiện
Kết lại
- ADS1115 giá rẻ mang lại hiệu quả chi phí khá nổi bật
- Nếu chỉ bổ sung hiệu chuẩn đơn giản ở mức phần cứng/firmware thì vẫn có thể đảm bảo độ chính xác thực dụng
- Cần lưu ý nơi mua và quản lý chất lượng để kiểm tra các vấn đề như hàng lỗi
1 bình luận
Ý kiến Hacker News
Nếu mài cả linh kiện giá rẻ lẫn linh kiện chính hãng bằng giấy nhám mịn rồi làm sạch bằng isopropyl và đặt dưới kính hiển vi quang học thì rất dễ so sánh; không cần phải đi tới mức lộ ra các dấu khắc nhận dạng hay lớp kim loại cũng có thể nhanh chóng thấy được điểm giống và khác nhau về mặt cấu trúc của die chip; linh kiện clone thường khác biệt lớn về node công nghệ, kiến trúc, kích thước chip, v.v., vì phần lớn chỉ bắt chước chức năng; tôi khuyên dùng phương pháp bóc tách kiểu low-tech bằng giấy nhám và cũng chia sẻ hình ảnh liên quan (ảnh 1 / ảnh 2)
Tôi đã làm kiểu này nhiều lần, chủ yếu để giải quyết tranh chấp về nguồn gốc linh kiện; đa số package epoxy có thể bị loại bỏ rất nhanh bằng cách hòa tan trong axit sulfuric/nitric đang sôi; theo kinh nghiệm của tôi, phần lớn chỉ là dán nhãn lại đơn thuần, đổi bin, hoặc ngụy trang những sản phẩm rõ ràng trượt QC, và các mẫu như vậy khá thường gặp; cũng có một video ví dụ từ vài năm trước (liên kết video)
Chưa chắc đó là clone; như tác giả gốc nói, cũng có nhiều trường hợp sản phẩm bị đánh giá không đạt chuẩn trong quy trình sản xuất được đóng gói lại rồi tung vào kênh phân phối phổ thông
Nếu ở đây có chức năng gắn thẻ thì đây đúng là chủ đề mà Ken Shirriff sẽ rất thích; khuyên nên xem blog của ông ấy (righto.com)
Tôi không đồng ý với nhận định rằng "nó rẻ, tương đối nhanh nhưng chất lượng không mấy tốt; dù đầu ra ghi 12/16 bit thì ENOB thực chỉ khoảng 8~9"; với MCU hiện đại, chỉ cần chú ý như cung cấp điện áp tham chiếu ngoài ổn định và tắt các subsystem không cần thiết trong chip thì hoàn toàn có thể đạt ENOB trên 10 bit; dĩ nhiên một ADC tích hợp đơn lẻ sẽ không tốt bằng ADC rời chuyên dụng, nhưng trên thực tế vẫn đủ dùng cho 90% nhu cầu ADC; nếu cần số bit cao hơn thì thiết kế sẽ đòi hỏi nhiều công sức hơn, nhưng trong bài không thấy tác giả nói gì về bộ nguồn đang dùng, nhiễu từ MCU hay việc kiểm soát RFI; vì vậy khó kết luận đây thực sự là IC nhái có thông số kém hay chỉ là môi trường thí nghiệm quá nhiều nhiễu
Nếu cấu hình hai GPIO theo topology sigma-delta bậc một với hai điện trở ngoài, một tụ điện và tắt hysteresis thì có thể thu được kết quả khá thú vị; dùng RP2040 với nguồn LDO và đo vi sai (một kênh chỉ theo dõi nhiễu ngưỡng) tôi đã đạt 16 ENOB ở 1kHz và còn cao hơn với DC; điều rất quan trọng là không để chip có hoạt động tuần hoàn, ví dụ nên dùng sleep theo khoảng ngẫu nhiên để làm trải phổ; USB cũng có thể dùng với mức nhiễu dưới -100dB; tôi chưa thử độ chính xác DC, nhưng khi dùng các kênh GPIO tương tự thì nó vẫn đủ ổn cho các mục đích không quan trọng, độ chính xác thấp như cảm biến đường CC hay joystick analog
Cả hai ý kiến đều có thể đúng; tác giả gốc có thể đang nói đại diện cho nhóm MCU giá rẻ, còn người bình luận thì có vẻ đang nghĩ tới MCU phân khúc cao hơn; ADC 12 bit của RP2350 theo spec là 9.2 ENOB; có thể cao hơn nếu decimate từ nhiều mẫu, nhưng datasheet chính là căn cứ cho nhận định của tác giả (liên kết tài liệu chính thức Raspberry Pi); MCU rẻ hơn nữa như CH32V003 còn có hiệu năng ADC tệ hơn; ngược lại cũng có MCU như dòng STM32H7 ghi nhận 13+ ENOB với ADC 16 bit; tuy nhiên H7 đắt hơn RP2350 hơn 10 lần nên người làm thí nghiệm không hay dùng (ghi chú ứng dụng ADC STM32H7)
Tôi đã thử vài board phát triển STM32F103 bằng đồng hồ vạn năng Siglent SDM3055 và nguồn Siglent SPD330X; ADC SAR 12 bit của chip bị ảnh hưởng khá nhiều bởi layout và thiết kế board; mẫu tệ nhất cũng cho hiệu quả cỡ 10 bit, còn mẫu tốt nhất gần đạt hiệu quả 12 bit; mức này có được mà không cần tinh chỉnh phần mềm đặc biệt nào; hiệu năng đôi khi giảm khi giao tiếp đang hoạt động, ngoài ra không thấy ảnh hưởng nhiễu nào đặc biệt
Tôi từng định dùng ADS1115 (hàng thật) cho một dự án nhưng cuối cùng chọn STM32g071; rẻ hơn, lúc đó dễ mua hơn và linh hoạt hơn; ADC trên các dòng STM32g/h gần đây rõ ràng đã giảm đáng kể các rủi ro về phần cứng/phần mềm so với dòng f103 cũ
Tôi muốn chỉ ra rằng đoạn đó nói "ADC của vi điều khiển có dải cố định 3.3V nên 9 ENOB tương đương chênh lệch khoảng 6mV", nghe như thể mọi MCU đều không có điện áp tham chiếu độc lập; nhưng thực tế có khá nhiều MCU, bao gồm cả NXP, hỗ trợ điện áp tham chiếu lập trình được tích hợp
Về ý kiến rằng "linh kiện giá rẻ phần lớn là bản sao cực tốt hoặc hàng lỗi không qua QC bị tuồn vào kênh phân phối", đa số chip giả mà tôi từng thấy thường là hàng làm trong ghost shift hơn là như vậy, nhưng TI sản xuất toàn bộ sản phẩm analog trong nội bộ nên tôi cho rằng khả năng là ghost shift hoặc hàng trượt QC là thấp; cá nhân tôi thấy khả năng cao hơn là ADS1015 bị relabel thành ADS1115
Những hàng giả từng gây thiệt hại cho tôi (FDTI, clone STM32, v.v.) phần lớn là hàng nhái sao chép trực tiếp; so với hàng tồn kho dư, ghost shift hay hàng lỗi được đóng gói lại thì tôi gặp kiểu này thường xuyên hơn trong mảng số và mixed-signal; nói thêm là chip clone STM32 có flash die xếp chồng, vì họ không làm được quy trình flash nên phải làm riêng rồi chồng lên, thành ra khi mài package sẽ thấy thêm một bộ bonding wire; cũng có thể dùng bus này để vượt qua cơ chế bảo vệ đọc
Tôi là tác giả bài viết, và tôi cũng biết đã có báo cáo về trường hợp ADS1015 bị dán nhãn thành ADS1115; nếu đúng là ADS1015 thì đầu ra đã phải bị cắt ở 12 bit, nhưng các linh kiện tôi thử rõ ràng đều cho readout 16 bit
Tôi quan tâm tới các câu chuyện và bối cảnh trong lĩnh vực ADC; thực tế tôi mới chỉ dùng ở tốc độ chậm; tôi bắt đầu với MCP3208 (SPI), dùng 8 kênh ở 100K mẫu/giây, nhưng thấy chậm nên cần ADC nhanh hơn và chuyển sang ADS7953; nó có 16 kênh và nhanh hơn 10 lần nên hiệu năng rõ ràng tốt hơn hẳn; bù lại lập trình khó hơn, và để đạt tốc độ tối đa thì phải quét đầu vào theo thứ tự cố định; với tôi những con chip này giống như xe hơi: ADS7953 như siêu xe còn MCP3208 như một chiếc Toyota đơn giản; tôi cũng tò mò về lịch sử công nghiệp của các chip ADC này, chúng đã định vị trên thị trường như thế nào và được dùng rộng rãi đến đâu
Tôi từng thấy một dự án ở CERN nơi ADC 12 bit đạt tốc độ lấy mẫu hàng chục GHz; bí quyết chính là xử lý song song; họ nhân bản nhiều khối SAR 12 bit chạy ở mức MHz rồi dùng một analog multiplexer cỡ lớn để phân phối tín hiệu theo kiểu round-robin; cách này tốn diện tích chip khủng khiếp nhưng đạt được tốc độ rất cao; ngoài những biện pháp cực đoan như vậy còn có flash ADC (wiki flash ADC) hoặc multislop ADC để ưu tiên độ chính xác (hướng dẫn multislop ADC); tôi cũng muốn biết thêm về lịch sử và các câu chuyện hậu trường
Tôi cũng muốn nhắc tới AD9226; chỉ có 1 kênh nhưng là 12 bit và có thể đạt tới 65MSa/s; tôi mua trên AliExpress khoảng $12 và dùng cho thí nghiệm giải mã phần mềm video analog; khi dùng với Raspberry Pi Zero và peripheral SMI ở mức khoảng 8 bit, 20MSa/s, điều bất ngờ là nút thắt lại nằm ở truyền dữ liệu; tham khảo thêm cách dùng SMI này (liên kết iosoft.blog)
Tốc độ 100K mẫu/giây trong thế giới của tôi đã là cực kỳ nhanh; với tôi việc nâng tốc độ chuẩn 2K mẫu/giây lên 10K trong chương trình PLC đã được xem là hiệu năng rất cao trong thực tế
ADC siêu tốc quá khó để xử lý trực tiếp bằng vi điều khiển nên đó chủ yếu là lãnh địa của FPGA; thường phải cho FPGA nhận trực tiếp dữ liệu ADC rồi chuyển đổi sang bus song song để MCU dễ xử lý hơn; vì truyền tốc độ siêu cao đòi hỏi nhiều chân, nhiều xử lý thủ công và DMA nên thực tế thấy rất khó
Trái với nhận định rằng "ADC 12~16 bit chỉ đạt ENOB khoảng 8~9", phương pháp chuyển đổi 1 bit dùng trong SACD (hàng triệu mẫu mỗi giây) đạt dải động 120dB và băng thông khoảng 100kHz; trong khi CD (PCM 16 bit) chỉ ở mức 96dB, 20kHz; xét từ góc độ độ phức tạp của phần cứng analog thì bộ chuyển đổi 1 bit/bitstream đơn giản hơn nhiều; việc ADC 16 bit có giá rẻ cũng là nhờ sản xuất hàng loạt; trên thực tế, cách thay thế độ sâu bit bằng tốc độ lấy mẫu là một ý tưởng khá hấp dẫn, hơi giống SSAA trong đồ họa 3D lấy mẫu nhiều pixel hơn để thu được thông tin tần số cao (wiki 1-bit DAC, wiki Direct Stream Digital)
ADC giá $3 không phải là rẻ; ADC thực sự giá rẻ là loại tích hợp sẵn trong MCU giá rẻ; TI cũng cố ý bán AES/ADC giá thấp bị giới hạn ở 10/12 bit, nhưng độ tuyến tính thực tế vẫn có thể vượt 16 bit; chi phí sản xuất giữa hàng lỗi và hàng đạt gần như không khác biệt; nếu cùng quy trình bán dẫn và thiết kế đủ vững thì ADC giá rẻ cũng không nhất thiết có hiệu năng kém hơn hẳn
LCSC có thể rẻ vì họ mua số lượng lớn trực tiếp từ TI và các hãng khác rồi bán với biên lợi nhuận thấp; tôi từng thấy chip clone trên LCSC nhưng phần lớn được bán dưới tên thương hiệu khác
Giá thấp không nhất thiết đồng nghĩa với chất lượng kém; ADC độ chính xác cao nếu không cần tốc độ lấy mẫu cao thì nhờ kỹ thuật xử lý tín hiệu mà khá dễ thực hiện; các phương pháp delta-sigma hay ramp ADC đều có thể đo chính xác cao chỉ với mạch sample-and-hold và một bit duy nhất; đổi lại là cần thời gian; còn nếu muốn flash ADC 16 bit 100MHz thì có khi phải cầm cố cả căn nhà mới đủ tiền
Hầu hết các công ty đều có chính sách giá theo khu vực; ví dụ gói Spotify của tôi chỉ khoảng 60% giá tại Mỹ; ngành điện tử cũng có bảng giá riêng cho thị trường Trung Quốc; và xin lưu ý rằng giá niêm yết chính thức ở phương Tây chỉ là mức trần tối đa, trên thực tế ngay cả dự án nhỏ cũng có thể được giảm giá nếu liên hệ trực tiếp với bộ phận sales
Trên thực tế, ADC giá $3 không phải là linh kiện rẻ, và ở những quốc gia có chi phí sản xuất thấp thì còn mua được rẻ hơn nhiều; cuối cùng điều quan trọng là trong kiểm thử nhà máy sản phẩm hoạt động đúng, và chỉ cần vượt qua các điều kiện mà bộ jig test theo từng sản phẩm đặt ra thì thực tế như vậy đã là đủ