I’m using DRV8835 to control 9V latching valves for irrigation (GND-VIN).
The module is driven by a Raspberry Pi with 3.3V logic power
I’m experiencing constant dissipation of 0.62mA for each drive even with no load (valves removed). The problem is the same with any single drive and dissipation sums up adding modules.
As I’m using up to 5 module per controller and I’m relying on batteries it’s pretty a problem for me.
Is it normal? What’s the cause?
Maybe connecting source to VMM would change anything?
Thanks in advance!
In general, the power inputs on the DRV8835 (the motor supply, VM, and the logic supply, VCC) can together draw up to a few milliamps of current when the driver is powered and not in sleep mode. So, the current you are measuring does not seem abnormal. For more information on how much current those supplies can draw, you can refer to the “Electrical Characteristics” section of the DRV8835’s datasheet, which we provide a link to under the “Resources” tab of the DRV8835’s product page.
To reduce the amount of current your drivers draw, I recommend putting the devices in sleep mode (by setting VCC to 0V) and setting all inputs low (0V). (This is explained in the “Sleep Mode” section of the DRV8835’s datasheet.) You could dynamically power VCC on each DRV8835 board from a GPIO your Raspberry Pi to accomplish this.
Thank you very much Jon for your fast and precious reply!
My biggest issue is with the remote xbee controlled valves and your answer gave me an idea which could enhance my project (I really didn’t considered using the possibility of the DRV8835 to get into sleep state before!).
I was planning to drive also 4 latching valves (2 motor drivers) directly with the Digital Outputs from the Xbee. Any Xbee DIO should be able to source 4mA (maximum 20 mA alltogether) hence should be fine to wake up the Driver.
Initially I was thinking to use 8 Digital Output from the xbee to drive 4 valves. What do you think about using 2 Digital Output to power selectively the relevant DRV8835 and then driving the Phase/Enable pins according to the needs.
It means all of the corresponding APhase/AEnable and BPhase/Benable pins will be connected in parallel:
Aphase on drive1 in parallel with Aphase on drive 2, Aenable on drive1 in parallel with Aenable on drive 2 and so on…
This will dramatically reduce the needed output and with 8 Digital output I should be able to drive up to 8 valves instead of 4!!! (limiting also the total power consumption as all of the Driver will be in sleep state, apart when active).
Do you think it’s feasible? As I’m driving an irrigation sistem there will be only one operation per valve at time.
Will be there any drain on the Phase/Enable pins of the sleeping Driver which could risk me to burn the Xbee DIO or is it safe?
Thanks in advance.
Your plan to use the digital output pins on your XBee to selectively power each of your DRV8835 boards sounds fine. Leaving the phase and enable pins connected to sleeping DRV8835 units could be okay for you, too. The DRV8835 has internal 100kOhm pull-down resistors on its input pins, so while there will be a small (several uA) current draw, I do not expect it to damage an IO pin from your XBee.
I haven’t yet experimented with the xbee, but I’m experimenting a new configuration with a raspberry Pi which is giving me problems compared to the previous one standard that worked.
I did the following pin connection:
GND to GND
VCC to raspi Pinout (VCC)
Benable to 3.3V through a 100K resistor
Bphase to raspi Pinout (Bphase)
Aenable to 3.3V through a 100K resistor
Aphase to raspi Pinout (Aphase)
Mode to 3.3V through a 100K resistor
Connections to motor (a latching valve) has not been changed compared to previous working configuration.
This connection is repeated for a total amount of 6 drivers
This configuration wich let me reduce pinout number (but not as optimized as the previous one as I was afraid of draining too much current from Pinout that would drive in parallel a total amount of 12 phase/enable input) to is not working.
From a first check I made, it seems to me that I missed the point of having the driver going to sleep keeping the Enable and Mode input HIGH.
Second, using the 100K resistor maybe I am not really driving the state HIGH (I did it in my previous version to set HIGH the MD pin and it worked, but the phase/enable input were both driven directly from raspi output pins) hence this could be the cause of this configuration non working
I’m wondering if keeping the MD connected with a 100k to 3.3V let the sleeping mode kick in or it should get too to Zero.
What I’m planning to do is driving with the Pinout (VCC) VCC, Benable, Aenable, and MD (if it needs to go to zero to enter sleep mode).
What could be the maximum drain from Raspi Pinout (VCC) of this configuration with all of the resistor removed? Is it safe ro remove resistor also from Mode pin?
I’m asking this as the installation is in a remote place and I’ll be able to make the changes next week and really like to avoid much testing on site.
Thank you very much with anticipation
You will need stronger pull-up resistors for your configuration to work since the DRV8835 has internal 100kOhm pull-down resistors on its input pins. This means that the value of resistance on the pull-up resistor that you choose should be much less than the value of the existing pull-down resistors (100kOhm). So, replacing your 100kOhm pull-up resistors with something like a 10kOhm should work. However, it is also safe to just directly connect the inputs pins to 3.3V. The maximum amount of current those input pins will draw is 50uA (IIH in the datasheet).
Setting VCC to 0V puts the driver in a low-power sleep mode. This happens independent of the state of the other input pins. However, it is good practice to not supply power to input pins on a device when it is not powered.