So I've hacked up a web page for selecting chip settings and spitting out register values / setup code:
DRV8711 register settings
So I've hacked up a web page for selecting chip settings and spitting out register values / setup code:
DRV8711 register settings
I ended up using one Arduino for reading and writing the registers on the DRV8711. The code I wrote is similar to Mark_T's library except not nearly as elegant. I have a separate arduino running the grbl code. My process is to power everything up. I type the letter 'i' into the serial monitor of the Arduino that communicates with the DRV8711. My script sends the initialization values to the DRV8711 and then reads them back to insure that the values are set correctly. It gives me a message that the DRV8711 is ready to go and that I can enable the steppers. When I type an 'e' into the serial monitor it enables the steppers. Then I can run my GRBL code and everything spins up.
One problem that I was having was using a 48V power supply with the DRV8711 Booster Pack. On 24V everything worked flawlessly. On 48V I kept getting Channel A and Channel B Pre Driver Faults. After communicating the issue to the TI engineers they suggested that the issue was probably due to noise and to put a 47 - 100 ohm resistor on each of the low side fet gates. Luckily I happened to have a few 100 ohm 0603 resistors handy so I cut the traces and soldered the resistors across the gap. That completely solved the problem and now it is purring like a kitten. Basically the tracks to cut are the ones circled below on the Booster Pack. Just scrape away the solder resist layer, cut the track, and then solder the resistor across the gap. If you do this, be sure to set DeadTime to 850ns.
Attachment 274452Attachment 274454
Crazy thing is that I priced out all of the parts to build one of these and it came out to $20. That's without the cost of getting the PCB's made. The $25 that TI is charging for these boards is a great deal when you think about it. The only reason I think I would want to roll these myself is to put 4 of them on 1 PCB that could plug into an Arduino as a shield, making a full 4 axis driver solution.
Ah, useful information about the pre-driver fault. The datasheet says its detecting overcurrent on the gate
drive pins, so I wonder if the gate drive current settings had any effect on how sensitive the chip was to
spurious faults (no doubt Cdg and capacitive couplng between H-bridge outputs and the low side gate pins was
increasing the instantaneous switching currents - since these go in anti-phase there would be 58V relative
swings between them.
Of course reducing the gate current or slowing down those low side drivers will increase overall switching loss
so another solution such as better screening of those gate traces might be worth investigating. I've not run the
chip above 30V (my bench supply max) personally.
I was looking through the TI forums and saw that the reply jerseyguy1996 got was something they've know about for a long time so I'm not sure why they don't include series resistors on the gates on the EVM. The board layout is pretty clean buy the low side gate pins are sandwiched between the high side gate and the sense pins so it might not hurt to isoltae the low side gate pins more than the EVM layout does.
I am happy to have stumbled on this post. I am very interested in following along with the progress of this especially anyone interfacing these drivers with Arduino. I am in the planning stages for my CNC build and want to use Arduino/GRBL.
The Arduino/GRBL/DRV8711 combination works great so far. I have only tried it on one axis so far (because I don't have a complete machine yet), but it spins that motor like a top. I'm just trying to work out some shields to connect the DRV8711 Booster packs to the arduino's. I'll update here as my progress continues.
I've been trying to commission my new standalone DRV8711 board but ran into a problem
caused by an oversight on my part - i've took much current consumption in my optocoupler
chip for the DRV8711's 5V output rail... I'm going to have to redo this, but will bolster
the 5V and check my code is all working, then probably release it open source. I have
noticed that the DRV8711's heat dissipation is strongly related to the load on the 5V
rail during this debarcle.
It is quite a challenge finding an opto coupler that has reasonable fast response and
low receive-side current consuption in a quad packet. I have found a dual package,
the ACPL-K24L, not as cheap as I'd like but I reckon opto-darlington's will do for the slower
signals, STEP and DIRECTION only need reasonably snappy response and the ACPL-K24L
is 5MHz or so which is plenty with push-pull output (no pull up needed) and 1.1mA receive-side
supply per channel.
I'm going a completely different route. After pricing out the BOM of the TI Booster pack it became apparent that the $25 that TI is charging is incredibly reasonable. What I'm doing is just making a board with headers to plug in 4 booster packs, a header for one arduino nano, a header for an adafruit 128x64 oled display, and a rotary encoder with a push button as a front end. Finally I will have a header that I can use to connect the step and dir signals from the cnc controller. Bam...four axis driver solution
That's a point, they are starting to become available.
Wish I was less busy and I would find time to build the latest version with low current optos and test it...
I can see another version using the ISO7342 after that!
In an electrically noisy environment (ie a CNC machine in a workshop), you don't want to worry about interference, so the motor controller
interface is opto isolated. The uController on my board is purely to setup the DRV8711 configuration, its not isolated from the DRV8711 nor
from its programming port, but in normal operation that programming port isn't used, only the optoisolated step/direction interface.
Anyway some news - have just managed to build a new version of the board which should work from the DRV8711's 5V rail (10mA max
IIRC), using low power optoisolators. Possibly be able to test this next weekend and report back. The longer term goal is a larger
board for 3 or 4 axis, and that's going to be a while, but I have ordered a chunky 4A 0.4 ohm stepper motor for proper load testing of
the DRV8711.
Well I've tested the board now, and discovered an undocumented feature of the DRV8711 - if the #SLEEP pin is not pulled to V5 with a pullup
resistor the on-board linear regulator that supplies V5 will rise to about 4V and then switch off. So one last mod to the board needed, but I
bodged past this with a 10k resistor poking through some vias for now.
Running the 328 at 8MHz gives reduced power consumption, and the opto-isolators are much less power hungry and we have stable
5V to the 328 from the V5 output (10mA limit).
Can now drive 4A parallel bipolar stepper from this 1.7" x 1.4" board. The dual MOSFETs get hot, but not blisteringly so. glue-on heat
spreader would be a good idea, or a larger board with 8 MOSFETs would run cooler. The 0.05 ohm shunts also generate noticable heat at 4A,
0.033 or 0.022 would be better for high current.
The two LEDs bottom/centre are on #FAULT and #STALL. The hook-up wires are to the opto interface which has STEP, DIR, ENABLE
going in and #FAULT coming out.
The back of the board has another opto isolator chip and the large Isense shunt resistors and ceramic motor decoupling. I haven't
added provision for extra electrolytic motor decoupling yet.
The next stage is thinking about a 4-channel board
Attachment 290546
Attachment 290548