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.

DRV8306EVM: Help with initial setup / spinning

Part Number: DRV8306EVM
Other Parts Discussed in Thread: DRV8306, , DRV8316, DRV10987, DRV10970, CSD88584Q5DC, LMD18200

Hi,

I'm new to BLDC motors and recently posted my first question re: sensorless BLDC control here:

Based on the helpful responses from  I then decided to try out sensored trazezoidal control as a starting point instead - using the DRV8306.

I now have the DRV8306EVM board and have started testing, however I'm having an issue getting the motor to spin. When I slowly turn up the speed using the pot, the rotor just moves slightly sometimes and oscillates. If I try turning speed up higher, I can see high current draw on the PSU supplying VM (so I haven't turned it up very far yet).

I photo of how the DRV8306EVM is set up is below.

NOTES: 

Hall effect connections

  • My motor uses Honeywell S41F sensors, which are single ended, current sinking and require supply voltage min of 4.5V.
  • So I have removed jumper JP1 and supplied 5V to JP1-2 (RED wire) and also connected 0V from the 5V PSU to HGND (GREEN wire)
  • RED and BLACK wires connected to hall connections terminal are HPWR and HGND respectively, then BLUE wire is Hall A, YELLOW is Hall B and WHITE is Hall C
  • Switch S3 is in the Sin position for single ended hall signals
  • When I rotate the motor manually, each hall input (A+, B+, C+) changes between 2.4V and OV depending on rotor position. [NOTE: It's a 8 pole (4 pole pair) rotor]

Motor connections

  • A = RED wire = Phase U
  • B = BROWN wire = Phase V
  • C = G/Y wire = Phase W

IDRIVE and VDS jumpers

  • The DRV8306EVM User Guide mentioned that default setting for these is no jumpers, so I have followed that. Not sure if that's the best starting point though? 

Other

  • VM = 24Vdc
  • Motor is currently under no load. It will eventually drive a pump head, but that is removed and just free spinning at the moment....well at least I'm hoping to get it free-spinning! :)
  • I have tested motor using another DEMO board I have here (from a different supplier), was able to get it spinning ok - so I think the motor is ok. 

As mentioned, when I power up the system then slowly turn the speed adjust pot - the rotor sometimes moves slightly then stops, and vibrates / oscillates in that spot. Other times it looks stationary, but when I hold the rotor I can feel the oscillation. The rotor also feels 'locked' / difficult to turn if I manually try to rotate it when in this condition. Also as noted, if I turn the speed up further - I can see high current draw on the supply. The motor pulls around 0.6A when free spinning in this unloaded condition (using different demo board), however current draw as over 4A when I tried turning up speed slightly using DRV8306EVM (so I haven't tried turning it any further).

Unfortunately I don't have a scope currently, but can get one if that helps find the issue. 

Any ideas on what I've done wrong or any other input would be great - thanks! 

  • Hi Adam,

    Nice to chat with you again!

    Thanks for sending your picture, it gives me a good idea of what you are doing. I would guess that there is something wrong with the Hall sensor inputs to the DRV8306 causing the motor to not commutate & lock - this causes the very high current you are seeing.

    Can you check a couple of points:

    1. Try reversing the position of the Hall Select switch, just in case there is an error in the user guide
    2. Measure the voltage on A-, B-, and C- (the Hall connections that you aren't tying the Halls to). They should be 1.65V; if they aren't something is wrong.
    3. When I rotate the motor manually, each hall input (A+, B+, C+) changes between 2.4V and 0V depending on rotor position. --> That sounds very odd, the output of the Hall should pulled up to 3.3V, not 2.4V. Get Hall A to operate and measure the voltage across R17, then measure the voltage at A+. Do the same thing when the Hall releases (measure the voltage across R17, then measure the voltage at A+)
    4. Can you try all different combinations of Hall sensor Inputs (white/yellow/blue)? I do often see that one particular combination works better that other.

    IDRIVE and VDS jumpers

    • I would recommend placing jumpers at the lowest settings to start (that would be the position near the edge of the board)

    Thanks,

    Matt

  • Thanks again  ! Responses are below:

    Can you check a couple of points:

    1. Try reversing the position of the Hall Select switch, just in case there is an error in the user guide

      I was hesitant to try this first up, based on the halls being supplied with 5V and what I read in this thread re: potentially damaging the DRV8306 (not sure if this actually would be an issue though)

    2. Measure the voltage on A-, B-, and C- (the Hall connections that you aren't tying the Halls to). They should be 1.65V; if they aren't something is wrong.

      I measured 1.5V here between A-, B-, and C- and HGND - so something must be off? 

    3. When I rotate the motor manually, each hall input (A+, B+, C+) changes between 2.4V and 0V depending on rotor position. --> That sounds very odd, the output of the Hall should pulled up to 3.3V, not 2.4V. Get Hall A to operate and measure the voltage across R17, then measure the voltage at A+. Do the same thing when the Hall releases (measure the voltage across R17, then measure the voltage at A+)

      When A+ = 0V then R17 = 3.3V, and when A+ = 2.5V then R17 = 0V (Note: A+ voltage - I measured this value at 2.4V yesterday but carefully checking today it seems to be 2.5V).  

    4. Can you try all different combinations of Hall sensor Inputs (white/yellow/blue)? I do often see that one particular combination works better that other.

    I tried all combinations as suggested. With the IDRIVE and VDS jumpers at lowest setting, I was getting the nFAULT led flagging at a certain point when turning up the motor speed. So I moved both jumpers down 2 places (third position from the edge) and tried again......and on the last combination the motor started spinning!!! I still don't quite understand why that combo worked vs. the first combo I tried? My motor actually came with a built-in controller (which I used for initial testing then removed). On the built-in control PCB the hall inputs were labelled A, B and C.....so I followed that combo in my initial setup. I thought that would need to keep that the same, but now it's seems B, A, C works? :)

    Either way I'm very happy to have my motor spinning, thank you!

    One thing I did notice though was running clockwise the motor sounds good/smooth and current draw matches initial testing using built-in controller....however when when running anti-clockwise, it doesn't sound great and pulls higher current. What is that a sign of?

    Also what are your thoughts re: the values I provided....the halls still aren't reaching 3.3V when high, so do I need to solve that somehow? 

    Thanks!

  • Hello Adam,

    I'm very glad to hear that you could get the motor spinning!

    Since you are using open drain output halls and not analog halls, there should not be a danger to the DRV8306 input pins when changing the Hall Select Switch. The Halls have no path to apply voltage from your +5V to the DRV8306.

    IDRIVE is set to change the rise and fall time of the MOSFETs (You would need a scope to properly see this). VDS will be the overcurrent protection trip point and so if this is set too low while spinning faster (i.e. more current) then you can trip our overcurrent protection.

    Some motors are designed to only operate in one direction. This can be due to the mechanical motor construction or the position of the fan/pump blades if present. If this motor is intended to only operate in a certain direction, the datasheet should say so. If the controller was designed to only operate in one direction (with no way to change it), that would be a sign that the motor is optimized for a certain spin direction.

    As far as the 2.5V from the Halls, I think you may need a scope to debug that further. The Hall output is clamping to 2.5V but that isn't really a problem (the DRV8306 is still getting valid logic signals).

    Thanks,

    Matt

  • Hi Matt,

    OK thanks - that's good to know I'm safe with the halls running at 5V, regardless of switch position. 

    Also sorry I should have mentioned, my motor runs in both directions, and did so with the built-in controller without issue.

    I've done more testing since last post, and the performance with DRV8306 is still great when running clockwise....but very rough when running counter-clockwise. Sometimes it doesn't even start in that direction, it just locks / pulls high current like it was doing previously in both directions (before I changed the hall wiring). Other times it will spin counter-clockwise, but as mentioned it sounds quite rough and pulls higher current. It's pretty strange as it's running so well clockwise! 

    I have another of the same motor here, so will test using that also to see if it's the same. I also need to do some more reading re: how to set IDRIVE properly, and it sounds like a need a scope also :)

    In the meantime if you have any re: the counterc-lockwise issue - please let me know!

  • Hi Adam,

    It is interesting that then motor is not behaving as well in both directions with DRV8306 while it operates well using the other solution.

    DRV8306 does *not* implement lead angle adjustment, which results in a lower efficiency. If the built-in controller has lead angle adjustment then I would expect that solution to be more efficient/smooth.

    With an oscilloscope, you can check the Hall transition alignment with the motor voltage waveform (Measure HALLA, OUTA, OUTB, OUTC). Basically we would need to verify the Hall position versus the motor-generated back-EMF. Sometimes the Halls are not aligned in the way the driver is expecting.

    We have other solutions with lead angle adjustment, but they are either much lower current (DRV10970), or sensorless (DRV10987). In about a month or so we will be pre-releasing a new sensored driver based on DRV8316 (at least based on our current schedule) with lead angle adjustment which would be interesting to try.

    Thanks,

    Matt

  • Hi Matt,

    Yes it's definitely interesting re: the counter-clockwise operation. You are correct that the built in controller does implement lead angle adjustment - so I expected less efficiency / smoothness with the DRV8306. I am definitely seeing that in the clockwise direction, but it still seems acceptable for our application. Counter-clockwise is different though - it definitely seems like something is wrong there.

    I've got more testing to do - so just two quick questions if that's ok, then I'll leave you alone for a while!

    1. I calculated IDRIVE setting at 130mA for a 200ns TRISE (as a starting point). This was based on a Qgd value of 26nC from the CSD88584Q5DC data sheet. So I can select the correct setting (120mA or 180mA), can you please confirm if the jumper setting closest to the edge is the 15/30mA setting? (so my settings would be 3rd and 4th jumpers along). There are only 6 jumper settings (and 7 IDRIVE settings), so I'm not sure if the 'no jumper' setting is min or max. 

    2. I have set up a PWM input now for speed control, and am running a test program to ramp the duty cycle up to different speeds at varying rates. When the motor is unloaded this works well (in clockwise), however when the motor is loaded - I sometimes get a bad 'stall' type conditions where the motor pulls very high current and makes a high pitched sound (the other times it works great though). What is normally a sign of?

    FYI the load on the motor is a gear pump head which is used for drink dispensing. Sometimes when I get a stall it will start working again during the same run (i.e. stall briefly then start operating normally), and other times it stalls repeatedly and I need to remove the pump head and get motor going again un-loaded. 

    Finally thanks for the input re: the new DRV8316 based option with lead angle adjustment. The DRV8306 is very appealing to me though, due to being integrated control with simple IO. For this application I'm actually upgrading an existing product which currently uses brushed motors driven by one of your LMD18200 chips. This has worked great for us for years now, however due to a new compliance change/issue I need to quickly move to a BLDC solution. The IO for the DRV8306 is similar to the LMD18200 so it seems like potentially a great solution which would reduce cost and complexity (as we need to interface it with an existing control board and software). Also don't worry, we would be outsourcing the final implementation to an experienced embedded systems engineer - I'm just trying to far as I can before that!

  • Hi Adam,

    We welcome any and all questions!

    1. I calculated IDRIVE setting at 130mA for a 200ns TRISE (as a starting point). This was based on a Qgd value of 26nC from the CSD88584Q5DC data sheet. So I can select the correct setting (120mA or 180mA), can you please confirm if the jumper setting closest to the edge is the 15/30mA setting? (so my settings would be 3rd and 4th jumpers along). There are only 6 jumper settings (and 7 IDRIVE settings), so I'm not sure if the 'no jumper' setting is min or max.

    Based on the layout, the "lowest setting" (15/30mA) of GND is at the edge of the board and the "highest setting" (150/300mA) of DVDD is the inside position of the header. The "middle setting" (90/180mA) of Hi-Z occurs when no jumper is placed.

    2. I have set up a PWM input now for speed control, and am running a test program to ramp the duty cycle up to different speeds at varying rates. When the motor is unloaded this works well (in clockwise), however when the motor is loaded - I sometimes get a bad 'stall' type conditions where the motor pulls very high current and makes a high pitched sound (the other times it works great though). What is normally a sign of?

    The motor will require some torque to overcome the load. There are a few things that will limit the current in the motor (proportional to the motor torque):

    1. ISEN current limit - If the voltage at ISEN exceeds 0.25V, then the driver will start to truncate the applied PWM (on the EVM, the resistor R29 generates the voltage at ISEN. I think this truncation is reported on nFAULT
    2. VDS overcurrent - if the voltage across any MOSFET exceeds the VDS overcurent theshold (0.15 to 1.8V), the driver will shut down the bridge for a short time. This will report on nFAULT.
    3. Input PWM duty cycle - If the input PWM duty cycle does not allow for a high enough motor current, the motor will stall under load. For example a 10% duty cycle has less torque capability than a 50% duty cycle. (think duty cycle * VM / motor resistance)

    (I do not recommend 100% duty cycle as if you hit ISEN current limit the driver will latch OFF - it relies on the next PWM edge to reset the fault)

    Thanks,

    Matt

  • Thanks Matt!

    Looks like I have IDRIVE set at 120mA then which is good, I'll try 180mA today by removing the jumper.....but guess I'll need a scope to properly determine the best final setting. 

    Re: Stalling - my program ramps the duty cycle up from 0% to 65% (at 40kHz) over approx. 1 second. At 65% duty - I get the flowrate which I would expect from my pump head, and the current draw (from the lab PSU supplying VM) is 3A which is in line with what I would expect also (based on similar testing with the built-in controller).

    About 8/10 times it starts well, but the other times it stalls and pulls very high current - my lab PSU tops out at 10A, and I have seen it flickering up in that range. During this time the motor makes high pitched sounds, a bit like a dying robot :)  As mentioned, sometimes the next try will work - but other times I just get repeated stalls....normally then I remove the pump head and manually rotate the shaft, then it will start again under no-load. 

    During these stalls I still haven't had the nFAULT led turn on, which is interesting (note: I have VDS set at 0.4V).

    I'm wondering if it's an alignment issue like you suggested for the counter-clockwise issue. Like it lands in a certain spot and struggles to commutate from there. 

    Time to get a scope! 

  • Hi Adam,

    It does sound like the motor is getting stalled out on start-up. There could be an issue with the pump starting without load, or the Hall sensor placement in the motor is abnormal. A scope would help to determine if the Halls are aligned like we are expecting.

    You may want to try out other combinations of motor output placement, Hall Sensor inputs,and the DIR pin. There could possibly be a better configuration, if you have not tried them all yet.

    In stall state I don't think you are pushing enough current to trip nFAULT - this would be something like ~500A based on the RDS(ON) of those MOSFETs.

    Thanks,

    Matt

  • Hi Adam,

    There is a procedure to find the motor "dead point"starting on page 20 of this document. This guide is obviously not for DRV8306, but it shows how to measure where the point is. The document recommends a slower acceleration rate to overcome this.

    Thanks,

    Matt

  • Hey Matt,

    Good news - I followed your suggestion "you may want to try out other combinations of motor output placement" and you were right.....a different phase wiring setup changed everything! The motor now runs in both directions and starts successfully every time - both unloaded and loaded!!

    Thanks again for all your help with this :) 

    There was also a significant drop in current draw (3.0A down to 2.1A under load) and less noise as well which is great....I also noticed the mosfets were getting quite hot before, but now they are much cooler.

    With all these positives there was one thing though - an overall drop in flowrate. This is both compared to running clockwise in the previous phase wiring setup, and also to the built in controller. I'm now using a much higher duty cycle (98%) and while the flow is acceptable, it's still below what I would consider 'max' for this pump head.  

    I know the built-in controller uses phase angle adjustment - which is more efficient, so could that drive the motor faster?

    Also the phase wiring I had previously was obviously 'off' - so maybe it was commutating differently (I only had duty cycle at 65% and it was max flow and high current). 

    I tried increasing VM which obviously helped (27V got me to where I would like), so that is an option.....however if there are any other parameters I should try adjusting please let me know!

    Thanks again Matt

     

  • Hi Adam,

    That's great to hear. It's always awkward (for me) asking to try out random wire combinations but in reality it works!

    You may want to check the speed of the motor when running at your maximum input PWM duty cycle, You could be slightly slower due to a non-optimized lead angle. An optimized lead angle normally results in a higher maximum speed of the motor.

    To increase the speed you can either increase the supply voltage or increase your PWM duty cycle command. If you are already at 98%, you can't go any higher on duty cycle.

    You can improve the duty cycle on the outputs by increasing IDRIVE. IDRIVE controls the rise and fall times and so if these are too slow your output waveform starts to look more like a trapezoid than a square wave. Unfortunately you shouldn't push this too fast as you can cause ringing on the output which results in EMI.

    Thanks,

    Matt

  • Hey Matt,

    I got there over the weekend....turns out the flow issue was related to the pump head configuration, not the DRV8306 :)

    I'm now getting a great flow with consistent (and fast) start ups. 

    Thanks again for helping out, really happy with where I'm at now. 

  • Hi Adam,

    Excellent! Please do reach out in the future if you have other questions!

    Thanks,

    Matt