Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
The lump on the right is frass, not a mini-me tagging along behind.
We had no clue what it might be when it grew up, but Google Lens suggested a Striped Hairstreak Butterfly caterpillar and, later that day (and for the first time ever!), we saw an adult Hairstreak fluttering on a goldenrod in the corner of the garden.
As with all caterpillars, you’d never imagine the adult butterfly. It seems they move their hind wings to make predators aim at the south end of a northbound butterfly …
Taking all those pictures of the DSO150 screen reminded me it has a data dump function: press the V/Div and ADJ buttons to squirt configuration, measurements, and trace data from the TX pad on the main board, just in front of the red-black power wires hot-melt glued in place:
DSO150 USB serial adapter – interior
The picture shows the “before” stage, while I was figuring out where to carve another hole in the case.
NB: The 113-15001-111 DSO150 firmware version includes the serial output option, so you won’t need third-party firmware. Similarly, current PCBs bring the serial pins to neatly labeled header pads. You should refer to the JYETech DSO150 / DSO Shell product page for the details.
After all the cuttin’ and filin’ was done, it looked like this:
DSO150 USB serial adapter – exterior
The power switch on the back of the case (top of the picture) disconnects the lithium cell from the charge controller board (now tucked behind the battery) to eliminate any trickle current discharge. Charging the battery thus requires turning that switch on and turning the scope off with its own power switch (along its front edge). Capturing trace data requires having both switches on (duh), whereupon the scope’s normal operating current convinces the charge controller that the cell hasn’t reached full charge. Turn the scope off and, most likely, the controller will tell you the cell is fully charged.
An intro blurb squirts from the port at 115200 in good old 8N1 format when you turn the scope on:
It’s all in neatly comma-separated-value format, so you can slam it into a spreadsheet and have your way with it. Utilities also exist to capture the data, extract the values, and send them directly to GNUplot, etc.
Like so:
DSO150 test image
If I expected to do a lot of that, I’d boldify the traces and embiggen the text, all of which is in the nature of fine tuning.
It’s hard to reproduce the beauty of the DSO150’s display, though:
DSO150 test image
The DSO150 remains pretty good for being the worst oscilloscope I’m willing to use …
As expected, the plywood seat I put on the Step2 Garden Seat for Mary’s Vassar Farms plot lasted about a year before the wood rotted away around the screws. In the meantime, we’d acquired a stack of SiLite cafeteria trays, so we applied one to the cause of better seating:
Step2 Seat – tray variant
Various eBay listings value that slab of BakeliteMelamine up to $20, which is far more than Mary paid for the entire stack at a local tag sale. They also call that color “rich brown”, which is certainly better than what immediately came to mind when I saw them.
The stylin’ asymmetric design happened when I realized the squared-off handle end of the cart didn’t demand a rounded-off end of the seat. I cut off the raised tray rim before sketching the rounded outline using the rotted seat as a template; some of the sketch remains over on the right-front corner. A session with Mr Belt Sander put the remaining rim edges flush with the surface, no matter what the picture suggests.
The tray being 2 mm thinner than the plywood, I tried printing the hinges in a different orientation with different built-in support:
Rolling Cart Hinges – solid model – build
The perimeter threads pulled up far too much and, although fiddling with cooling would likely help, I think the original orientation was better:
Rolling Cart Hinges – solid model – bottom
Given that the post-apocalypse breakfast will be served on similar trays, the seat should survive for quite a while in the garden. We think the sun will convert the brown surface into a bun warmer; a coat of white paint may be in its future.
The original OpenSCAD code is still out there as a GitHub Gist.
That’s a genuine JYETech DSO150 powered by an 18650 lithium cell and a boost converter set to 9 V. Make sure you get a genuine DSO150 from an authorized seller, rather than one of the myriad knockoffs; it doesn’t cost much more and tends to reward the right folks.
Anyhow, battery power means you can connect it directly across components to measure what would otherwise be a differential voltage:
LM3909 – Darl Q1 3x Q2 – 1.5 V – R1 V – DSO150
That’s the voltage across R1, the 39 Ω LED ballast resistor in the discrete LM3909 circuit running from a 1.5 V supply. Divide the 314 mV peak by 39 Ω to get 8 mA of LED current.
The voltage across C1, the timing and boost capacitor, looks like this:
LM3909 – Darl Q1 3x Q2 – 1.5 V – C1 V – DSO150
So the cap adds half a volt to the supply in order to put 2.0 V across the LED, which accounts for the relatively low current; the green LED has a forward drop of about 2.2 V at 20 mA and 1.9 V at µA-level current.
For completeness, the voltage across the LED:
LM3909 – Darl Q1 3x Q2 – 1.5 V – Green LED V – DSO150
So, yup, the LED really does see 2.0 V. I love it when the numbers work out.
Crank the supply to 3 V and see this across R1:
LM3909 – Darl Q1 3x Q2 – 3.2 V – R1 V – DSO150
The LED current is now 1.23 V / 39 Ω = 33 mA.
The capacitor just barely enters reverse charge:
LM3909 – Darl Q1 3x Q2 – 3.2 V – C1 V – DSO150
Pop quiz: what voltage to you expect to see across the LED?
I’ll leave further investigation to your imagination, but for low-frequency analog work, you can do worse than a DSO150.
The four transistors across the bottom row let me test the simulation suggesting there’s no need for the 3× current gain mentioned in the App Note. Spoiler: future LM3909 circuits have the usual two-transistor mirror.
Adding some instrumentation required a bit of unsoldering and clip-lead action: to get the Tek current probe around the LED wiring:
LM3909 – Darl Q1 3x Q2 mirror – test setup
The voltage probe is across the LED, although you’ll also see the voltage across the capacitor and differential voltages measured properly with the common clip leads on the battery negative terminal. I unsoldered two of the mirror transistors after verifying a single mirror transistor can saturate Q3.
Removing the AA cells and feeding it with 3 V from a bench supply:
LM3909 – Darl Q1 1x Q2 – V on C1 – I 3V VCC 10 mA-div
The yellow trace is the voltage at the collector of Q3 = positive terminal of C1. The purple trace is the voltage at the LED cathode = negative terminal of C1. The fuzzy white trace is the difference of those two, showing C1 charges to about 1 V at the start of the LED flash. The white wedge over on the left marks the 0 V level, confirming the cap doesn’t enter reverse-charge territory during the flash.
The green LED produces a bright flash starting at 30 mA (bottom trace, 10 mA/div) for 15 ms. With 1 V on the cap, the LED + 39 Ω ballast resistor see nearly 4 V at the start of the pulse, because Q3 saturates around 20 mV.
Reducing the supply voltage to 1.5 V flattens the current and lengthens the flash to 35 ms:
LM3909 – Darl Q1 1x Q2 – V on C1 – I 1.5V VCC 10 mA-div
The cap still charges to 1 V between on-times, but the lower supply puts barely 2.5 V across the LED + 39 Ω resistor and the current peaks at 10 mA. The increased duration turns the flash into a blink.
It’s good enough, so AA alkalines should last quite a while.
The LM3909 IC boosted a single 1.5 V cell enough to fire a red(-ish) LED, even with the cell well under 1 V. I want to blink a blue(-ish) LED from a pair of AA alkaline cells (with the right size & heft to serve as a base for the hairball circuitry), so the voltage ranges from just over 3 V down to maybe 1.5 V. Although the original circuit works, the LED pulse is long enough to put a reverse bias on the timing capacitor; a 470 µF electrolytic cap (positive terminal on the right at node P2-OUT) produces a pulse every few seconds.
A slightly tweaked version of the circuitry puts -400 mV across C1 (green trace) by the end of the pulse:
Discrete LM3909 – basic circuit – 3.0 V simulation
The App Note describes the negative feedback loop from the collector of “power transistor” Q3 through Q4 and Q1, closing through the Q2 current mirror. The base-emitter drops of Q4 and Q1 set the trip point where Q1 starts to conduct and the LED turns on.
Q3 is on when the LED is on, with C1 reverse-charging through R1 and the LED. The voltage at the top of R2 rises from the negative voltage at the start of the pulse, carrying the emitter of Q1 along with it. The LED pulse will end when the rising emitter voltage shuts off Q1 and, thus, the Q2 current mirror driving Q3. Because Q3 holds the bottom of R5 close to 0 V, the base of Q4 is at about half the supply voltage, so Q1 remains on until its emitter rises to about 2 forward drops (handwavingly ignoring the R6 + R7 voltage divider) below the supply.
If the LED pulse is longer than required to completely discharge C1, the poor cap gets reverse-biased and suffers indigestion. Aluminum electrolytics can withstand a little reverse bias, but it’s Bad Practice.
When Q3 and the LED are off, C1 forward-charges through (R4 + R5) + R2, with most of the initial voltage across R2, because C1 should start with a little more than 0 V across it. This holds the current mirror off until C1 charges enough to raise the base of Q4 about two forward drops above Q1’s emitter, shove current through Q4 and Q1, turn on the Q2 current mirror, Q3, and light the LED.
Around and around it goes!
The worst case for reverse charge happens at higher supply (a.k.a. battery) voltages and higher LED currents. Reducing the reverse charge time requires more forward drop through Q4 + Q1 to soak up the higher voltage and lower the trip voltage at Q1’s emitter, which suggests putting another forward-biased junction in series.
Putting a diode in Q1’s base lead doesn’t produce much improvement:
Discrete LM3909 – Q1 B diode – 3.0 V
Perhaps because the 27 µA current at the trip point is so low the diode doesn’t actually have much forward drop; the simulation says 400 mV.
Putting the diode in the emitter runs the current mirror’s 5 mA through it:
Discrete LM3909 – Q1 E diode – 3.0 V
The overall period remains about 2 s, but the LED pulse = reverse charge time drops by a factor of two and the cap voltage bottoms out at 0 V, so that’s good.
A Darlington transistor provides far more gain to compensate for the reduced base drive:
Discrete LM3909 – Darl Q1 – 3.0 V
The LED pulse is slightly shorter and its current goes up a smidge, but the cap voltage remains above zero.
A line in the LM3909 App Note mentions that the Q2 current mirror amplifies Q1’s emitter current by a factor of three: “This current will be amplified by about 3 by Q2 and passed to the base of Q3”. An IC current mirror’s designer can scale its output by varying the collector area, but out here in the discrete world we must splice multiple transistors in parallel:
Discrete LM3909 – Darl Q1 3xQ2- 3.0 V
More base drive in Q3 doesn’t buy much, because it’s already pretty well saturated during the pulse, but the current goes up enough to push C1 slightly into reverse charge territory again. As far as I can tell, the factor-of-three gain was required to make up for the relatively poor performance of IC technology around 1970; things have definitely improved since then.
It’s worth mentioning that the actual circuitry (in particular, the LEDs!) will differ from the simulations, so the pretty plots are more along the lines of serving suggestions than actual predictions. Verily, a simulation can’t prove that a circuit will work, but can sometimes help show why it won’t.
All the LTSpice simulation files tucked into a GitHub Gist:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters