I have a few 3D printer boards from Fly/Mellow which are designed for TMC-stepstick drivers.
The guys who developed the RepRapfirmware-branch for it might be interested in your design. (namely jay_s-UK and gloomyandy )
TMC drivers can be configured via SPI or UART. Do you implement a similar config path?
Wow, I had no idea they provided such a service. Here’s a page I found about it: How to use JLCPCB Global Sourcing Parts Service?
I’m surprised this particular driver isn’t well stocked already since it has such good specs, but for larger quantities it will be better to use global sourcing anyway since it’s the most expensive component on this board and LCSC’s price for it is about 50% higher than Digikey and Mouser.
The current design is only configurable via external cable. I’m having trouble finding information on which stepstick pin(s) I should use for UART. Maybe MS3? It looks like the Trinamic drivers have a single wire bidirectional UART, so I’m not sure how to emulate that from the STM32 which uses two wires. Maybe if I just connect the STM32’s RX to stepstick MS3, it will be able to receive UART commands at least.
I wish we would have had this discussion before I placed the order But at least the boards themselves only cost a few bucks. I can transplant the components from one of these to test the next revision.
Another afterthought is that it would be nice to have a pin for sensorless homing (activated if the motor is applying torque but fails to move for some amount of time). I’ve seen some motherboards with integrated TMC drivers that have the DIAG pin accessible for that, but no stepstick type drivers with a pin labelled DIAG. Maybe I should just have a single 2.54mm pin sticking up from the board somewhere that you can connect a jumper wire to the motherboard endstop pin.
For global sourcing, you need to pay not only the price of the part, but also some sourcing fee, I don’t think it’s negligible. The last time I looked at this, the LCSC part ended up being cheaper, even though you can buy the bare part for much less. The best thing you could do is find a chinese vendor inside the mainland which has the part, then mail it from that shop to JLC and they will put in your inventory via consignment.
The wiki pages from fysetc are a good source of information. Sometimes you have to read between the lines and some info got lost during translation. Here is the link to a UART config example.
Most boards using the stepstick pattern have a bunch of extra config jumpers.
DIAG is always on an extra pin. Not sure if it’s always on the same location on different driver boards, but on two drivers it’s there
The MKS drivers do have the actual PDN_UART pin on stepstick RST, but have it connected via resistor to MS3. Maybe for compatibility with both kinds of motherboard? It does look like FYSTEC uses stepstick RST for UART, connected via JP1 in the schematic diagram here FYSETC F6 - FYSETC WIKI
Not good for me because I’d like to keep the STM32 reset pin accessible. But upon further consideration, I don’t think the UART connection would be such a good idea anyway since it would need support in the 3D printer firmware. All the settings needed to configure a BLDC motor would be a lot of work and maintenance burden for a niche product. Better to stick with my original plan to use SimpleFOC Studio via an FTDI adapter.
I do wish I could use that DIAG pin placement, but it looks pretty hopeless. I can fit an upward-pointing 2.54mm pin in the lower right area, though. Not aligned to the grid defined by the other pins, but it should work for a jumper wire to the endstop pin. It greatly reduces the conductor cross section from the lower ground pin to the driver, but the upper ground is probably all that’s really needed, since there’s only one VM pin.
I’m using a BLDC motor with sFOCs stepDir interface on a 3D printer without any Comms except stp and dir. It doesn’t bother much, since we don’t need standby- or idle current reduction. (unless you want to drive a stepper motor with it?)
Would you have to remove the driver from the controller to flash it? I know that the Duet3D controller has a protection circuit which allows to feed/flash the board via USB and also have a 24V PSU running.
But I also remember reports of melting USB cables from bad ground loops…
It should be ok, since the 3.3v rail is isolated by the regulator so flashing it while the printer is off won’t feed power back into the motherboard circuitry. And if the printer is on, you can leave the ST-Link power wire disconnected, or use v3minie which doesn’t supply power at all. UART communication only needs 3 wires, TX, RX, GND, so that should be ok too. If you do connect the ST-Link or FTDI’s 3.3v supply to it while the printer is on, you could potentially get a small current if that 3.3v is not exactly the same as the 3.3v from the onboard regulator.
I like being able to disable the motors and move the printer around by hand (changing filament with a spiral extruder, and quickly moving the printhead near the home position before starting the next print), so I definitely want the enable pin connected. But otherwise this is mostly about ease and cleanliness of construction, having the drivers plugged into the motherboard rather than having to mount them separately. I suppose it wouldn’t be too bad with my stackable Lepton design since you’d only need one mounting point, but this is better still.
It can drive BLDC or steppers since it has 4 independently controlled half bridges.
EDIT: Brilliant idea for the next version: Use DAC to control the current limit VREF pin. That will give nFAULT exclusive ownership of the pullup resistor, and may eliminate the need for voltage-based current control and its associated kv and resistance parameter tuning.
The boards have arrived! Soldered the header pins on one of them, but haven’t fired it up yet. I hope that fault pin isn’t a problem, because I had JLC solder the connectors so I wouldn’t have to order them separately, but they block easy access to the two pins that may need to be bridged (bottom two on the left side of the driver chip in the photo)
This 32-pin MCU barely fits, so you’d have to do double-sided SMD. But that means you’d have room for the larger DRV8844 as well, which is $2 versus $5 for the DRV8955. Or DRV8316 if you don’t care about supporting stepper motors. And if you don’t care about compatibility with 3D printer motherboards, you could make a tiny single-sided driver with RP2350 and DRV8844 for about $3.50 in components. You’d save some board space that’s wasted by unused header pins, but lose some because you’d have to include a bulk capacitor and more low-voltage management. Stepstick cheats by having a capacitor on the motherboard underneath, and separate high voltage and 5V supply pins.
Ooh, very nice. And only $3 apiece from Mouser (LCSC doesn’t have them yet). With a 4-layer board and only 3 phases supported, I may be able to fit all the resistors necessary. Although I’ll probably have to give up my newly added home pin…
I still need to test out the v1.4 boards that I ordered. I’ve been spending all my time working on Gooser, but I think it’s ready to order now.
Here are the stepstick v1.5 images (home pin added, and fault joined to the VREF pullup and connected to a GPIO so it can be read). I also added inner layers so it can optionally be produced as a 4-layer board, because I was going to include it in a panel with other 4-layer designs and cut them apart and assemble myself to save money (JLC is about the same price for anything up to 100x100mm). But it turns out ordering the $7 solder stencil adds $20 to the shipping cost, which defeats the purpose.