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

Arduino Uno 로 TCRT5000 검정색&흰색 라인 감지센서를 사용해서 서보모터와 LED를 제어해 보기

by 오마이엔지니어 2023. 12. 26.
반응형

Arduino Uno 로 TCRT5000 검정색&흰색 라인 감지센서를 사용해서 서보모터와 LED를 제어해 보는 프로젝트 입니다

<TCRT5000 장애물 감지센서 검정색&흰색 라인 감지 모듈 이미지>

TCRT5000 장애물 감지센서 모듈은 적외선 송수신기로 구성되어 있어 대상으로 부터 반사된 
적외선을 이용하여 장애물을 감지할수 있으며 검정색&흰색 라인을 감지할 수 있습니다
아두이노 스마트 카 라인트레이서 등의 다양한 적외선 장애물 감지 동작 테스트와
모니터링에 적합합니다
신호는 평상시에는 HIGH 출력 상태이며 적외선이 감지되면  LOW가 출력됩니다 

서보모터(Servo Motor)는 모터와 제어구동보드(적당한 제어 회로와 알고리즘)를 포함하는 것으로
모터 자체만 가지고 서보모터라고 부르지 않습니다
서보모터의 개념은 모터와 구동 시스템 까지 포함하는 것으로 흔히 볼수 있는 공작기계, CCTV 카메라, 캠코더, 프린터 등에서
사용되는 모터와 같이 명령에 따라 정확한 위치와 속도를 제어할수 있는 모터를 서보모터라고 부릅니다
서보 모터는 일반 모터와 달리 회전 반경이 정해져 있습니다종류에 따라 다르지만 일반적으로 약 0~270도 범위의 회전각을 가집니다
서보모터의 회전 각도는 아래 그림과 같이 PWM (펄스폭변조방식으로 제어합니다

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


사용된 부품

Arduino Uno R3 (Italy)

미니 브래드 보드

SG90 마이크로 서보모터

TCRT5000 적외선 장애물 감지센서 모듈
Active Buzzer
점퍼케이블

5mm LED
막대저항 220 Ohm

사용된 키트

아두이노 적외선 라인감지 센서 키트



구성 배선도 

사용된 예제소스 

TCRT5000 Servo.txt
0.00MB


주의사항
TCRT5000 라인 감지센서 모듈의 신호는 평상시에는 HIGH 출력 상태이며 적외선이 감지되면  LOW가 출력됩니다 

가장 주의해야 할 점은 마이크로 서보모터이긴 하지만 SG90 서보모터 역시 제대로 동작하려면
안정적인 전압과 전류가 필요하므로 TCRT5000 라인 감지 센서와 별도의 전압으로 5V로 연결해 줍니다
TCRT5000 라인 감지 센서 모듈 3.3V 에도 동작하므로 SG90 서보모터와 별도로 3.3V로 연결해 줍니다

예제코드를 살펴보면
 #include <Servo.h>
기본 Servo.h 라이브러리를 사용합니다

 
  int pinTCRT5000=5; //TCRT5000 digital pin
  int pinServo=3; //servo motor pin
  int pinLED=2;
  int val=0;

TCRT5000 라인 감지 센서 모듈은 아두이노 5번핀
SG90 서보모터는 아두이노 3번핀

LED는 아두이노 2번핀에 연결합니다

void setup(){
  Serv.attach(pinServo);
  pinMode(pinLED,OUTPUT);
}
셋업에서 센싱값을 받아서 서보모터와 LED를 동작시킵니다


  void loop(){
    val = digitalRead(pinCrash);
  
    if (val ==0) { 
      Serv.write(10);
      digitalWrite(pinLED,HIGH);
      delay(100);
    }
    else{
      Serv.write(150);
      digitalWrite(pinLED,LOW);
      delay(100);
    }
  }
루프에서 if문을 사용해서 디지털 센서값을 읽어서
적외선이 감지되었을 때는 서보모터가 10도로 복귀하며 LED가 켜집니다

else문을 사용해서 그밖의 적외선이 감지되지 않았을 때는 서보모터가 150도로 움직이고 LED가 꺼집니다

예제코드의 Serv.write(10);
10도 또는  Serv.write(150); 150도를 적당하게 바꾸어서 테스트 가능합니다
하단 동영상에서는 180도로 수정해서도 테스트 해보았습니다

프로젝트 동영상

 

이렇게 간단하게 라인감지 센서 모듈로 라인을 감지하거나 장애물을 감지해 서보모터를 움직여 도어락이나

기타 기구물의 제어 시스템을 구성할 수 있습니다

참고로 TCRT5000 적외선 라인감지 모듈을 사용해서 SG90서보모터 없이 LED만 제어하는 구성배선도입니다

구성 배선도
 

사용된 예제소스  

TCRT5000 LED.txt
0.00MB


예제코드는 너무 간단해서 간략하게 설명하겠습니다

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번핀으로 TCRT5000 라인감지 센서 모듈의 적외선을 감지해서
3번에 연결된 LED가 적외선 감지시 LED HIGH 켜짐, 그밖의 미감지시 LED LOW 꺼짐
으로 동작합니다

프로젝트 동영상



이어서 추가로 Arduino Uno 로 TCRT5000 검정색&흰색 라인 감지센서를 사용해서
LED와 Buzzer를

제어해 보는 프로젝트입니다

구성 배선도 

사용된 예제소스 

TCRT5000 LED Buzzer.txt
0.00MB


주의사항
TCRT5000 라인 감지센서 모듈의 신호는 평상시에는 HIGH 출력 상태이며 적외선이 감지되면  LOW가 출력됩니다 

예제코드를 살펴보면

int Led = 7; // define Blue LED pin
int Led2 = 8; // define Red LED pin
int Buzzer = 5; // define Buzzer pin
int buttonpin = 3; // define TCRT5000 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); // TCRT5000 pin 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 blocked 
  {
    digitalWrite(Led,HIGH);
    digitalWrite(Led2,LOW);
    digitalWrite(Buzzer,HIGH);
  }
  else
  {
    digitalWrite(Led,LOW);
    digitalWrite(Led2,HIGH);
    digitalWrite(Buzzer,LOW);
  }
}

루프에서 if문을 사용해서 적외선이 감지될시 블루 LED(Led)가 와 부저(Buzzer)가 켜지고
레드 LED(Led2)가 꺼집니다
else문을 사용해서 그밖의 경우 적외선이 감지되지 않을시 블루 LED(Led)와 Buzzer가 꺼지고

레드 LED(Led2) 가 켜집니다


프로젝트 동영상

반응형

댓글