코드 검색

TB6612FNG와 Arduino로 DC 모터 제어하기

TB6612FNG와 Arduino로 DC 모터 제어하기

이 튜토리얼에서는 TB6612FNG 모터 드라이버 모듈을 사용하여 DC 모터의 속도와 방향을 제어하는 방법을 배웁니다. 이 설정을 통해 두 개의 모터를 독립적으로 구동할 수 있어 바퀴 달린 로봇이나 기계화 프로젝트를 만드는 실용적인 방법을 제공합니다. 또한, 펄스 폭 변조(PWM)를 사용하여 각 모터의 속도를 정확하게 제어하는 방법도 살펴보며, 프로젝트의 이동 기능을 향상시킬 수 있습니다.

TB6612FNG_motor_driver-0

이 가이드 전체에서 Arduino 보드와 TB6612FNG 브레이크아웃 보드, 그리고 두 개의 DC 기어 모터를 사용합니다. TB6612FNG는 고효율 MOSFET을 사용하기 때문에 L298N과 같은 구형 바이폴라 드라이버보다 훨씬 뛰어납니다. 이는 내구성과 전력 효율이 요구되는 배터리 구동 애플리케이션에서 특히 유용합니다. 이 드라이버는 과열이나 대형 방열판 없이도 모터에 더 많은 전력을 공급하기 때문입니다.

설정 및 프로그래밍에 대한 자세한 내용은 관련 비디오(비디오 00:00 부분)를 확인하세요.

하드웨어 설명

이 프로젝트의 주요 구성 요소는 TB6612FNG 모터 드라이버, 마이크로컨트롤러(Arduino), 그리고 두 개의 DC 모터입니다. TB6612FNG 드라이버는 Arduino의 저전류 로직 신호를 받아 배터리의 고전류 전원을 모터로 전환하는 데 사용합니다. 일반적으로 로직 전원, 모터 전원, 방향 제어(AIN1, AIN2, BIN1, BIN2), 속도 제어(PWMA, PWMB)를 위한 전용 핀이 있습니다.

TB6612FNG_motor_driver-3

DC 모터는 드라이버의 출력 핀(A01/A02 및 B01/B02)에서 변조된 전원을 받아 회전합니다. 대기 핀(STBY)은 마스터 스위치 역할을 하여 모터를 빠르게 비활성화하고 칩을 저전력 절전 상태로 전환할 수 있는 방법을 제공합니다. 각 구성 요소는 구동 시스템이 원활하고 효율적으로 작동하도록 하는 데 중요한 역할을 합니다.

데이터시트 세부 정보

제조업체

도시바(IC) / 다양한 업체(모듈)

부품 번호

TB6612FNG

로직/IO 전압

2.7V ~ 5.5V

공급 전압(VM)

2.7V ~ 15V

출력 전류(채널당)

1.2A 연속

피크 전류(채널당)

3.2A

PWM 주파수 가이드

최대 100kHz

입력 로직 임계값

High: > 2.0V, Low: < 0.8V (5V VCC 기준)

전압 강하 / RDS(on) / 포화

0.5 Ω (일반)

열 제한

열 차단 회로 내장

패키지

SSOP24 / 브레이크아웃 보드

참고 사항 / 변형

L298N을 훨씬 더 높은 효율로 대체합니다.

 

  • 적절한 전압 레벨을 확인하세요(VCC를 Arduino의 5V 또는 ESP32의 3.3V에 맞춤).

  • VM(모터 전원) 핀에 별도의 배터리 전원 공급 장치를 제공하세요.

  • 배터리, Arduino, 모듈의 모든 접지를 함께 연결하여 오작동을 방지하세요.

  • 단락을 방지하기 위해 전원을 켜기 전에 연결을 테스트하세요.

  • 항상 STBY 핀을 HIGH로 설정하세요. 그렇지 않으면 모터가 작동하지 않습니다.

배선 지침

먼저 모든 구성 요소의 전원과 접지를 연결합니다. Arduino의 접지를 브레드보드의 음극 레일에 연결합니다. 그런 다음 외부 배터리의 양극 리드를 모터 드라이버의 VM 핀에 연결하고, Arduino의 5V 핀을 드라이버의 VCC 핀에 연결합니다.

다음으로 로직 입력을 배선합니다: AIN1을 Arduino의 디지털 핀 2에, AIN2를 디지털 핀 4에, PWMA를 PWM 지원 핀(예: 디지털 핀 5)에 연결합니다. 두 번째 모터의 경우 BIN1을 7에, BIN2를 8에, PWMB를 핀 6에 연결합니다. STBY 핀을 디지털 핀 9에 연결해야 합니다.

모터 출력의 경우 첫 번째 DC 모터의 두 단자를 A01과 A02에 연결합니다. 두 번째 DC 모터를 B01과 B02에 연결합니다. 모든 접지가 공통 접지 레일에서 공유되는지 다시 확인하세요.

TB6612FNG_motor_driver-1

코드 예제 및 설명

프로젝트에 사용된 몇 가지 주요 식별자와 코드 조각을 살펴보겠습니다. 코드의 첫 번째 부분은 방향 제어, 속도 및 대기를 위한 핀을 초기화합니다:

const int AIN1 = 2;const int AIN2 = 4;const int PWMA = 5;const int STBY = 9;

여기서 AIN1AIN2는 모터 A의 방향을 제어하도록 할당되고, PWMA는 PWM을 통한 속도 제어에 사용됩니다. STBY는 Arduino가 칩을 깨우거나 절전 모드로 전환할 수 있게 합니다.

다음으로, setup 함수는 이러한 핀을 출력으로 구성하고 칩을 활성화합니다:

void setup() {  pinMode(AIN1, OUTPUT);  pinMode(AIN2, OUTPUT);  pinMode(PWMA, OUTPUT);  pinMode(STBY, OUTPUT);    // 모터 드라이버 활성화  digitalWrite(STBY, HIGH);}

pinMode() 명령은 핀을 출력 모드로 설정합니다. STBY를 HIGH로 설정하면 TB6612FNG가 활성화되어 명령을 받을 준비가 됩니다.

루프 함수에서는 모터를 최대 속도로 정방향 회전시키고, 정지한 후 역방향으로 회전시키는 명령을 내립니다:

void loop() {  // 최대 속도로 정방향 회전  digitalWrite(AIN1, HIGH);  digitalWrite(AIN2, LOW);  analogWrite(PWMA, 255);  delay(2000);  // 정지 (관성 정지)  digitalWrite(AIN1, LOW);  digitalWrite(AIN2, LOW);  analogWrite(PWMA, 0);  delay(1000);}

여기서 AIN1을 HIGH로, AIN2를 LOW로 설정하면 내부 H-브리지가 한 방향으로 전류를 흘려보냅니다. analogWrite(PWMA, 255)는 최대 속도를 적용합니다. 정지하려면 두 방향 핀을 모두 LOW로 끌어내립니다.

더 자세한 내용과 이중 모터 제어 및 사용자 정의 함수를 포함한 전체 코드는 기사 아래에 로드된 전체 프로그램을 참조하십시오.

시연 / 기대 효과

배선이 완료되고 코드가 업로드되면 모터가 2초 동안 정방향으로 회전하고, 1초 동안 멈춘 후 이 사이클을 반복하는 것을 볼 수 있습니다(역방향 로직을 추가했다면 다음에 역방향으로 회전할 것입니다). 모터가 PWM 신호에 올바르게 반응하는지 확인하십시오. 정방향으로 회전해야 하는데 역방향으로 회전한다면 A01과 A02에 연결된 전선을 서로 바꾸면 됩니다(비디오 12:30 참조).

흔한 실수로는 STBY 핀을 HIGH로 설정하는 것을 잊거나, VM 핀에 전용 배터리를 사용하는 대신 Arduino의 5V 핀에서 직접 모터에 전원을 공급하여 과부하 시 Arduino가 리셋되는 경우가 있습니다. 전원 공급 장치와 공통 접지를 다시 한번 확인하십시오.

이미지

TB6612FNG_motor_driver-4
TB6612FNG_motor_driver-4
TB6612FNG_motor_driver-3
TB6612FNG_motor_driver-3
TB6612FNG_motor_driver-2
TB6612FNG_motor_driver-2
TB6612FNG_motor_driver-1
TB6612FNG_motor_driver-1
TB6612FNG_motor_driver-0
TB6612FNG_motor_driver-0
코드가 첨부되지 않았습니다.

필요할 수 있는 것들

자원 및 참고자료

아직 자원이 없습니다.

파일📁

데이터시트 (pdf)