An Interview With The DRV8833 (PART I)

Just recently I added a new design to my library of cool driver boards to consider for your next project. This time, the dual H Bridge design revolves around a low voltage device better known as the DRV8833. This puppy is designed for battery operated applications and I bet there is a gazillion of those. In order to better understand what cool things you can do with the DRV8833 and the AE-DualusDC driver board, I decided to have an interview with the DRV8833 device where it explains not only how it works but what tricks can you pull from your sleeve as you best utilize it.

 EBLDC: Hi DRV8833, first of let me thank you for allowing us some time to talk to you. I think the first question most of our readers is what kind of a device you are. What can we expect from you?

DRV8833: Well, I am an HTSSOP dual H Bridge driver with an INx interface. Each one of my H Bridges will work with voltages ranging from 2.5V to 10.8V so you will see I am fairly powerful when it comes to low voltage, as in battery operated, applications. As a result you can feel assured that you can use my innards to fully power a couple of your small DC motors, but even a small bipolar stepper as well.

 
A DRV8833 and Microcontroller Combo
A DRV8833 and Microcontroller Combo

Figure 1 A microcontroller driving a DRV8833. Simple stuff!

EBLDC: That definitely sounds interesting. But how about current?

 

DRV8833: Ahh! That is a nice question! Actually, most people would think that being so tiny I should not be able to handle a lot of current, but the truth is I am quite efficient (my RDSon is quite low) which allows me to easily drive currents like 1A continuous and even up to 2A peak per H Bridge. It is also important to realize I have an internal current regulation engine which is why I can drive a stepper motor. To use the current chopping engine, all you have to do is place a power resistor at my SENSE terminal and I will regulate current by disabling the respective H Bridge when the current reaches a value of:

ITRIP = 0.2V / SENSE_RESISTOR (ohms) 

For example, if you build a system in which the H Bridge A’s SENSE resistor is equal to 200 milliohms, then you would see a current not much larger than 0.2V/0.2Ohms = 1A running through my H Bridge A. I would continuously regulate this current by chopping it at 50 KHz frequency. In other words, I am looking at current every 20 us and if I see the current reach the ITRIP point, I disable my H Bridge, enter slow decay current recirculation mode and wait until the next 20 us period to re-enable the H Bridge.

EBLDC: Impressive! Sounds like a lot is happening inside of you, indeed. I do have one concern, though. I am quite aware that you will look at current every 20 us, but isn’t there a period of TBLANK, equal to 3.75 us, at the beginning of each 20 us period and in which you are not looking at current? What happens if the current goes above ITRIP during this TBLANK? Heck, what happens if there is a short and current just want to go to infinity!

DRV8833: OK, that is more than one question, but I think they are all related, so let me tell you what happens. First off, you are right about TBLANK. Yes, every time I start a cycle I ignore current for about 3.75 us. If current happens to be above ITRIP during this time, I will definitely catch it as soon as I exit TBLANK, so no worries. Now, if there is a short, then it is clear current will go through the roof quite rapidly! Not to worry, though. As I also pack an Over Current Protection circuit specially designed for cases like this. If there is a short from output to output or any output to GND or VM, I will instantly enter a protection mode in which the H bridges are disabled completely, making sure my internal circuitry is protected against certain doom.

EBLDC: OK, wait! So you are telling me that if I have a short from output to output, and my voltage is 10V, since your RDSON is about 400 mOhms you would have a current as large as 25A, but somehow you will stop it from harming you?

DRV8833: Well, you didn’t take into consideration the battery’s internal resistance, but sure, just for kicks lets assume the battery’s internal resistance is 0 ohms in which case the current could go up to 25A. On a single H bridge, as soon as a current higher than 3.3A flows for 2.2 us, I will enter the protection mode and disable the H Bridge. I will try it again, however, 1.2 ms after the disablement. 

EBLDC: Well, this is amazing! Thanks for catching the battery’s internal resistance thing, though. Any other protection mode that we should know about?

DRV8833: We should not forget the all time savior Thermal Shutdown Protection. Hopefully my users solder me into iron clad designed boards with enough thermal heat sinking to allow me to dissipate heat appropriately. But even then, if currents are large enough and the ambient temperature is on the hellish side, I will get hot. In that case my internal thermal protection would disable the H Bridges until I cool down. I start to feel like shutting down at about 150C, so there is plenty of headroom. You know, I am kind of awesome, but I am not beyond the laws of physics.

EBLDC: Well, we neither… But tell us about how an user would use you? For example, if I wanted to drive a DC motor with one of your H Bridges, what do I do?

DRV8833: It is very simple, actually! All you have to do is connect your DC motor to my output terminals (AOUT1 and AOUT2, per example) and then use the IN1 and IN2 terminal to control each output. I am a half H Bridge controller. Hence, whatever happens on the AIN1 input, correlates to what happens on the AOUT1 output. For example, a HI on the AIN1 input will signal the H Bridge to enable the high side FET which translates into the AOUT1 output being at the high voltage potential. If on the other hand the AIN1 input is made LO, then the low side FET is enabled which translates into the AOUT1 output being at ground potential.

DRV8833 Input to Output Control

DRV8833 Input to Output Control

Figure 2 Output relationship to inputs

So as you can imagine, by driving these two outputs into different values, one of them at high potential and the other one at low potential, you would get a current flow which would then polarize your motor into rotation. Which output is high and which output is low defines the rotation direction.

EBLDC: That definitely sounds easy! So I can control direction of rotation by selecting output polarity. But what if I want to control the speed? This is a must when driving a DC motor, right?

DRV8833: But of course! This can be easily done as well since my inputs can be PWM’d. Just apply a PWM signal to the driving input and my outputs will follow. For example, if you make AIN1 HI and AIN2 is being PWM’sd, then current will flow from AOUT1 to AOUT2 when the PWM signal is in the OFF state and I will enter slow decay mode when the PWM signal is at the ON state. You can do it backwards to. Make AIN1 LO and then I will conduct when AIN2 is HI and enter slow decay when AIN2 is LO.

EBLDC: Intriguing… So it seems we can only do slow decay then?

DRV8833: Ehh… That is not true actually! You can do fast decay if instead of a single PWM you have two of them. If both AIN1 and AIN2 are being PWM’d in such a fashion that they are always opposing each other, then I will be entering fast decay at all times.

EBLDC: Ahhh, cool! Well, this interview is getting quite long and there are still a few introductory questions I would like to formulate. For example, what about power consumption? If you are being driven by batteries, wouldn’t we want them to last as long as possible.

DRV8833: Heck yeah! And luckily I was designed with such a requirement in mind. There is an input called nSLEEP which allows me to take a nap. During sleep mode, I practically consume no current. It is actually not going to be anything larger than 2.5 uA. Is that good enough for you?

EBLDC: Well, yes! But, is there a way in which we can get rid of this mode in case we prefer not having to control this line? Say my microcontroller is limited in resources and I am not too worry about current consumption. If I want the device just to come up without needing a GPIO to take care of this, is there a way?

DRV8833: Yes, there is! Simply connect a 47K resistor from my nSLEEP pin to VM and I will take it from there. This is a feature the DualusDC module offers. You can either drive the signal throughout the connector, or you can solder a 47K resistor and disregard this control signal. Notice on Figure 1 there is a yellow block under this resistor? It is because the resistor is optional. You can have it and choose not to drive the pin. If you do not have the resistor, then you must drive the pin.

EBLDC: OK, one last question and then I’ll let you take a break. What if there is a problem with the device such as an Over Current event or a Thermal Shutdown? Is there a way of knowing any of this took place?

DRV8833: There is an open drain pin called nFAULT which I will assert when there is a problem. It is a great source for your microcontroller to read on. If you see a transition from HI to LO, something has happened and you should take care of the situation whether it is to decrease driving energy and let me cool down or remove a short present at the outputs. Do note it is an open drain output, so although I also place this resistor under the optional yellow square, you need to place a pull up resistor from this pin to your logic rail if you want to read the status. Some people choose to leave this pin disconnected, though, and this is perfectly fine as well!

OK, I am ready for that break now…

EBLDC: Wait! I just thought of one last question. Sorry! You mentioned a pull up resistor for nFAULT and a pull up resistor for nSLEEP if we want to override this fucntion. What other external components will I need to populate around you to make you workproperly?

DRV8833: Can we discuss this with a little bit of ice cold coke? OK, I’ll answer now… It is not that much, actually. You will need a 0.01uf cap for my charge pump. That one goes from VCP to VM so it should be at least 16V tolerant. Then a cap to filter out the internal regulator which goes from VINT to GND. It should be a 2.2 uf. Since this is a low voltage terminal, a 6.3V will do. The last cap I like to see at my terminals is the VM to GND 10 uf cap. I would make it ceramic and at least 16V.

When it comes to resistors, we have mentioned the SENSE resistors, but the truth is you can actually work without these if you want to override the current regulation. Do note, however, that once you do that you are on your own. I will not be able to regulate current so if current goes up too high, I may induce Over Current Protection. If you know current will never be that high, then it will all be OK. I would count out stepper driving, though, as most steppers do require current regulation. If you do find a stepper with enough resistance as to limit the current, then we are all good again.

So three caps is all I require at all times. Everything else is optional if you want to use the respective function.

EBLDC: Darn it! Thank you so much for answering all of these questions! Can we bring you back and ask you more advanced questions the next time?

DRV8833 : Sure! I will be driving two DC motors in the mean time. Have a nice weekend!

10 comments for “An Interview With The DRV8833 (PART I)

  1. April 21, 2013 at 8:54 am

    hey nicely written about this driver. I recently got this driver and trying to use it to drive two dc motors, however, i dont get how does this driver uses enabling function. normally drivers have 3 ports to control a motor, two inputs and one for enable. However, I am stuck with this part. Can i get some help?

    • avayan
      April 21, 2013 at 6:53 pm

      Hi Binam,

      With the DRV8833 you do not need three lines to control the motor, just two will do. On 3 line drivers, the ENABLE line determines whether the H Bridge is enabled (passing current) or not (Hi Impedance state). The other two lines are used to determine the state of each H Bridge output, either HI or LO.

      On the DRV8833, you do everything with the two IN input signals. Take a look at the datasheet’s truth table and you will see how the outputs respond to the inputs.

      As you can see, all of the 3 pin functions have been compacted into a two pin interface. For example, if you want to move FWD, REV you would make both inputs logically inverse (HI-LO or LO-HI). To disable the H Bridge you can use either HI-HI for slow decay (braking) or LO-LO for fast decay, which is the same as high impedance. In other words, you disable the motor when both inputs are the same, and enable the motor when both inputs are different.

      Hope this helps and gets your application running!

      • May 5, 2013 at 9:07 pm

        Thanks a lot!! i got some help with this and I made it work!!

  2. Brian Z
    February 12, 2014 at 2:41 am

    Just to clarify, you don’t need resistors on the current sense pins, but they do need to be tied to ground.

    • avayan
      February 12, 2014 at 1:15 pm

      Hi Brian,

      Yes, you are correct. The SENSE pins need to be connected to GND or otherwise the H Bridge’s low side would be floating and this wouldn’t work at all.

  3. Cam Bazz
    August 10, 2014 at 11:55 pm

    Hello,
    Is there any way we can do current sensing? measure how much current is motor draining? those sense pins are for limiting current but can it be also used to sense current?
    best

    • avayan
      August 11, 2014 at 1:43 am

      Hi!

      Yes, you could add your own differential amplifier and read current by measuring voltage across the SENSE resistor. Do note, however, that if you do this (e.g. add a SENSE resistor from the SENSE pin to GND), the current regulation mechanism inside the DRV833 will be enabled. As a result, you may get H Bridge disablement at some point in time in which you didn’t want it. You would need to monitor current at all times and make sure the SENSE voltage never gets above 200 mV. Sounds doable, but it can get tricky pretty fast…

      Another option would be to connect the SENSE terminal to GND effectively disabling the current regulation scheme and then use the differential amplifier and the SENSE resistor in series with the motor (e.g. connected to one of the outputs and then one of the motor leads).

      But then I must ask. What are you trying to accomplish? Have you looked at the DRV8834? This one has programmable current regulation by changing the VREF input. Maybe this is a better device? They both have very similar voltage ratings, in case you are looking for low voltage operation.

      Hope this helps. Good luck!

      • Cam Bazz
        August 11, 2014 at 3:08 pm

        Hello,

        I am building a small robot, and I want to move away from “archaic` dr’vers like the L293D and L298. One thing I would like to accomplish is monitor the current each motor is driving and develop algorithms for that in hand for driving the motors. For example maybe control the torque of the motor? Or stop motors when the robot bumps against a wall?

        I have looked at various controllers, but have not been able to find one dual controller with current sensing?

        And also what is the usages of current sensing in motor control?

        Best Regards,

  4. José Vicente
    December 12, 2015 at 7:01 am

    and you could make a current feedback with this driver ? for application in controlling a motror troque.

    • avayan
      December 12, 2015 at 10:01 am

      Boy, it has been a loooooooong time since I have dealt with this device, so please excuse my 3 or 4 tons worth of rust crippling my memory here 😉

      To answer your questions: In theory yes, but it would not be the most effective. And to be honest, I personally wouldn’t even bother. The problem with the DRV8833 is that the current regulation is fixed once you select the SENSE resistor. So, you can control the current regulation but not have a dynamic set point. On pretty much any torque control application you will need to vary the torque at some point.

      I think I mentioned on a different comment that you could add your own differential amplifier and then read the current with an MCU. The Firmware can then adjust the PWM duty cycle to regulate the current. With this venue you can regulate torque as required. On that same comment I also recommended taking a look at the DRV8834 as it has variable current set point.

      I thought TI had released some other devices since then but I couldn’t find anything else which may work for this voltage range.

      Good Luck on your projects!

Leave a Reply

Your email address will not be published. Required fields are marked *