Arduino Uno 로 자석 감지센서를 사용해서 서보모터와 LED를 제어해 보는 프로젝트 입니다

<A3144E (Hall) 홀 센서 와 (Reed Switch) 리드 스위치 센서 이미지>
자석을 감지하기 위해서 자성감지 기능이 있는 A3144E (Hall) 홀 센서나 (Reed Switch) 리드스위치 센서를
사용해서 테스트 합니다
동작전압 3.3~5V 로 OUT은 디지털 출력이 가능합니다 (A3144E 홀센서는 아날로그 출력도 가능합니다)
아두이노등의 마이크로 컨트롤 보드에 연결해서 사용하기에 적합하며 문열림 감지등 자석감지 센서로 활용할 수 있습니다
A3144E (Hall) 홀 센서는 자성을 감지하는 Hall 방향성이 있으므로 주의해서 사용합니다
서보모터(Servo Motor)는 모터와 제어구동보드(적당한 제어 회로와 알고리즘)를 포함하는 것으로
모터 자체만 가지고 서보모터라고 부르지 않습니다
서보모터의 개념은 모터와 구동 시스템 까지 포함하는 것으로 흔히 볼수 있는 공작기계, CCTV 카메라, 캠코더, 프린터 등에서사용되는 모터와 같이 명령에 따라 정확한 위치와 속도를 제어할수 있는 모터를 서보모터라고 부릅니다
서보 모터는 일반 모터와 달리 회전 반경이 정해져 있습니다. 종류에 따라 다르지만 일반적으로 약 0~270도 범위의 회전각을 가집니다
서보모터의 회전 각도는 아래 그림과 같이 PWM (펄스폭변조) 방식으로 제어합니다

다양한 종류의 서보 모터가 있지만 SG90 마이크로 서보 모터를 사용해 보겠습니다
SG90 마이크로 서보 모터 Servo Motor 는 9g 급으로 동작 전압이 4.2V ~ 6V 로 아두이노로 테스트 하기 적합 합니다
회전각도 는 180도 이며 동작 속도는 0.1 s/60 degree 입니다


사용된 부품
Arduino Uno R3 (Italy)
미니 브래드 보드
A3144E (Hall) 홀 센서
Reed Switch 리드스위치 센서
Active Buzzer
점퍼케이블
5mm LED
막대저항 220 Ohm
사용된 키트
아두이노 자석감지 센서 키트
구성 배선도

사용된 예제소스
주의사항
A3144E (Hall) 홀 센서는 자성을 감지하는 Hall 방향성이 있으므로 주의해서 사용합니다
가장 주의해야 할 점은 마이크로 서보모터이긴 하지만 SG90 서보모터 역시 제대로 동작하려면
안정적인 전압과 전류가 필요하므로 IR 적외선 장애물 감지센서와 별도의 전압으로 5V로 연결해 줍니다
IR 적외선 장애물 감지센서는 3.3V 에도 동작하므로 SG90 서보모터와 별도로 3.3V로 연결해 줍니다
예제코드를 살펴보면
#include <Servo.h>
기본 Servo.h 라이브러리를 사용합니다
int pinMagnetic=5; //Magnetic sensor digital pin
int pinServo=3; //servo motor pin
int pinLED=2;
int val=0;
자석 감지센서는 아두이노 5번핀
SG90 서보모터는 아두이노 3번핀
LED는 아두이노 2번핀에 연결합니다
void setup(){
Serv.attach(pinServo);
pinMode(pinLED,OUTPUT);
}
셋업에서 센싱값을 받아서 서보모터와 LED를 동작시킵니다
void loop(){
val = digitalRead(pinMagnetic);
if (val ==0) {
Serv.write(180);
digitalWrite(pinLED,HIGH);
delay(100);
}
else{
Serv.write(10);
digitalWrite(pinLED,LOW);
delay(100);
}
}
루프에서 if문을 사용해서 디지털 센서값을 읽어서
자석이 감지되었을 때는 서보모터가 150도로 회전하면서 LED가 HIGH로 점등 됩니다
else 그외의 경우 서보모터가 10도로 복귀하면 LED는 LOW로 꺼집니다
예제코드의 Serv.write(10); 10도 또는 Serv.write(150); 150도를 적당하게 바꾸어서 테스트 가능합니다
하단 동영상에서는 180도로 수정해서도 테스트 해보았습니다
프로젝트 동영상 - A3144E 홀센서를 사용해서 LED와 서보모터 제어
프로젝트 동영상 - Reed Switch 리드스위치 센서를 사용해서 LED와 서보모터 제어
이렇게 간단하게 홀센서나 리드스위치센서로 자석을 감지하거나 활용해
서보모터를 제어해서 도어락이나 기타 기구물을 제어하는 시스템을 구성할 수 있습니다
참고로 자석감지 센서를 사용해서 SG90서보모터 없이 LED만 제어하는 구성배선도입니다
구성 배선도

사용된 예제소스
예제코드는 너무 간단해서 간략하게 설명하겠습니다
int led = 3;
int sensor = 2;
void setup()
{
pinMode(led, OUTPUT);
pinMode(sensor, INPUT);
}
void loop()
{
if( digitalRead(sensor) == LOW )
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
delay(100);
}
2번핀으로 자석 감지센서의 자성을 감지해서
3번에 연결된 LED가 자석 감지시 LED HIGH 켜짐, 그밖의 미감지시 LED LOW 꺼짐
으로 동작합니다
예제코드의 HIGH , LOW를 변경해서 LED를 켜지거나 꺼지거나 원하는 대로 동작하게 할수 있습니다
프로젝트 동영상- A3144E 홀센서를 사용해서 LED 제어
프로젝트 동영상 - Reed Switch 리드스위치 센서를 사용해서 LED 제어
이어서 추가로 Arduino Uno 로 자석감지 센서를 사용해서 LED와 Buzzer를 제어해 보는 프로젝트입니다
구성 배선도

사용된 예제소스
주의사항
A3144E (Hall) 홀 센서는 자성을 감지하는 Hall 방향성이 있으므로 주의해서 사용합니다
예제코드를 살펴보면
int Led = 7; // define Blue LED pin
int Led2 = 8; // define Red LED pin
int Buzzer = 5; // define Buzzer pin
int buttonpin = 3; // define Magnetic Sensor signal pin
int val; //define a numeric variable
블루 LED는 아두이노 7번핀, 레드 LED는 아두이노 8번핀, 부저는 아두이노 5번핀, DO핀은 아두이노 3번핀에 배선합니다
void setup()
{
pinMode(Led, OUTPUT); // Blue LED pin as output
pinMode(Led2, OUTPUT); // Red LED pin as output
pinMode(Buzzer, OUTPUT); // Buzzer pin as output
pinMode(buttonpin, INPUT); //Magnetic Sensor as input
}
셋업에서 센서값을 입력받아서, Led, Led2, Buzzer 로 출력해 줍니다
void loop()
{
val=digitalRead(buttonpin); //read the value of the sensor
if(val == LOW) // turn on LED when sensor is detected
{
digitalWrite(Led,LOW);
digitalWrite(Led2,HIGH);
digitalWrite(Buzzer,HIGH);
}
else
{
digitalWrite(Led,HIGH);
digitalWrite(Led2,LOW);
digitalWrite(Buzzer,LOW);
}
}
자석감지 센서는 보통 HIGH 상태이고 자석이 감지되면 LOW로 동작합니다
if(val == LOW) // turn on LED when sensor is detected
루프에서 if문을 사용해서 자석이 감지될시 Led2 레드 LED가 HIGH 로 점등되고 부저가 HIGH로 울립니다
else 그밖의 자석이 미감지될시 Led 블루 LED가 HIGH 로 점등되고 Led2 레드 LED 와 부저는 LOW로 꺼집니다
프로젝트 동영상 - A3144E 홀센서를 사용해서 LED 와 Buzzer 제어
프로젝트 동영상 - Reed Switch 리드스위치 센서를 사용해서 LED 와 Buzzer 제어
'Arduino(아두이노) 활용 강좌' 카테고리의 다른 글
| Arduino Uno 로 1X4 키패드 모듈을 사용해서 8X8 도트 매트릭스 제어해 보기 (0) | 2026.03.09 |
|---|---|
| Arduino Uno 로 RCWL-0516 레이더 모션센서와 MAX7219 매트릭스를 사용해서 모션 감지기 만들어 보기 (0) | 2025.07.25 |
| Arduino Uno 로 0.96인치 I2C OLED를 사용해서 StarWars Game 만들어 보기 (2) | 2025.07.23 |
| Arduino Uno 로 1602 캐릭터 LCD와 LCD 쉴드를 사용해서 공룡 점프 게임 만들어 보기 (1) | 2025.07.22 |
| Arduino Uno 로 아날로그 TDS 메터 모듈을 사용해서 수질 측정해 보기 (1) | 2024.12.05 |
댓글