The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Electronics Workbench

Electrical & Electronic gadgets

  • Tektronix AM503: Baseline Offset Digression

    Tektronix AM503: Baseline Offset Digression

    One of my Tek AM503 current probe amplifiers (SN B064098) suffered from DC offsets in the AC / GND / DC modes, to the extent that zeroing the GND (more formally known as “CAL DC LEVEL”) offset wouldn’t keep the other two baselines on the scope screen. Kibitizing with another AM503 owner with a different problem clued me to apply a change made in later units: replace the 1 kΩ resistor at R220 with a 470 kΩ resistor to reduce the source impedance changes between the switch positions:

    AM503 - R220 change
    AM503 – R220 change

    For the record, R220 sits parallel to the attenuator shield above and to the right of Q230 (in the black clip-on heatsink):

    Tek AM503 - R220 detail
    Tek AM503 – R220 detail

    The new resistor somewhat reduced the offset problem, but also dramatically increased the noise level I’d been studiously ignoring, to the point where the AM503 output was unusable:

    Tek AM503 - three amps - GND
    Tek AM503 – three amps – GND

    The rule of thumb is that it’s always a connector or, perhaps, a similar metallic contact in the signal path. The AM503 has a breathtakingly aggressive switched attenuator covering the 94 dB range from 1 mA/div to 50 A/div:

    AM503 - Current Probe Amplifier Schematic - Attenuator - Diag 2
    AM503 – Current Probe Amplifier Schematic – Attenuator – Diag 2

    The switches are cam-driven bifurcated gold-plated spring fingers contacting gold-plated PCB pads under that aluminum shield:

    Tek AM503 - Attenuator Contacts - detail
    Tek AM503 – Attenuator Contacts – detail

    The spring-loaded thing to the right is R206, the first 50 Ω 2× attenuator in the form of thin-film elements fired on a ceramic substrate. The two switches put C218 into the signal path in AC mode.

    You (well, I) clean the fingers by very gently pulling a strip of lens cleaner moistened with isopropyl alcohol through the closed contacts:

    Tek AM503 - Attenuator Contact Cleaning
    Tek AM503 – Attenuator Contact Cleaning

    The pale blue cylinder is the attenuator cam roller extending across the PCB behind the front-panel knob. The two switches bypass C218 in DC mode and connect R220 to ground in GND mode.

    Clean gold-on-gold contacts are about as good as it gets and those things looked absolutely pristine. After wiping the contact connecting R220 to ground had no effect, it finally penetrated my thick skull that the problem wasn’t in the attenuator contacts and had to be downstream in the amplifier and filter chain.

    Reseating all the cable connectors and jostling the (socketed!) semiconductors also had no effect.

    Could one of the semiconductors have gone flaky after four decades?

    More tomorrow. Spoiler: yup.

  • Auvon TENS/EMS: Modulation Waveforms

    Auvon TENS/EMS: Modulation Waveforms

    These scope screen shots use the same test setup as the pulse measurements:

    Auvon AS8016 - test setup
    Auvon AS8016 – test setup

    The sweep speeds run much slower to capture the complete envelope, which can be up to a minute long, with enough left over to show the end of the previous sequence and the start of the next. The Moire patterns come from the scope sampling rate, the display resolution, or changes in the pulse repetition frequency. Blame Siglent for not making the scope’s digital data accessible through the network; screen shots are the best I can do.

    The descriptive headings for each screen shot come from The Auvon AS8016 Fine Manual, a PDF version of which you can get from Auvon’s support staff by asking nicely. I identify the modes as Mxx, rather than their Pxx, for reasons that made sense at the time.

    Patterns 1 through 16 correspond to the TENS (Transcutaneous Electrical Nerve Stimulation) label and are intended for pain relief / suppression; they should not make your muscles twitch.

    P1 – Continuous comfortable tingling.

    Continuous 200 µs pulse at 87 Hz

    Auvon M01 Pulse
    Auvon M01 Pulse

    P2 – Comfortable tingling and pulsing sensation.

    Continuous 100 µs pulse at 48 Hz

    Auvon M02 Mod
    Auvon M02 Mod

    P3 – Comfortable rhythmic tingling.

    Blocks of 300 ms on/200 ms off, with 150 µs pulse at 48 Hz

    Auvon M03 Mod
    Auvon M03 Mod

    P4 – Continuous comfortable tingling.

    Continuous 100 µs pulse at 48 Hz

    Auvon M04 Pulse
    Auvon M04 Pulse

    P5 – Comfortable and slow tingling firstly, then the frequency is significantly increased, and it becomes a noticeable tingling sensation.

    Continuous 250 µs pulses, stepping from 10 to 102 Hz and back down

    Auvon M05 Pulse
    Auvon M05 Pulse

    P6 – Low frequency beating with a slight tingling sensation.

    Continuous 250 µs pulses at 2 Hz

    Auvon M06 Mod
    Auvon M06 Mod

    P7 – Low frequency slight beating firstly and then continuous comfortable tingling.

    Bursts of 150 µs pulses for 3 s separated by isolated 200 µs pulses

    Auvon M07 Mod
    Auvon M07 Mod

    P8 – Low frequency slight beating firstly and then comfortable pulsing sensation.

    Bursts of 150 µs pulses for 3 s separated by isolated 200 µs pulses. Seems identical to P7, although the bursts may be slightly different.

    Auvon M08 Mod
    Auvon M08 Mod

    P9 – Comfortable tingling from shallow to deep with 3-4 seconds pause.

    Auvon M09 Mod
    Auvon M09 Mod

    P10 – Comfortable pulsing sensation from shallow to deep with 3-4 seconds pause.

    Auvon M10 Mod
    Auvon M10 Mod

    P11 – Variable comfortable tingling, slight beating and scrapeing [sic] sensation.

    Auvon M11 Mod
    Auvon M11 Mod

    P12 – Comfortable slight tingling from shallow to deep with 3-4 seconds pause.

    Auvon M12 Mod
    Auvon M12 Mod

    P13 – Comfortable tingling and pulsing sensation from shallow to more deep with 3-4 seconds pause.

    Auvon M13 Mod
    Auvon M13 Mod

    P14 – Rhythmic continuous beating.

    Much higher voltage pulses!

    Auvon M14 Mod
    Auvon M14 Mod

    P15 – Rhythmic scrapeing [sic] sensation.

    Auvon M15 Mod
    Auvon M15 Mod

    P16 – Quick slight beating first, then comfortable tingling.

    Auvon M16 Mod
    Auvon M16 Mod

    Patterns 17 through 24 sport the EMS (Electrical Muscle Stimulation) label and should make your muscles twitch in various ways.

    P17 – Low frequency slight beating.

    Continuous 250 µs pulse with idle time at 4.8 Hz.

    Auvon M17 Pulse
    Auvon M17 Pulse

    P18 – Low frequency beating.

    Continuous 250 µs pulse at 6.8 Hz.

    Auvon M18 Pulse
    Auvon M18 Pulse

    P19 – Beating from low frequency to a little high frequency.

    Auvon M19 Mod
    Auvon M19 Mod

    P20 – Muscle twitches at a very low frequency. It feels like a tapping massage.

    Continuous 250 µs pulse at 13.5 Hz.

    Auvon M20 Pulse
    Auvon M20 Pulse

    P21 – This program activates the muscle in a short tingling cycle. It is smoother than P1/P2.

    Auvon M21 Mod
    Auvon M21 Mod

    P22 – This program gently warms up the muscles prior to exercise; it feels like a rhythmic massage. Increase intensity until you get a strong but comfortable muscle movement.

    Auvon M22 Mod
    Auvon M22 Mod

    P23 – This program uses a pulse frequency appropriate to fast twitching muscle fibers. It improves their anaerobic capacity and is used for improving maximum muscle strength.

    Auvon M23 Mod
    Auvon M23 Mod

    P24 – This program gently warms up the muscles prior to exercise; it feels like a rhythmic beating and comfortable tingling. Increase intensity until you get a strong but comfortable muscle movement.

    Auvon M24 Mod
    Auvon M24 Mod

    Despite the icons on the unit’s display, the manual suggests you can apply pretty nearly any pattern to any muscle, but now we all know what’s coming out of those jacks …

  • Auvon TENS/EMS: Pulse Waveforms

    Auvon TENS/EMS: Pulse Waveforms

    The Auvon AS8016 TENS/EMS unit produces bipolar pulses with no net DC offset, so the UI controls the negative and positive amplitudes equally. The range has 20 steps, with the screen shots here set to 10 units. The actual output voltage depends on the mode, with some modes producing a peak voltage well above the others at the same UI setting.

    It’s worth noting the effect comes from current passed through skin and muscle, rather than voltage applied to it. The test setup uses a 500 Ω resistance to make the current vary linearly with the voltage (which is definitely not the case with human bodies): a 20 V pulse passes 40 mA through the resistor:

    Auvon AS8016 - test setup
    Auvon AS8016 – test setup

    The simplest bipolar pulses always start with the negative phase. The shortest pulse width is 100 µs:

    Auvon M02 Pulse
    Auvon M02 Pulse

    And 150 µs:

    Auvon M03 Pulse
    Auvon M03 Pulse

    And 200 µs:

    Auvon M01 Pulse
    Auvon M01 Pulse

    Up to 250 µs:

    Auvon M06 Pulse
    Auvon M06 Pulse

    Some modes have a short zero-voltage pause between the negative and positive phases:

    Auvon M17 Pulse
    Auvon M17 Pulse

    The pause can be the same duration as the negative and positive phases:

    Auvon M14 Pulse
    Auvon M14 Pulse

    Some modes have pulses starting with the positive phase, others switch the leading phase during the course of the output modulation.

    My casual survey of the consumer-grade field suggests the pulse waveform has less to do with well-tested effects and more to do with marketing or straight-up woo, but I admit to being a cynic.

  • Auvon TENS/EMS: Lead Identification

    Auvon TENS/EMS: Lead Identification

    One of Santa’s myriad helpers recently handed me an Auvon AS8016 TENS/EMS Unit. The manual is, shall we say, light on tech details, but some casual searching turns up the general specs for medical-grade units found in physical therapy offices, plus adjacent Rule 34 compliant (i.e. NSFW) offerings.

    Being that type of guy, I had to look at the electricity. Somewhat to my surprise, the reference load turns out to be a pure 500 Ω resistance, which is easy enough to cobble up from a pair of 1 kΩ resistors:

    Auvon AS8016 - test setup
    Auvon AS8016 – test setup

    The alligator clips crunched around the 2 mm pins are not appropriate for even a brutal e-stim session; they’re from the Small Drawer of Test Connectors, to which they shall return unblooded.

    The red Sharpie highlight around one pin identifies the center conductor of the two-wire cable, as determined by simple continuity testing:

    Auvon AS8016 - marked cable
    Auvon AS8016 – marked cable

    The 22 mil = 0.5 mm wire (from the Little Tin o’ Snippets) fits snugly into the coaxial connector’s center contact; one could probably slip a rounded shim between the shell and the outer contact, perhaps to debug an intermittent connection. Note that the connectors on both ends of the wires are not standardized among various TENS/EMS manufacturers.

    The AS8016 has two pairs of connectors:

    Auvon AS8016 - wire jacks
    Auvon AS8016 – wire jacks

    The A1 and A2 jacks are wired in parallel, as are the B1 and B2 jacks, with the A pair galvanically isolated from the B pair. You can set the modes / programs / pulse parameters differently for A and B. Although the manual doesn’t mention it, using the A and B channels (perhaps with the same settings) prevents a galvanic connection (and thus any current) from flowing between the A and B electrodes; this seems important for electrode pairs placed on opposite sides of your body to prevent current through your heart.

    The pulses have no DC component, so the actual wire polarity doesn’t really matter, but a foolish consistency definitely simplifies going back to re-measure things. Subsequent waveforms show the voltage with respect to the unmarked (outer) conductor.

    Suppressing the DC bias prevents ionic migration between / under the electrode pads. The classic RC-equivalent output circuit uses a series capacitor, resulting in an asymmetric pulse waveform with zero net DC voltage:

    Capacitor Coupled Pulse
    Capacitor Coupled Pulse

    There’s no DC path between the center and outer conductors, but in this day and age the circuitry could be a completely isolated bipolar FET driver:

    Auvon M01 Pulse
    Auvon M01 Pulse

    With all that sorted out, I can make measurements!

  • Christmas Bonus

    Christmas Bonus

    An email arrived yesterday:

    Subject: [redacted] review blog invitation about bluetooth programmer

    Message: Hi dear,

    Thanks for taking time to read this email.

    I am Colleen from [redacted] brand, we sell two way radio on Amazon. I learned that you have wrote two way radio review blog before and I think your blog was written well.

    Now we have a product named bluetooth programmer that need to be reviewed. […] We would like to invite you to write a review blog about it.

    Your can earn $2 from each product sold! We promise it. Just put the link we provided you in your blog and the Amazon backstage will count the data. And we will pay you $2 for per product sold by your link through PayPal on the 30th of every month. (Please provide your PayPal account)

    If you are willing to help us write a blog, please tell us if you have a radio and your address we will send you the product for free to review.

    You can view more detailed information through this link:

    [redacted]

    Perhaps this “review” caught their eye:

    Baofeng UV-5RE radio - overview
    Baofeng UV-5RE radio – overview

    Or maybe it was my opinion of the Baofeng intermod problem?

    Most likely, it’s just the result of an ordinary web search.

    You might think everybody would know about Amazon’s crackdown on out-of-band review kickback scams, but either word hasn’t gotten around or the rewards still exceed the penalties. I think the latter applies, particularly when the offender (or its parent company) can spin up another randomly named Amazon seller with no loss of continuity.

    “Earning” two bucks on a few purchases during the course of a year won’t move my Quality of Life needle, so I reported them to Amazon and that might be that.

    For future reference, the chat with Amazon’s Customer Support rep produced a deep-ish link to their otherwise un-discoverable “Report Something Suspicious” page; the randomly named nodeld is a nice touch.

    Speaking of randomly named sellers, it’s highly likely any Brand Name you remember from the Good Old Days has been disconnected from the tool / hardware / service you remember. Perusing a snapshot of the who-owns-who tool landscape as of a few years ago may be edifying: I didn’t know Fluke and Tektronix now have the same corporate parent.

    Enjoy unwrapping your presents and playing with your toys …

  • Bafang Battery Charge Port: Battery Reset Tool

    Bafang Battery Charge Port: Battery Reset Tool

    A lithium battery management system can (and should!) disable the battery output to prevent damage from overcurrent or undervoltage, after which it must be reset. The inadvertent charge port short may have damaged the BMS PCB, but did not shut down the battery’s motor output, which means the BMS will not should not require resetting. However, because all this will happen remotely, it pays to be prepared.

    A description of how to reset the BMS in a similar battery involves poking bare hot wires into the battery terminals, which IMO is akin to Tickling The Dragon’s Tail. The alert reader will note that the “Shark” battery shown on that page has its terminal polarity exactly opposite of the “Ultra Slim Shark” battery on our bikes. Given the energies involved, eliminating any possible errors makes plenty of sense.

    The battery connector looks like this:

    Bafang battery - Ultra-Slim Shark connector
    Bafang battery – Ultra-Slim Shark connector

    For this battery, the positive terminal is on the right, as shown by the molded legend and verified by measurement.

    A doodle with various dimensions, most of which are pretty close:

    Bafang battery - connector dimension doodle
    Bafang battery – connector dimension doodle

    Further doodling produced a BMS reset adapter keyed to fit the battery connector in only one way:

    Bafang battery - adapter doodle
    Bafang battery – adapter doodle

    Which turned into the rectangular lump at the top of the tool kit, along with the various shell drills and suchlike discussed earlier:

    Bafang battery tools
    Bafang battery tools

    Looking into the solid model from the battery connector shows the notches and projections that prevent it from making incorrect contact:

    Battery Reset Adapter - show front
    Battery Reset Adapter – show front

    The pin dimensions on the right, along with a mysterious doodle that must have meant something at the time :

    Bafang battery - adapter pin doodle
    Bafang battery – adapter pin doodle

    The pins emerged from 3/16 inch brass rod, with pockets for the soldered wires:

    Bafang battery - reset tool - pins
    Bafang battery – reset tool – pins

    The wires go into a coaxial breakout connector that’s hot-melt glued into the recess. The coaxial connectors are rated for 12 V and intended for CCTV cameras, LED strings, and suchlike, but I think they’re good for momentary use at 48 V with minimal current.

    I printed the block with the battery connector end on top for the best dimensional accuracy and the other end of the pin holes held in place by a single layer of filament bridging the rectangular opening:

    Bafang battery - reset tool - hole support layer
    Bafang battery – reset tool – hole support layer

    I made a hollow punch to cut the bridge filaments:

    Bafang battery - reset tool - pin hole punch
    Bafang battery – reset tool – pin hole punch

    The holes extend along the rectangular cutout for the coaxial connector, so pressing the punch against the notch lines it up neatly with the hole:

    Bafang battery - reset tool - hole punching
    Bafang battery – reset tool – hole punching

    Whereupon a sharp rap with a hammer clears the hole:

    Bafang battery - reset tool - hole cleared
    Bafang battery – reset tool – hole cleared

    A dollop of urethane adhesive followed the pins into their holes to lock them in place. I plugged the block and pins into the battery to align the pins as the adhesive cured, with the wire ends carefully taped apart.

    After curing: unplug the adapter, screw wires into coaxial connector, slobber hot melt glue into the recess, squish into place, align, dribble more glue into all the gaps and over the screw terminals, then declare victory.

    It may never be needed, but that’s fine with me.

    [Update: A few more doodles with better dimensions and fewer malfeatures appeared from the back of the bench.]

    Bafang battery - adapter better doodle
    Bafang battery – adapter better doodle
    Bafang battery - adapter dimension doodle
    Bafang battery – adapter dimension doodle
    Bafang battery - connector key doodle
    Bafang battery – connector key doodle

    The OpenSCAD source code as a GitHub Gist:

    // Adapter to reset Bafang battery management system
    // Ed Nisley KE4ZNU Dec 2021
    Layout = "Block"; // [Show, Build, Pins, Block, CoaxAdapter, Key]
    Gap = 4.0;
    /* [Hidden] */
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
    Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
    FixDia = Dia / cos(180/Sides);
    cylinder(d=(FixDia + HoleWindage),h=Height,$fn=Sides);
    }
    ID = 0;
    OD = 1;
    LENGTH = 2;
    //———————-
    // Dimensions
    WallThick = 3.0;
    PinSize = [3.5,4.75,9.0 + WallThick]; // LENGTH = exposed + wall
    PinFerrule = [3.5,4.75,10.0]; // larger section for soldering
    PinOC = 18.0;
    PinOffset = [-9.0,0,9.0];
    Keybase = 4.0; // key bottom plate thickness
    KeyBlockSize = [15.0,50.0,15.0];
    CoaxSize = [35.0,15.0,11.0];
    CoaxGlue = [0,2*2,1];
    // without key X section
    BlockSize = [CoaxSize.x + WallThick + PinFerrule[LENGTH],KeyBlockSize.y,KeyBlockSize.z + WallThick];
    echo(BlockSize=BlockSize);
    //———————-
    // Battery connection pin
    // Used to carve out space for real brass pin
    // Long enough to slide ferrule through block
    module Pins() {
    for (j=[-1,1])
    translate(PinOffset + [0,j*PinOC/2,0])
    rotate([0,90,0])
    rotate(180/6) {
    PolyCyl(PinSize[ID],BlockSize.x,6);
    translate([0,0,PinSize[LENGTH]])
    PolyCyl(PinSize[OD],BlockSize.x,6);
    }
    }
    //———————-
    // Coaxial socket adapter nest
    // X=0 at left end of block, Z=0 at bottom
    // includes glue, extends rightward to ensure clearance
    module CoaxAdapter() {
    translate([0,0,CoaxSize.z])
    cube(CoaxSize + CoaxGlue + [CoaxSize.x,0,CoaxSize.z],center=true);
    }
    //———————-
    // Block without key
    // X=0 at connector face, Z=0 at bottom of block
    module BareBlock() {
    difference() {
    translate([BlockSize.x/2,0,BlockSize.z/2])
    cube(BlockSize,center=true);
    Pins();
    translate([BlockSize.x,0,Keybase])
    CoaxAdapter();
    }
    translate([BlockSize.x – CoaxSize.x,0,BlockSize.z/2]) // bridging layer
    cube([ThreadThick,BlockSize.y,BlockSize.z],center=true);
    }
    //———————-
    // Complete block
    module Block() {
    BareBlock();
    BatteryKey();
    }
    //———————-
    // Battery connector key shape
    // Chock full of magic sizes
    // Polygons start at upper left corner
    module BatteryKey() {
    // base outline
    kb = [[-15,KeyBlockSize.y/2],[0,KeyBlockSize.y/2],[0,-KeyBlockSize.y/2],[-15,-KeyBlockSize.y/2]];
    // flange cutout
    kf = [[kb[0].x,20],[-3,20],[-3,15],[-8,15],[-8,-15],[-3,-15],[-3,-20],[kb[0].x,-20]];
    // sidewalls
    kw = [[-15,KeyBlockSize.y/2],[0,KeyBlockSize.y/2],[0,20],kf[0]];
    linear_extrude(height=Keybase)
    difference() {
    polygon(kb);
    polygon(kf);
    }
    linear_extrude(height=KeyBlockSize.z)
    polygon(kw);
    mirror([0,1,0])
    linear_extrude(height=KeyBlockSize.z)
    polygon(kw);
    translate([0,0,KeyBlockSize.z])
    linear_extrude(height=BlockSize.z – KeyBlockSize.z)
    polygon(kb);
    }
    //———————-
    // Build it
    if (Layout == "Block") {
    BareBlock();
    }
    if (Layout == "Pins") {
    Pins();
    }
    if (Layout == "Key") {
    BatteryKey();
    }
    if (Layout == "CoaxAdapter") {
    CoaxAdapter();
    }
    if (Layout == "Show") {
    Block();
    color("Brown",0.3)
    Pins();
    }
    if (Layout == "Build") {
    rotate([0,90,0])
    translate([-BlockSize.x,0,0])
    Block();
    }

  • Bafang Battery Charge Port: Internal Wiring

    Bafang Battery Charge Port: Internal Wiring

    Short-circuiting the Bafang battery’s charge port may have done anything from completely destroying the battery management circuit to just welding a brass nugget onto the port’s center pin. The main output to the bike motor remained functional, so my friend used it on rides over the next few days to reduce the charge level.

    Meanwhile, I peeked inside the undamaged battery on Mary’s bike:

    Bafang battery interior - overview
    Bafang battery interior – overview

    The battery pack is neatly shrink-wrapped and firmly glued into the plastic shell, with the battery management PCB on the other side of the battery. Some gentle prying suggests it will be difficult to disengage the adhesive, so getting the pack out will likely require cutting the blue wrap, extricating the cells as an unbound set, then cutting the blue wrap to release the wires.

    A closer look at the nose of the battery:

    Bafang battery interior - front
    Bafang battery interior – front

    The large red wire entering on the left comes from the motor connector, loops around the nose of the battery, and probably connects to the battery’s most positive terminal or, perhaps, to the corresponding BMS terminal.

    The medium black wire from the side contact of the coaxial jack (atop the pair of red wires) burrows under the battery and likely connects to the most negative battery terminal. This is the charger plug’s outer terminal.

    The small red wire from the center contact of the coaxial jack (between the medium black and red wires) goes to the charge indicator PCB in the nose of the battery. This is basically a push-to-test voltmeter with four LEDs indicating the charge state from about 40 V through 54 V. The small black wire from that PCB burrows under the battery on its way to the BMS.

    The medium red wire from the center contact goes to the BMS.

    There is no way to determine how much damage the short might have done, although the silicone-insulated wires should have survived momentary heating, unlike cheap PVC insulation that slags down at the slightest provocation.

    Removing and replacing the coaxial jack requires Cutting Three Wires then rejoining them, a process fraught with peril. You must already have a profound respect for high voltages, high currents, and high power wiring; this is no place for on-the-job learning and definitely not where you can move fast and break things.

    With this in mind, the only hope is to remove the nugget and see if the battery charges properly.

    The trick will be to do this without any possibility of shorting a metallic tool between the center pin and the side contact.