Chuyển đổi tương tự sang kỹ thuật số là một nhiệm vụ rất quan trọng trong điện tử nhúng, vì hầu hết các cảm biến cung cấp đầu ra dưới dạng giá trị tương tự và để đưa chúng vào bộ vi điều khiển chỉ hiểu các giá trị nhị phân, chúng ta phải chuyển đổi chúng thành giá trị kỹ thuật số. Vì vậy, để có thể xử lý dữ liệu tương tự, vi điều khiển cần Analog to Digital Converter.
Một số vi điều khiển có sẵn ADC như Arduino, MSP430, PIC16F877A nhưng một số vi điều khiển không có nó như 8051, Raspberry Pi, v.v. và chúng ta phải sử dụng một số IC chuyển đổi Analog sang số bên ngoài như ADC0804, ADC0808. Dưới đây, bạn có thể tìm thấy các ví dụ khác nhau về ADC với các bộ vi điều khiển khác nhau:
- Làm thế nào để sử dụng ADC trong Arduino Uno?
- Hướng dẫn sử dụng Raspberry Pi ADC
- Giao tiếp ADC0808 với Vi điều khiển 8051
- Vôn kế kỹ thuật số 0-25V sử dụng Vi điều khiển AVR
- Cách sử dụng ADC trong STM32F103C8
- Cách sử dụng ADC trong MSP430G2
- Cách sử dụng ADC trong ARM7 LPC2148
- Sử dụng Mô-đun ADC của Vi điều khiển PIC với MPLAB và XC8
Trong hướng dẫn này, chúng ta sẽ kiểm tra cách giao tiếp mô-đun PCF8591 ADC / DAC với Arduino.
Các thành phần bắt buộc
- Arduino UNO
- Mô-đun ADC PCF8591
- 100K nồi
- Cáp nhảy
Mô-đun ADC / DAC PCF8591
PCF8591 là một mô-đun chuyển đổi tương tự sang tín hiệu tương tự 8 bit hoặc kỹ thuật số 8 bit có nghĩa là mỗi chân có thể đọc các giá trị tương tự lên đến 256. Nó cũng có LDR và mạch điện trở nhiệt được cung cấp trên bo mạch. Mô-đun này có bốn đầu vào tương tự và một đầu ra tương tự. Nó hoạt động trên giao tiếp I 2 C, do đó có các chân SCL và SDA cho đồng hồ nối tiếp và địa chỉ dữ liệu nối tiếp. Nó yêu cầu điện áp cung cấp 2,5-6V và có dòng điện chờ thấp. Chúng ta cũng có thể thao tác với điện áp đầu vào bằng cách điều chỉnh núm chiết áp trên mô-đun. Ngoài ra còn có ba jumper trên bảng. J4 được kết nối để chọn mạch truy cập nhiệt điện trở, J5 được kết nối để chọn mạch truy cập điện trở LDR / photo và J6 được kết nối để chọn mạch truy cập điện áp điều chỉnh. Để truy cập các mạch này, bạn phải sử dụng địa chỉ của các jumper này: 0x50 cho J6, 0x60 cho J5 và 0x70 cho J4. Có hai đèn LED trên bảng D1 và D2- D1 cho biết cường độ điện áp đầu ra và D2 cho biết cường độ của điện áp cung cấp. Điện áp đầu ra hoặc nguồn cung cấp càng cao thì cường độ của LED D1 hoặc D2 càng cao. Bạn cũng có thể kiểm tra các đèn LED này bằng cách sử dụng chiết áp trên VCC hoặc trên chân AOUT.
Giao tiếp Mô-đun ADC / DAC PCF8591 với Arduino
Các chương trình và làm việc hoàn chỉnh đoạn video được đưa ra vào cuối của hướng dẫn này.
Đầu tiên, chúng ta cần xác định thư viện cho giao tiếp I 2 C và màn hình LCD.
#include
Sau đó, xác định một số macro. Macro đầu tiên là để xác định địa chỉ của bus dữ liệu cho IC và macro thứ hai là để xác định địa chỉ của chân đầu vào đầu tiên của mô-đun, nơi đầu vào từ pot được đưa ra.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Tiếp theo xác định các kết nối chân của LCD với Arduino và khởi tạo giá trị mà chúng ta đang nhận được ở chân analog.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Giá trị = 0;
Bây giờ, chúng ta hãy đến với chức năng thiết lập . Ở đây, trong dòng đầu tiên, chúng tôi đã khởi tạo giao tiếp I 2 C. Và trong dòng thứ hai, chúng tôi đã khởi tạo màn hình LCD mà chúng tôi đang in các giá trị tương tự. Tìm hiểu thêm về giao diện LCD 16x2 với Arduino tại đây.
void setup () { Wire.begin (); lcd.begin (16,2); }
Trong chức năng vòng lặp , dòng đầu tiên là bắt đầu truyền, tức là nó bắt đầu PCF8591. Dòng thứ hai báo cho IC thực hiện phép đo tương tự tại chân đầu vào tương tự đầu tiên. Dòng thứ ba kết thúc quá trình truyền và dòng thứ tư nhận dữ liệu đo được từ chân analog.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Trong phần tiếp theo, hãy đặt giá trị được đọc từ chân tương tự vào biến Giá trị được xác định trước đó. Và trong các dòng tiếp theo, in giá trị đó ra màn hình LCD.
Giá trị = Wire.read (); lcd.print ("Giá trị ADC ="); lcd.print (Giá trị); chậm trễ (500); lcd.clear ();}
Cuối cùng tải lên mã trong Arduino và chạy nó. Các giá trị tương tự sẽ bắt đầu hiển thị trên màn hình LCD. Điều chỉnh núm của nồi, và bạn sẽ thấy sự thay đổi dần dần của các giá trị.