진동 감지 센서(SW-420): 두 판 사이의 차이
잔글 (→실행결과) |
잔글 (→구매 링크) |
||
66번째 줄: | 66번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 실행결과 === | ==== 실행결과 ==== | ||
[[파일:Sw420예제1시리얼모니터.png|class=coders70]] | [[파일:Sw420예제1시리얼모니터.png|class=coders70]] | ||
106번째 줄: | 106번째 줄: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 실행결과 === | |||
==== 실행결과 ==== | |||
진동이 감지되면 LED가 켜지는 모습이며, 1번 예제와 같은 모습의 시리얼 모니터 또한 함께 확인할 수 있습니다. | 진동이 감지되면 LED가 켜지는 모습이며, 1번 예제와 같은 모습의 시리얼 모니터 또한 함께 확인할 수 있습니다. | ||
2024년 7월 30일 (화) 17:59 기준 최신판
개요
SW-420 센서는 진동 감지 센서로, 주로 진동이나 충격을 감지하는 데 사용됩니다. 이 센서는 아두이노와 같은 마이크로컨트롤러와 함께 사용하여 다양한 프로젝트에 응용할 수 있습니다.
1. 진동 감지 구조
내부에 금속 볼이 포함된 기계적 스위치를 사용합니다. 금속 볼은 센서 내부의 두 전극 사이에 위치해 있으며, 외부에서 진동이나 충격이 가해지면 볼이 이동하여 전극 간의 접촉을 형성하거나 끊습니다.
2. 작동 원리
- 정상 상태: 센서가 안정된 상태일 때, 금속 볼은 전극 사이에 접촉하지 않아 출력 신호는 LOW(0V) 상태입니다.
- 진동 감지: 외부에서 진동이 발생하면 금속 볼이 이동하여 전극과 접촉하게 됩니다. 이때 출력 신호는 HIGH(5V) 상태로 변하게 됩니다. 이 신호는 아두이노와 같은 마이크로컨트롤러에 전달되어 진동이 감지되었음을 알립니다.
3. 민감도 조정
SW-420 센서에는 민감도를 조절할 수 있는 가변 저항이 내장되어 있습니다. 이 저항을 조정함으로써 센서가 감지하는 진동의 강도를 조절할 수 있습니다. 즉, 민감도를 높이면 약한 진동도 감지할 수 있고, 민감도를 낮추면 강한 진동만 감지하게 됩니다.
사양
- 전압 범위: DC 3.3V ~ 5V
- 신호 유형: 디지털 출력 (HIGH/LOW)
- 출력 전압: HIGH 상태에서 약 5V, LOW 상태에서 0V
- PCB 크기: 약 32mm x 14mm
활용 예제
기본 회로 구성
아두이노 | SW-420 진동 감지 센서 |
---|---|
5V | VCC 핀 |
GND | GND 핀 |
D2 | DO 핀 |
1. 진동을 감지하여 시리얼 모니터로 출력
위 기본 회로를 구성하신 후, SW-420 진동 센서를 손으로 흔들어서 진동 감지 여부를 시리얼 모니터로 확인하는 예제입니다.
const int sensorPin = 2; // SW-420 OUT 핀 연결
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
}
void loop() {
sensorValue = digitalRead(sensorPin);
if (sensorValue == HIGH) {
Serial.println("진동 감지!");
} else {
Serial.println("진동 없음.");
}
delay(500);
}
실행결과
2. LED와 함께 활용
진동이 감지되면 LED가 켜지는 예제입니다.
회로 구성
LED의 짧은 다리를 저항과 연결하고, 저항을 다시 아두이노 GND 핀에 연결합니다. 저항은 보통 100Ω, 220Ω을 사용합니다.
LED 긴 다리는 아두이노 D13핀에 연결합니다. LED에 대한 자세한 정보는 LED(5mm) 문서를 참고하세요.
아두이노 코드
const int sensorPin = 2; // SW-420 OUT 핀 연결
const int ledPin = 13; // 내장 LED 핀
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
sensorValue = digitalRead(sensorPin);
if (sensorValue == HIGH) {
Serial.println("진동 감지!");
digitalWrite(ledPin, HIGH); // LED 켜기
} else {
Serial.println("진동 없음.");
digitalWrite(ledPin, LOW); // LED 끄기
}
delay(500);
}
실행결과
진동이 감지되면 LED가 켜지는 모습이며, 1번 예제와 같은 모습의 시리얼 모니터 또한 함께 확인할 수 있습니다.