Cảm biến siêu âm HC-SR04 với Arduino | Làm thước đo khoảng cách

Cảm biến khoảng cách siêu âm HC-SR04 được sử dụng rất phổ biến để xác định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.

Thông số kỹ thuật:

  • Mạch cảm biến: HC-SR04
  • Màu sắc: Xanh dương + Bạc
  • Điện áp làm việc: 5 VDC
  • Dòng điện tĩnh: < 2mA.
  • Tín hiệu đầu ra: tín hiệu tần số điện, mức cao 5V, mức thấp 0V.
  • Góc cảm biến: Không quá 15 độ.
  • Khoảng cách phát hiện: 2cm ~ 450cm.
  • Độ chính xác cao: Lên đến 3mm
  • Chế độ kết nối: VCC / trig (T) / echo (R) / GND

Nguyên tắc làm việc:

  • Kích hoạt cảm biến bằng cách gửi tín hiệu mức cao trong 10us.
  • Mô-đun tự động gửi tám xung sóng vuông 40khz và tự động phát hiện xem có nhận tín hiệu xung quay lại hay không
  • Nếu có tín hiệu quay trở lại cảm biến trả về tín hiệu mức cao, thông qua khoản thời gian từ lúc kích hoạt cảm biến cho tới khi có tín hiệu trả về quý khách có thể tính ra khoảng cách.

Phần cứng cần thiết

Sơ đồ kết nối

CT1

Code

#include <LiquidCrystal.h>
const int trig = 12;     // chân trig của HC-SR04
const int echo = 11;     // chân echo của HC-SR04
const int out = 13;   // chân Relay out
const int bz = 3;
//LCD pin to Arduino
const int pin_RS = 8;
const int pin_EN = 9;
const int pin_d4 = 4;
const int pin_d5 = 5;
const int pin_d6 = 6;
const int pin_d7 = 7;
//const int pin_Backlight = 10;
LiquidCrystal lcd(pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
byte ledPin[] = { A5,A4,A3,A2,A1,A0 };
byte pinCount;
byte muc_nuoc = 2;
int moc_tren = 780;
int moc_duoi = 330;
bool out_status = 0;  // Trạng thái out: 0 là tắt, 1 là bật
void setup()
{
  Serial.begin(9600);  
  pinMode(trig, OUTPUT);   // chân trig sẽ phát tín hiệu
  pinMode(echo, INPUT);    // chân echo sẽ nhận tín hiệu
  pinMode(out, OUTPUT);
  pinMode(bz, OUTPUT);
  lcd.begin(16, 2);
  pinCount = sizeof(ledPin);  // Lấy số lượng LED
    for (byte i = 0; i < pinCount; i++) {
      pinMode(ledPin[i], OUTPUT);  //Các chân LED là OUTPUT
      digitalWrite(ledPin[i], LOW); //Mặc định các chân LED sẽ tắt
    }
  pinMode(2, INPUT_PULLUP);
}
void loop()
{
    unsigned long duration; // biến đo thời gian
    int distance;           // biến lưu khoảng cách
  /* Phát xung từ chân trig */
  digitalWrite(trig, 0);   // tắt chân trig
  delayMicroseconds(2);
  digitalWrite(trig, 1);   // phát xung từ chân trig
  delayMicroseconds(5);   // xung có độ dài5 microSeconds
  digitalWrite(trig, 0);   // tắt chân trig
  /* Tính toán thời gian */
  // Đo độ rộng xung HIGH ở chân echo.
  duration = pulseIn(echo, HIGH);
    // Tính khoảng cách đến vật.
  distance = int(duration / 2 / 29.412);
    /* In kết quả ra Serial Monitor */
  Serial.print(distance);
  Serial.println("cm");
  lcd.setCursor(0, 0);
  lcd.print("Distance: ");
  lcd.print(distance+1);
  lcd.print("cm   ");
  delay(200);
    if (distance < 10)
    {
       
      Danger();
    }
    else if (distance < 20)
    {
      Warning();
    }
    else {
      lcd.setCursor(0, 1);
      lcd.print("   TCL_47.BLOG   ");
    }
  
  lcd.setCursor(0, 0);
  lcd.print("   TCL_47.BLOG   ");
}
void Warning()
{
    for (int a = 0; a < 3; a++)
    {
      lcd.setCursor(0, 1);
      lcd.print(" WARNING!   ");
      digitalWrite(out, 1);
      digitalWrite(bz, 1);
      delay(300);
      lcd.setCursor(0, 1);
      lcd.print("               ");
      digitalWrite(out, 0);
      digitalWrite(bz, 0);
      delay(150);
    }
}
void Danger()
{
    for (int a = 0; a < 3; a++)
    {
      lcd.setCursor(0, 1);
      lcd.print(" DANGER! ");
      digitalWrite(out, 1);
      digitalWrite(bz, 1);
      delay(150);
      digitalWrite(out, 0);
      digitalWrite(bz, 0);
      lcd.setCursor(0, 1);
      lcd.print("               ");
      delay(75);
    }
}
void Danger1()
{
    for (int a = 0; a < 3; a++)
    {
      lcd.setCursor(0, 1);
      lcd.print(" CO TROM!  ");
      digitalWrite(out, 1);
      digitalWrite(bz, 1);
    }
}

Video

cam bien sieu am hc-sr04,hcsr04, tlc47 truong cong ly, trương công lý

Nhận xét

Mới hơn Cũ hơn