Điện Tử Cơ Bản

Bộ chuyển đổi ADC là gì

Tín hiệu tương tự

Bộ chuyển đổi ADC là gì : Vi điều khiển có khả năng đọc các tín hiệu nhị phân: nút bấm có được nhấn hay không? Đây là những tín hiệu kỹ thuật số. Khi một bộ vi điều khiển được cấp nguồn từ 5 vôn, nó hiểu 0 vôn (0V) là 0 và 5 vôn (5V) là 1. Tuy nhiên, thực tế không đơn giản như vậy. Nếu tín hiệu là 2,72V thì sao? Đó là  0 hay 1? Chúng ta thường cần đo các tín hiệu khác nhau; chúng được gọi là tín hiệu tương tự. Cảm biến tương tự 5V có thể xuất ra 0,01V hoặc 4,99V hoặc bất kỳ giá trị nào ở giữa. May mắn thay, gần như tất cả các bộ vi điều khiển đều có một thiết bị tích hợp cho phép chúng ta chuyển đổi các điện áp này thành các giá trị mà chúng ta có thể sử dụng trong một chương trình để đưa ra quyết định điều khiển.

Dưới đây là một số chủ đề và khái niệm bạn có thể muốn biết trước khi đọc hướng dẫn này:

Bộ chuyển đổi ADC là gì ?

Bộ chuyển đổi tương tự sang kỹ thuật số (ADC) là một tính năng rất hữu ích giúp chuyển đổi điện áp tương tự  sang số kỹ thuật số. Bằng cách chuyển đổi từ giá trị tương tự sang giá trị kỹ thuật số, chúng ta có thể bắt đầu sử dụng thiết bị điện tử để giao tiếp với thế giới tương tự xung quanh chúng ta.

Có thể bạn quan tâm

 

 

Không phải mọi chân trên vi điều khiển đều có khả năng thực hiện chuyển đổi từ tương tự sang kỹ thuật số. Trên board Arduino, các chân này có chữ ‘A’ phía trước (A0 đến A5) để cho biết các chân này có thể đọc điện áp tương tự.

ADC có thể khác nhau rất nhiều giữa các vi điều khiển. ADC trên Arduino là ADC 10 bit có nghĩa là nó có khả năng thực hiện 1.024 (2 ^ 10) mức tương tự rời rạc. Một số vi điều khiển có ADC 8 bit (2 ^ 8 = 256 mức rời rạc) và một số có ADC 16 bit (2 ^ 16 = 65,536 mức rời rạc).

Cách thức hoạt động của ADC khá phức tạp. Nhưng một trong những kỹ thuật phổ biến nhất sử dụng điện áp tương tự để sạc tụ điện bên trong và sau đó đo thời gian nó phóng điện qua một điện trở bên trong. Bộ vi điều khiển giám sát số chu kỳ xung trôi qua trước khi tụ điện được phóng điện. Số chu kỳ này là số được trả lại sau khi ADC hoàn tất.

Mối liên hệ  giữa giá trị ADC với điện áp – Bộ chuyển đổi ADC là gì

ADC thể hiện một giá trị tỷ lệ . Điều này có nghĩa là ADC giả định 5V là 1023 và bất kỳ thứ gì nhỏ hơn 5V sẽ có tỷ lệ giữa 5V và 1023.

 

 

Chuyển đổi tương tự sang kỹ thuật số phụ thuộc vào điện áp hệ thống. Vì chúng tôi chủ yếu sử dụng ADC 10 bit của Arduino trên giá trị điện áp 5V, chúng tôi có thể đơn giản hóa phương trình này một chút:

 

 

Nếu điện áp của bạn là 3,3V, bạn chỉ cần thay đổi 5V ra bằng 3,3V trong phương trình. Nếu điện áp của bạn là 3,3V và ADC của bạn đọc đc là 512, thì điện áp đo được là bao nhiêu? Nó xấp xỉ 1,65V.

Nếu điện áp tương tự là 2,12V thì ADC sẽ báo giá trị như thế nào?

 

 

Sắp xếp lại mọi thứ một chút và chúng tôi nhận được:

 

 

 

Ah ah! ADC sẽ là 434.

Ví dụ về Arduino ADC

Để hiển thị điều này trong thế giới thực, hãy sử dụng Arduino để phát hiện điện áp tương tự. Sử dụng trimpot, hoặc cảm biến ánh sáng, hoặc bộ chia điện áp đơn giản để tạo điện áp. Hãy thiết lập một mạch trimpot đơn giản cho ví dụ này:

 

 

Để bắt đầu, chúng ta cần xác định pin làm đầu vào. Để phù hợp với sơ đồ mạch, chúng tôi sẽ sử dụng A3:

pinMode(A3, INPUT);
 
 
 
 
 
 
 

và sau đó thực hiện đọc giá trị tương tự sang kỹ thuật số bằng cách sử dụng lệnh analogRead () :

int x = analogRead(A3); //Reads the analog value on pin A3 into x
 
 
 
 
 
 
 

Giá trị được trả về và lưu trữ trong x sẽ là giá trị từ 0 đến 1023. Arduino có ADC 10-bit (2 ^ 10 = 1024). Chúng tôi lưu trữ giá trị này vào một int vì x lớn hơn (10 bit) so với những gì một byte có thể chứa (8 bit).

Hãy in giá trị này để xem khi nó thay đổi:

Serial.print(“Analog value: “);
Serial.println(x);
 
 

Khi chúng ta thay đổi giá trị tương tự, x cũng sẽ thay đổi. Ví dụ: nếu x được báo cáo là 334 và chúng tôi đang sử dụng Arduino ở 5V, thì điện áp thực tế là bao nhiêu? Rút đồng hồ vạn năng kỹ thuật số của bạn ra và kiểm tra điện áp thực tế. Nó phải xấp xỉ 1,63V.

Lùi lại mọi thứ

Điều gì xảy ra nếu bạn kết nối cảm biến tương tự với chân thông thường (kỹ thuật số)? Không có gì xấu sẽ xảy ra. Bạn sẽ không thể thực hiện một analogRead thành công:

int x = analogRead(8); //Try to read the analog value on digital pin 8 - this doesn’t work!
 

Điều này sẽ biên dịch nhưng x sẽ được trả về bằng một giá trị vô nghĩa.

Điều gì xảy ra nếu tôi kết nối cảm biến kỹ thuật số với một chân analog? Một lần nữa, bạn sẽ không vi phạm bất cứ điều gì. Nếu bạn thực hiện chuyển đổi từ tương tự sang kỹ thuật số trên một nút bấm, bạn sẽ thấy các giá trị ADC rất gần với 1023 (hoặc 5V là nhị phân 1) hoặc rất gần với 0 (hoặc 0V là nhị phân 0).

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button