Giới thiệu ESP32 với ADC nội
ESP32 có 2 bộ ADC là ADC0 và ADC1 với độ phân giải 12 bit. Tuy nhiên chúng ta khó có thể đo điện áp ngoài với độ chính xác cỡ 1 mV, 2 mV. Do vậy ở bài viết này, chúng ta sẽ sử dụng IC ADC ngoài với độ chính xác cao là ADS1115.
ESP32 trong Arduino Core, bộ ADC có thể được sử dụng để có thể đo các mức điện áp khác nhau trong khoảng từ 0 V đến 3,3 V. Tương ứng với nó là một giải giá trị chuyển đổi từ 0 đến 4095 đơn vị.Bất kỳ điện áp nào trong khoảng từ 0 V đến 3,3 V sẽ được đưa ra giá trị tương ứng ở giữa.
Giới thiệu về ADS1115
ADS1115 là bộ chuyển đổi ADC 16 bit, đo được cả điện áp âm và điện áp dương. IC này có thể hoạt động ở chế độ Single Ended, Differential. Chúng ta có thể sử dụng một vi điều khiển để giao tiếp với ADS1115 thông qua giao tiếp I2C.
Sơ đồ khối ADS1115, Source: https://www.ti.com/
Vài nét về ADS115:
• Ultra-Small X2QFN Package:
2 mm × 1.5 mm × 0.4 mm
• Wide Supply Range: 2.0 V to 5.5 V
• Low Current Consumption: 150 μA
(Continuous-Conversion Mode)
Ứng dụng:
• Portable Instrumentation
• Battery Voltage and Current Monitoring
• Temperature Measurement Systems
• Consumer Electronics
• Factory Automation and Process Control
Sơ đồ nguyên lý ADS1115, Source: https://www.ti.com/
Module ADS1115
Link sản phẩm: https://www.thegioiic.com/products/ads1115-mach-chuyen-doi-adc
ADS1115 là một mạch chuyển đổi ADC 16-bit 4 kênh với bộ khuếch đại độ lợi hầu hết được sử dụng cho dự án vi điều khiển cần bộ chuyển đổi tương tự – kỹ thuật số hoặc khi bạn muốn một bộ ADC có độ chính xác cao hơn. Mạch có thể sử dụng nguồn 2V đến 5.5V, có thể đo một loạt các tín hiệu và cực kỳ dễ sử dụng, cùng với kích thước siêu nhỏ gọn, sẽ là một sự lựa chọn tuyệt vời cho các dự án của bạn.
Thông số kỹ thuật:
- Tốc độ bit: 16 Bit
- Kiểu giao tiếp: I2C
- Kênh: 4 kênh AN0 AN1 AN2 AN3 hoặc 2 đầu vào riêng biệt.
- Điện áp vào: 2.0 ~ 5.5VDC
- Dòng tiêu thụ: Chỉ 150μA
- Đầu vào điều khiển chương trình, 7 loại đầu vào khoảng: -0.256V ~ 0.256V, -0.512V ~ 0.512V, -1.024V ~ 1.024 V, -2.048V ~ + 4.048V, -4.096V ~ 4.096 V, -6.144V ~ + 6.144V.
- Kích thước: 18×28 mm
Pin name | Functionality |
---|---|
Vdd ( Power supply pin) | Connect power supply between 2.2 – 5.5 volts |
GND ( Common reference pin ) | Connect with ground pin of power supply |
SCL | I2C SCL ( serial clock pin) |
SDA | I2C SDA ( Serial data pin) |
ADDR | I2C slave select pin or address |
ALRT | Alert/Ready |
A0 | Analog channel 0 |
A1 | Analog channel 1 |
A2 | Analog channel 2 |
A3 | Analog channel 3 |
ADDR pin value | Connection with Pin |
---|---|
0x48 | Connect address pin to GND |
0x49 | Connect address pin to VDD |
0x4A | Connect address pin to SDA |
0x4B | Connect address pin to SCL |
Kết nối với Arduino:
Kết nối với ESP32
ESP32 | ADS1115 external ADC |
---|---|
VDD | VDD |
GND | GND |
GPIO21 ( SDA Pin ) | SDA |
GPIO22 ( SCL Pin ) | SCL |
GND | ADDR |
Analog voltage signal | A0 |
Code đo điện áp với ESP32, ADS1115
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads(0x48);
float Voltage = 0.0;
void setup(void)
{
Serial.begin(9600);
ads.begin();
}
void loop(void)
{
int16_t adc0;
adc0 = ads.readADC_SingleEnded(0);
Voltage = (adc0 * 0.1875)/1000;
Serial.print("AIN0: ");
Serial.print(adc0);
Serial.print("\tVoltage: ");
Serial.println(Voltage, 7);
Serial.println();
delay(1000);
}
Source: https://microcontrollerslab.com/ads1115-external-adc-with-esp32/