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.

DRV8703-Q1: Can not set MODE = Hi-Z

Part Number: DRV8703-Q1
Other Parts Discussed in Thread: TIDA-01389

Hello!

I am trying to use the DRV8703-Q1EVM to drive a Brushed DC motor that draws about 0.7A of current at no load and about 2A when loaded operating at 12V.

When using the software provided by TI, I am able to control the motor in a functional way only when using the Standard PWM mode (MODE = Hi-Z). The motor acts weirdly when using other two modes (MODE = 1 and 0). This behavior is similar as explained in the first post in this thread https://e2e.ti.com/support/motor-drivers/f/38/t/892275 . I don't really understand what the PH and EN mode should do. It would be great if someone could provide an easy explanation of how the PH/EN mode differs from the Standard PWM mode. Or if someone could tell what it is that I am doing wrong here.

Since the motor works reliably for me in MODE = Hi-Z using the TI software, I wish to use it in this mode using an MCU, specifically an Arduino Mega 2560. I am able to generate PWM outputs on the PWM pins connected to PH/IN1 and EN/IN2, and set the nSLEEP pin to 1 (HIGH). When I leave the MODE pin floating (i.e. it is not connected to anything), the MODE still seems to be set to 0. When looking the voltage on MODE pin, it is around 80mV on a digital oscilloscope, which I believe corresponds to MODE = 0. I also tried setting a digital pin on the Arduino as an INPUT (without pullup or pulldown) and then connecting MODE to that pin. Even then the MODE has around 80mV voltage.

I would really appreciate any help in this regard.

Thanks in advance,

Gunjan

  • Hi Gunjan,

    PH/EN and PWM modes are very similar, but there are slight differences.

    PH/EN does not have Coast mode available, and only requires a single PWM in most cases.

    PWM mode has Coast mode available, but requires two PWM resources in most cases.

    Many times, the application PWM's between drive and brake mode to maintain the current in the motor. So PH/EN is used.

    If floating, the MODE pin will be ~0V unless nSLEEP is high. If nSLEEP is low, please set nSLEEP high with MODE floating and measure the voltage. On the EVM, the voltage is ~1V.

  • Hi Rick,

    Thanks for your reply. This clears up a few things, but I am still not able to understand why my motor doesn't like to run in the PH/EN mode. It makes weird noises, and the rotation speed of the motor does not increase linearly with increase in PWM duty cycle.

    In PH/EN mode, it runs absolutely fine at 100% duty cycle in both Forward and Reverse. But it runs at about 60% speed when EN duty cycle is between 90% and 100%. But it also runs at about 80% speed when duty cycle is between 80% and 85%. Between duty cycles of 86% and 90% it runs at almost 5% speed making weird screeching noises.

    On the other hand, when running the motor in PWM mode, the speed of the motor increases almost linearly with increasing any of the two duty cycles independently.

    My application is for an automotive sunroof motor and a power widow lift. I also have a TIDA-01389 Small-Footprint Sunroof Motor Module Reference Design which seems to only run in PH/EN mode.

    nSLEEP was always set to high since we are not evaluating power saving features at the moment.

    Looking forward to hearing from you.

    Best regards,
    Gunjan

  • Some follow up.

    I am able to achieve MODE = Hi-Z (~1.1V on MODE pin on the EVM) using the provided TI software. After selecting this mode through the software, the mode  stays at Hi-Z, even after disconnecting the EVM from my computer. This means that once I set the mode to Hi-Z I am able to run the motor with IN1 and IN2 PWMs from the Arduino at ~31kHz. But I still am not able to set mode = Hi-Z by just leaving the mode pin floating after powering the EVM back on.

    Apart from being not able to set the mode to Hi-Z, I am facing another 2 problems. The motor I am using has 2 hall sensors on it. When running the motor in a duty cycle less than 100% their is a lot of noise in the hall sensor outputs. Could you suggest a way to remove or reduce this noise? The second problem is that when the panel reaches its end, there are strange noises from the motor and the EVM board along with 1000s of hall sensor outputs. I am not sure what is causing this problem with the hall sensors.

    Any help would be greatly appreciated.

    Thanks in advance,
    Gunjan

  • Hi Gunjan,

    By default, the MODE pin is set to a logic 0 when the EVM is first powered up. To set the MODE to Hi-Z the GUI send the command from the computer to the MSP430 on the EVM.

    If you disconnect the EVM from the computer and leave the EVM powered, the MODE pin will remain as set by the MSP430.

    When powering the EVM back on without the GUI, the MODE pin returns to logic 0.

    Are you trying to connect the Arduino to the J4 header, and left the resistors R23 through R37 populated? This could be part of your issue. The EVM is designed to either run using the GUI, or allow you to remove resistors R23 through R37 and connect an external mcu. Doing both can affect the operation of the EVM.

  • Hi Rick,

    Thank you again for your answers. The issue with the PH/EN mode seemed to be related to the input PWM supplied from the Arduino. I was trying to run it at the default frequency (490 Hz), which seems to be too low for reliable operation. By changing the frequency to around 31kHz, I am now able to use the EVM board as well as TIDA-01389 in the PH/EN mode. Using it in PH/EN mode has also removed the strange noises when the range of movement finishes (panel reaches the end of the rail). Could this have something to do with Hi-Z mode allowing coasting?

    Yes, I was connecting the PH, EN, nSLEEP, MODE and GND pins to the Arduino with the resistors populated. Maybe that explains the strange behavior of the MODE and the board in general. But now by using just EN and PH pins for the PWM and GPIO-bit respectively, I am now able to drive the motor in PH/EN mode, even with the resistors popuated.

    The noise in the hall sensor signals still exist when running at any duty cycle other than 100%, although they have been largely reduced/controlled using a low-pass RC filter.

    Thanks for all the help once again.

    Best regards,
    Gunjan

  • Hi Gunjan,

    We are glad you have your system working.

    PWM'ing above 20kHz reduces noise from the PWM signal.

    Could this have something to do with Hi-Z mode allowing coasting?

    It is difficult to determine this without understanding the output signals and noises.

    Adding filters to reduce the noise on the hall sensors is a good idea. It may not be necessary depending on the noise.