ADC là gì? Làm thế nào để sử dụng ADC trong Arduino?

ADC là gì (2)

Mở đầu

Có lẽ ADC là gì là một câu hỏi được khá nhiều bạn đam mê điện tử đặt ra. Ngày hôm nay, các bạn hãy cùng dientu5ngay  đi tìm hiểu về nó nhé. Let’s go!

ADC là gì?

ADC là viết tắt của Analog to Digital Converter. ADC được sử dụng để chuyển đổi đầu vào tương tự (thường là điện áp) sang dạng kỹ thuật số. Điều cần thiết là mọi vi điều khiển phải có ADC, vì tất cả các vi điều khiển chỉ hoạt động trên điện áp đầu vào và đầu ra kỹ thuật số.

Vì vậy, ADC lấy điện áp tương tự và chuyển đổi chúng thành kỹ thuật số, và đưa chúng đến bộ vi điều khiển. Trong bảng Arduino UNO, có một bộ ADC 10-bit đa kênh. Ở đây, 10-bit có nghĩa là điện áp đầu vào 0-3.3V hoặc 0-5V được ánh xạ thành các giá trị kỹ thuật số trong phạm vi từ 0 đến 1023 (Vì 2^10 = 1024).

Trên Arduino UNO có tổng cộng 6 chân ADC. Các chân này là A0, A1, A2, A3, A4 và A5. Để hiểu điều này một cách dễ dàng nhất, chúng ta sẽ tạo một mạch sử dụng chiết áp (potentiometer)và bo mạch Arduino UNO. Trong mạch này, chúng ta sẽ sử dụng chiết áp để cung cấp điện áp tương tự cho Arduino UNO.

Sơ đồ chân của biến trở Potentiometer

Sau khi đã hiểu được ADC là gì chúng ta cùng đi tìm hiểu một linh kiện cơ bản minh họa quá trình làm việc của bộ ADC trong Arduino nhé

ADC là gì (1)
Hình ảnh của biến trở

*Sơ đồ mạch kết nối biến trở với Arduino UNO

ADC là gì (2)
Kết nối Arduino và biến trở

Chúng ta đã đi được hơn nửa quãng đường trong tìm hiểu bộ ADC là gì rồi các bạn ạ. Cùng kết nối mạch điện với Arduino nhé. Trong lập trình Arduino, chúng ta sẽ sử dụng hàm analogRead () để đọc và chuyển đổi điện áp tương tự thành kỹ thuật số.

Cú pháp là:

analogRead (Pin_name). 

Bên trong dấu ngoặc, bạn phải đề cập đến chân cắm từ nơi bạn muốn đọc điện áp tương tự. Dưới đây là đoạn code ví dụ về cách đọc điện áp tương tự từ biến trở (chiết áp).

Code chương trình cho chiết áp giao tiếp với Arduino UNO

int pot_pin=A0;

void setup()

{

pinMode(pot_pin,INPUT);

Serial.begin(9600);

}

void loop()

{

int pot_data=analogRead(pot_pin);

Serial.print(“Pot Data:”);

Serial.println(pot_data);

delay(500);

}

Giải thích chương trình

int pot_pin=A0;

Trước tiên, tạo một tên biến pot_pin để lưu trữ số pin mà bạn đã kết nối làm chân nhận tín hiệu đầu vào.

void setup()

{

pinMode(pot_pin,INPUT);

Serial.begin(9600);

}

Trong hàm void setup(), trước tiên hãy đặt pot_Set chân A0 làm đầu vào vì Arduino sẽ sử dụng chân này để đọc dữ liệu từ chiết áp. Sau đó, sử dụng lệnh Serial.begin (96000), bắt đầu giao tiếp nối tiếp với tốc độ truyền là 9600.

Điều này cần thiết để hiển thị dữ liệu chiết áp trên màn hình nối tiếp.

void loop()

{

int pot_data=analogRead(pot_pin);

Trong hàm void loop () tạo một biến khác có tên pot_data để lưu dữ liệu mà Arduino nhận được từ chiết áp. Chúng tôi sẽ sử dụng hàm analogRead () cho mục đích này.

Serial.print(“Pot Data:”);

Serial.println(pot_data);

delay(500);

}

In dữ liệu chiết áp lên màn hình nối tiếp và cuối cùng, đưa ra độ trễ là 500 mili giây.

Màn hình mô phỏng Serial Monitor

ADC là gì (1)
Giá trị điện áp được chuyển đổi thành 0-1023

Bạn có thể thấy rõ ràng trong màn hình nối tiếp rằng chúng tôi đang nhận các giá trị kỹ thuật số từ 0 đến 1023 trên màn hình nối tiếp. Chiết áp được kết nối giữa 0 và 5 vôn.

Vì vậy, ADC sẽ nhận các giá trị từ 0 đến 5 vôn và chuyển đổi chúng thành phạm vi từ 0 đến 1023. Giả sử điện áp đầu vào là 1 vôn nên giá trị kỹ thuật số tương đương của nó sẽ là 204. Bạn sẽ nhận được 204 trên màn hình nối tiếp. Tương tự, nếu điện áp đầu vào là 2 vôn, bạn sẽ nhận được giá trị kỹ thuật số tương đương 408 của màn hình nối tiếp. Như vậy, tất cả các giá trị từ 0 đến 5 vôn được ánh xạ thành 0 đến 1023.

Lời kết

Vậy là với mấy phút tuy không dài nhưng dientu5ngay đã giúp các bạn hiểu them một chút về ADC là gì cách mà bộ ADC trong Arduino làm việc rồi nhé.

CHÚC CÁC BẠN THÀNH CÔNG

Có thể bạn quan tâm

Tài liệu lập trình Arduino miễn phí

Tài liệu lập trình FPGA miễn phí

Tài liệu điện tử công nghiệp miễn phí

Tài liệu điện tử viễn thông miễn phí

4/5 - (1 bình chọn)

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 *