아두이노2016. 4. 12. 09:00

진동을 감지할 수 있는 센서가 있습니다. SW-420 이라는 센서로서 흔들어보면 구슬(?) 같은 것이 움직이는 느낌이 납니다. 그것이 흔들리면서 진동(움직임)을 감지 합니다. 진동을 감지하면 디지털신호로 Signal 을 보내게 되어 있습니다. 아두이노에서는 이 신호를 받아서 원하는 동작을 하도록 하면 되겠죠. 진동센서는 흔히 만보기에도 쓰이며 도난경보장치에도 쓰입니다. 예를 들어 자동차나 오토바이 등에 도난 경보장치가 달려 있을 경우 누군가 차를 건드리게 되면 진동이 일어납니다. 진동센서는 이것을 감지해서 사이렌을 울리거나 LED를 켜거나 합니다.


진동감지센서모듈의 모습 입니다. 진동감지부의 센서가 SW-420 입니다. 전압은 3.3V~5V 까지 이용이 가능합니다. 


연결


진동감지센서 

 아두이노

 VCC

 5V

 GND

 GND

 Signal

 D2


위와 같이 연결하고 감지의 확인을 위해 LED 하나를 디지털 13번에 연결해 주었습니다. LED의 짧은 다리는 13번핀 옆의 GND에 긴다리는 디지털 13번에 연결하면 됩니다. 원래는 저항도 같이 연결해 줘야 하지만 잠깐의 실험으로 LED가 고장나지는 않더군요. ^^


센서의 출력값은 시리얼모니터로도 관찰이 가능합니다. 세게 흔들면 숫자가 크게 나오고 살살 흔들면 숫자가 작게 나옵니다.



소스


이 소스는 진동센서의 값을 읽어서 시리얼모니터로 출력해주고 LED 를 켜줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//--- 진동센서 SW-420 Test ---//
 
int ledPin =13;
int vib =2;
 
void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(vib, INPUT); //센서핀 입력
  Serial.begin(9600); //시리얼통신 설정 9600
  Serial.println("----------------------vibration demo------------------------");
}
void loop(){
  long measurement =TP_init();
  delay(50);
  Serial.print("measurment = ");
  Serial.println(measurement);
  if (measurement > 1000){
    digitalWrite(ledPin, HIGH);
  }
  else{
    digitalWrite(ledPin, LOW); 
  }
}
 
long TP_init(){
  delay(10);
  long measurement=pulseIn (vib, HIGH);
  return measurement;
}
cs



진동을 감지할 시 시리얼모니터의 모습입니다. 값이 크게 올라갔다가 진동이 없으면 0으로 내려 옵니다. 크게 흔들수록 값이 크게 올라갑니다.



센서를 흔들어서 진동이 감지되면 LED가 켜집니다. 



이상으로 진동감지센서에 대해서 알아보았습니다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요