진동 감지 센서(SW-420): 두 판 사이의 차이

아두위키 : Arduwiki
 
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번 예제와 같은 모습의 시리얼 모니터 또한 함께 확인할 수 있습니다.

구매 링크

공집사몰