본문 바로가기
정보&팁/전기 & 전자

내가 보기 위해 만든 로봇의 모터 운용을 위한 CAN 통신 정리

by 가능성의 꾸꾸 2025. 3. 10.
728x90
반응형

 

🚗 최적화된 프로토콜 설계 제안

📌 구성요소 재정리

  • 로봇 종류: 메카넘 휠 로봇 (전방향 이동 가능)
  • 모터 종류: BLDC 모터 4개
  • 제어 방식: 속도 제어 기반 (부드러운 가·감속 필수)
  • CAN 네트워크 구조:
    • 메인 컨트롤러 보드(호스트) 1개 ↔ 모터 컨트롤러 보드 4개
  • 센서: 각 모터에 엔코더 내장, IMU 센서 보유
  • 안전 기능: 비상정지 기능 필수

📌 추천 CAN 프로토콜 데이터 항목

1️⃣ 호스트 → 모터 컨트롤러로 보내는 명령 패킷

데이터 항목 설명 데이터 크기
제어 모드 속도제어 (기본) / 정지모드 / 에러모드 진입 1 byte
목표 속도 원하는 바퀴 속도 (RPM 단위) 2 byte
가속도 설정 목표 속도에 도달할 때의 가속도 설정값 1 byte
감속도 설정 속도를 줄일 때 감속도의 설정값 1 byte
비상 정지 명령 긴급정지 플래그 (0:정상, 1:비상정지) 1 byte
예약(Reserved) 향후 추가 기능을 위해 예비 2 byte
  • 전체 데이터 길이: 8 bytes (CAN 기본 데이터 길이)

🔸 데이터 예시 (호스트→모터 컨트롤러)

CAN ID (송신 ID) 제어모드 목표속도 가속도 감속도 비상정지 예약
0x101 0x01 150 RPM 0x0A 0x0A 0x00 0x00

2️⃣ 모터 컨트롤러 → 호스트로 보내는 상태 피드백 패킷

데이터 항목 설명 데이터 크기
현재 속도 현재 실제 바퀴 속도 (RPM 단위) 2 byte
엔코더 위치 현재 엔코더 위치 (count) 2 byte
모터 전류 모터 구동 시 소모 전류 (mA) 1 byte
모터 온도 BLDC 모터 또는 드라이버 온도 (℃) 1 byte
에러 상태 코드 비트 기반으로 에러 표현 (과열, 과전류, 통신에러 등) 1 byte
예약(Reserved) 향후 확장을 위한 예비 공간 1 byte
  • 전체 데이터 길이: 8 bytes

🔸 데이터 예시 (모터 컨트롤러→호스트)

CAN ID (수신 ID) 현재 속도 엔코더 위치 모터 전류 온도 에러 상태 예약
0x201 148 RPM 1024 count 1.5A 40℃ 0x00 0x00

📌 CAN ID 추천 규칙

효율적인 관리와 확장성을 위해 CAN ID는 명확한 규칙으로 나누는 게 좋습니다.

  • 호스트 → 모터 (명령)
  • 0x101: 모터 1번 (좌측 전방) 0x102: 모터 2번 (우측 전방) 0x103: 모터 3번 (좌측 후방) 0x104: 모터 4번 (우측 후방)
  • 모터 → 호스트 (상태피드백)
  • 0x201: 모터 1번 피드백 0x202: 모터 2번 피드백 0x203: 모터 3번 피드백 0x204: 모터 4번 피드백

📌 추가 고려 사항 및 권장 기능

🔹 IMU 센서 연동

  • IMU에서 얻는 자세 데이터 (Yaw, Pitch, Roll 또는 속도)를 활용해 추가 보정 및 자세 안정화 가능
  • IMU 데이터는 메인보드 내부에서 처리하여 속도 명령을 각 모터에 다르게 전달하면 정밀한 움직임 제어 가능

🔹 비상정지 처리 방법

  • 비상정지 명령 수신 시 모든 모터가 즉각 감속 또는 즉시 제로 속도로 설정
  • 긴급상황을 위해 주기적 비상정지 신호 검증 (CAN 버스 이상 시 안전모드 진입)

🔹 에러 코드 구성 예시 (1byte, bit flag 형태)

bit0: 통신 에러 (Communication Error)
bit1: 모터 과열 (Motor Overheat)
bit2: 과전류 (Over Current)
bit3: 엔코더 에러 (Encoder Error)
bit4: 저전압 (Under Voltage)
bit5~7: Reserved

📌 제안된 프로토콜의 장점 및 기대효과

  • 부드러운 가·감속 가능 (정확한 가속/감속 설정 데이터 포함)
  • 실시간 모니터링 및 빠른 에러 처리 가능 (피드백 데이터에 명확한 상태 포함)
  • 향후 확장성을 위한 예비 필드 존재
  • CAN 버스 효율적 사용 (8바이트 최적화)

이 설계를 바탕으로, 로봇 시스템의 요구 사항을 더 반영하거나 수정할 부분이 있으면 언제든 말씀해주세요!

 

728x90