산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

이 아두이노 튜토리얼에서는 아두이노와 TCS230/TCS3200 컬러 센서를 사용해 색상을 감지하는 방법을 배웁니다. 아래 비디오를 시청하거나 작성된 튜토리얼을 읽어보세요.

TCS230/TCS3200 컬러 센서 작동 원리

TCS230은 8×8 포토다이오드 어레이로 색상 빛을 감지합니다. 전류-주파수 변환기(Current-to-Frequency Converter)로 포토다이오드 판독값을 빛 세기에 정비례하는 사각파 주파수로 변환합니다. 마지막으로 아두이노 보드로 사각파 출력을 읽어 색상 결과를 얻습니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

센서를 자세히 보면 다양한 색상을 어떻게 감지하는지 알 수 있습니다. 포토다이오드에는 세 가지 색상 필터가 있습니다: 16개는 적색 필터, 16개는 녹색 필터, 16개는 청색 필터, 나머지 16개는 필터 없는 클리어 포토다이오드입니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

각 16개 포토다이오드는 병렬로 연결되어 있어, 두 제어 핀 S2, S3로 어떤 그룹을 읽을지 선택합니다. 예를 들어 빨간색을 감지하려면 표에 따라 두 핀을 로우 로직 레벨로 설정해 16개 적색 필터 포토다이오드만 읽으면 됩니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

센서에는 출력 주파수 스케일링용 제어 핀 S0, S1도 있습니다. 주파수는 100%, 20%, 2% 세 가지 프리셋 값으로 스케일링 가능. 이 기능으로 센서 출력을 다양한 주파수 카운터나 마이크로컨트롤러에 최적화할 수 있습니다.

이제 TCS230 센서를 아두이노 보드에 연결해 보겠습니다. 회로도는 다음과 같습니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

필요한 부품은 아래 링크에서 구할 수 있습니다:

  • TCS230 TCS3200 컬러 센서…….
  • 아두이노 보드 ……………………………
  • 브레드보드와 점퍼 와이어 ………

TCS230 컬러 센서 소스 코드

설명: 센서 연결 핀 정의와 주파수 읽기용 변수 정의. setup에서 네 제어 핀을 출력으로, 센서 출력을 아두이노 입력으로 설정. 여기서는 주파수 스케일링을 20%로 설정하고 시리얼 통신 시작으로 시리얼 모니터에 결과 표시.

loop에서 적색 필터 포토다이오드 읽기로 시작: S2, S3를 로우 레벨로 설정. pulseIn() 함수로 출력 주파수 읽어 "frequency" 변수에 저장. Serial.print()로 시리얼 모니터에 출력. 다른 두 색상도 제어 핀만 조정해 같은 방식으로 진행.

/* 아두이노 색상 감지 튜토리얼
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 */
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int frequency = 0;
void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  // 주파수 스케일링 20% 설정
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  Serial.begin(9600);
}
void loop() {
  // 적색 필터 포토다이오드 읽기 설정
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  // 출력 주파수 읽기
  frequency = pulseIn(sensorOut, LOW);
  // 시리얼 모니터에 값 출력
  Serial.print("R= "); // 이름 출력
  Serial.print(frequency); // 적색 주파수 출력
  Serial.print(" ");
  delay(100);
  // 녹색 필터 포토다이오드 읽기 설정
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // 청색 필터 포토다이오드 읽기 설정
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}코드 언어: Arduino (arduino)

시리얼 모니터를 실행하면 값이 나옵니다. 이 값들은 선택한 주파수 스케일링과 주변 조명에 따라 달라집니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

센서 데이터시트의 포토다이오드 분광 감도도에 따라 각 포토다이오드 유형별 감도가 달라 세 값이 다르게 나옵니다.

그럼 센서 앞에 다른 색상을 가져갔을 때 값이 어떻게 변하는지 봅시다. 예를 들어 빨간색을 가져가면 초기 값이 제 경우 70에서 25 정도로 떨어집니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

감지된 색상을 0~255 범위의 RGB 모델로 표현하려면 map() 함수로 판독값을 0~255로 매핑/변환합니다.

// 주파수 값을 0~255 RGB 모델로 재매핑
frequency = map(frequency, 25, 70, 255, 0);

70은 0으로, 25는 255로 매핑. 다른 두 색상도 같은 방식.

이 예제의 최종 소스 코드:

/* 아두이노 색상 감지 튜토리얼
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 */
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int frequency = 0;
void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  // 주파수 스케일링 20% 설정
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  Serial.begin(9600);
}
void loop() {
  // 적색 필터 포토다이오드 읽기
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  // 주파수 값을 0~255 RGB 모델로 재매핑
  frequency = map(frequency, 25, 72, 255, 0);
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // 녹색 필터 포토다이오드 읽기
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 30, 90, 255, 0);
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // 청색 필터 포토다이오드 읽기
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 70, 255, 0);
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}코드 언어: Arduino (arduino)

색상 정확도는 완벽하지 않지만 간단한 프로젝트에는 충분합니다. 다음 영상에서는 TCS230 컬러 센서로 아두이노 자동 색상 분류 기계를 만드는 방법을 다룰 예정입니다.

아두이노 TCS230/TCS3200 컬러 센서로 색상 감지 마스터하기 – 단계별 가이드

궁금한 점은 댓글로 남겨주시고, 제 아두이노 프로젝트 모음도 확인해 보세요.


제조공정

  1. 라즈베리 파이 조도 센서 튜토리얼 – LDR 배선하고 파이썬으로 조도 읽기
  2. 아두이노 RFID 도어락 만들기 – 단계별 완벽 가이드
  3. K30 CO2 센서: 실시간 실내 공기질 모니터링
  4. 디지털 신장계 제작: 아두이노 & 레이저 센서로 키 측정하기
  5. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드
  6. 아두이노 클라우드 센서 타워 만들기: 온도, 모션, 가스 모니터링
  7. 아두이노 RGB LED 컬러 믹서: 입문자 친화적 DIY 프로젝트
  8. 아두이노 RGB 컬러 믹서 제작 – 단계별 튜토리얼
  9. 다이내믹 뮤지컬 LED 조명으로 새해를 활기차게 맞이하세요
  10. 아두이노 입문 튜토리얼 01: 첫 프로젝트 시작하기