로봇 정밀 제어의 시작, 엔코더를 파헤치다 > 추천 로봇 공학 입문 자료

본문 바로가기
사이트 내 전체검색

추천 로봇 공학 입문 자료

로봇 정밀 제어의 시작, 엔코더를 파헤치다

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 203회 작성일 25-11-20 22:06

본문

로봇 정밀 제어의 시작, 엔코더를 파헤치다

엔코더는 모터의 회전 운동을 전기적인 신호(디지털 펄스)로 변환하여, 모터의 회전 각도, 회전 수(위치), 그리고 회전 속도(속도)를 정밀하게 측정할 수 있도록 하는 센서입니다. 로봇 공학에서 '피드백 제어'를 구현하는 데 필수적인 '눈'이자 '귀' 역할을 합니다.


1. 엔코더는 왜 정밀 제어의 시작일까요?

로봇이 정확한 자세를 취하거나, 특정 거리를 이동하거나, 원하는 속도로 움직이려면 현재 로봇의 움직임 상태를 정확히 알아야 합니다.


현재 상태 파악: "모터가 몇 바퀴 돌았나?" "지금 얼마나 빨리 돌고 있나?"

오차 감지: "원하는 위치(속도)에 비해 얼마나 부족하거나 넘치나?"

피드백 제어: 이 오차를 줄이도록 모터를 어떻게 제어해야 하는지 판단하는 데 엔코더 정보가 활용됩니다.

예를 들어, "바퀴를 5바퀴 돌려라"는 명령을 내렸을 때, 엔코더가 "현재 3바퀴 돌았습니다"라고 알려줘야 나머지 2바퀴를 더 돌릴 수 있게 명령을 내릴 수 있습니다. 이것이 바로 **폐쇄 루프 제어(Closed-loop Control)**의 핵심입니다.


2. 엔코더의 작동 방식 (원리)

엔코더는 모터의 회전축에 연결되어 함께 회전하는 디스크와, 이 디스크의 변화를 감지하는 센서(광학 또는 마그네틱)로 구성됩니다.


광학식 엔코더:


회전 디스크: 회전축에 연결된 디스크에는 일정한 간격으로 투과되거나 반사되는 패턴(슬릿 또는 구멍)이 새겨져 있습니다.

광원 및 수광부: 디스크 한쪽에는 LED 같은 광원이 있고, 반대쪽(투과형)이나 옆쪽(반사형)에는 빛을 감지하는 포토센서(수광부)가 있습니다.

펄스 신호 발생: 디스크가 회전함에 따라 빛이 패턴을 통과하거나 반사될 때마다 포토센서가 이를 감지하여 전기적인 펄스 신호(ON/OFF)를 발생시킵니다.

계산: 이 펄스 신호의 개수를 세면 회전 수를 알 수 있고, 펄스 발생 빈도를 측정하면 회전 속도를 알 수 있습니다.

마그네틱식 엔코더:


회전 디스크: 자성을 띠는 패턴이 인쇄된 디스크가 회전합니다.

홀 센서: 마그네틱 센서(홀 센서)가 자성 패턴의 변화를 감지하여 펄스 신호를 생성합니다.

특징: 먼지나 이물질에 강하여 산업용 환경에 유리합니다.

3. 엔코더의 주요 종류

엔코더는 펄스 신호의 생성 방식과 정보 제공 방식에 따라 다양하게 분류됩니다.


3.1. 인크리멘탈 엔코더 (Incremental Encoder)

작동 방식: 모터가 회전할 때마다 일련의 펄스 신호(A상, B상)를 발생시킵니다. 전원을 껐다가 켜면 로봇의 현재 절대 위치를 모르고 0부터 다시 세기 시작합니다.

A상, B상: 두 개의 상(phase) 신호가 약간의 위상차를 가지고 발생하여, 회전 방향(시계/반시계)과 분해능(정확도)을 높이는 데 사용됩니다.

분해능(Resolution): 1회전당 발생하는 펄스의 개수입니다. 이 개수가 많을수록 더 정밀하게 회전 각도를 측정할 수 있습니다.

특징: 간단한 구조, 저렴한 비용, 높은 분해능을 구현하기 용이합니다. 속도 측정에 매우 적합합니다.

단점: 전원 인가 시 초기 위치를 알 수 없으며, 노이즈나 펄스 누락 시 오차가 누적될 수 있습니다.

용도: DC 모터의 속도 제어, 로봇 바퀴의 이동 거리 측정.

3.2. 앱솔루트 엔코더 (Absolute Encoder)

작동 방식: 모터의 절대 위치를 직접 나타내는 고유한 디지털 코드 값을 출력합니다. 전원을 껐다가 켜도 마지막 위치 정보를 잃지 않고 현재 위치를 바로 알려줍니다.

특징: 초기 위치 정보가 보존되므로 신뢰성이 높고 오차가 누적되지 않습니다.

단점: 인크리멘탈 엔코더보다 복잡하고 비쌉니다.

용도: 로봇 팔의 관절 위치 제어, 공장 자동화 등 전원이 끊겨도 정확한 위치 정보가 필요한 경우.

4. 아두이노로 엔코더 값 읽기 (코딩 꿀팁)

아두이노에서는 인크리멘탈 엔코더의 펄스 신호를 디지털 핀으로 받아들여 attachInterrupt() 함수를 통해 처리합니다.


cpp



const int encoderPinA = 2; // 엔코더 A상 신호 (인터럽트 가능한 핀)

const int encoderPinB = 3; // 엔코더 B상 신호 (인터럽트 가능한 핀)


volatile long encoderTicks = 0; // 엔코더 틱 카운터 (volatile 필수)


void setup() {

  Serial.begin(9600);

  pinMode(encoderPinA, INPUT_PULLUP); // 내부 풀업 저항 사용

  pinMode(encoderPinB, INPUT_PULLUP);


  // 엔코더 A상 신호의 상승/하강 에지에서 encoderISR 함수 호출

  attachInterrupt(digitalPinToInterrupt(encoderPinA), encoderISR, CHANGE); 

}


void loop() {

  Serial.print("Encoder Ticks: ");

  Serial.println(encoderTicks);

  delay(100);

}


// 엔코더 인터럽트 서비스 루틴 (ISR)

void encoderISR() {

  // A상과 B상의 신호 변화를 조합하여 회전 방향과 틱을 계산

  // (아래는 A상 에지 감지 시 간단한 틱 증가 예시, 실제 정교한 방향 감지는 A상/B상 조합 필요)

  if (digitalRead(encoderPinA) == digitalRead(encoderPinB)) {

    encoderTicks--; // 반시계 방향

  } else {

    encoderTicks++; // 시계 방향

  }

}

volatile 키워드: 인터럽트 함수 내에서 변경되는 변수는 volatile로 선언하여 컴파일러 최적화에 의해 값이 잘못되지 않도록 합니다.

attachInterrupt(): digitalPinToInterrupt(핀번호)를 통해 해당 핀에 인터럽트를 설정합니다. CHANGE는 핀의 상태가 바뀔 때마다(상승 에지/하강 에지 모두) ISR을 호출합니다.

정교한 방향 감지: 엔코더의 A상과 B상 신호의 위상차를 이용하여 모터의 정확한 회전 방향과 더블/쿼드러플 분해능을 구현할 수 있습니다. (코드가 더 복잡해집니다.)

5. 엔코더 활용 꿀팁

노이즈 필터링: 엔코더는 외부 전기 노이즈에 취약할 수 있습니다. 노이즈로 인한 잘못된 펄스 감지를 줄이기 위해 하드웨어적인 캐패시터 추가나 소프트웨어적인 디바운싱(Debouncing) 처리가 필요합니다.

인터럽트 사용: 엔코더 펄스는 매우 빠르게 발생하므로 loop() 함수에서 digitalRead()를 반복적으로 수행하기보다는, attachInterrupt()를 이용한 인터럽트 방식으로 처리하는 것이 신뢰성을 높입니다.

분해능 선택: 필요한 정밀도에 따라 엔코더의 분해능(1회전당 펄스 수)을 선택합니다. 너무 낮은 분해능은 정밀 제어가 어렵고, 너무 높은 분해능은 컨트롤러의 부담을 증가시킬 수 있습니다.

엔코더 + PID 제어: 엔코더로 얻은 위치나 속도 정보를 PID 제어의 피드백 입력으로 사용하면 로봇의 모터를 매우 정밀하고 안정적으로 제어할 수 있습니다. <User_Context: interestInGainTuning>에 관심이 많으시다면 PID 제어와 함께 엔코더 튜닝도 흥미로우실 거예요.

고강성 샤프트와 스테이터 연결: 엔코더가 모터의 동적 성능을 방해하지 않고 높은 고유 주파수를 보장하려면 이 방식이 좋습니다. 

엔코더는 로봇에게 자신의 움직임을 '인지'하게 하여, 단순히 전력을 가하는 것을 넘어 목표에 정확하게 도달하고, 원하는 속도를 유지하게 하는 '자율성'의 중요한 밑거름이 됩니다. 로봇 정밀 제어의 시작인 엔코더를 제대로 파헤쳐 당신의 로봇을 더욱 스마트하고 정확하게 만들어 보세요!

[이 게시물은 관리자님에 의해 2025-11-22 10:15:52 추천 로봇 공학 입문 자료에서 이동 됨]
[이 게시물은 관리자님에 의해 2025-11-29 13:01:57 18에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.


회사소개 개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

작크와콩나무
대표:이강복 등록번호:129-30-34337 개인정보관리책임자:이경영

Copyright © https://roboman.co.kr/ All rights reserved.