yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
L-Type Motor📖
1.About motor
  • About motor
2.ROS robot control board drive
  • 0. Notes (Must read!!)
  • 1. Control motor
  • 2. Timer captures encoder data
  • 3. PID control robot car
  • 4. Kinematic Analysis-Mecanum wheel structure
  • 5. Kinematic Analysis-Ackerman structure
  • 6. Kinematic Analysis-4WD structure
3.STM32 board car tutorials
0. Notes (Must read!!)
  • Notes
1. Get started quickly
  • 0. Installation Instructions
  • 1. Version configuration
  • 2. Smart car installation video
  • 3. Precautions for use
2. Introduction to STM32 development board
  • 0. Notes (must read)
  • 1. Learn about STM32
  • 2. Introduction to STM32 development board
  • 3. Development board pin assignment
  • 4. Introduction to HAL library and LL library
3. Setting up and using the development environment
  • 1. Common development tools
  • 2. STM32CubeMX Install - Use
  • 3. STM32CubeIDE Install - Use
  • 4. Common Driver Installation
  • 5. Program download and simulation
  • 6. Engineering experience and migration
4. Car expansion tutorial
  • 1. Servo control
  • 2. Basic use of ultrasonic steering gear gimbal
  • 3. Motor control
  • 4. OLED display light sensitivity value
  • 5. Infrared sensor
  • 6. Four-way tracking module
  • 7. Infrared remote control
  • 8. Ultrasonic ranging
  • 9. PS2 controller test
  • 10. Car line patrol
  • 11. Ultrasonic follow
  • 12. Ultrasonic obstacle avoidance
  • 13. Ultrasonic obstacle avoidance (servo gimbal version)
  • 14. Infrared sensor obstacle avoidance
  • 15. Infrared remote control
  • 16. PS2 handle remote control
4. 2-channel motor drive module
For MSPM0G3507
  • 1.AT8236 drive tutorials
  • 2.TB6612 drive tutorials
For MSPM0G3519
  • 1.AT8236 drive tutorialsnew
  • 2.TB6612 drive tutorialsnew
5. 4-channel motor drive module
Introduction and Debug
  • 1.Introduction to 4-channel motor drive board
  • 2. Control command
  • 3. 520 motor introduction and usage
  • 4. PC host
IIC communication
  • For MSPM0G3507
  • For MSPM0G3519new
  • For STM32
  • For ESP32
  • For Arduino
  • For PICO2
  • For Jetson NANO
  • For RPi5
  • For RDK X5
USART communication
  • For MSPM0G3507
  • For MSPM0G3519new
  • For STM32
  • For ESP32
  • For Arduino
  • For PICO2
  • For Jetson NANO
  • For RPi5
  • For RDK X5
Download
  • 3D-Model-File
  • Code
Download ZIP

Welcome to L-Type Motor repository

2.TB6612 drive tutorials

TB6612 drive tutorials

1. Learning objectives

Use TB6612 motor driver module to drive dual-channel motors.

2. Hardware connection

MSPM0G3507 and TB6612 pin connection

image-20241210110931097

A motor:

MSPM0G3507TB6612
PA8PWMA
PA14AIN1
PA15AIN2

B motor:

MSPM0G3507TB6612
PA9PWMB
PA16BIN1
PA17BIN2

TB6612 motor driver module pin description.

2

3

3. Code analysis

  • bsp_tb6612.h
​x
#ifndef __BSP_TB6612_H_
#define __BSP_TB6612_H_

#include "ti_msp_dl_config.h"

//A电机
#define AIN1_OUT(X)  ( (X) ? (DL_GPIO_setPins(GPIO_1_PORT,GPIO_1_AIN1_PIN)) : (DL_GPIO_clearPins(GPIO_1_PORT,GPIO_1_AIN1_PIN)) )
#define AIN2_OUT(X)  ( (X) ? (DL_GPIO_setPins(GPIO_2_PORT,GPIO_2_AIN2_PIN)) : (DL_GPIO_clearPins(GPIO_2_PORT,GPIO_2_AIN2_PIN)) )

//B电机
#define BIN1_OUT(X)  ( (X) ? (DL_GPIO_setPins(GPIO_3_PORT,GPIO_3_BIN1_PIN)) : (DL_GPIO_clearPins(GPIO_3_PORT,GPIO_3_BIN1_PIN)) )
#define BIN2_OUT(X)  ( (X) ? (DL_GPIO_setPins(GPIO_4_PORT,GPIO_4_BIN4_PIN)) : (DL_GPIO_clearPins(GPIO_4_PORT,GPIO_4_BIN4_PIN)) )

void A_control(uint16_t motor_speed,uint8_t dir);
void B_control(uint16_t motor_speed,uint8_t dir);

#endif

The macro definition part defines how to control the direction of the motor. TB6612 controls the direction of the motor through two pins. When one pin is high and the other is low, the motor rotates in one direction; otherwise, it rotates in the opposite direction.

AIN1_OUT and AIN2_OUT control the direction of motor A.

BIN1_OUT and BIN2_OUT control the direction of motor B.

A_control(uint16_t motor_speed, uint8_t dir): This function is used to control motor A and accepts motor speed (motor_speed) and direction (dir) as parameters.

B_control(uint16_t motor_speed, uint8_t dir): This function is used to control motor B and has similar functions to A_control.

  • bsp_tb6612.c
xxxxxxxxxx
void A_control(uint16_t motor_speed,uint8_t dir)
{
    if(dir)
    {
        AIN1_OUT(0);
        AIN2_OUT(1);
    }
    else
    {
        AIN1_OUT(1);
        AIN2_OUT(0);
    }
    

    DL_TimerA_setCaptureCompareValue(PWM_1_INST, motor_speed, DL_TIMER_CC_0_INDEX);

}



void B_control(uint16_t motor_speed,uint8_t dir)
{
    if(dir)
    {
        BIN1_OUT(0);
        BIN2_OUT(1);
    }
    else
    {
        BIN1_OUT(1);
        BIN2_OUT(0);
    }
    

    DL_TimerA_setCaptureCompareValue(PWM_1_INST, motor_speed, DL_TIMER_CC_1_INDEX);

}

Function A_control(uint16_t motor_speed, uint8_t dir) and function B_control(uint16_t motor_speed, uint8_t dir) control motor A and B respectively, determine the rotation direction of the motor according to the dir parameter, and use the motor_speed parameter to set the motor speed.

Note: The project source code must be placed in the SDK path for compilation,

For example, the path: D:\TI\M0_SDK\mspm0_sdk_1_30_00_03\TB6612

4

 

 

AT8236 drive tutorials
AT8236 drive tutorials

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文