Trong thế giới hiện đại, chúng ta sống trong một môi trường analog nhưng lại sử dụng các thiết bị kỹ thuật số. Các yếu tố như ánh sáng, nhiệt độ, tốc độ và áp suất đều mang bản chất analog. Tuy nhiên, phần lớn các thiết bị điện tử xung quanh ta, từ đồng hồ kỹ thuật số đến siêu máy tính, lại hoạt động dựa trên công nghệ kỹ thuật số. Điều này đặt ra một nhu cầu thiết yếu: cần có một thiết bị có khả năng chuyển đổi các thông số analog thành giá trị kỹ thuật số để các bộ vi điều khiển hoặc bộ vi xử lý có thể hiểu và xử lý. Thiết bị đó chính là ADC (Analog to Digital Converter) hay bộ chuyển đổi tương tự sang số. Trong bài viết này, chúng ta sẽ khám phá sâu hơn về bộ chuyển đổi ADC.
ADC là gì?
ADC (Analog to Digital Converter), hay bộ chuyển đổi tương tự sang kỹ thuật số, là một mạch điện tử có chức năng chuyển đổi điện áp liên tục (analog) thành giá trị nhị phân (kỹ thuật số) mà các thiết bị kỹ thuật số có thể hiểu được. Giá trị số này sau đó có thể được sử dụng cho các tính toán và xử lý kỹ thuật số. Mạch ADC có thể tồn tại dưới dạng một vi mạch độc lập hoặc được tích hợp trực tiếp vào bên trong một bộ vi điều khiển.
bo chuyen doi ADC
Tại sao cần chuyển đổi tín hiệu Analog sang Digital?
Ngày nay, thiết bị điện tử chủ yếu hoạt động trên nền tảng kỹ thuật số, đánh dấu sự kết thúc của thời đại máy tính analog. Tuy nhiên, thế giới thực mà chúng ta đang sống lại là một thế giới analog đa dạng và phong phú.
Ví dụ, cảm biến nhiệt độ LM35 tạo ra một điện áp thay đổi theo nhiệt độ. Trong trường hợp của LM35, điện áp tăng 10mV cho mỗi độ tăng của nhiệt độ. Nếu chúng ta kết nối trực tiếp cảm biến này với một đầu vào kỹ thuật số, nó chỉ có thể ghi nhận tín hiệu là “cao” hoặc “thấp” dựa trên ngưỡng đầu vào, điều này hoàn toàn không mang lại giá trị sử dụng thực tế.
Để giải quyết vấn đề này, chúng ta sử dụng bộ ADC để chuyển đổi điện áp analog từ cảm biến thành một chuỗi các bit số. Chuỗi bit này có thể được kết nối trực tiếp với bus dữ liệu của bộ vi xử lý và được sử dụng cho các tính toán và xử lý số.
ADC hoạt động như thế nào?
Một cách hiệu quả để hình dung hoạt động của ADC là coi nó như một bộ chia tỷ lệ toán học. Về cơ bản, bộ chia tỷ lệ này ánh xạ các giá trị từ một dải này sang một dải khác. ADC ánh xạ một giá trị điện áp sang một số nhị phân tương ứng.
Điều chúng ta cần là một thiết bị có thể chuyển đổi điện áp thành một loạt các mức logic, ví dụ như trong một thanh ghi. Tuy nhiên, các thanh ghi chỉ có thể chấp nhận các mức logic làm đầu vào. Do đó, nếu bạn kết nối trực tiếp tín hiệu analog với đầu vào logic, kết quả sẽ không chính xác. Vì vậy, cần có một giao diện trung gian giữa tín hiệu analog và logic kỹ thuật số.
Dưới đây là một số đặc điểm quan trọng của ADC, chúng sẽ giúp ta hiểu rõ hơn về cách thức hoạt động của nó:
- Điện áp tham chiếu
ADC không phải là một thiết bị tuyệt đối. Điện áp được ánh xạ tới giá trị nhị phân lớn nhất được gọi là điện áp tham chiếu. Ví dụ: trong một bộ chuyển đổi 10 bit với điện áp tham chiếu là 5V, giá trị 1111111111 (tất cả các bit đều là 1, số nhị phân 10 bit lớn nhất) tương ứng với 5V, và giá trị 0000000000 (số nhị phân nhỏ nhất) tương ứng với 0V. Như vậy, mỗi bước nhị phân tăng lên sẽ tương ứng với khoảng 4,9mV, vì có thể có 1024 chữ số trong 10 bit (2^10 = 1024). Độ đo điện áp trên mỗi bit này được gọi là độ phân giải của ADC.
Điều gì sẽ xảy ra nếu điện áp thay đổi nhỏ hơn 4,9mV mỗi bước? Khi đó, ADC sẽ rơi vào vùng “chết”, dẫn đến kết quả chuyển đổi luôn có một sai số nhỏ. Để giảm thiểu sai số này, có thể sử dụng ADC có độ phân giải cao hơn, ví dụ như ADC lên đến 24 bit. Tuy nhiên, cần lưu ý rằng việc tăng độ phân giải thường đi kèm với việc giảm tần số chuyển đổi.
- Tốc độ lấy mẫu
Số lượng chuyển đổi từ analog sang kỹ thuật số mà bộ chuyển đổi có thể thực hiện trong một giây được gọi là tốc độ lấy mẫu. Ví dụ, một ADC chất lượng cao có thể có tốc độ lấy mẫu là 300Ms/s (Mega samples per second), tương đương với một triệu mẫu mỗi giây.
Tốc độ lấy mẫu phụ thuộc vào loại bộ chuyển đổi và độ chính xác cần thiết. Nếu cần độ chính xác cao, ADC thường cần nhiều thời gian hơn để xem xét tín hiệu đầu vào (thường là bằng cách lấy mẫu và giữ, hoặc sử dụng đầu vào tích hợp). Ngược lại, nếu không yêu cầu độ chính xác cao, ADC có thể thực hiện việc chuyển đổi rất nhanh.
Nguyên tắc chung là tốc độ và độ chính xác tỷ lệ nghịch với nhau. Do đó, việc lựa chọn ADC phù hợp với từng ứng dụng cụ thể là rất quan trọng.
Các loại ADC phổ biến
- Flash ADC
Đây là loại ADC đơn giản nhất và nhanh nhất. Nó bao gồm một loạt các bộ so sánh, với các đầu vào không đảo (non-inverting) được kết nối với tín hiệu đầu vào và các đầu vào đảo (inverting) được kết nối với một thang chia điện áp.
Cấu trúc đơn giản của Flash ADC cho phép chuyển đổi tốc độ cao
Nếu điện áp đầu vào cao hơn một trong các mức điện áp trên thang chia, tất cả các bit đầu ra dưới mức đó sẽ được đặt thành 1. Để giải quyết vấn đề này, các đầu ra được đưa qua một bộ mã hóa ưu tiên, bộ này sẽ chuyển đổi đầu ra thành dạng nhị phân.
Tốc độ của Flash ADC chỉ bị giới hạn bởi độ trễ truyền của bộ so sánh và bộ mã hóa ưu tiên. Tuy nhiên, độ chính xác của loại ADC này thường ở mức trung bình.
- ADC tích hợp đếm (Integrating or Slope ADC)
Trong loại ADC này, một mạch tạo đoạn dốc được kích hoạt tại thời điểm bắt đầu chuyển đổi, đồng thời một bộ đếm nhị phân cũng được khởi động. Một bộ so sánh sẽ phát hiện khi đoạn dốc vượt quá điện áp đầu vào và dừng bộ đếm nhị phân. Giá trị thu được từ bộ đếm nhị phân tỷ lệ với mức điện áp đầu vào.
ADC tích hợp sử dụng đoạn dốc để chuyển đổi tín hiệu
Độ chính xác tuyệt đối của loại ADC này có thể không cao, nhưng nó đơn giản và cho độ phân giải tốt, với khoảng cách đều giữa các bước nhị phân. Mạch này có thể được xây dựng từ các thành phần rời rạc nếu không có sẵn chip tích hợp sẵn.
- ADC ước lượng kế tiếp (Successive Approximation ADC)
Loại ADC này thường được coi là một trong những loại chính xác nhất. Nó bao gồm một bộ so sánh, một bộ DAC flash đơn giản và một thanh ghi bộ nhớ. Ban đầu, thiết bị giả định tất cả các bit trong thanh ghi, ngoại trừ bit có ý nghĩa cao nhất (MSB) là 1, còn lại là 0. Sau đó, giá trị này được gửi đến bộ DAC, bộ này sẽ chuyển đổi nó thành một điện áp analog. Điện áp này được so sánh với điện áp đầu vào thông qua bộ so sánh. Nếu điện áp đầu vào cao hơn điện áp DAC, MSB vẫn được giữ là 1. Quá trình này lặp lại cho đến khi tất cả các bit được đặt thành 0 hoặc 1, tức là cho đến khi giá trị trong thanh ghi bằng với điện áp đầu vào.
Quá trình ước lượng kế tiếp giúp ADC này đạt độ chính xác cao
ADC ước lượng kế tiếp là một trong những loại ADC được sử dụng phổ biến nhất khi cần độ chính xác cao và tốc độ không quá quan trọng, ví dụ như trong các bộ vi điều khiển. ADC loại SA có thể dễ dàng đạt được thời gian chuyển đổi vài micro giây.
Các ứng dụng của ADC
- Máy hiện sóng kỹ thuật số (Digital Oscilloscopes) và Đồng hồ vạn năng kỹ thuật số (Digital Multimeters)
Ưu điểm lớn nhất của máy hiện sóng analog là có rất ít mạch điện giữa đầu nối đầu vào và màn hình, cho phép bạn thấy chính xác những gì đang diễn ra trong mạch theo thời gian thực. Tuy nhiên, máy hiện sóng analog không thể lưu trữ dạng sóng để sử dụng sau này hoặc thực hiện các phép đo trực tiếp trên bo mạch.
Máy hiện sóng kỹ thuật số khắc phục được những hạn chế này bằng cách sử dụng một bộ ADC mạnh mẽ và nhanh chóng, với độ phân giải từ 12 bit trở lên. ADC chuyển đổi các dạng sóng thành giá trị nhị phân, cho phép lưu trữ trong bộ nhớ, xử lý và hiển thị trên màn hình.
- Vi điều khiển (Microcontrollers)
Hầu hết các vi điều khiển hiện đại đều tích hợp sẵn ADC. Ví dụ phổ biến bao gồm Arduino dựa trên ATMega328P với độ phân giải 10 bit và STM32 với độ phân giải 12 bit.
Arduino IDE cung cấp hàm analogRead() để đọc điện áp analog trên một trong các chân analog và trả về một giá trị số nguyên 10 bit, nằm trong phạm vi từ 0 đến 1023.
- Nguồn điện kỹ thuật số (Digital Power Supplies)
Hầu hết các nguồn điện hiện nay đều được điều khiển bằng máy tính. Để máy tính có thể đo điện áp đầu ra, cần có một bộ ADC.
Cách sử dụng IC ADC
Có rất nhiều IC ADC trên thị trường có thể được sử dụng để đo điện áp analog. ADC0804, ADC0808, MCP3008,… là một số module ADC được sử dụng phổ biến nhất. Chúng thường được sử dụng cùng với Raspberry Pi và các bộ xử lý hoặc mạch kỹ thuật số khác, trong đó không có sẵn ADC tích hợp. Ví dụ, hãy xem xét vi mạch ADC ADS1115 của Texas Instruments, một IC có độ phân giải cao và kiến trúc hiện đại.
ADS1115 là IC ADC độ phân giải cao, dễ sử dụng
ADS1115 có sẵn trong gói QFN hoặc VSSOP, cho phép kích thước rất nhỏ. IC này đảm nhiệm nhiều chức năng khác nhau, một số tính năng quan trọng bao gồm:
- Tương thích I2C
Bất kỳ ai đã từng làm việc với vi điều khiển đều biết bus SPI và I2C hữu ích như thế nào để giao tiếp với các thiết bị ngoại vi. Tính năng này giúp bạn dễ dàng sử dụng IC này với bo mạch Arduino vì các thư viện mở rộng đã được viết cho thiết bị.
- Mức tiêu thụ điện năng thấp
Ưu điểm của việc sử dụng bất kỳ vi mạch hiện đại nào là chúng tiêu thụ dòng điện rất thấp và hoạt động trên nhiều loại điện áp, trong trường hợp này là 2.0V đến 5.5V.
- Bộ so sánh có thể lập trình
ADS1115 đi kèm với một bộ so sánh có thể lập trình tham chiếu thông qua bus I2C. Tất nhiên, đối với các ứng dụng cần tốc độ cao, IC so sánh rời rạc vẫn là lựa chọn tối ưu.
- Đầu vào có thể cấu hình
Bốn đầu vào có thể được cấu hình thành hai cặp vi sai (chỉ tính đến chênh lệch điện áp trên các chân đó) hoặc bốn đầu vào đơn.
Hạn chế của ADC
- ADC có tốc độ chậm, thường chỉ đạt đến vài micro hoặc nano giây.
- ADC không thể ghi nhận các giá trị điện áp liên tục.
- Độ phức tạp của mạch tăng lên.
