Friday, January 11, 2019

T19 Build Guide - Part 6 - Drive Section Part Prep, Drivetrain Setup

  • Hand Drill Motor
  • 9/64" Drill
  • 7/64" Drill or 6-32 tap drill to suit material
  • 6-32 Tap
  • 10-24 Tap
  • Tap Handle
  • File
  • Knife
  • Mini Grinder/zip wheel
  • Soldering Iron
  • T19 Drive Housing
  • T19 Drive Spacer
  • T19 Drive Cover
  • T19 Bolt
  • T19 Crank
  • T19 Crank Pin Bushing
  • 6-32 1.5" or 1.75" SHCS x 6; or 4 x 2" length and 2 x 1.75" (max) length (drivetrain upper stack bolts)
  • 10-24 x 3/8" or 1/4" headless cup point set screw (crank to bolt motor shaft)
  • 6-32 x 5/8" SHCS (recommended) or use 1/2" length (crank pin bushing to crank)
  • OSM 17HS16-2004S1 x 1 (bolt motor)
  • M3 x 6mm length FHCS (bolt motor to drive housing)
  • Leadfree Solder
  • Flux
  • 1/8" Heat Shrink Tubing
  • 0.1" male breakaway header, 7 pins required total (4 and 3 pin segments)
  • Subminiature microswitch, roller lever or simulated roller lever actuator (bolt limit switch)
  • M2 x 20mm length button head machine screw x 2 (Limit switch mounting screws)
  • M2 washer x 2 (above)
  • M2 nut x 2 (above)

Part prep time ...again. Is this fastener prep business getting old yet? Well, get your sore wrists ready for a drill and tap-a-thon, because this is your exit exam on that subject with some of the most important threads in the blaster! GO SLOW, back off and clear chips often, don't let that PETG get hot and gummy (and possibly strip) by hurrying, and good luck!

Drive housing:

2 front grip base bolt holes - drill and tap for 6-32, about 15mm deep.

4 rear grip base bolt holes - through to top side. Drill and tap for 6-32 on BOTH sides.

4 controller board mounting holes - leave alone. We will install self-tapping screws in those later on.

4 bolt motor mounting holes (NEMA 17 pattern) - clean out to 3mm, should NOT be required with proper prints.

Stock mounting flange: Tap 4 10-24 bolt holes. Holes print at tappable dimension.

Drive housing to breech: Drill and tap 6-32 through flange

Drive spacer and cover: Clean out 6 6-32 through holes (9/64" drill) per part.

Drive cover to breech: Drill and tap 6-32 to exist hole depth in part

Rear top rail mounting hole: Tap 10-24. Hole prints at tappable dimension.

Drive housing front upper bolt holes - drill and tap 6-32 to exist depth. Note, these threads break through on the wiring slots in the housing. This is normal. Keep tap straight when cutting this area.

Crank assembly time:

Crank pin hole: Tap 6-32 thread.

Setscrew hole: Tap 10-24 thread. Hole prints at tappable dimension.

Deburr the crank pin bushing if required.

Bolt it on. Use the longest screw possible for max strength - if thread protrudes as here with a 5/8" length fastener, zip that off flush. Or, use a shorter fastener if you wish to not do that.

N.B.: The top side of the crank has a fillet and is a top layer. The bottom side has a chamfer and is a bottom layer. Does it matter if someone reverses it? No, technically.

Thread the setscrew in.

Motor shaft shortening:

Install the motor into the drive housing.

Bolt on temporarily - ensure seated fully.

Slip the crank onto the shaft. Set the crank with about 1mm or less clearance to the drive housing surface. Check for daylight as so:

Place the drive spacer and bolt on as shown and check for nonzero clearance between bolt and crank surface. (This is not a FDL or Rapidstrike, we don't design things that way at DZ Industries. The bolt MUST NOT touch the crank web.)

Adjust the crank around until both requirements are satisfied and both clearances are even.

Use the crank and a marker to mark the motor shaft length required - use a good sharp tipped marker to get an accurate mark position.

Use tape or a rag to shield the motor bearing from grinding debris and zip the shaft to length with a cutoff wheel. Deburr/break edges slightly.

Cut motor phase wires to about 5", and terminate with a 4 pin 0.1" male connector. Keep stock connector pinout ("Blue Red Green Black") or refer to DRV8825 datasheet and 17HS16-2004S1 datasheet for phase wire colors and proper winding connections to driver

Twist cable.

Permanent install, bolt on with 4 M3 x 6mm length flathead cap screws, torque evenly

Mount crank - double check drivetrain clearances and shaft end NON-protrusion, grind a bit if necessary. Torque setscrew.

Bolt limit switch prep:

Wire and terminate the submini switch with a ~3" 2 wire cable - common and NO terminals. Use 3 pin male connector, connect outside pins only.

N.B.: 3 pin connector is used for mechanical security. 2 pin 0.1" header connectors can come loose too easily. Clip the wire-side end of the center pin off if you want but leave the pin in the housing, that's key.

Use M2 switch mounting hardware to mount the limit switch onto the drive spacer using the screw slots.

Don't torque it down yet.

Fit the spacer and bolt to the housing. Start 2 drive stack bolts in place to locate the spacer.

Adjust the switch position for consistent actuation at bottom dead center (note crank angle in the image), WITHOUT the bolt bottoming the switch out. IOW, move the switch as close to the motor shaft as possible without anything interfering/binding/having excessive friction.

Where in the slot travel YOUR switch is, will vary. The slot length is intended to accommodate different switch brands, models and actuator types. You shouldn't need to grind or shim anything to make nearly any lever-equipped submini switch work here.

Once satisfied, be careful not to disturb the switch position and torque the M2 hardware down solidly. Recheck free drivetrain rotation and switch actuation (CLICK!) at BDC.

Next: Part 7 - Blaster Controller


  1. Seeing a straight-slotted scotch yoke in a pusher setup feels odd. The advantage of such a system, relative to the bent slot of a Rapidstrike-style pusher, is obvious: it allows the pusher to be slightly more horizontally compact, while being a simpler design. Likewise, the advantage that the bent slot of the RS has in the context of an RS pusher, that it allows more time for breaking, is not relevant when a stepper motor is used. However, it still feels odd.

    Is there any plausible scenario where the stepper motor ends travel out of position, where a bent slot would provide fault-tolerance?

    1. The scotch yoke with a curved segment (dwell) has significant distortions of the sinusoidal acceleration and velocity produced by the straight slot yoke. That is the primary reason for avoiding it here, it isn't as smooth (and that could possibly extend to excessive torque transients causing a lower max reliable ROF with the open-loop stepper drive).

      Correct that the dwell in the yoke is not necessary to allow sufficient braking angle on the direct drives. Although the rotor inertia is high, it is turning at (say) 750rpm, not the equivalent of 45,000 in a RS box. There is also (about 8 degree perhaps?) of SWITCH dwell once the switch overtravel and the local velocity minimum of the bolt at BDC are accounted for so there is a dwell window for the switch regardless.

      So motion control logic should be brought up, one of the more uncanny bits about Core is that the trigger polling actually happens slightly ahead, synchronous with the bolt drive, (80 4:1 sub-commutations, or 20 fullsteps, or... 36 degrees shaft angle) of the beginning of each cycle and this is coincident with when deceleration must begin if we are stopping the bolt at the upcoming home position rather than firing again. Once at that threshould, we know absolutely and irrevocably whether we are stopping or not 36 degrees into the future. If we're stopping, speed starts ramping down per the deceleration configured toward a minimum of ~300rpm, all the while polling the bolt limit switch for downness (falling edge) on every single motor sub-commutation from the start of the decel onward. So... multiple ramifications; one, the software cannot miss the switch closure due to insufficient dwell on the switch, because the switch mechanically can't be down for less than a degree of shaft angle (and it's synchronous to the motor, so it is in terms of electrical angle and not time that the switch is monitored). Two, the limit switch is not used as with typical DC driven gear, to begin drive deceleration. Although open loop stepper, it is a synchronous motor, so we have awareness of what the shaft angle should be at each moment, and that is what deceleration is based on. Three, once that edge is found, the switch subsequently reopening doesn't cause the controls to moronically try to fire again (or anything similarly problematic). Rather, the decel still ends with a hard stop from 300rpm, and the switch lifting off just annoys the if(!decelerateBoltToSwitch()) {reverseBoltToSwitch();} handler, which responds by backing the bolt up until the switch activates again (at which point, since it ran back at 300rpm and can always stop from such speed, we know it is actually stopped at home and cannot have overshot, hence no action if the switch then reopens again, and, hence thrashing is not possible beyond one oscillation).

    2. The "major fail" case is that sync was lost during the last firing, our idea of where the bolt should be is horribly wrong, and the limit switch edge is not where expected. Generally, the actual position after a desync lags the ideal position, so what happens - should it be more than 31.5 degrees of error - is that decelerateBoltToSwitch() runs out of the 150 sub-commutations it is permitted to rotate while looking for the switch edge, without ever finding the switch edge, and dies, passing control to reverseBoltToSwitch(), which... guess. This has the artifact of firing one extra trailing shot, like a RS "run-on" shot, as the bolt cycles in reverse during such a scenario (the flywheel drives keep rolling all the while, so cycling the bolt is safe and non-jammy), but that is about all we can do with one limit switch. A missed home case like that most often is the result of an obstruction so the bolt ought be backed up (not run further forward) hence firing the 1 "Rapidstrike trailer" in the alternate case of many skipped steps without an obstruction present (very rare) is an acceptable result. Less than 31.5 degrees late and it is by all means a normal stop without any ramification. Now, the other case is that somehow the bolt got ahead of us and the switch edge comes earlier than expected. If that is during the 36 degrees decel window, the drive just does an unusually hard stop there, probably skips a few steps in the process, and then reverseBoltToSwitch() cleans that up seamlessly IF the switch released in the process at all (and it can't be more than a few mm of travel so no misfeeds result). If MORE than 36 degrees early... we don't even SEE the switch edge because we aren't inside decelerateBoltToSwitch() yet, and then it becomes identical to a very late switch edge with the same recovery.

      The curved slot dwell yoke; wouldn't really benefit any of these. Even with a straight slot BDC/TDC are the positions that give very little motion for relatively large crank angle changes. So slight transient errors don't cause misfeeds, and any angular error that a dwelled linkage could "forgive" is probably already within the tolerances here. No to mention: A dwelled yoke just stacks even more dwell on the switch, and thus decreases its resolution. Now say there might be 30 degrees of crank angle which make the switch say yes instead of 10. We now know less where the crank actually is (even if the bolt tip stays clear of ammo during that dead spot).

      This all reminds me how crude and how old most of the bolt control parts of Core are. I don't, for instance, keep resetting the bolt position indexer on every switch event WHILE firing full auto, just keep on stepping and clean up carnage later. It endures because it works, though.