Brake mode for stepper (i2c motor driver tb6612fng)

Hello,

I recently brought 4 i2c motor drivers (tb6612fng). I need the stepper to maintain its position when loaded, but I can’t find documentation about this implementation.
The library provide a function to brake a dcmotor that actually brake the stepper. But I want to brake the motor right after it moved.

Does anyone know how I could proceed ?
(btw I didn’t find the source code of the MCU, let me know if you have an idea.

Hello, in fact, TB6612 driver is often used to drive DC motors. As far as I know, stepper motors can only support two-phase four-wire stepper motors. In the beat part, 4 or 8 beats can be used for two-phase four-wire
Forward:
(1) Four beats: A: 1000, A-: 0010, B: 0100, B-: 0001.
(2) Eight beats: A: 1000, AA-: 1010, A-: 0010, A-B: 0110, B: 0100, BB-: 0101, B-: 0001, B-A: 1001.
Reversals are in reverse order.
Inherent step angle of the motor: It represents the angle of rotation of the motor every time the control system sends a step pulse signal.
Step angle=360/(number of rotor teeth*number of beats)

//First shot
  AIN1_1=1;
  AIN1_2=0;
  BIN1_1=0;
  BIN1_2=0;
  delay_us(2500);
  //Second shot
  AIN1_1=1;
  AIN1_2=0;
  BIN1_1=1;
  BIN1_2=0;
  delay_us(2500);
  //Third beat
  AIN1_1=0;
  AIN1_2=0;
  BIN1_1=1;
  BIN1_2=0;
  delay_us(2500);
 //Fourth beat
  AIN1_1=0;
  AIN1_2=1;
  BIN1_1=1;
  BIN1_2=0;
  delay_us(500);
    //Fifth beat
  AIN1_1=0;
  AIN1_2=1;
  BIN1_1=0;
  BIN1_2=0;
  delay_us(2500);
  //Sixth beat
  AIN1_1=0;
  AIN1_2=1;
  BIN1_1=0;
  BIN1_2=1;
  delay_us(2500);
  //Seventh beat
  AIN1_1=0;
  AIN1_2=0;
  BIN1_1=0;
  BIN1_2=1;
  delay_us(2500);
 //The eighth beat
  AIN1_1=1;
  AIN1_2=0;
  BIN1_1=0;
  BIN1_2=1;
  delay_us(2500);

You should be right, I read that somewhere else. But in this case, this job is done by the microchip. The chip also deal with I²C so I can’t interact with tb6612 directly. I have to use the arduino library that contains some basic implementations such as stepperRun(), stepperKeepRun(), but none of them tells the driver to brake the stepper after it runs, the current just falls and so the stepper is free. And because the source code of the driver is not given, it’s quite difficult to know which register do what.

This is the product I’m talking about :

Yes it can, and it does, my steppers run perfectly. I’m asking if and how I can tell them to stop and maintain their position when they have completed an instruction.

“The Grove - I2C Motor Driver (TB6612FNG) can drive two DC motors up to 12V/1.2A or drive one stepper motor up to 12V/1.2A” - description of this product

Drive a stepper motor
_step: -1024~1024, when _step>0, stepper motor runs clockwise; _step<0, stepper
motor runs anticlockwise; when _step is 512, the stepper motor will run a complete
turn; if step is 1024, the stepper motor will run 2 turn
Is it this one?

Yes exactly. As written the stepper motor run as many steps as indicated and then stop. But when it stop it also lost its torque. So my telescope reach its position, and then falls (the stepper is fixed to a telescope, but anyway, the issue would be the same for any other systems)

Can you tell me the model of your motor

Some nema17. 42shdc3025-24b to be exact. They worked as expected with other stepper drivers, the issue come from this driver. I saw someone else on the forum asking for getting the source code of the driver but unfortunately no one could answer him.
Maybe someone from seeed could look up for us ?

edit: Or if someone already encounter this problem and have a solution ?

We do not provide technical support for secondary development, and there may be other partners who can help you. I searched for related information about the nema17 stepper motor. It has a description "The motor has six wires and a rated voltage of 12 volts. It can run at a lower voltage, but the torque will drop. The stepper motor does not rotate. They are stepping, and the step angle of the NEMA17 motor is 1.8 degrees. It means that each step covers 1.8 degrees. "When the stepper motor stops, it should be able to be fixed at the stopped angle. Have you guaranteed the motor Is there enough voltage?

My stepper is powered by a stabilized voltage generator. I understood that the rated voltage isn’t relevant in most case. I checked again with different voltages, but same problem occurred.
I’m sorry for asking you for technical support, that wasn’t my expectation and I really appreciate advice and information you gave. It leads me to learn a lot around steppers. Even if I didn’t found an appropriate solution yet.

Link below doesn’t answer to my request, but it helps me a lot. I drop it there for future beginners.

I should ask seeed directly. And I will post any information/solution there.

As far as I know, the principle of a stepper motor is similar to that of a steering gear. For example, programming is also done through pulses, so it should have a torque to maintain when it stops rotating, and it should not stop working.

You are right, unless the power is off, the motor should remain. Because the current generate a magnetic field that lock the magnet in position. That’s why I suspect the driver to deal wrongly with end of run.

I think you should ask the merchant who bought the stepper motor to see what caused it.

So, I asked the support but they couldn’t provide the source code of the microchip. My temporary solution is to use “stepperKeepRun” instead of “stepperRun” and manually “brake” the stepper using “dcMotorBrake” on one channel. It loses precision precision, but that could be countered using an external rotation sensor.

This is an old topic but I am having the same problem.
The TB6612FNG driver is deenergizing the coils after executing a move command.
We need the option to leave the coils energized so the stepper motor maintains its holding torque value.
Other drivers often have an “Enable / Disable” setting to energize and deenergize the coils.
Can this feature be added?
Or is there a way to trick the driver into energizing the coils without movement?

Unfortunately we didn’t found the solution. Seeeds can’t provide source code for this board neither. We finally managed to put our stepper in constant movement, but it’s far from an optimal solution regarding to energy consumption, and lead to high heat.