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
(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)
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.
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)
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.
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.