본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 LJ12A34Z/BX 근접 스위치 센서를 사용해서 근접 금속감지 경보기 만들어 보기

by 오마이엔지니어 2018. 11. 10.
반응형

Arduino Uno 로 LJ12A34Z/BX 근접 스위치 센서를 사용해서 금속 근접 감지시 출력값 변화를 확인해 보고 
근접 금속감지 경보기를 만들어 보는 프로젝트 입니다



<LJ12A34Z/BX 근접 스위치 센서 이미지>

LJ12A34Z/BX 근접 스위치 센서는 금속 물체의 비접촉 감지에 사용됩니다

감지 표면의 가까운 주변에 전자기장을 생성하는 코일 및 오실레이터가 장착되어 있어
작동 영역에 금속 물체 (작동기)가 있으면 진동 진폭이 감소합니다

이러한 발진의 상승 또는 하강은 센서의 출력을 변화시키는 임계 회로에 의해 식별됩니다
이러한 원리로 근접 금속 물체를 감지해서 출력값 변화를 확인해 볼 수 있습니다

동작전압 6~36V, NPN 노멀 오픈 타입, 감지거리 0~4mm 입니다


사용된 부품
아두이노 우노
LJ12A34Z/BX 근접 스위치 센서

점퍼케이블
미니 브래드보드
막대저항 220Ohm - 2개
5mm LED 블루
5mm LED 레드
Active Buzzer 5V

구성 배선도-금속물체 지접촉 감지시 출력값 변화 확인해 보기



구성 배선도-근접 금속물체 감지 경보기 만들어 보기


사용된 예제파일

example code.txt

example code2.txt


주의사항

example code 가 '금속 물체 비접촉 감지시 출력값 변화 확인해 보기' 예제 입니다
example code2 가 '근접 금속물체 감지 경보기 만들어 보기' 예제 입니다

첫번째 예제코드는 아주 간단합니다

void setup() {

  Serial.begin(9600);

}  

void loop() {

  int sensorValue = analogRead(A0);

  Serial.println(sensorValue);

  delay(100);

}


시리얼 통신 속도 9600 이고 A0 핀으로 아날로그 출력값을 시리얼 모니터에 출력해 줍니다
아두이노 우노의 아날로그 출력값 범위는 0~1023 입니다 (아두이노 기초 강좌 카테고리 확인)

시리얼 모니터로 0~1023 범위의 출력값을 확인할수 있는데
위 센서 사양을 보면 알수 있듯이 NPN 노멀오픈 타입이라 금속 물체가 감지 되지 않을때는 시리얼 모니터에

아날로그 최대 출력값인 1023 으로 출력값이 나옵니다
금속 물체가 감지되면 출력값이 변합니다
(센서 모듈 뒤쪽에 LED가 장착되어 있는데 금속 물체가 감지되면 LED가 점등 됩니다)
물론 금속 물체가 센서 감지표면으로 부터 0~4mm 감지거리 내에 비접촉 또는 접촉으로 감지가 되어야 동작 합니다

두번째 예제코드를 살펴보겠습니다

int sensorVal;

void setup(){
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);

  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}
예제 코드를 살펴보면 센서 시그널 출력핀은 2번, LED는 11번과 12번, 부저는 13번에 설정되어 있는것을 알 수 있습니다
2번 핀은 풀업저항으로 연결할 수 있음이 확인 됩니다 (테스트에서는 풀업저항 없이 테스트 했습니다) 

(풀업저항이란? 아두이노 기초 강좌 카테고리 확인)

void loop(){

  sensorVal = digitalRead(2);
  // The Logic is inverted a low on pin 2 means a sinking switch is activated
  // and a high on pin 2 means the switch is unactivated and pulled up by the internal resistor
  // this is not a problem since the controller can interpret the data any way we tell it to

  if (sensorVal == HIGH) {
    digitalWrite(11, LOW);
    digitalWrite(12, HIGH);
    noTone(13);

  }
  else { //sensorVal = LOW
    digitalWrite(11, HIGH);
    digitalWrite(12, LOW);
    tone(13,1000);
  }
}
센서에 금속 물체가 감지되지 않았을 땐(노멀 오픈 타입이라 HIGH) 12번에 연결된 LED가 점등됩니다
센서에 금속 물체가 감지되었을 땐 (노멀 오픈 타입이라 LOW) 11번에 연결된 LED가 점등됩니다
부저톤이 (13,1000) 으로 설정되어 있습니다 (소리가 작다고 느낀다면 변경해 봅시다)

프로젝트 동영상-금속물체 지접촉 감지시 출력값 변화 확인해 보기


프로젝트 동영상-근접 금속물체 감지 경보기 만들어 보기


example code2.txt
0.0MB
example code.txt
0.0MB
반응형

댓글