Sunday, November 7, 2021

Thoughts on solenoid power stage topologies

 ...Specifically, in the context of bolt actuators.

In the nerf hobby up to this point, we have generally had exactly one answer to this question - the classic single-ended arrangement with an antiparallel diode (same as when you want to switch a DC motor on and off, or do one-quadrant variable speed drive of one). "Don't forget the flyback diode!" Here's the sort of thing I'm talking about:



Where signal, rail and output names are obvious. It's usually low-side switching like this, because we like N-channel power devices, and we like relatively low level, ground-referenced gate drive voltages.

Or sometimes, as in Narfduino boards and other multipurpose power stages, it's a halfbridge. Same difference - the antiparallel diode in the above is just taking the place of the missing high-side device, whose copackaged diode would otherwise be serving this purpose (providing a path for the winding current to continue flowing at switch-off). We could also be doing synchronous rectification with a halfbridge, also fundamentally the same thing minus the diode loss.

--Is this a new concern? --But isn't driving solenoids just like driving DC motors? (Etc.)

In short no. With motors - even DC ones - the winding itself is not a DC device, it subject to an alternating current at some fundamental (commutation) frequency, and so by design for a motor that is going to turn at some given speed and thus have each winding current ramping up and down at some dozens to thousands of Hz anyway, there cannot then be any significant concern with current decay time at switch-off having any major influence on how the system responds.

By contrast - many solenoids are comparatively large inductances for which ramping the current in the coil up and down might be significant compared to the cycle time. The current slew rate of a solenoid is directly the force slew rate, and in many applications the time required for current to ramp down in a coil simply shorted by a forward-biased diode or synchronous rectifying switch adds electromagnetic inertia associated with the stored energy in the inductance to the system's mechanical inertia, and slows down, for instance, the opening of relay contacts, the closing of an injector or valve, or so forth - and in those cases, limits the system's frequency response significantly (and for relays, accelerates contact wear due to arcing during the slowed opening). For a blaster bolt actuator, this is an open question whether it really matters "that much", which comes down to whether the comparatively massive solenoid plungers involved might be a dominant constraint. But of course it is highly desired to end forward force as abruptly as possible, so as to get the bolt back open to pick up the next round as quickly as possible (hence the focus on return springs and their selection). So, slow decay on a noid might be questioned regardless as a low hanging fruit.

The most likely candidates

Tons of power stage topologies have been created as dedicated coil drivers. Some of them are downright elaborate (mainly to provide both fast decay for switch-off and slow decay while doing PWM control for continuous conduction and low losses), but two stand out to look at here which are appropriate and not over the top of what would fit or be afforded in a blaster.

This is a common one.

The basic idea is to insert a bias voltage in the flyback path so that the inductor has a load to push against to absorb the energy quicker than just the coil resistance and assorted other parasitics. A TVS diode is often used for that purpose as it is designed to absorb abusive power pulses and have a predictable clamping voltage available in various increments. A MOV has been put in there similarly. Even a string of regular diodes in series to build up a voltage drop could be used, as could a resistor as long as the voltage at the output node under peak flyback current is considered, though that wouldn't be optimally effective.

With both the regular rectifier diode and the TVS, the latter can obviously be unidirectional rather than the bidirectional shown. Also, having both means the TVS breakdown voltage does not need to be higher than the supply.

This would be simplified version for when the TVS breakdown voltage is always higher than the supply.


Now, this idea comes with a downside that is a non-problem for everyday relay drivers but might be a major design problem for blaster bolt actuation. Blaster bolt drive solenoids are downright monsters as they go. They might be running peak currents of 20 amps in some setups. Accordingly they are going to not only have that much flyback current to be clamped (and now clamped by a device which has to take that with a large voltage across it), but the inductive energy to be disposed of on each cycle will be large - and when a dissipative device is used in the flyback path to speed up the decay, that device now relocates to itself some power dissipation that would be mostly in the (thermally massive) winding with the usual antiparallel diode circuit. This is perhaps not desirable in a compact bit of blaster management kit.

So here's another strategy seen on occasion:

This might look like a funny halfbridge with some extra diodes at first, but it's not. Let's rearrange it a bit:

...And now it's apparent what's going on - this is analogous to a fullbridge in the same way that the traditional single-ender with flyback diode is analogous to a halfbridge in that active devices which are not needed in forward mode are replaced with their vestigial diodes.

The advantages might be clear just seeing it (or not) - one, the inductance now sees the DC bus as a bias voltage to push current into when decaying, so the current can ramp down a lot faster. Two, since that current burst is pumped into the DC bus on each switch-off and no intentional dissipative element is used, some of the energy is recovered and the overall losses reduced rather than simply moved around.

Disadvantages are that we just multiplied output devices and diodes by 2 and required a high-side gate driver - but that might be a tolerable overhead. Also, compared to some of the exotic ideas involving high auxiliary voltage rails, DC-DC converters, storage caps, etc. and the TVS-based ones, the voltage is limited to DC bus, so the slew rate performance couldn't be as high in theory, but in practice I doubt we would be seeing noid drivers designed with 100V fets and ~40V flyback clamping anyway, instead closer to the 14-20V DC bus in a light blaster configuration, so it seems promising.

Methods I didn't address

Active clamping, because modern mosfets should not be operated in the linear region. This is mostly confined to specialized monolithic devices meant to drive coil loads about an order of magnitude less in required current than a blaster feeding noid.

Avalanche breakdown of mosfets as an intended way to dump the energy, because I don't care if Nexperia says it's OK, considering intentionally doing that makes me ill. And because there is probably too much stored energy for most fets thus rated anyway.

Alternative arrangements of the TVS version that don't really achieve anything other than expanding loops (etc.) such as having the load hung off the bus and the TVS from the low-side switch drain to ground.

Anything to do with PWMing or current controlling a noid. That stuff is tangential (though has specific requirements of power stage design) but mostly is just irrelevant to a blaster because the entire purpose of doing so is to account for the fact that a fully traveled noid produces the maximum force and a load requires less force to hold than accelerate. In a blaster there is no reason for the bolt to hold forward at all, thus for current to continue at all after the solenoid has fully traveled. Closed-loop control of a noid on that end amounts to "hitting the end of travel shuts off the driver immediately" no matter the implementation.

Anyway

Off to buy some solenoids and test some stuff. I finally have a scope of my own so next time I post about this I'll have scope shots of how bad the decay issue really is or isn't with this specific sort of noid.

Note

Don't read anything into the fet or diode part numbers. That's just a LFPAK mosfet and a SMA schottky that were close by in EDA. That fet is probably more than fine as long as 30V is sufficient blocking voltage for the bus (about half that is 4S), that's a 1.4mohm device from my older inverters for 22xx series flywheel motors. The diode being rated for only 3A average rectified (though adequate pulse rating) might indeed need to be something bigger depending on what the actual inductance of the 35mm and Hyperdrive are.

Further reading

https://e2e.ti.com/blogs_/b/industrial_strength/posts/tips-for-solenoid-driving

https://www.eevblog.com/forum/projects/solenoid-driver-design/

https://electronics.stackexchange.com/questions/438644/solenoid-fastest-possible-release-for-how-long-should-reversed-polarity-be-app/438657

https://www.nexperia.com/applications/interactive-app-notes/IAN50003_driving-automotive-solenoids.html

https://www.maximintegrated.com/en/design/technical-documents/app-notes/6/6307.html

Saturday, June 19, 2021

Field Report: Mystery Machine and Orb Weaver

Hop ups

The hop ups work well. I can adjust them in the field from no effect to curve straight into the sky. 


Accuracy seems about on par with rival blasters using rubber flap hop up. 


Considering how simple this design is, seems like a winner.


Mystery Machine

This performed admirably for most of the day.... until the end when it mysteriously stopped working.  What happened? 

Turned out the nub detention mechanism broke.

./documentation_images/physical_build/used_images/old_broken_catch.jpg 

This is after cleaning up the snapped off plastic and co.

Turned I designed it, I did the nub retention platform first, followed by the  rival round feed path. I stupidly didn't notice the feed path cut into the nub retention platform, leaving just 1-2 mm of PETG to withstand the impact of repeatedly slamming a mag in. 

Oh well.


Time for version 1.1.


A M3 screw actually works REALLY well as a catch for the nub. Better than the original plastic design even. 

./documentation_images/physical_build/used_images/new_catch.jpg 

Hard to imagine that breaking from any number of magazine inserts. 

 

 V1.1 also changes the magazine catch to work with worker 15 round mags.

 

Orb Weaver 

 

I used this for the UF HvZ game, and several NOMAD PvP games.


Overall, it's performed admirably, with just a handful of nits.


  • During a PVP game with targets in trees, I aimed at some odd 40-60* angle up, and unsurprisingly, quickly stopped feeding. 
  • During a run in HvZ, the lid got bumped hard enough to spill the balls. Maybe two magnets are needed? Then again, was a pretty hard run. 
  • There's been a handful of firing twice incidents.
  • It is heavy at 6 ib. A significantly less dense (and of course, weaker) print could be worth a shot. 
  • Optic mounting is awkward, but I knew that going in. 

And that's about it.

 

I'm pretty happy with it, and plan on continuing to run it at HvZ events.  


Surprisingly didn't wind up with very many pictures of this game, if any one has some please do let me know!




 

 


Tuesday, March 9, 2021

T19 Heavy - 20x95mm MEGA; Mega-Con flywheel system

Ever since the modern (20mm) MEGA caliber and the Centurion was a thing, I have been wanting to build something reliable and magfed to run them full auto. This has only intensified with the advent of special rules for MEGA hits such as defeating shields/armor, killing special zombies, causing double damage, and counting as more points for DTC-like gametypes.

I never ended up doing what I should have back in the dark ages (jam a Zeus cage and a RS pusher box into a hacked up Centurion receiver), so the intent to eventually do a 20mm project followed me all the way to the T19 era, and now I finally got a round tuit to spare and did it.

Hence:


Of course, this starts with a flywheel system. As a starting point for the profile geometry, I loosely scaled up the .50 cal Hy-Con including the 0.56-ish centerline area ratio, yielding 22mm control bore, 22mm rim width, and 15mm gap. I then designed a 67mm centerdistance (jumbo format is probably the best descriptor) system around that, yielding what is more literally a scaled-up Hy-Con than not.

For motors at dev stage, I used Racerstar BR2207S, as I had some 1600kv ones on hand already.









 
This might drive home the scale of this system. .50 cal Gamma cage looks downright small next to it.




Now this needs a breech. I opted for the existing mag standard. It's easy to get caught up in This mag design has X mm of wasted length! and similar griping, and that's how we get crappy, incompatible mags. Some careful design was required to use these mags, including the rear feed ramp to deal with top round positioning issues and the 0 mm cage flange thickness in front of the mag to keep required bolt stroke to a minimum.



Design elements are all the same as other modern T19 breeches. Angle cut, flared magwell, overinsertion stop on feed lips, no fence on the front for comfort, 7mm flanges, ...

This then gets its own mag release, its own side cover set (below), and a stock T19 drivetrain stack with the exception of a slightly longer bolt.



Add in a top rail front segment and one underbarrel gap filler/finisher/hand stop doohickey to polish it off, and we get...


















Filaments in this build: Yoyi translucent red PETG, CC3D bluegrey PETG, Makeshaper orange PETG, Overture white PETG.


Results


Overall excellent. I have had Hasbro mega up to mid 160s fps, and the one used Whirlwind I currently have up to 140-ish, and breakin wasn't even complete when I shot those. Also, this is really easy on ammo compared to a Zeus cage on mega --or a .50 cal T19. Reliability is so far awesome at the 12rps I have it set to max out at. It will feed and shoot just about anything and I have probably shot some of my testing darts 15 times into hard objects by now.


Now about the bad: The motors. I grabbed these because I had them and they would work for a ballistic proof of the cage. This could really use a larger, more modern motor, and also slightly higher kv than 1600, or else 5S or 6S. Spinups to high (which is 18-20k for this) speed are pretty crappy by modern standards, though not unuseful, with the 1600kv BR2207S and 4S. Also, Racerstar motors have quality issues and as usual the dynamic balance on this system is not great. I'll probably go for T-Motor F80 for an upgrade/option for this in the future.


Release


Link


Release notes duplicated here:


###############################################
# T19 MEGA (20x95mm) Initial Release 03-07-21 #
###############################################

Takes Hasbro-style 20mm mags. Mag tolerances are crap on commercial mags,
and some may need hand fitting with a file, particularly clone mags, as well
as release notch issues needing adjustment.

3 mag releases have been provided: the "stock" and -1mm (lower) straight
versions, and the "circular surface" one which is closer to what my hand fit
"stock" release ended up as after adjusting to get easy lockup and minimal play
once locked on all my mags. I recommend trying that one first. Some hand fitting
may be required regardless.

The "MegaMagDropfreeifier" part is a mod for Hasbro (style) 20mm mags which fills
in the second void/notch above the actual release notch, which often causes
trouble with snagging on the release. Print it out and glue it to *one* half of
the mag body (not both). File smooth and/or fill with a little devcon.

Top rail: Uses the T19_TopRail_NewFullLengthRearSeg.stl rear rail segment used
by the new (Gen2) .5 full length breech. Front rail is specific and included.

Bolt is different. All other drivetrain, stock, controls, etc. parts are the
same as a .5 cal T19E1.

Firmware difference is maxRPM=20000 and maxROF=700.

ACE-NX inline version - release; build notes

My current ESC I am building, putting into blaster projects, and am shortly to start selling on Etsy.

Gerbers, BOM, SimonK board definition, precompiled FlyShot firmware: https://drive.google.com/drive/folders/1w04lxvGw-rxBViPkGWJeUk-NnfKFg8dD?usp=sharing

Source: http://oshwlab.com/torukmakto4/ace-inx





Overview:

  • ATmega8 or -8A @16MHz with ceramic resonator
  • Infineon 6EDL04N02 gate driver
  • Nexperia 5x6mm LFPAK56 mosfets
  • LDO logic power
  • Boost converter from 5V rail for 12V gate drive supply
  • 40V mosfet options for proper 6S support, plus 30V ultra-low Rds(on) and high avalanche ruggedness/high Idm options for aggressive higher kv motors
  • 26x46mm, 2 layer, 2oz, 10/10mil trace/space (Fab by any vendor)
  • Minimum 0805
  • Enhanced mosfet footprints for easy hand solderability
  • Busbar ready
  • Designed for FlyShot support and use with tach output
  • ICP signal input
  • New board target: ace.hex (see: ace.inc)
  • SimonK-supported status and warning LEDs





There are no silkscreened component designators on my newer boards because they were frequently not resolvable and/or wouldn't fit anywhere with the density, so here's the usual passive placement guides, pay attention to color code:


The green labelled 50-100k resistors are an optional low side gate pulldown. I have been leaving these out - this was my first design with IC gate drivers and I felt the need to include the footprints for them anyway as I do with discrete boards, but they aren't actually required with the driver.

ISP pads with minified labels: RESET, SCK, MISO on the top row, then GND, MOSI, VCC on the second.

Other unlabeled component placements are obvious/unique. More info is in the BOM on mosfet, etc. options.

Errata

Above three low side gate pulldown resistors are superfluous. They also are not actually in the schematic, they were whacked into the PCB at the last moment anyway.

ISP pads are small and annoying, and could use to be bigger.

Caps for decoupling and so forth are overkill. Several 1206 parts could be 0805, and a few cap footprints could probably be Muntzed or combined into one larger value cap without any ill effect.

I don't particularly like the sense trace length and routing on paper, but these handle startups and sync holding just as well as any other board so I doubt there is a noise issue with that.

The 6EDL04N02PRXUMA1 driver is in the midst of a stock shortage and is unavailable a lot of places right now. Stock should be arriving back sometime this month at most vendors, I believe, but I might design future boards with a different driver in the interest of having those plus this one around in case one driver or another is sold out like this again. I already have a supply of them to use for now.

ATmega8 vs. ATmega8A

The exact MCU part to be used in ATmega8-powered SimonK ESCs is an area of ongoing testing. I have only built one pair of ESCs with the mega8 part so far - but I suspect the mega8 part is a better bet for comparator tolerances than the mega8A part.

Source Project Location Update/Change for DZ Industries Electronics.

Due to an EasyEDA change, the source projects for all DZI blaster management and motor control electronics projects are now found at oshwlab.com/torukmakto4. The new ACE-NX board has had its release created natively in that tool and upon further investigation, the formerly shared EasyEDA projects have also been converted as well. Apologies to anyone finding a broken link in the last few months.


As usual, refer to the release posts here, as some placeholder components have been used (fixes WIP). BOMs posted here are the final ones.

Monday, February 15, 2021

S-Core firmware 0.98 - minor update

 What's new in v0.98:

  • Improved user feedback on shot request timeouts - I saw Airzone use a brief audible alert when a motor start attempt timed out without reaching speed, and figured this was a good feature to have, so it is there.
  • Miscellaneous fixes and refinements like not accidentally leaving tach input ISRs enabled after they are not needed anymore in certain paths
  • Improve license statement clarity and intent
  • Make overspeed trip less sensitive as iFlight motor options are touchy about throwing false error codes at certain speeds with older settings.
  • Add version with preset 30,000rpm flywheel speed limit for use with 9.0mm flywheels in particular to reach their slightly higher criticality, but really this is more of a paradigm shift, post-presets, of there being no need for a canned "Full" speed setting to exist that is tuned for full velocity operation. Note that 30k is NOT the criticality, necessarily, of even the 9.0mm Hy-Con with any given ammo, so if you use this DON'T just peg it to maximum speed, like classically done with the 25.5k setting! Headroom is left so you can dial in your "full speed" preset (or use the tournament lock, if you prefer) to exactly what is getting the highest and most consistent velocity with your ammo. For even the 9.0 wheels, this is around 26k.

All S-Core Firmware versions available here

Obviously I am rapidly approaching S-Core v1.00, and for that I have some corresponding plans. Despite all the sophistication surrounding, perhaps the most... core portions of the S-Core codebase dealing with feeding date to when Project T19 was a quick and dirty 2017 flywheel system testbed blaster. That code works, but is so in need of some further closing of loops and smarts. The belt-fed is already there on how the bolt management and automatic restrike now works.