Moving Ejection Port · Volume 4

Concept B: an Actuator of Its Own

Every way of moving the port part separately from the kick, against the clock and the board: a small solenoid, a voice coil, hobby servos, a lead-screw actuator, a gearmotor and cam, shape-memory wire and a latching solenoid, with makers' figures and dated prices; the pick and why; and the second driver stage, the D16 interlock and the hold-open current

4.1 What the port actuator has to do

Concept B gives the port its own actuator and leaves the kick to its own solenoid and mass. Decision D5 asks for it to be tried beside concept A, and the MP7 Donor Build dive’s Volume 2 §2.6 drew up a first shortlist, deferring the final choice to this dive. The criteria, from Volume 2’s requirements:

  1. Speed. A 10 mm stroke out and back inside 63 ms, one real cycle, with the kick and its decay taking the first 15 ms or so (P-1).
  2. Board. Run from the carrier board’s second regulated stage: a TI DRV8251A on EJECT_CMD (GP11), current-regulated up to its 4.1 A trip, on the 24 V-class rail of 18 to 28 V (Reference Electronics Vol 5 §5.11–5.12). A part that needs a different stage needs a board change (P-9).
  3. Hold. Hold the part back after the last round for seconds without overheating (P-5).
  4. Fit and noise. Fit beside the kick in an MP7 receiver about 42 to 51 mm wide, and stop quietly (P-6).
  5. Cost. Kits may be sold (decision D8), so the part has to be buyable at a kit price.

4.2 The field against the clock

Figure 1 — Three of the candidate kinds, from their makers' product photographs. 1, a small open-frame push-pull solenoid (Adafruit 412, a 30 mm frame of the JF-0530B family). 2, a TowerPro SG92R micro servo.…
Figure 1 — Three of the candidate kinds, from their makers' product photographs. 1, a small open-frame push-pull solenoid (Adafruit 412, a 30 mm frame of the JF-0530B family). 2, a TowerPro SG92R micro servo. 3, a Moticont LVCM linear voice coil motor, a moving coil in a magnet housing. Photos: Adafruit (1, 2); Moticont (3).
Figure 2 — The time each candidate needs for one 10 mm stroke out and back, on a logarithmic scale, against the 63 ms of one real cycle and OpenFIRE's default 125 ms. Only the solenoid and the voice coil fit …
Figure 2 — The time each candidate needs for one 10 mm stroke out and back, on a logarithmic scale, against the 63 ms of one real cycle and OpenFIRE's default 125 ms. Only the solenoid and the voice coil fit inside one cycle; servos are rated without load and add a 20 ms control frame; the lead screw and shape-memory wire are an order of magnitude too slow. Estimates and makers' ratings; own-work chart.

The chart sorts the field before anything else is weighed. The sections that follow give each candidate’s figures and the reason it stays or goes.

4.3 A small solenoid

A solenoid is the actuator the project already understands, drives and is buying. The bench shortlist decided under D15 (18 October 2026) is being bought as listed: two Ledex B14-255-B-1, two Guardian TP6x12-I-12, two Adafruit 413, and five each of the JF-0530B 12 V and JF-0826B 12 V marketplace parts (Solenoid Recoil Vol 8). The port actuator can be chosen from the same box, and the bench that ranks them for the kick can rank them for the port, where the criteria are lighter: quick, small, quiet, and a coil the regulated stage can drive.

From the published figures in that volume:

Table 1 — From the published figures in that volume

PartStrokeCoilForceMass and sizeAs a port actuator
JF-0530B 12 V10 mm8 Ω (calculated from 1.5 A at 12 V)5 N initial (listing)35 g; 13 × 15 × 30 mmFirst choice. Smallest part with a 10 mm stroke; its coil is in the 5–12 Ω class the regulated 24 V stage is designed for
JF-0826B 12 V10 mm25 Ω (listing)“20N @ 12VDC” (listing; not credible as a starting force)40 g; 26 × 25 × 22 mmSecond; a 25 Ω coil reaches only about 1 A from a 24 V rail when hot
Adafruit 412, small push-pull5.5 mm40 Ω0.5 N starting, 5.0 N retentive39 g; 30 mm bodyRejected: half the stroke, and a 40 Ω coil cannot reach a useful current on 24 V; $7.50 at Adafruit (19 Oct 2026)1
Adafruit 413, large push-pull10 mmabout 12 Ω6 N starting at 12 V144 g; 40 mmRejected for the port: four times the mass of the JF-0530B
Ledex B14-255-B-110.2 mm curve6.9 Ωcatalogued curve12 g plunger, 90 g totalReference only: the best data, but too big for a port
Guardian TP6x12-I-129.5 mm, push12.1 Ωcatalogued11 g plunger, 65 gPossible as a push part; bulky beside the kick

The reason a coil’s resistance rules parts in or out is the Solenoid Recoil dive’s: on a current-regulated 24 V rail the coil must reach its working current when hot with a forcing ratio near two, which puts it at roughly 5 to 12 Ω (Vol 8 §8.10). A port solenoid runs at a lower current than the kick, so a slightly higher resistance is tolerable, but a 40 Ω part is not.

Pull, not push. The port part moves rearward on the shot, so the solenoid sits behind it and pulls; the return spring sits around the plunger and is compressed as the part goes back (Volume 6). A push part in front of the port would put the solenoid where the shell’s fore-end is, beside the camera’s cable run.

What it cannot do well. A solenoid lands hard. Force rises steeply toward the end of the stroke (Solenoid Recoil Vol 2), so the part is fastest just as it stops. That is the right shape for a kick and the wrong one for a quiet port. Ending the pulse at arrival, a soft stop and a small residual gap (Volume 5) are the remedies.

Price. The marketplace parts could not be priced on 18 October 2026, when AliExpress and Amazon were unreadable (Solenoid Recoil Vol 7–8); the price paid for the D15 order is to be written into this table.

4.4 A voice coil

A voice coil motor is a coil moving in a permanent magnet’s field, with force proportional to current in either direction and no rise in force at the end of the stroke. Its one real advantage for a port is that it can be driven to a soft landing: reverse the current before the end of travel and the part decelerates instead of slamming. A solenoid cannot do that.

Moticont’s comparison table gives the small linear voice coil motors (LVCM):2

Table 2 — A voice coil

ModelStrokeContinuous forceIntermittent at 10 % dutyForce constantCoil (moving) / body massDiameter × length
LVCM-013-019-0212.7 mm0.81 N2.55 N0.77 N/A6.4 / 10.6 g12.7 × 19.1 mm
LVCM-019-022-0212.7 mm2.3 N7.1 N1.6 N/A11 / 36 g19.1 × 22.2 mm
LVCM-025-022-019.5 mm4.7 N14.9 N3.1 N/A20 / 62 g25.4 × 22.2 mm

The LVCM-019-022-02 is the one sized for this job. Moticont’s store lists it at $428.58 for one, $370.99 each at five to nine, “Will ship within three days”, with a 2.5 Ω coil, 0.57 mH, and 5.0 W maximum continuous power (19 October 2026).3 Its 7.1 N intermittent force needs 7.1 / 1.6 = 4.4 A, above the DRV8251A’s 4.1 A trip; at 4.1 A it gives about 6.6 N. Moving an 11 g coil plus a 10 g port part 10 mm under that force takes about 8 ms each way. It meets the clock. It fails everything else:

  • Price. Over four hundred dollars against a solenoid in the single dollars.
  • Drive. Driving it back as well as out needs current in both directions: the DRV8251A’s bridge can do it, but the reference board grounds IN2, so the second input needs a pin (Reference Electronics Vol 2’s pin budget has none to spare).
  • Hold. Holding a part against a 2 N spring takes 1.25 A, about 3.9 W in a 2.5 Ω coil, close to its 5 W continuous limit, for the whole of a reload.

Rejected for the printed build. It is the actuator to come back to if a quiet, controlled port ever matters more than cost.

4.5 Hobby servos

A hobby servo moves to a commanded angle and holds it, so it has the hold-open built in, needs no power stage, and costs a few dollars. The MP7 Donor Build dive already found it too slow for automatic fire.

Adafruit gives the TowerPro SG92R (product 169) as “0.1 sec/60 degree (at 4.8V)”, 2.5 kg-cm and 9 g, at $5.95 (19 October 2026).4 The fastest servo found on a maker or distributor page is Pololu’s listing of the Power HD HD-1705MG at 0.05 s per 60° at 6 V, 2.0 kg·cm and 17.5 g, and Pololu marks it “discontinued”.5

The arithmetic for a 10 mm stroke through a horn of radius r is the chord angle 2·asin(s/2r): 60° with a 10 mm horn, 49° with a 12 mm horn. Out and back:

Table 3 — The arithmetic for a 10 mm stroke through a horn of radius r is the chord angle 2·asin(s/2r): 60° with a 10 mm horn, 49° with a 12 mm horn. Out and back

ServoRatingHornAngleOut and back
SG92R0.1 s/60° at 4.8 V10 mm60°200 ms
HD-1705MG0.05 s/60° at 6 V12 mm49°82 ms

Both ratings are at no load, and a servo receives a new position command only once per control frame, conventionally 20 ms, so the real figures are longer still. Even the fastest servo found needs about 82 ms, more than a whole real cycle. A servo cannot move the port on every shot. It could hold the port open on the last round, but that would mean two actuators on one part, a solenoid for every shot and a servo for the hold, which is more complexity than the hold-open is worth. Rejected, including for hold-only use.

4.6 A lead-screw linear actuator

Miniature lead-screw actuators such as Actuonix’s L12 give a precise position and hold it without power. RobotShop lists the L12 with 50 mm stroke, 50:1 gearing and RC control at $88.77, “Max speed (no load)” 25 mm/s, in stock (19 October 2026).6 At 25 mm/s, 10 mm out and 10 mm back take 800 ms. Rejected: thirteen times too slow.

4.7 A gearmotor and cam

A small gearmotor turning a cam can run continuously at exactly the real gun’s rate: Pololu’s 10:1 Micro Metal Gearmotor HPCB 6V turns at 3,300 rpm with no load at 6 V, 1.5 A stall, at $26.45 (19 October 2026),7 so a cam at 950 rpm is well inside its range. For a sustained automatic burst a cam is the most realistic port of all, one stroke per revolution, forever.

Single shots are the problem. Each shot needs one revolution and a stop at the same angle, inside a cycle, which needs a position sensor on the cam and active braking. The DRV8251A is a brushed-motor driver with a brake mode, so the stage could drive it; but the stop has to be closed-loop in the fork, the gears are noisy at that speed, and the cam follower is one more sliding contact to wear. Rejected for the first build; noted as the right mechanism if a gun is ever built for full-automatic games only.

4.8 Shape-memory wire

Nickel–titanium wire contracts when heated by its own current and is silent. Dynalloy’s Flexinol technical data gives about 1 s to contract for every diameter, “directly related to current input”, and off (cooling) times for the high-temperature (HT) grade of 0.2 s for 0.003 in wire and 1.2 s for 0.006 in, with 80 g and 330 g of pull respectively.8 The cooling time is the limit: the wire cannot relax again in under a fifth of a second. Rejected: ten to forty times too slow.

4.9 A latching solenoid

A permanent-magnet latching solenoid holds its plunger seated with no current, and needs a reverse pulse to let go. For the hold-open that is ideal: no heat, however long the reload. TI’s DRV8251A datasheet shows the part driving single- and dual-coil latching relays, with PWM on both inputs.9 On this board that means IN2 under processor control, which the reference design grounds, and a pin the budget does not have. No latching solenoid of the right size was surveyed for this volume. Kept for the second board spin if the bench shows the held coil running hot.

4.10 Why this, and why not the others

Table 4 — Why this, and why not the others

CandidateStatusWhy, and why not
Small open-frame pull solenoid, JF-0530B 12 V classPicked to try firstMeets the clock (about 25–45 ms out and back for a 10–20 g part, Volume 2); being bought anyway (D15); 8 Ω coil suits the regulated 24 V stage; 35 g; can hold at a reduced current. Lands hard, so the stop and pulse length matter.
JF-0826B 12 VSecondSame stroke; 25 Ω is high for a hot coil on 24 V
Adafruit 412Rejected5.5 mm stroke; 40 Ω coil
Adafruit 413, Ledex B14-255, Guardian TP6x12Rejected for the portToo heavy or too big beside the kick; they are kick candidates
Voice coil, Moticont LVCM-019-022-02RejectedMeets the clock and lands softly, but $428.58, 4.4 A for full force, bidirectional drive needs a pin, hold near its 5 W limit
Hobby servo (SG92R $5.95; HD-1705MG)Rejected82–200 ms out and back at no load, plus a 20 ms frame; too slow for every shot; a hold-only servo means two actuators on one part
Lead screw (Actuonix L12, $88.77)Rejected800 ms
Gearmotor and cam (Pololu #3061, $26.45)Rejected for nowIdeal for sustained automatic fire; single shots need closed-loop stopping; gear noise and wear
Shape-memory wire (Flexinol)Rejected0.2–1.2 s to cool
Latching solenoidSecond board spinZero-power hold; needs IN2 and a pin

The pick agrees with the donor dive’s provisional shortlist, which put “a second, small solenoid” first and the servo “for slow events only” (MP7 Donor Build Vol 2 §2.6). It narrows the solenoid to a class and a first part, and moves the servo from “slow events only” to rejected, for the reason above.

4.11 The electrical side

The circuit is the Reference Electronics dive’s and is not repeated: a second DRV8251A stage, U5, identical to the kick’s, with its input on EJECT_CMD (GP11) through the D16 interlock transistor Q4, its own current-set divider and R_IPROPI, a JST VH connector, and a reserved second TMP36 input on GP27 (§5.11, §5.13). Three things are specific to the port.

The current set point. The trip current follows ITRIP = VREF / 1.18 with R_IPROPI = 750 Ω (§5.12): 1.18 V for 1 A, 1.77 V for 1.5 A. A JF-0530B moving a 10 to 20 g part needs much less than the kick’s coil; the divider is set on the bench to the lowest current that brings the part home inside the time budget, which is also the quietest.

The hold current. The stage’s inputs accept pulse-width modulation from 0 to 200 kHz, by TI’s recommended operating conditions.9 With IN2 grounded, PWM on IN1 alternates drive and coast; in coast the coil returns its current to the rail through the body diodes, so the average current falls with the duty cycle. Two constraints set the frequency: above the audible range, so 20 kHz or more; and fast enough that the inputs are never both low for TI’s sleep-entry time of 0.8 to 1.5 ms, which any PWM period in the audio range or above satisfies. A seated plunger holds at a fraction of its pull-in current (Solenoid Recoil Vol 4); at a third of the current the coil dissipates a ninth of the power. The duty is set on the bench, starting low and rising until the part holds against its spring with a margin for a shake of the gun.

Figure 3 — The port stage on the last round, schematic. The kick fires; once its current has decayed the port stage pulls in at its regulated current and the part arrives; the fork then switches EJECTCMD to P…
Figure 3 — The port stage on the last round, schematic. The kick fires; once its current has decayed the port stage pulls in at its regulated current and the part arrives; the fork then switches EJECT_CMD to PWM, at tens of kilohertz, and the coil holds the part back at about a third of the current; when a reload is seen the input goes low and the spring returns the part. The hold may last seconds; the time axis is compressed. Own-work diagram from the DRV8251A datasheet and Reference Electronics Vol 5.

Reading the current on the bench. The DRV8251A’s IPROPI output mirrors the coil current while it drives and brakes but, in TI’s words as quoted in Reference Electronics, “In coast mode, the current is freewheeling and cannot be sensed.” Under PWM hold, IPROPI therefore shows only the drive intervals. The ADP3450 plan in Volume 6 reads it alongside the output voltage.

Why not the DRV110. Reference Electronics §5.12 rejects TI’s DRV110 for the kick, and names it as the right part for a port that must be held open, because it is a peak-and-hold controller by design. With PWM hold available on the DRV8251A already fitted, a second controller type is not needed. The DRV110’s internal pull-up on EN, which fires the coil when the processor is unpowered unless EN is held low externally, is the reason to keep it off the board. If the bench shows PWM hold to be noisy or hot, it returns as an option.

4.12 What the fork has to do

All of this is firmware for the Our Firmware dive. In one place:

  1. Sequence. Raise EJECT_CMD only when SOL_CMD has been low for the measured decay time (D16; Reference Electronics §5.13).
  2. End at arrival. Hold EJECT_CMD for the measured arrival time plus 2 ms, the same rule the kick uses (Solenoid Recoil Vol 8); longer only heats the coil and lengthens the clack.
  3. Hold-open. Run the Volume 2 state machine: on ammunition zero, pull in, then switch to the hold duty; release on a reload, or on the hold-time limit, or on the port coil’s temperature.
  4. Skip when busy. If a new shot is due before the port is home, skip the port stroke rather than delay the kick.
  5. Settings. Port enable, pull-in time, hold duty, hold limit and magazine size as user settings, so the bench values go into the gun without a rebuild.

4.13 What could not be verified

  • The JF-0530B’s plunger mass and force-stroke curve: the listing gives one force at one point, and the plunger is part of the moving mass.
  • The marketplace solenoids’ prices, unreadable on 18 October 2026.
  • The real out-and-back time of any candidate with the port part fitted; all times here are estimates or no-load ratings.
  • That PWM hold on the DRV8251A is quiet: the chop frequency is set by the PWM, not the coil, and has not been tried.
  • No latching solenoid was surveyed.

Sources

The solenoid figures are from Solenoid Recoil Vol 8, which cites each maker’s datasheet or seller’s listing; the stage and interlock from Reference Electronics Vol 5. Times are computed in this dive’s 04-templates/port_dynamics.py.

Footnotes

  1. Adafruit, “Small Push-Pull Solenoid – 12VDC”, product 412, https://www.adafruit.com/product/412, read 2026-10-19 ($7.50; 5.5 mm; 40 Ω; 0.5 N starting, 5.0 N retentive; 39 g). ↩

  2. Moticont, Linear DC Motors Comparison Table, https://www.moticont.com/pdf/lvcm-all.pdf, read 2026-10-19. ↩

  3. Moticont online store, LVCM-019-022-02, https://www.pwr-con.com/ecommerce/products/lvcm-019-022-02.asp, read 2026-10-19; Moticont product page https://moticont.com/lvcm-019-022-02.htm. ↩

  4. Adafruit, “Micro servo – TowerPro SG92R”, product 169, https://www.adafruit.com/product/169, read 2026-10-19. ↩

  5. Pololu, “Power HD High-Speed Mini Servo HD-1705MG”, item 2143, specifications, https://www.pololu.com/product/2143/specs, read 2026-10-19. ↩

  6. RobotShop, “Actuonix L12 Actuator 50mm 50:1 6V RC Control”, https://robotshop.com/products/actuonix-l12-actuator-50mm-501-6v-rc-control, read 2026-10-19. ↩

  7. Pololu, “10:1 Micro Metal Gearmotor HPCB 6V”, item 3061, https://www.pololu.com/product/3061/specs, read 2026-10-19. ↩

  8. Dynalloy, Flexinol Technical Data, as hosted by RobotShop, https://cdn.robotshop.com/media/d/dyn/rb-dyn-01/pdf/flexinol-technical-data.pdf, read 2026-10-19. ↩

  9. Texas Instruments, DRV8251A 4.1-A Brushed DC Motor Driver with Integrated Current Sense and Regulation (SLVSFU6), https://www.ti.com/lit/ds/symlink/drv8251a.pdf, read 2026-10-19: recommended PWM frequency 0–200 kHz; sleep entry tSLEEP 0.8–1.5 ms; §9.2.3 relay driving. ↩ ↩2

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.