preface
산업용 장비를 다루다가 엔코더를 다룰 일이 있어 활용법을 알아보다 생각보다 정보가 너무 없어 이렇게 간단히 내용을 남겨둡니다. 엔코더는 산업 현장에서 중요하게 쓰이는 요소 중 하나이지만, 관련 사전 지식이 없다면 사용 자체가 막막한 경우가 많습니다. 이 포스팅에서는 엔코더의 종류와 확인해야 할 요소, 활용 사례, 간단히 연결해서 사용하는 방법까지 다뤄보겠습니다.
엔코더 종류
- absolute: 장비의 절대 각도를 측정합니다.
- incremental: 장비의 회전 수에 상대적인 위치를 측정합니다. 말 그대로 움직인 양에 따라 그 값이 늘어나거나 줄어듭니다.
엔코더 활용 사례
- 로봇 팔이나 CNC 기계와 같은 자동화 장비에서 위치와 속도 측정
- 엘리베이터, 에스컬레이터 등의 운송 장비에서 위치 측정
- 터빈, 발전기, 모터 등 회전하는 장비에서 회전 수 측정
- 자동차나 기계 제어장치에서 속도 측정'
기본 원리
우리가 생각해볼 수 있는 가장 간단한 엔코더는 VCC, GND, A, B 4개의 라인으로 구성되어 있습니다. 여기에서 뭘 하느냐에 따라 선이 더 늘어나거나 줄어듭니다. 엔코더의 축이 움직임에 따라 a상과 b상에 값이 다르게 나타납니다. 위 사진을 보면, a상이 HIGH 이고, b 상이 0이 되는 시점이 탐지되는것으로 엔코더가 시계방향으로 돌고 있음을 파악할 수 있습니다. 그 반대 경우도 마찬가지입니다.
펄스가 1회전에 단 한번 나오는Z 상이 있는 경우도 있습니다.
엔코더 사용 시 확인해야 할 요소
- 분해능(PPR, pulse per revolution) : 1 바퀴당 몇 개의 펄스를 발생하는지를 나타냅니다. 일반적으로 이 값이 클수록 더 작은 각도 변화를 감지할 수 있습니다.
- 출력 타입
- push-pull : 일반적인 센서가 값을 출력하듯, 1개의 선에서만 값이 출력됩니다.
- line-driver(RS-422 compatible) : 이 방식은 차동(differential) 신호라고도 불리며, RS422에서 통용되는 방식입니다. A라인 하나에서 5V를 온전히 보내는 대신, 하나의 신호선을 두개로 나눠, A 라인에서 +2.5V가 나온다면, A/ 상에서는 -2.5V가 나오도록 합니다. 노이즈에 강하다는 특징을 가지고 있습니다. 물론 신호 하나를 두 선으로 출력한다는 게 당황스러울 수 있습니다. 이런 형태의 엔코더는 Push-Pull 방식처럼 A, B 선만 연결해서 사용해도 작동은 합니다. 그러나 정상적인 출력과 노이즈 제거를 위해서는 이렇게 출력된 차동 신호(-2.5v~2.5v)를 일반 신호(0~5V)로 바꿔주는 line receiver 회로(AM26LV) 혹은 RS422 신호를 받을 수 있는 장치가 필요합니다. line receiver IC 1개가 최대 4개까지의 차동 신호를 받을 수 있으니 전용 회로 사용을 추천드립니다.
Pinout
VCC, GND, A, B : AB 타입 push-pull
VCC, GND, A, A/, B,B/ : AB 타입 linedriver
VCC, GND, A, A/, B,B/ , Z, Z/: ABZ 타입 linedriver
Arduino In Use
엔코더를 산업용으로 사용하며 PLC와 함께 사용한다면, 펄스카운터를 활용하시면 되지만,
이 외 목적으로 사용하신다면 난이도가 있습니다. 간단한 로보틱스 프로젝트 하나에 엔코더 값을 얻겠다고 PLC를 프로젝트에 넣는 것은 바람직하지 않습니다. 엔코더 값을 체크하는 가장 간단한 방법을 하나 제안드립니다. 바로 아두이노 인터럽트를 활용하는 것입니다.
Done!
다음 포스팅에서는 아두이노 인터럽트를 활용해, A, B 상을 각 인터럽트 핀에 연결후,Falling Edge를 검출해 엔코더의 방향을 체크하고, 이 방향에 따라 값을 더하거나 빼는 식으로 엔코더 값을 읽어 보겠습니다.
긴 글 읽어주셔서 감사합니다. ❤️와 광고 클릭으로 고마움을 간단히 표현할 수 있습니다.
ESP32제품 개발 및 기타 문의 | dokixote@wklabs.io 혹은 오른쪽 아래 채팅을 통해 문의