산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

Arduino와 초음파 센서를 이용한 거리 측정

Arduino를 이용한 초음파 거리 측정 프로젝트

초음파 거리 측정은 최근 다양한 응용 분야에서 유용한 도구입니다. 위치 지정, 위치 지정, 치수 측정, 선택, 레벨 측정, 제어 및 프로파일링과 같은 다양한 애플리케이션에서 사용할 수 있습니다. 출력 값으로 몇 가지 수학적 계산을 수행하여 속도 및 기타 다양한 물리적 치수도 측정할 수 있습니다. 이 장치는 로봇 공학 분야에서도 응용할 수 있습니다.

따라서 이러한 애플리케이션을 염두에 두고 초음파 센서는 작은 거리에 대해 물리적인 접촉 없이 거리를 측정할 수 있는 훌륭한 도구입니다. 그들은 ECHO의 개념을 사용하여 거리를 측정합니다. 이 프로젝트에서는 HC-SR04 센서 모듈을 Arduino와 인터페이스하여 거리를 측정하고 16×2 LCD에 거리를 표시하는 방법을 배웁니다.

거리 측정 프로젝트의 회로도

인터페이싱은 정말 간단합니다. 회로도를 따르면 됩니다. 그래서 먼저 초음파 센서의 Trig와 Echo 핀은 Arduino UNO의 A4와 A5에 연결하고 VCC와 GND는 Arduino의 5V와 GND에 연결합니다.

이제 Arduino와 연결된 16×2 LCD에 거리를 표시해 보겠습니다. RS와 EN 핀을 아두이노의 디지털 12번 핀과 11번 디지털 핀에 각각 연결합니다. 이제 LCD의 D4-D7을 Arduino의 디지털 핀 5-2에 연결합니다. 회로도와 같이 LCD의 대비를 제어하기 위해 10K 전위차계도 연결했습니다.

필요한 구성요소

초음파 센서 모듈

여기에 사용된 센서 모듈은 HC-SR04입니다. , 비접촉식 초음파 측정기입니다. 이 소형 모듈은 2cm – 400cm 범위 내에서 거리를 측정할 수 있습니다. 최대 3mm까지 측정할 수 있는 정말 정확한 센서입니다.

센서는 초음파 송신기와 초음파 수신기로 구성됩니다. 작동 원리는 정말 간단합니다. 첫째, IO 트리거는 10μs 동안 하이 레벨 신호를 보냅니다. 그런 다음 센서 모듈은 40kHz 주기의 8번의 초음파를 보내고 펄스 신호가 다시 수신되는지 여부를 감지합니다. 그리고 신호가 수신되면 High 레벨을 통해 IO Trigger가 High로 유지되는 시간이 신호를 보내고 받을 때까지의 시간입니다.

거리 =(높은 수준의 시간 x 공기 중 음속(340M/s))/2

타이밍 다이어그램

위에서 논의한 바와 같이 모듈은 사운드의 에코에서 작동합니다. 모듈의 트리거링을 위해 약 10μs 동안 펄스가 전송됩니다. 이 프로세스가 끝나면 모듈은 40kHz 주기의 초음파를 8회 전송하고 반사를 확인합니다. 따라서 장애물이 있으면 신호가 장애물과 충돌하고 수신기로 다시 돌아옵니다. 이제 거리는 위에서 설명한 간단한 공식으로 계산됩니다. 이 시간이 장애물에 도달하고 수신기로 돌아오는 총 시간이므로 장애물에 도달하는 데 걸리는 시간이 전체 시간의 절반이기 때문에 2로 나눴습니다. 이 센서의 타이밍 다이어그램은 다음과 같습니다.

기술 사양
초음파 센서 HC-SR04의 핀아웃

위에서 논의한 바와 같이 이 모듈은 소리의 에코 원리에 따라 작동합니다. 따라서 모듈을 마이크로 컨트롤러와 연결하면 먼저 모듈이 Trig 핀을 통해 트리거되고 10μs 동안 높은 수준의 펄스가 전송됩니다. 그런 다음 ECHO를 수신하기를 기다립니다. 마이크로컨트롤러는 시간을 계산할 수 있습니다. 그런 다음 위에서 논의한 공식에 의해 거리는 계산됩니다.

아두이노 UNO

Arduino는 많은 소규모 및 대규모 임베디드 프로젝트에서 널리 사용되는 오픈 소스 마이크로컨트롤러입니다. 이 프로젝트에 사용된 Arduino는 Arduino-UNO입니다. 이 Arduino를 사용하는 이유는 더 저렴하고 인터페이스가 쉽기 때문입니다. 보드는 14개의 디지털 I/O 핀과 6개의 아날로그 핀을 제공합니다. 마이크로컨트롤러는 오픈 소스이므로 어떻게 사용하고 싶은지는 사용자에게 달려 있습니다. 필요에 따라 보드와 소프트웨어를 수정할 수 있습니다.

16×2 LCD 모듈

이러한 모듈은 조용하고 저렴하고 마이크로컨트롤러와 인터페이스하기 쉽기 때문에 임베디드 프로젝트의 많은 위치에서 일반적으로 사용됩니다. 계산기, 풍량계 등에서 이러한 유형의 표시를 본 적이 있을 것입니다. 여기에 사용된 LCD 모듈은 16자를 한 행에 표시할 수 있으며 두 행이 있습니다. 따라서 기본적으로 16개의 열과 2개의 행이 있습니다. 표시되는 각 문자는 5×8 픽셀(픽셀 매트릭스)로 구성됩니다.

전체 LCD의 총 픽셀을 계산하면 5x8x16x2=1280픽셀이 됩니다. 큰 숫자입니다. 이제 LCD에 무언가를 표시하려면 문자의 위치도 지정해야 합니다. 하여튼 정말 어려운 일입니다. 따라서 적절한 작동을 관리하기 위해 HD44780이라는 IC가 사용됩니다. 이 IC는 마이크로컨트롤러에서 데이터와 명령을 가져온 다음 원하는 출력이 LCD에 인쇄될 수 있도록 일부 처리를 수행합니다. 이 IC는 LCD의 인터페이스를 매우 쉽게 만듭니다. 많은 프로젝트에서 LCD를 사용하여 센서나 다른 모듈의 출력을 표시할 수 있습니다. LCD 모듈의 기술 사양을 살펴보겠습니다.

LCD의 핀 구성을 살펴보겠습니다.

16×2 LCD 핀 배치 및 설명

핀 번호 이름 설명
1 VSS 접지이며 회로의 접지에 연결됩니다.
2 VDD LCD용 전원 공급 장치(4.7V ~ 5.3V), 일반적으로 5V
3 VE 이 핀은 LCD의 대비를 조작하는 데 사용됩니다. 이렇게 하려면 이 핀에 전위차계를 연결해야 합니다. 따라서 전위차계의 손잡이를 조정하여 디스플레이에 다른 대비 수준을 얻을 수 있습니다.
4 RS 등록 선택. 이 핀은 명령과 데이터 레지스터 사이를 이동하는 데 사용됩니다. 이 핀은 마이크로컨트롤러에 연결됩니다.
5 RW 읽기/쓰기. 이 핀은 LCD를 읽거나 쓰는 데 사용됩니다. 일반적으로 데이터를 쓰기 위한 것입니다.
6 KO 핀을 활성화합니다. 이 핀은 마이크로컨트롤러와 연결되며 데이터를 확인하기 위해 1 또는 0이 제공됩니다.
7 데이터 핀(0-7) 이 핀은 마이크로컨트롤러에서 LCD로 8비트 데이터를 보내는 데 사용됩니다. 이 LCD는 4비트 모드에서도 사용할 수 있습니다. 이를 위해서는 4개의 데이터 핀만 연결하면 됩니다.
8 A 양극. 이 핀은 LCD 백라이트용 양극 핀입니다. 이 핀을 사용하는 것은 완전히 선택 사항입니다. 백라이트가 필요한 경우 사용하십시오. 기술 사양과 같이 백라이트를 사용하지 않으면 전류 소모가 매우 줄어듭니다.
9 K 음극. 이 핀은 LCD 백라이트용 음극 핀입니다.

LCD와 Arduino의 기본 인터페이스를 살펴보겠습니다. 간단한 코드를 작성하여 LCD에 일부 텍스트를 인쇄합니다. 먼저 RS 및 EN 핀을 Arduino의 디지털 핀 12 및 11에 연결합니다. 이제 LCD의 D4-D7 핀을 Arduino의 디지털 핀 5-2에 연결합니다. 이제 RW, VSS 및 K를 접지에 연결하고 VDD와 A를 Arduino의 5V에 연결합니다. 회로도와 같이 전위차계를 VE에 연결하여 LCD의 명암을 제어합니다.

이제 코딩 부분으로 오세요. 먼저 LCD용 LiquidCrystal.h 라이브러리를 포함해야 합니다.

#include

이제 다음 두 줄에서 Arduino와 연결된 LCD의 데이터 핀에 대한 변수를 정의한 다음 lcd 함수에서 인수로 전달하여 데이터를 보낼 수 있습니다. Arduino를 LCD로.

const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2;

LiquidCrystal LCD(rs, en, d4, d5, d6, d7);

설정 함수에서 lcd.begin() 함수를 사용하여 LCD를 초기화했습니다. 우리가 사용하는 LCD가 16열과 2행을 가지고 있고 전체 LCD를 사용하고 있기 때문에 우리는 16과 2를 통과했습니다. LCD의 일부만 필요한 경우 그에 따라 인수를 전달할 수 있습니다.

다음으로 다음 줄에 'Hello, World!'를 인쇄합니다. 인쇄하려는 사용자 정의 메시지를 인쇄할 수 있지만 디스플레이 크기를 초과하는 메시지는 다음 줄에 인쇄된다는 점을 염두에 두십시오. 따라서 그에 따라 메시지를 조작하십시오.

lcd.begin(16, 2);

lcd.print(“Hello, World!”);

루프 함수에서 lcd.setCursor() 함수를 사용하여 커서를 위치 (0,1)로 설정했습니다. 그 후 메시지가 인쇄되는 시간을 인쇄합니다.

lcd.setCursor(0, 1);

lcd.print(millis() / 1000);

코드를 작성한 후 Arduino 보드에 업로드하면 디스플레이에 메시지가 인쇄되는 것을 볼 수 있습니다. 연결된 전위차계의 손잡이를 돌려 대비를 변경할 수 있습니다.

초음파 센서 거리 측정을 위한 Arduino 프로그래밍

코딩 부분은 이 프로젝트에서 정말 쉽습니다. LCD용 헤더 파일을 포함하는 것으로 시작하십시오.

#include <LiquidCrystal.h>

다음 두 줄에서는 Arduino의 핀 A4(핀 18) 및 A5(핀 19)에 대한 매크로를 정의하여 핀을 사용하는 대신 해당 이름을 사용할 수 있습니다. 숫자.

#define trig 18
#define echo 19

이제 다음 줄에서는 Arduino에 연결된 LCD의 여러 핀에 대한 변수를 정의한 다음 LCD를 초기화할 수 있도록 lcd 함수에 전달했습니다.

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

이제 거리 변수 'd'와 시간 변수 't'를 정의하고 0으로 초기화했습니다.

float t=0,d=0;

이제 설정 기능으로 이동합니다. 첫 번째 줄에서 lcd.begin()을 사용하여 LCD를 초기화한 다음 다음 두 줄에서 각각 출력 및 입력으로 트리거 및 에코 핀에 대한 핀 모드를 정의했습니다.

void setup()
{
 lcd.begin(16,2);
 pinMode(trig,OUTPUT);
 pinMode(echo,INPUT);
}

다음은 루프 기능입니다. 먼저, 루프가 반복될 때마다 이전 출력이 현재 출력에 영향을 미치지 않도록 lcd.clear() 함수로 LCD를 지웠습니다. 이제 다음 6개 라인에서 10μs 동안 높은 수준의 펄스를 전송하여 초음파 센서를 초기화합니다. 그리고 그 후에 센서는 자동으로 40kHz 주기의 초음파를 8회 전송하고 반사를 확인합니다. 그래서 다음 줄에서는 센서에서 시간을 가져왔습니다. 그런 다음 거리를 계산합니다. 속도는 미터/초이므로 10000으로 나누었으므로 센티미터로 변환해야 합니다.

void loop() 
{
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  t = pulseIn(echo, HIGH);
  d = t * 0.0340 / 2;
  d = t * 0.01330 / 2;
  lcd.setCursor(0, 0);
  lcd.print("Distance: ");
  lcd.print(d);
  lcd.print(" cm");
  delay(1000); 
}

거리 측정 회로의 작동

코드를 작성한 후 Arduino에 업로드하면 모든 설정이 완료됩니다. 이제 센서 앞에 물건이나 손을 가져오세요. LCD에서 거리를 확인하십시오. 센서에서 물체까지의 거리를 계속 변경하면 정확한 거리를 얻을 수 있습니다.

10μs 동안 높은 수준의 펄스를 보내 센서를 초기화하면 센서는 8개의 40kHz 초음파 사이클을 보내고 이러한 사이클이 장애물에 의해 반사되면 다시 반사됩니다. 수화기. 이제 센서는 초음파 신호를 송신기에서 장애물로, 장애물에서 수신기로 이동하는 데 걸리는 시간을 알려줍니다. 그래서 이 시간을 이용하여 센서와 장애물 사이의 거리를 계산합니다.


산업기술

  1. 거리 센서의 작동 원리와 응용
  2. Arduino 센서 – 유형 및 애플리케이션
  3. PIR 센서 회로 및 모듈 작동
  4. Python 및 Raspberry Pi 온도 센서
  5. ARDUINO를 사용하는 초음파 부상 기계
  6. Arduino와 스마트폰을 사용한 DIY 전압계
  7. IOT - ESP8266, Arduino 및 초음파 센서를 사용하는 스마트 항아리
  8. Arduino를 사용한 주파수 및 듀티 사이클 측정
  9. Arduino 및 RDA8057M을 사용하는 FM 라디오
  10. Arduino가 있는 미니 레이더