Firstly, some premises of the design are related to the high speed needed (maximum as possible) and precise stop point. The motor is feed at a maximum of 40V and consumes at normal operation 1.5A. Due to this I've relied on the L6203, which at begins seemed a good choice.
The machine operates on a cycle that it goes forward and then goes back. It should be done at the minimum time as possible unless the user selected a lower speed. It does also have to stop every time at about the same point (chosen by user). Some tests showed us the great variance at speed given different conditions, like temperature, voltage level on net or mechanical differences. Due to the speed requirement and because there is none acceptable overshot (the machine can't goes back while on a forward command) I've discarded an implement of a PID or another simple control. The machine knows the stop point by an optical encoder and it's behaving well (the problem is really the variations on speed).
Even that it does not stops as desired, the robustness is validated. The machine is being tested at several weeks, sometimes 24h a day and did not shown any worrying issue even without any fan attached on L6203. It has worked on a nonstop routine since Friday until almost now.
I think the easiest way to stop it is by an electronic brake. But the L6203 apparently does not allow this function (I've already searched for Appnotes, reread DS and searched on a tons of sites). Beyond this, I think the L6203 has some issues regarding to dI/dT, because at the begin of the project some bridges were blew, solved by a greater delay between the direction reversion.
So, to brake it, I've made an auxiliary PCB and did minor modifies on the uC code. The PCB consists on a TRIAC which triggers when A and B are 0 (transistorized NOR) closing a loop and braking the motor. To avoid damage on L6203 I've programmed to send 0 to its enable port right before send 0 to both directions (so I'm sure the L6203 is off when the motor is being braked). Also, to avoid turning it on again while the motor is short-circuited, it has a delay between trigger some direction and enable the L6203 (so I'm sure the brake is cut before the L6203 is enabled again).
The snubber, although delays a little the brake, was added to limit the dI/dT (a critical spec on triacs).
My last L6203 has burned on a mistake during the test with the brake board. I believe due to a mistake while connecting the command (A and B). So I can't test it before thursday.
The questions are:
Does the TRIAC (precisely the BT139-800E) provides a reliable operation on this design?
Is there any simpler way (and cheaper) to brake the motor while still using the L6203?
Are there any other issues with all I've described before?
If needed I can also upload the entire schematic or the code.