New modular driver board, 60v 30-50A

Hello everyone. You may have seen my “RP2040 dual motor driver” board floating around the internet. I recently realized that making the power driver section modular and moving towards a dual sided board design had a lot of advantages, and so this week this driver board was born. So far my inverter layout on previous designs has mostly worked, but I had some long traces to run gate drive signals under some long power planes, and I think this led to issues where in some cases parasitic turn on of the opposite FET would result in catastrophic failure. I realized that with a dual sided design, my gate drivers lined up very nicely right with the FET gates, and the long runs could be completely eliminated. With improvements to the miller clamp circuit and improved snubbers, I hope this design will eliminate the catastrophic failures I was seeing.


This design allows for daisy chaining power in medium power applications, or each board can be wired for its own power if needed.

Notably, there is no CPU on this module so you are no longer tied to the RP2040. I love working with the RP2040 and for my application, moving big slow drive motors for a farming robot, the 8khz loop rate I get is fine (also I see some redundancy in the code that could improve that somewhat). However some want better ADCs and floating point, and with this new board it will be easy to make other CPU drivers for it. Note that (I believe) I broke out the necessary pins for sensorless control, even though I will not use that, so this should be a more general purpose board for others to experiment with. Also the six pin connector next to the motor connector is for an encoder, and when used as I intend (tested already on my previous board design) would support hall sensors, SPI sensors, I2C feedback systems, and incremental encoders, plus thermistor feedback.

The board is on github now, under the “driver_module” kicad files here:

The board is 100% routed, but I have not fully gone over it for review. I would love your feedback on where it is so far.

One thing of note is that I laid out the interface connector with a pinout which is convenient for this specific board layout. I literally changed the pinout based on where traces ended up for the cleanest possible layout, but you can easily imagine a more universal pinout for something like this, with certain pins laid out in logical groups rather than individual pins placed wherever traces land. As you can imagine, if we as a community made lots of different boards with lots of different pinouts, it would be a headache for compatibility.

That said I am eager to produce these boards and get them tested as I have a need for functional boards as soon as possible so I am not going to fret much about that last point, but I am curious for any thoughts on community strategies for pinouts.

And all other feedback is appreciated!

8 Likes

This is great! A number of times when I was trying to roll my own board, I needed something like this. However I believe that we should settle on a complete board eventually, but this is a good stepping stone/module, esp because the components can be rearranged etc. in the design files, a microcontroller subbed in etc.

Dare I ask what approach you used for current sensing, rather than looking at the schematics and trying to look up part numbers?

I think re pinouts I would put the low current pins as through holes nicely on the side of the board with 2.54 mm pitch and make sure there is space for screw terminal connectors or dupont or female or male headers. Any of those can be used with 2.54 mm pitch through holes. You can put a male header into a screw terminal connector row and tighten the screws, or use jumper cables with the headers or whatever. I like the screw terminals as they give a solid connection directly to a wire, although they are not perfect by a long way. You could also use right angled pluggable connectors of the right pitch. I think you can get 2.54 mm screw terminal pluggable connectors (for the other side) but they aren’t very common.

The two problems is with multi stranded wire sometimes a stray strand gets somewhere it shouldn’t, and also there is no stress relief. There needs to be a clamp on the insulation of the wire… To deal with the strands I always twist the strands with my fingers.

Thanks!

For current sensing I am using the INA240A1D chip with shunt resistors, in this case two 3 mOhm 2512 resistors in parallel.

I don’t quite follow what you are asking about screw terminals. As laid out I am using a minimum of 21 pins for the logic signals, and I am using two dual row 12 pin connectors to fill those out. If I did a single row 0.1" header it would be over two inches wide, which is wider than the board unless I put it in cross ways, but that would be inconvenient for layout.

For the high power connections there are XT60 connectors for power input and an MT30 connector for motor leads. Encoder inputs are on a molex header.

Which of those would you want to use screw terminals for? I tend to dislike screw terminals as, just as you said, dealing with wire strands is annoying. I am designing this primarily for a production robot where being able to quickly unplug and swap things while being sure you did not change wiring order is important.

Excellent! :clap:

You probably know I did a modular ST design last year. I haven’t seen your exact pin out but, I see they are not the same. One thing to seriously consider is flibability on the MCU or control-stage connectors. When I see this design, my first impression is that one can attach the control-stage backwards, and probably mess it up.

I wish we could use same pin out. Did you check the field stack connections ?

Edit: but of course your MCU doesn’t have integrated gate drivers like the STSPin. I see that. Anyways, just consider above pointer.

1 Like

I guess, the remark about screw terminals was related to the power- and motor connectors.
I’ve never seen these connectors. I just hope they are available. Did you stock-check JLCPCB yet?

Maybe you meant mini cpu drive, I see nothing called “driver module”.

Ah its not in a folder, just a kicad project and associated SCH and PCB in the main folder. It is there!

Yes these PCB mount connectors are available at JLCPCB and their more common solder-cup mating connectors are widely available at amazon and elsewhere. The power connectors are XT60 which is a standard connector for lipo cells meaning you can directly plug an off the shelf lipo in to this board, and the motor connectors are MT30 connectors which are the same manufacturer (Amass) as the XT60 connector.

1 Like

Is this board related to the farming bot project or for something else?
It’s a really nice project!

Nice board. I notice the internal layers don’t have a lot of copper, do you intend putting some GND planes there to help with heat dissipation?
EDIT: My bad, had copper pours turned off … :slight_smile:

I for one, will be using the outputs for BEMF sensing (I have a good circuit for that) so glad you have routed them to the connectors. I am happy with the connector pin mapping, as I will just make a custom board that plugs in that has a BluePill and the necessary power-supplies and BEMF circuitry. Happy to help in testing this board …

Apart from changing the FET’s and the DC Caps, is there much else that has to change to support 100v? Protection diodes I presume …

Also, not to be picky at all, but there are 4 errors running the DRC on the schematic and quite a few clearance violations on the PCB. They may not be an issue.