Giao tiếp cảm biến điện áp Voltage Sensor với Arduino

Trong bài viết này, chúng ta sẽ tìm hiểu về cảm biến điện áp và cách sử dụng mạch chia áp để đo lường và điều khiển điện áp trong các ứng dụng Arduino. Cảm biến điện áp, hay còn được gọi là mạch chia áp, đơn giản và chi phí thấp, được sử dụng rộng rãi trong nhiều ứng dụng khác nhau.

Tổng quan về cảm biến điện áp

Cảm biến điện áp hoạt động dựa trên mạch chia áp, một mạch đơn giản bao gồm hai điện trở. Hai điện trở này tạo thành một mạch chia áp, với điện trở gần nguồn điện có giá trị lớn hơn và điện trở gần đất có giá trị nhỏ hơn.

Đọc giá trị cảm biến điện áp

Để đọc giá trị cảm biến điện áp hoặc bất kỳ mạch chia áp nào, chúng ta có thể sử dụng công thức sau:

Vout = Vin * R2 / (R1 + R2)

Tuy nhiên, khi sử dụng Arduino để đo giá trị cảm biến điện áp, chúng ta không biết giá trị Vin là bao nhiêu. Chúng ta chỉ biết giá trị đọc từ chân ADC của Arduino. Do đó, chúng ta cần sử dụng công thức sau để tính giá trị Vin:

Vin = Vout * (R1 + R2) / R2

Sơ đồ chân cảm biến điện áp

  • Chân đầu vào:

    • VCC: Được nối với nguồn điện áp dương mà bạn muốn đo. Dải điện áp là từ 0 đến 25V.
    • GND: Được nối với nguồn điện áp âm.
  • Chân đầu ra:

    • S: Là chân đầu ra tín hiệu của module cảm biến áp điện. Nó thường được nối với các chân đầu vào trên Arduino.
    • +: Không được nối.
    • -: Là chân nối đất chung.

Sơ đồ đấu nối cảm biến điện áp (Voltage Sensor) với Arduino Uno

Dưới đây là sơ đồ đấu nối cảm biến điện áp (Voltage Sensor) với Arduino Uno:

Sơ đồ đấu nối

Code ví dụ

Dưới đây là một ví dụ đơn giản để đọc giá trị điện áp trên chân ADC A0 của Arduino và tính toán giá trị điện áp đầu vào bằng cách sử dụng công thức mạch chia áp. Kết quả được in ra Serial Monitor.

// Define analog input
#define ANALOG_IN_PIN A0

// Floats for ADC voltage & Input voltage
float adc_voltage = 0.0;
float in_voltage = 0.0;

// Floats for resistor values in divider (in ohms)
float R1 = 30000.0;
float R2 = 7500.0;

// Float for Reference Voltage
float ref_voltage = 5.0;

// Integer for ADC value
int adc_value = 0;

void setup(){
  // Setup Serial Monitor
  Serial.begin(9600);
}

void loop(){
  // Read the Analog Input
  adc_value = analogRead(ANALOG_IN_PIN);

  // Determine voltage at ADC input
  adc_voltage = (adc_value * ref_voltage) / 1024.0;

  // Calculate voltage at divider input
  in_voltage = adc_voltage*(R1+R2)/R2;

  // Print results to Serial Monitor to 2 decimal places
  Serial.print("Input Voltage = ");
  Serial.println(in_voltage, 2);

  // Short delay
  delay(500);
}

Kết quả khi cấp 5V cho cảm biến điện áp:

Kết quả 5V

Và đây là kết quả khi cấp 12V:

Kết quả 12V

Nếu bạn muốn tìm hiểu thêm về Arduino và các loại cảm biến khác, hãy tham khảo các bài viết liên quan dưới đây:

  • Giao tiếp nhiều cảm biến nhiệt độ DS18B20 với Arduino
  • Hướng dẫn sử dụng cảm biến lực FSR với Arduino
  • Hướng dẫn sử dụng cảm biến khí Gas MQ2 (Gas Sensor) với Arduino
  • Hướng dẫn sử dụng cảm biến từ trường (Reed Switch) với Arduino