Other Parts Discussed in Thread: TPS63031, TPS22918
-
is there a logic/race condition for IN1 and IN2 that might cause OCP to trigger?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi Tim,
Thank you for posting to the Motor Drives forum.
Have you taken a look at the nFAULT signal? If you have, can you send a scope shot showing IN1, IN2, and nFAULT? I want to confirm that this is an OCP event being triggered.
Did you attached a picture? I see that there is something attached but I cannot see it. Can you resend it?
Can you provide the part of your schematic showing the driver?
Hi Pablo,
I have very limited scope facilities - a single channel portable Velleman (I no longer have access to lab facilities)
- what in particular do you need to see?
IN1 and IN2 will be driven by the logic gates FWD/REV, then I make the motor stall (by hand) and the gates then asset HIGH both IN1/IN2
My attachment was the schematic - I'll try it again here...
Hi Tim,
I would like to see the nFAULT pin when you stall the motor. In the meantime, I will look through your schematic to see if there is anything that could cause the nFAULT to not de-assert. Expect a reply from me by 8/26.
Thanks Pablo, I've ordered a 4-ch Picoscope, it should be here in a day or so...
every blessing
Tim
Hi Tim,
I would like to clear some confusion I have. Is your main concern that the DRV8832 is not de-asserting the nFAULT without having to power cycle VCC after stalling the motor? Is my assumption correct?
In the case of the DRV8832, the only way to de-assert the FAULT is to power cycle the VCC as specified in Table 2 of the datasheet. Also looking through your schematic, it looks like both IN1 and IN2 become high when nFAULT is driven low (a fault occurs). I am assuming you are trying to activate the outputs by setting both Inputs HIGH. However, this method will not automatically de-assert the nFAULT and enable the outputs.
If your goal is to have a way for the driver to self-recover after a fault (in this case an OCP fault when stalling the motor) without the need to power cycle VCC, then your current solution might not work.
Let me do some research to try to figure out if there is a way to self-recover from a fault using your current design. Expect a reply from me by 8/27 US time.
Dear Pablo,
My design goal was to follow the data sheet section 7.3.5 that on a stall condition FAULTn would be driven low - Quote "the operation of the motor driver will continue" so I use the FAULTn = LOW to drive the IN1 and IN2 HIGH to BRAKE the motor and quote again " The current limit fault condition is self-clearing and will be released when the abnormal load (stall condition) is removed" and so return the IN1 and IN2 to their previous state to continue the motor operation after the FAULTn is released.
If this is not a correct procedure then I'm am surprised.
My scope hasn't arrived yet.
every blessing
Tim
Hi Tim,
I think fundamentally you are confusing current limit fault with an overcurrent protection fault. I know that they sound similar and the description in the datasheet might not be perfect. However, there is a difference between the two types of faults. I suggest reading this FAQ to learn about the difference between the two. In general, current limit uses the current sensing circuitry (Rsense) to monitor the current through the load and begins to regulate the output current when the motor current exceeds the limit set by the RSENSE resistor. In your case, Rsense=0.91Ω and the limit is set to 200mV/0.91Ω=220mA (equation 1 on datasheet). On the other hand, OCP is independent of the current limit circuitry (Rsense) and is triggered when the current through the FETs is higher than 1.3A min for longer than 2µs. There can be three cases that can occur:
Once you get the scope, I would like to take a look at the nFAULT signal and voltage at SENSE pin to see what fault is being triggered (either current limit or OCP).
Hi Pablo,
With respect I don't think I am confusing OCP and current limit via Rsense. Because FAULTn is refusing to reset after a normal stall I then begin to wonder if OCP plays a part. The Picoscope arrives tomorrow via UPS... so by the time you get to work Friday and on your second "coffee" (assuming you're in the US, I may have some traces for you to see:-)
I certainly hope I am not going to see currents over 1.3A in this relatively small motor, see attached curves (PDF hopefully attached).
Really appreciate all your help, which is why I'm investing in the Picoscope.
every blessing
Tim
Tim,
Thank you for sharing the torque curves. I am looking forward to seeing the scope shots.
Hi Pablo,
The 'scope arrived a bit late in the day... so I'll spend the weekend trying to get you some decent traces for Monday,
every blessing
Tim
Tim,
That sounds good. I am looking forward to seeing the traces. I'm confident that the scope shots will help us find the root cause.
Hope you had a good weekend Pablo? Mine was busy with scopes and wave-forms.
Please see attached pdf file of descriptions and traces...
Standing by to perform and more tests.
every blessing
Tim
Hi Tim,
My weekend was busy as well. Thank you for providing such detailed test report I appreciate it. I've looked though your report and I will answer a few of your question here:
The motor reversal generates high currents but these seem to be controlled by the DRV8832 PWM(?) and stay within any OCP trip levels, so no FAULTn assertion?
You provided a lot of information which is good. I will take some more time to keep reviewing the data and give you a more concrete root cause. Expect a reply from me either later today or by noon US central time.
Thanks Pablo,
I’ve asked my motor supplier to send me curves on a less powerful motor, about 2/3rd the torque. This may help with the current spikes but not sure about the FAULTn signal.... I’m trusting you can search out the issue.
every blessing
Tim
Hi Tim,
Here are some of my comments regarding your report:
Here is some of my theories as to what could be causing the nFAULT to not de-assert after the stall. I also provided a few tests you can do to verify the validity of my theories:
I apologize for all the homework I just assigned to you but I strongly believe it is imperative that we validate each of these theories in order to find the root cause. Please let me know if you have any questions about anything I mentioned in this reply.
Hey Pablo, thank you for the setting of the homework! I work from home these past 10 years so all work is home work :-)
The motors I have are new, from the factory but do have some other lower power motors, also new. It seems then a fine balance between the torque required to drive the motor and the torque generated when stalled. So I have ordered another motor closer to the target of 4 - 8 Kg.cm to open/close the door. I'll try all the other suggestions too over the next few days, hopefully before your Labour Day.
Regarding the traces from my Picoscope - I wonder if you have the free software from them, I could send you the output file and you can search them to your hearts content etc...
Any of the Picoscope 2000 to 6000 series use the same software
'Talk' again soon,
every blessing
tim
Hi Pablo, Friday at last......
I have reviewed and answered all your homework points... and I think your BINGO! assertion is the one......
IN1 and IN2 cannot be set in BRAKE mode (HIGH) in conjunction with FAULTn being asserted, which is my "Design 2". A previous iteration "Design 1" would invert the current states of INxx when driving the motor at STALL, so this just constantly reversed the motor direction and consequently kept the current driving the motor back and forth - no good for my power consumption, but at least FAULTn would assert and de-assert correctly.
So "Design 2 thought it should BRAKE the motor, thus eliminating the current drain... but as a consequence it seems we cannot do this on the falling FAULTn signal. This is an undocumented "clashing with the fault logic" idea of yours.
So "Design 3" in back on the drawing board (well at least a TINA Simulation!). Some advice on how to BRAKE the motor would be useful...
- using LOGIC, rather than a micro-controller - (that will be "Design xx" and an IoT one - if the current drain can be kept below the ten's of microamps).
Homework_Pablo@TI.pdfThe Picoscope traces are available on my BOX link, if you'd like to view them:
every blessing,
Tim
Hi Tim,
Thank you for the information.
I'm glad that we found the root cause. Now it's a matter of finding ways to solve this issue.
I looked through your report and here are some of my comments:
Have a great labour day weekend and I am looking forward to your response.
Hey Pablo,
Here in the UK we don't have a labour day....our holiday was last weekend.
Yes you're right about the FAULTn signal exiting sleep mode, I had forgotten that.
I will try to slug one of the INx signal somehow and let you know.
I'm going to have to respin the design anyway so I will look at ways to stop the motor on a stall, "reverse and try again" for example - a one-shot should help.
Yes a micro can be reprogrammed easily but the logic way is quicker to implement at this stage.
Enjoy your long weekend, every blessing
Tim
Hi, Tim,
Do let us know how your experiment works out!
Have a great weekend.
Dear Pablo (and Don),
Hope Labour Day was peaceful for you - some parts there are not so peaceful :-(
I managed to slug IN1 and IN2 (with a 47uF cap) to give a 600us delay after FAULTn asserts - but no differences detected - it still fails to de-assert. See attachment.
Should I try for more delay - eg double the 47uF cap? Somehow I don't think so. It seems that the OCP logic is confused by the rapid assertion of a BRAKE condition. I will avoid BRAKE on the next re-spin.
I'm also considering using a buck-boost TPS63031 to drive and isolate the DRV8832 in the case of a OCP triggered FAULTn (TPS63031 has an enable pin which can be activated via a push button should the JAM result in a stuck FAULTn).
-do you think it viable?
every blessing
Tim
Hi Tim,
Should I try for more delay - eg double the 47uF cap? Somehow I don't think so. It seems that the OCP logic is confused by the rapid assertion of a BRAKE condition. I will avoid BRAKE on the next re-spin. |
I would say go ahead and try to increase the delay. If you see the same results then we can more confidently rule this out as a solution.
I'm also considering using a buck-boost TPS63031 to drive and isolate the DRV8832 in the case of a OCP triggered FAULTn (TPS63031 has an enable pin which can be activated via a push button should the JAM result in a stuck FAULTn). -do you think it viable? |
This could be a viable solution. The concern I have is whether the TPS63031 can source the necessary current during start-up or stall. The datasheet states that the maximum average current in the switches is limited to 1-A. Based on the scope shots you sent previously, the spikes in Isense were around 900mV peak across Rsense when the motor is reversed. You were using 0.56Ω for Rsense which means the current was peaking at around 1.6-A for a brief moment. I suggest posting to the power management forum and asking if the device can handle this current transient.
Sorry for delay Pablo - I was doing some field trials on my door opener and your DRV8832 (which were successful, but no motor stalling)
So I tried double, 2 x 47uF, no change then added a 330uF cap to the 2 x 47uF (total 424uF) - still no change to FAULTn.
Then I caused one of the INx signals to fall by connecting a discharged 330uF in it's HIGH state - this released FAULTn !! - see last trace of the attached.
every blessing,
Tim
Tim,
This is very interesting. It seems like the internal logic does not like it when INx signals are forced HIGH after nFAULT drops low. I am definitely going to research this issue more and try to understand what exactly is happening internally. It will take me a few days to do my research but I'll let you know what I find out. Expect a reply from me by Wednesday of next week or earlier.
Hi Tim,
Unfortunately I don't have much information to share with you at the moment.
For the sake of bringing this thread to a conclusion, I will close the thread for now. If you need any further assistance, feel free to reply to this thread. If the thread gets locked, you can post a new thread by clicking on the "Ask a related question" button.
That's a disappointment Pablo, it seems then we should avoid using the BRAKE (IN1=IN2=HIGH) generated from a FAULT assertion, due to an unknown race condition within the DRV8832 logic..
I am doing a respin f the PCB, redesigning the logic anyway, and so I will go back to reversing the IN1 and IN2 on a FAULT condition, as this was working... but adding a short delay between reversals (if it's still jammed). Also now considering the TPS22918 5.5-V, 2-A LOAD SWITCH to cope with any unexpected OCP condition.
Do you think a common mode choke in the OUT1 and OUT2 signals to the motor would reduce spikes or would that compound the mystery surrounding the FAULT signal?
every blessing
Tim
Tim,
I personally have not seen common-mode chokes used for motor voltage pike reduction. Using varistors or TVS diodes at the motor outputs are the most common ways I have seen of reducing motor voltage spikes. If you have used common-mode chokes for this purpose in the past and has worked for you, then I see no issue using them. The common-mode chokes should not cause any false triggers of the nFAULT signal.
By the way, if you have not looked through the motor drivers product page on ti.com, we have many useful technical documents here that may help you in your design. The "Best Practices for Board Layout of Motor Drivers" application report provides useful tips for PCB layout.
Hey Pablo,
Thanks for the additional information - and no I haven't done a motor drive before using chokes.... I'm hopefully sourcing a lower power motor, to match the torques needed more closely
Pressing on without the FAULTn and BRAKE ;-)
every blessing
Tim