조회수: 164 저자: Grace 게시 시간: 2021-07-26 출처: 대지
그만큼 HC-SR04 초음파 센서는 Arduino 프로젝트에서 가장 널리 사용되는 거리 측정 모듈 중 하나입니다. 장애물 회피 로봇, 주차 센서, 레벨 감지, 스마트 쓰레기통, 거리 측정기 및 기타 비접촉 감지 애플리케이션에 널리 사용됩니다.
모듈은 송신기를 통해 40kHz 초음파를 방출합니다. 음파가 물체와 만나면 반사되어 수신기로 돌아옵니다. Arduino는 에코 시간을 측정하고 소리의 속도를 사용하여 센서와 물체 사이의 거리를 계산할 수 있습니다.
| 매개변수 | 값 |
| 일반적인 작동 전압 | 5V DC |
| 정적 작동 전류 | 일부 모듈 버전에서는 5mA 미만 |
| 작동 주파수 | 40kHz 초음파 |
| 감지 거리 | 일반적인 범위: 2cm ~ 400cm; 일부 게인 조정 버전은 더 긴 범위를 지원할 수 있습니다. |
| 감지 각도 | 보통 15도 이내; 게인이 더 높은 일부 버전은 약 30도에 도달할 수 있습니다. |
| 정도 | 적절한 테스트 조건에서 최대 약 0.3cm |
| 사각지대 | 최소 측정 거리 약 2cm |
HC-SR04 초음파 모듈에는 VCC, TRIG, ECHO 및 GND의 4개 핀이 있습니다. Arduino는 짧은 트리거 펄스를 TRIG 핀으로 보낸 다음 ECHO 핀에서 반환 펄스를 읽습니다.
| HC-SR04 핀 | 아두이노 연결 | 기능 |
| VCC | 5V | 초음파 모듈용 전원 공급 장치입니다. |
| 삼각 | 디지털 핀 9 | 트리거 입력. Arduino는 범위 지정을 시작하기 위해 10us 펄스를 적용합니다. |
| 에코 | 디지털 핀 10 | 에코 출력. Arduino는 펄스 폭을 읽어 거리를 계산합니다. |
| 접지 | 접지 | 접지 연결. |
HC-SR04는 비행 시간 측정으로 작동합니다. Arduino는 TRIG 핀에 최소 10마이크로초의 높은 수준의 트리거 신호를 보냅니다. 그런 다음 모듈은 자동으로 8개의 40kHz 초음파 펄스를 보내고 반사된 에코를 기다립니다.
반사된 초음파 신호가 감지되면 ECHO 핀은 하이 레벨 펄스를 출력합니다. 이 펄스의 지속 시간은 초음파의 왕복 이동 시간입니다.
거리 = 에코 고레벨 시간 × 소리의 속도 / 2
Arduino 코드에서 일반적인 단순화된 공식은 다음과 같습니다.
거리(cm) = 지속 시간 × 0.0343 / 2
타이밍 프로세스는 간단합니다. Arduino는 TRIG를 잠시 낮게 유지하고 10us의 높은 펄스를 보낸 다음 TRIG를 낮게 반환합니다. HC-SR04는 초음파 버스트를 전송하고 반사된 신호가 반환되거나 측정 시간이 초과될 때까지 ECHO를 높게 설정합니다.
불안정한 판독값을 방지하려면 측정 사이에 짧은 지연을 두십시오. 약 60ms의 측정주기가 일반적으로 사용되므로 다음 트리거 전에 이전 초음파 에코가 사라질 시간이 있습니다.
Arduino pulseIn() 함수는 디지털 핀이 HIGH 또는 LOW를 유지하는 시간을 측정하는 데 사용됩니다. HC-SR04의 경우 Arduino는 pulseIn(echoPin, HIGH)을 사용하여 ECHO 핀에서 높은 수준의 펄스 폭을 읽습니다.
| 통사론 | 의미 |
| pulseIn(핀, 값) | HIGH 또는 LOW 펄스의 지속 시간을 읽습니다. |
| pulseIn(핀, 값, 시간 초과) | 마이크로초 단위의 시간 제한 값을 사용하여 펄스를 읽습니다. |
시간 초과를 사용하는 것이 좋습니다. 에코가 반환되지 않으면 함수는 대기를 중지하고 프로그램을 너무 오랫동안 차단하는 대신 0을 반환할 수 있습니다.
배선은 간단합니다. VCC를 5V에, GND를 GND에, TRIG를 Arduino 디지털 출력 핀에, ECHO를 Arduino 디지털 입력 핀에 연결합니다. 다음 예에서는 Arduino Uno, 핀 9의 TRIG, 핀 10의 ECHO를 사용합니다.
다음의 일반적인 Arduino 프로그램은 10us 트리거 펄스를 보내고, ECHO 펄스 폭을 읽고, 거리를 센티미터 단위로 계산하고, 결과를 직렬 모니터에 인쇄합니다.
const int trigPin = 9; const int echoPin = 10; 장기간; 플로트 거리Cm; 무효 설정() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); 지연마이크로초(2); digitalWrite(trigPin, HIGH); 지연마이크로초(10); digitalWrite(trigPin, LOW); 기간 = pulseIn(echoPin, HIGH, 30000); if (duration == 0) { Serial.println('Out of range'); } else { distanceCm = 기간 * 0.0343 / 2; Serial.print('거리: '); Serial.print(거리Cm); Serial.println('cm'); } 지연(60); }
직렬 모니터에 거리 값이 표시되면 HC-SR04 초음파 센서와 Arduino 배선이 올바르게 작동하는 것입니다. 그런 다음 장애물 감지, 로봇 이동 제어, 자동문, 주차 알림 또는 액체 레벨 프로젝트에 거리 데이터를 사용할 수 있습니다.
측정 대상을 권장 거리 범위 내와 2cm 사각지대 밖에 두십시오.
더 나은 초음파 반사를 위해 평평하고 견고한 대상 표면을 사용하십시오.
부드럽거나 각진 물질, 다공성 물질 또는 흡음 물질을 측정하지 마십시오.
안정적인 5V 전원 공급 장치를 사용하고 배선을 짧고 안전하게 유지하십시오.
에코가 반환되지 않을 때 긴 차단을 방지하려면 pulseIn()에 시간 제한을 추가하세요.
노이즈를 줄이기 위해 여러 판독값의 평균 또는 중앙값 필터링을 수행합니다.
더 높은 정확도를 얻으려면 공기 온도에 따라 음속이 변하므로 온도를 보상하십시오.
| 애플리케이션 | HC-SR04의 사용 방법 |
| 장애물 회피 로봇 | 근처의 물체를 감지하여 로봇의 방향 전환을 도와줍니다. |
| 주차거리센서 | 차량과 장애물 사이의 거리를 측정합니다. |
| 액체 레벨 감지 | 접촉 없이 센서에서 액체 표면까지의 거리를 측정합니다. |
| 스마트 쓰레기통 | 가까이 있는 손이나 물체를 감지하여 자동으로 뚜껑이 열립니다. |
Arduino에서 HC-SR04 초음파 센서를 사용하려면 VCC를 5V에, GND를 GND에, TRIG를 디지털 출력 핀에, ECHO를 디지털 입력 핀에 연결하십시오. 10us 트리거 펄스를 보내고, pulseIn()으로 에코 지속 시간을 읽고, 비행 시간 공식으로 거리를 계산합니다.
HC-SR04는 저렴하고 사용하기 쉬우며 많은 Arduino 거리 측정 프로젝트에 적합합니다. 최상의 결과를 얻으려면 대상 표면, 측정 각도, 사각 지대, 안정적인 전력, 시간 초과 처리 및 온도 영향에 주의하십시오.
Arduino는 TRIG 핀에 10us 펄스를 보냅니다. HC-SR04는 8개의 40kHz 초음파 펄스를 방출하고 반사된 소리가 돌아올 때까지 ECHO 핀을 높게 설정합니다. Arduino는 이 펄스 시간을 측정하고 거리를 계산합니다.
공식은 거리 = 지속 시간 × 소리 속도 / 2입니다. 센티미터 단위의 일반적인 Arduino 공식은 distanceCm = 지속 시간 × 0.0343 / 2입니다. 여기서 지속 시간은 마이크로초 단위로 측정됩니다.
측정된 에코 시간은 센서에서 물체까지, 다시 센서까지 왕복 시간입니다. 2로 나누면 센서와 물체 사이의 단방향 거리가 제공됩니다.
대부분의 Arduino 디지털 핀을 사용할 수 있습니다. 많은 예에서 TRIG는 디지털 핀 9에 연결되고 ECHO는 디지털 핀 10에 연결됩니다. 코드는 배선에 사용된 핀과 일치해야 합니다.
일반적인 원인으로는 느슨한 배선, 불안정한 5V 전원, 잘못된 TRIG 또는 ECHO 핀 번호, 범위 내에 물체 없음, 기울어진 대상 표면, 부드러운 재료, 막힌 센서 헤드 또는 pulseIn() 함수의 시간 초과 없음 등이 있습니다.
사각지대는 모듈이 안정적으로 측정할 수 없는 최소 거리입니다. HC-SR04의 경우 사각지대는 보통 2cm 정도입니다. 이보다 가까운 물체는 불안정한 판독값을 생성할 수 있습니다.
예, 센서가 습기로부터 보호되고 액체 표면 위에 장착된 경우 간단한 비접촉 수위 프로젝트에 HC-SR04를 사용할 수 있습니다. 습기가 많은, 실외 또는 산업용 탱크의 경우 방수형 초음파 센서를 권장합니다.
안정적인 전원 공급 장치를 사용하고, 센서를 대상과 수직으로 유지하고, 부드럽거나 각진 표면을 피하고, pulseIn 시간 초과를 추가하고, 여러 판독값을 취하고, 중앙값 필터링을 사용하고, 측정 사이에 약 60ms를 허용하십시오.