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:
- 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).
- 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).
- Hold. Hold the part back after the last round for seconds without overheating (P-5).
- Fit and noise. Fit beside the kick in an MP7 receiver about 42 to 51 mm wide, and stop quietly (P-6).
- 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


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
| Part | Stroke | Coil | Force | Mass and size | As a port actuator |
|---|---|---|---|---|---|
| JF-0530B 12 V | 10 mm | 8 Ω (calculated from 1.5 A at 12 V) | 5 N initial (listing) | 35 g; 13 × 15 × 30 mm | First 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 V | 10 mm | 25 Ω (listing) | “20N @ 12VDC” (listing; not credible as a starting force) | 40 g; 26 × 25 × 22 mm | Second; a 25 Ω coil reaches only about 1 A from a 24 V rail when hot |
| Adafruit 412, small push-pull | 5.5 mm | 40 Ω | 0.5 N starting, 5.0 N retentive | 39 g; 30 mm body | Rejected: 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-pull | 10 mm | about 12 Ω | 6 N starting at 12 V | 144 g; 40 mm | Rejected for the port: four times the mass of the JF-0530B |
| Ledex B14-255-B-1 | 10.2 mm curve | 6.9 Ω | catalogued curve | 12 g plunger, 90 g total | Reference only: the best data, but too big for a port |
| Guardian TP6x12-I-12 | 9.5 mm, push | 12.1 Ω | catalogued | 11 g plunger, 65 g | Possible 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
| Model | Stroke | Continuous force | Intermittent at 10 % duty | Force constant | Coil (moving) / body mass | Diameter × length |
|---|---|---|---|---|---|---|
| LVCM-013-019-02 | 12.7 mm | 0.81 N | 2.55 N | 0.77 N/A | 6.4 / 10.6 g | 12.7 × 19.1 mm |
| LVCM-019-022-02 | 12.7 mm | 2.3 N | 7.1 N | 1.6 N/A | 11 / 36 g | 19.1 × 22.2 mm |
| LVCM-025-022-01 | 9.5 mm | 4.7 N | 14.9 N | 3.1 N/A | 20 / 62 g | 25.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
| Servo | Rating | Horn | Angle | Out and back |
|---|---|---|---|---|
| SG92R | 0.1 s/60° at 4.8 V | 10 mm | 60° | 200 ms |
| HD-1705MG | 0.05 s/60° at 6 V | 12 mm | 49° | 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
| Candidate | Status | Why, and why not |
|---|---|---|
| Small open-frame pull solenoid, JF-0530B 12 V class | Picked to try first | Meets 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 V | Second | Same stroke; 25 Ω is high for a hot coil on 24 V |
| Adafruit 412 | Rejected | 5.5 mm stroke; 40 Ω coil |
| Adafruit 413, Ledex B14-255, Guardian TP6x12 | Rejected for the port | Too heavy or too big beside the kick; they are kick candidates |
| Voice coil, Moticont LVCM-019-022-02 | Rejected | Meets 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) | Rejected | 82–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) | Rejected | 800 ms |
| Gearmotor and cam (Pololu #3061, $26.45) | Rejected for now | Ideal for sustained automatic fire; single shots need closed-loop stopping; gear noise and wear |
| Shape-memory wire (Flexinol) | Rejected | 0.2–1.2 s to cool |
| Latching solenoid | Second board spin | Zero-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.

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:
- Sequence. Raise EJECT_CMD only when SOL_CMD has been low for the measured decay time (D16; Reference Electronics §5.13).
- 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.
- 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.
- Skip when busy. If a new shot is due before the port is home, skip the port stroke rather than delay the kick.
- 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
-
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). ↩
-
Moticont, Linear DC Motors Comparison Table, https://www.moticont.com/pdf/lvcm-all.pdf, read 2026-10-19. ↩
-
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. ↩
-
Adafruit, “Micro servo – TowerPro SG92R”, product 169, https://www.adafruit.com/product/169, read 2026-10-19. ↩
-
Pololu, “Power HD High-Speed Mini Servo HD-1705MG”, item 2143, specifications, https://www.pololu.com/product/2143/specs, read 2026-10-19. ↩
-
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. ↩
-
Pololu, “10:1 Micro Metal Gearmotor HPCB 6V”, item 3061, https://www.pololu.com/product/3061/specs, read 2026-10-19. ↩
-
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. ↩
-
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)