Các bộ ADC tích phân cho kết quả chính xác mà không cần tụ tích phân chuẩn đã xuất hiện từ lâu. Một ví dụ kinh điển là ADC hai sườn – loại thường thấy trong các đồng hồ vạn năng. Cấu trúc kinh điển này chỉ dùng một mạch tích phân để lần lượt tích lũy cả tín hiệu đầu vào và điện áp tham chiếu đối nghịch, cùng với hằng số thời gian RC giống nhau. Nhờ đó, nó tự động triệt tiêu sai số do dung sai của hằng số thời gian. Rất tinh tế.
Ý tưởng thiết kế dưới đây sẽ mô tả một bộ chuyển đổi tích phân (có thể là mới) cũng đạt được mục tiêu chuyển đổi chính xác mà không cần tụ điện chính xác. Nhưng cách tiếp cận thì khác biệt đáng kể. Trên hành trình đó, nó còn mang theo một vài điểm cộng rất thú vị.
Như Hình 1 cho thấy, thiết kế bắt đầu với một người bạn cũ quen thuộc: mạch định thời analog 555.

Tín hiệu đầu vào Vin được cộng với điện áp tại nút X và được tích lũy bởi bộ tích phân vi sai A1. Một chu kỳ chuyển đổi bắt đầu khi đầu ra của A1 (nút Y) đạt đến 4,096 V và nâng điện áp tại chân ngưỡng (Thr) của timer U1 thông qua cầu phân áp R2/R3, đến mức tham chiếu 2,048 V cung cấp bởi nguồn điện áp chuẩn Z1. Khi đó, chân Dch của U1 được kích hoạt, kéo chân không đảo của A1 xuống mass thông qua cầu phân áp R4/R5, xuất ra mức logic 0 tại chân GPIO (nút Z) và bắt đầu pha T-, lúc này đầu ra của A1 bắt đầu giảm dần.
Thời lượng của pha T- được xác định bởi công thức:
T- = R1·C1 / (1 + Vin / Vfullscale)
Trong đó:
Vfullscale = ±2,048 V × (R1 / R6) = ±0,683 V
Pha T- kết thúc khi đầu ra của A1 chạm mức điện áp kích (Trg) của U1, được đặt ở 1,024 V nhờ Z1 và bộ chia nội tại tỉ lệ 2:1 của U1. (Bạn có thể xem chi tiết trong datasheet của LMC555.)
Sau đó, pha T+ bắt đầu: GPIO xuất mức logic 1, chân Dch được nhả ra, khiến đầu vào không đảo của A1 được đẩy lên 1,024 V, được xác lập bởi Z1 và cầu phân áp R4/R5. Pha ramp lên này tiếp tục cho đến khi đầu ra của A1 đạt lại ngưỡng 4,096 V và khởi động chu kỳ chuyển đổi kế tiếp.
Thời lượng của pha T+ được tính theo:
T+ = R1·C1 / (1 – Vin / Vfullscale)
Toàn bộ chuỗi hoạt động “nhộn nhịp” này được tóm tắt trong Hình 2.

Trong khi đó, chân GPIO được giả định là đã được nối với một ngoại vi đếm thời gian (counter/timer) phù hợp trên vi điều khiển, để đo và tích lũy thời gian của các pha T- và T+ nhằm đạt được độ phân giải và tốc độ chuyển đổi mong muốn. Một khoảng thời gian nằm trong khoảng từ 1 µs đến 100 ns sẽ phù hợp cho quá trình tính toán giá trị Vin sau đó.
Điều này dẫn đến tuyên bố về khả năng miễn nhiễm với sai số của tụ tích phân (C1) — điều mà bạn có thể đang thắc mắc.
Thời lượng của các pha tăng và giảm (T+ và T-) tỷ lệ thuận với C1, như được minh họa trong Hình 3.

Tuy nhiên, phép toán phần mềm đã cứu nguy (và có lẽ còn cứu cả danh tiếng của tôi!), vì việc khôi phục lại giá trị Vintừ các thời gian pha đo được (T- và T+) chỉ cần một chút chia để trị:Vin = Vfullscale ((1 – (T-/T+))/(1 + (T-/T+)))
Và dĩ nhiên, khi T- chia cho T+, các thành phần R1C1 sẽ triệt tiêu lẫn nhau, đồng nghĩa với việc sai số của tụ C1 không còn ảnh hưởng gì nữa!
Một lời nhắn cuối về Vfullscale: giá trị ±0.683 V được nêu ở trên là giá trị tối thiểu, nhưng bạn hoàn toàn có thể mở rộng biên độ này một cách dễ dàng chỉ bằng cách thêm một điện trở (R8) và thay đổi một điện trở khác (R1). Dưới đây là công thức để điều chỉnh thang đo:
R1 = 1M * Vfullscale/0.683
R8 = 1/(1/1M – 1/R1)
Ví dụ, muốn có thang đo ±10 V, ta áp dụng như hình minh họa trong Hình 4.

Lưu ý rằng điện trở R1 có lẽ sẽ cần được tạo thành từ một chuỗi mắc nối tiếp để đạt giá trị 15 MΩ bằng cách sử dụng các điện trở thương mại có sẵn (OTS – off-the-shelf).
Các bài viết liên quan:
https://bachkhoadientu.com/2018/08/gioi-thieu-ve-ic-timer-555-va-chuc-nang-cua-no.html
https://bachkhoadientu.com/?s=ic+555&ct_post_type=post%3Apage
Khóa học:
https://www.bachkhoadientu.edu.vn/course/cho-thanh-chuyen-gia-kiem-dinh-linh-kien




