Skip to content
Snippets Groups Projects
Commit 4c5d11e5 authored by Jake Read's avatar Jake Read
Browse files

v0.11

parent 442f1e22
Branches
Tags
No related merge requests found
# MachineKit Stepper Driver
Uses TMC2130
Uses ATSAMD51
Has AS5047 backpack ?
# IC Spec'ing
### Step Driver
I like the Trinamic TMC2130 and TMC262 - the 2130 has h-bridges built in and is suited to NEMA17 size motors - fairly common. The TMC262 is a very similar chip, but only has pre-driving circuitry for external bridges. This means I can use very similar layouts for two 'sizes' of driver - however, they have different register tables, which is a bit of a bummer. I would be writing twice the software (ish). The other option is to roll a board with the TMC626, using very tiny external mosfets and then later very trivially using much larger mosfets, in the rare case that I want a, say, NEMA 34 or 42. Also, I can roll one off the bat that will be solid for NEMA 23s - normally about 2.5 amps of current. This should be no problem.
OK: so - TMC262 w/ external fets, here we go.
![tmc262](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/tmc262.svg)
## Mosfets
I also need: **Mosfets** then, as I'm going for external option. 8 per board: 2 full bridges. I'll look for arrays - like two or four in a package, this should help keep things small. I like two, for each h-bridge... There is a nice [4.1A continuious / 14A peak DirectFet in a small package](https://www.digikey.com/product-detail/en/infineon-technologies/IRF7665S2TRPBF/IRF7665S2TRPBFCT-ND/4695505) - this might be appropriate for a big driver. As it turns out, there's [this](https://www.digikey.com/product-detail/en/on-semiconductor/FDMQ86530L/FDMQ86530LCT-ND/3847309) appropriate-looking full H-bridge in a small package that will drive 8 Amps at 60v. That's enough for even fairly large steppers... It's got a reasonable RDSon and pretty tiny gate charge... so I feel OK about this as a first shot. Bueno. I am ready to get a schematic going and build library parts.
## Sense Resistor
Sense resistors generally need to scale with the expected motor current - so I want to find a package size that I can use for large and small motors...
### Microcontroller
This stepdriver is part of another project on networked machine control (I am calling this MachineKit, although I may have to change this as I am now realizing that machinekit.com is taken). My favourite new microcontroller for those endpoints is the ATSAMD51, so it's the stand-in. I would also consider the ATSAMD21 (these are both very well supported by 'the community') and the 51 is newer, faster, etc, at a price increase from $2 -> $4. But, in the interests of only dealing with one set of registers, bootloaders, packages, etc - I am just going to not think too hard and pick the ATSAMD51 for this bb, as well. Future firmware-writing self will thank me.
### To Encoder or not to Encoder?
[Mechaduino](http://tropical-labs.com/index.php/mechaduino) is a really excellent project that Sam and I are fond of. They use an AS5047 encoder to resolve more-steps-than-should-be-possible-with-a-stepper. In combining this with the fancy drive technology in the TMC chip, we can basically arrive at a low cost closed-loop motion control solution, so that's pretty rad. I'm familiar with this chip and use it in my brushless motor controller, so it's feeling quite likely I will implement it here as well. My one quam is the added complexity, etc. I could mount it right in dead-center of the board, use side-mount leds for indication and then have a nice clean backplate... (I am trying to avoid a two sided board). I had also thought I would perhaps have the possibility for an external encoder-only board... but, again, less complexity the better. Backplate mounter. OK.
## Form Factor
A-la [Mechaduino](http://tropical-labs.com/index.php/mechaduino) and many other solutions, this beckons to be mounted on the arse-side of the motor it is responsible for... that way, it looks neat, and we can just glue a magnet on the back of the shaft to read position with our encoder. In the future, I really want to also control NEMA8 and NEMA11 motors (because they're cute as heck) but for the immediate future NEMA17s are OK and I can always use a laser-cut adapter to mount the same board onto a NEMA23. OK, again, simplicity wins, we go for the NEMA17 board, but spec drivers to NEMA23 size.
# Board Design
OK, I only have two major footprints left to draw / place - the AS5047D and the sense resistors.
Done, now schematick-ing ...
Done that...
![schematic](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/schematic.png)
Now routing - tricky! The H-Bridges are tight for space and I have to route signals around a big GND and VCC bus, while leaving a nice exit path for the motor coil lines. This took some real fanangling. Here's an early shot at it
![routing-begin](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routing-begin.png)
And finally resolving one of the bridges in a satisfactory way...
![routing-one-bridge](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routing-one-bridge.png)
These sense resistors are huge.
Then I have the big, dubious challenge of picking a network interface port for this whole next rev of work. Oh my. Then I will be doing schematic layup and will be on my routing way. Hurray.
I choose JST SH connectors, seem to be actually fairly common, cheap, etc, to check: can I get assemblies on digikey?
OK, nice, things resolved OK. Done with this. Will do a double-check and then ship these out along with a few others to kick of IAP...
![routing-complete](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routing-complete.png)
# Erratta, Next Steps
Just discovered the TMC2660 - the chip I should have used. Welp. Has 2.6 amp drive with integrated mosfets, and costs less. Same set of SPI registers, so I can swap it in software wise, which is nice. I still feel OK that I went through with the TMC262, now it's easy to make a new chip for ~ 6-8A drives a-la NEMA 32 ++ , and next time I can probably pretty easily drop in the TMC2660 for NEMA17 and 23's. OK.
\ No newline at end of file
# MachineKit Stepper Driver
Uses TMC2130
Uses TMC2660
Uses ATSAMD51
Uses AS5147D
Has AS5047 backpack ?
Does networked control of stepper motors w/ up to 2.8A current. Plans for closed loop step-servo control.
# IC Spec'ing
### Step Driver
I like the Trinamic TMC2130 and TMC262 - the 2130 has h-bridges built in and is suited to NEMA17 size motors - fairly common. The TMC262 is a very similar chip, but only has pre-driving circuitry for external bridges. This means I can use very similar layouts for two 'sizes' of driver - however, they have different register tables, which is a bit of a bummer. I would be writing twice the software (ish). The other option is to roll a board with the TMC626, using very tiny external mosfets and then later very trivially using much larger mosfets, in the rare case that I want a, say, NEMA 34 or 42. Also, I can roll one off the bat that will be solid for NEMA 23s - normally about 2.5 amps of current. This should be no problem.
OK: so - TMC262 w/ external fets, here we go.
![tmc262](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/tmc262.svg)
## Mosfets
I also need: **Mosfets** then, as I'm going for external option. 8 per board: 2 full bridges. I'll look for arrays - like two or four in a package, this should help keep things small. I like two, for each h-bridge... There is a nice [4.1A continuious / 14A peak DirectFet in a small package](https://www.digikey.com/product-detail/en/infineon-technologies/IRF7665S2TRPBF/IRF7665S2TRPBFCT-ND/4695505) - this might be appropriate for a big driver. As it turns out, there's [this](https://www.digikey.com/product-detail/en/on-semiconductor/FDMQ86530L/FDMQ86530LCT-ND/3847309) appropriate-looking full H-bridge in a small package that will drive 8 Amps at 60v. That's enough for even fairly large steppers... It's got a reasonable RDSon and pretty tiny gate charge... so I feel OK about this as a first shot. Bueno. I am ready to get a schematic going and build library parts.
## Sense Resistor
Sense resistors generally need to scale with the expected motor current - so I want to find a package size that I can use for large and small motors...
I'm using the TMC2660 - this driver is 'fully integrated' as in it has current control circuitry, microstepping logic etc *as well as* a set of MOSFETS to drive the motor. I like this one because it has all of the modern step-driver bells and whistles, and has a counterpart - the TMC262 - that contains only the gate-driving circuitry, which will (later on) let me make a board for *really big* stepper motors, using external MOSFETS rated to however-many-amps-I-want.
### Microcontroller
......@@ -37,32 +26,12 @@ A-la [Mechaduino](http://tropical-labs.com/index.php/mechaduino) and many other
# Board Design
OK, I only have two major footprints left to draw / place - the AS5047D and the sense resistors.
Done, now schematick-ing ...
Done that...
OK, normally I get really longwinded about this. Not today! I drew *this* board after a major revision of another version using the TMC262 and some small P-and-NFET H-Bridges, which were a cool part, but obsoleted for me now that I discovered the TMC2660. Really should have looked harder for that.
![schematic](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/schematic.png)
Now routing - tricky! The H-Bridges are tight for space and I have to route signals around a big GND and VCC bus, while leaving a nice exit path for the motor coil lines. This took some real fanangling. Here's an early shot at it
![routing-begin](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routing-begin.png)
And finally resolving one of the bridges in a satisfactory way...
![routing-one-bridge](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routing-one-bridge.png)
These sense resistors are huge.
Then I have the big, dubious challenge of picking a network interface port for this whole next rev of work. Oh my. Then I will be doing schematic layup and will be on my routing way. Hurray.
I choose JST SH connectors, seem to be actually fairly common, cheap, etc, to check: can I get assemblies on digikey?
OK, nice, things resolved OK. Done with this. Will do a double-check and then ship these out along with a few others to kick of IAP...
![routing-complete](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routing-complete.png)
![routing](https://gitlab.cba.mit.edu/jakeread/mkstepper/raw/master/images/routed.png)
# Erratta, Next Steps
# Board Fab
Just discovered the TMC2660 - the chip I should have used. Welp. Has 2.6 amp drive with integrated mosfets, and costs less. Same set of SPI registers, so I can swap it in software wise, which is nice. I still feel OK that I went through with the TMC262, now it's easy to make a new chip for ~ 6-8A drives a-la NEMA 32 ++ , and next time I can probably pretty easily drop in the TMC2660 for NEMA17 and 23's. OK.
\ No newline at end of file
I had this manufactured, and got the solder stencil, so that just left me to place components and reflow. Somewhere along the way I royally screwed up my reflow profile. Next time I fab a set, I'll put an image here, and start the programming folder.
......@@ -32,19 +32,19 @@ UsedLibrary="C:/EAGLE 8.3.2/lbr/ltspice/rload.lbr"
UsedLibrary="C:/EAGLE 8.3.2/lbr/ltspice/sym.lbr"
[Win_1]
Type="Board Editor"
Type="Schematic Editor"
Loc="0 0 1919 1016"
State=1
Number=2
File="mkstepper.brd"
View="-16.0983 8.57054 79.2979 36.5808"
WireWidths=" 0.0762 0.1016 0.127 0.2 0.3048 0.4064 0.8128 2.54 0.15 0.2032 0.254 0.1524 0.508 1.016 1.27 0.6096"
PadDiameters=" 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0 0.55 0.45 0.425"
PadDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6 0.35 0.3"
ViaDiameters=" 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0 0.55 0.45 0.425"
ViaDrills=" 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.2 0.25 0.35 0.3"
HoleDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.3"
TextSizes=" 0.254 0.3048 0.4064 1.016 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 0.8128 1.27 0.6096"
Number=1
File="mkstepper.sch"
View="138.259 125.895 323.17 244.767"
WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
......@@ -53,14 +53,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
DimensionExtLengths=" 1.27 2.54 1 2 3 0"
DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
WireBend=2
WireBendSet=0
WireBend=0
WireBendSet=31
WireCap=1
MiterStyle=0
PadShape=0
ViaShape=1
PolygonPour=0
PolygonRank=1
PolygonRank=0
PolygonThermals=1
PolygonOrphans=0
TextRatio=8
......@@ -72,25 +72,27 @@ PinFunction=0
PinLength=2
PinVisible=3
SwapLevel=0
ArcDirection=1
ArcDirection=0
AddLevel=2
PadsSameType=0
Layer=16
Layer=91
Views=" 1: 138.259 125.895 323.17 244.767"
Sheet="1"
[Win_2]
Type="Schematic Editor"
Type="Board Editor"
Loc="0 0 1919 1016"
State=1
Number=1
File="mkstepper.sch"
View="-81.2547 -3.817 470.889 351.131"
WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0"
ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35"
TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778"
Number=2
File="mkstepper.brd"
View="2.06195 11.1839 68.3095 30.6357"
WireWidths=" 0.0762 0.1016 0.127 0.4064 0.15 0.2032 0.508 1.016 0.254 0.2 2.54 0.1524 1.27 0.8128 0.6096 0.3048"
PadDiameters=" 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0 0.55 0.45 0.425"
PadDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6 0.35 0.3"
ViaDiameters=" 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0 0.55 0.45 0.425"
ViaDrills=" 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.2 0.25 0.35 0.3 0.4"
HoleDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.3"
TextSizes=" 0.254 0.3048 0.4064 1.016 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 0.8128 1.27 0.6096"
PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27"
PolygonIsolates=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0"
......@@ -99,14 +101,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0"
DimensionExtLengths=" 1.27 2.54 1 2 3 0"
DimensionExtOffsets=" 1.27 2.54 1 2 3 0"
SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635"
WireBend=0
WireBendSet=31
WireBend=2
WireBendSet=0
WireCap=1
MiterStyle=0
PadShape=0
ViaShape=1
PolygonPour=0
PolygonRank=0
PolygonRank=1
PolygonThermals=1
PolygonOrphans=0
TextRatio=8
......@@ -118,12 +120,10 @@ PinFunction=0
PinLength=2
PinVisible=3
SwapLevel=0
ArcDirection=0
ArcDirection=1
AddLevel=2
PadsSameType=0
Layer=91
Views=" 1: -81.2547 -3.817 470.889 351.131"
Sheet="1"
Layer=16
[Win_3]
Type="Control Panel"
......@@ -132,7 +132,7 @@ State=1
Number=0
[Desktop]
Screen="3840 2160"
Screen="1920 1080"
Window="Win_1"
Window="Win_2"
Window="Win_3"
File added
File deleted
This diff is collapsed.
This diff is collapsed.
images/routed.png

93.1 KiB

images/schematic.png

107 KiB | W: | H:

images/schematic.png

92.8 KiB | W: | H:

images/schematic.png
images/schematic.png
images/schematic.png
images/schematic.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
This diff is collapsed.
File moved
File moved
File moved
images/v0.1/schematic.png

107 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment