So the V0.1 boards had some problems. For one, on the cue boards, I forgot pulldown resistors for the continuity circuits into the input shift registers (what detects if a fuse is plugged in), and also forgot pulldown resistors to the firing signals coming out of the output shift register. What this meant is that, typically all circuits would fire randomly, as the pins were floating and had no trouble occasionally getting over the tiny amount of volts needed at the gate for the MOSFET to do its thing. The lack of pulldowns on the inputs lead to a similar problem of random continuity signals, but also would cause a residual false positive once the fuse was taken out - probably some capacitance somewhere... Anyway, first step of the V0.2 cue boards were to put those resistors in... 10k's all around.
Anyway, onto the receiver board. It had some serious problems. For one, I completely missed that the TP5100, when charging an 8.4v battery, needs a ~12v input. I was feeding it with 5v from USB-C just expecting the boost fairies to do their thing. But the TPS5100 only works as a buck (high to low)... So, my options were to either switch to a 12v charging input (which is annoying as that's a dedicated charging adapter vs. a ubiquitous plug/voltage), or put a boost circuit in before. So we did that. It's annoying and not ideal, as the charging power path has two conversion steps, each of which introduces loss.... But my other option was to switch my battery from a 2S (2 batteries in series @ 7.2v nominal) to a 2P(2 batteries in parallel @ 3.6v). I had to orient my decision about what's more important - charging or running? Obviously the latter. 3.6v would need to be boosted to 5v, and would need to pass more amps to make the same amount of watts. Also, as the 2P discharges, the voltage gap to the boost gets greater, which means less efficiency, whereas the 2S closes the voltage gap.
There were other small mistakes on the receiver board, like accidentally shorting connections together in the schematic... and mis-translating a data sheet that implied a certain pin was an input to enable charging (safe to connect to a GPIO on the ESP32), where in reality it was not only an output, but an output that was HIGH at battery voltage... a spicy 8.4v. Arduinos don't like this.
So it was off to create v0.2.. Why not V2? Or why wasn't the initial V1? Because I will eternally not accept that anything I make deserves an actual version number. So my 0. is a card I can wave when people call me an idiot and the design trash... "But it's version 0!!!" :D
The charter of V0.2 was to address the issues above, but also to start streamlining and compacting the package, given the tests on the first boards 'passed'. On a side note, I'm very happy with the decision to use WS2812's (neopixels) vs. normal LEDs. This obviously really simplified wiring, but also gives me a lot more range/possibility to convey statuses.... and make cool light shows! I really thing these will be my go-to choice for interface LEDs in the future, especially given that im leaving the 8266 in favor of the now cheap ESP32.
I looked at the v0.1 cue board and wanted to challenge myself to make it a 16 cue board. As I started laying out components and something started to hit me...
The receiver figures out how many cues are attached by 'sense resistors' on each cue board that add up as boards are chained and return in a pin that feeds a voltage divider the receiver can read and math out how many are attached. This can only work if every board has the same resistor. So my options were to either double up the resistors on the 16 board, or figure out something different. Something wasnt sitting right with the 2x resistor option and I kept really challenging myself to be realistic about when a 16 cue board would be used. I was going through all the effort to compact the board... so instead of a 16, why not just improve the 8 to make it more compact?
All of the advantages started to make sense, and honestly I felt dumb for considering a 16 -- For one, that's another board to make, maintain, iterate on and generally care about. Focusing on the 8 allows for ultimately a cheaper, better board that's more flexible. I was mildly proud of myself for this realization, as I've always had a problem widening scope too quickly and really undermining the 'meat and potatoes' in favor of covering diversity that no one actually wanted. So is born the V0.2 board --
Top Render
PCB Layout:
Still got this all done on a 2 layer, putting the shift registers in the center, which required a lot of via-foo to get places... I dont think the trace routing is super elegant, but it got done regardless. Really learned that I wanted leaded EL capacitors vs. the SMD - The leaded provide a solid path to both ground planes and in this case where I was running my 5v bus underneath was actually a handy thing to brige it to the trace on the top layer.
For the receiver board, I needed to fix the issues above, but I'd started toying with the idea of a "production" board. For all my electronics tinkering time, I'd always stayed on the safe shore of using development boards. They were cheap and had a lot of the things I didnt want to take the time to understand. Slowly though, I started to want to understand those things and, also given that a lot of the chips like the ESP32-S2/3 have a lot of the stuff needed already built in, I figured today was the day to leave the shore and get tossed around by the careless waves of using bare MCU ICs.
Thankfully, the only real thing I deduced that the ESP32-S3 needed was an oscillator for the clock, and a 3.3v LDO, along with some boot/flash provisions. There are tons of helpful things out there for folks making their own dev boards that were a really handy resource.
Kicking the dev board really opened things up for compacting this board. Even adding the boost circuit on the charger (making for 3 inductors on the board...), it's a dramatically smaller board than v0.1. I worry that things are getting a little too tight, but I try my best to follow guidances on data sheets and not run signal traces right under inductors... so I should be fine... right? One important thing here is that i immediately 50k resistor the ESP32's antenna to ground. I dont want to use its built in wifi and dont even want to leave myself the option of an antenna... Also given that it has an amplified NRF24l01 right above it, that may create some interesting issues.
So here it is!
Also switched to some bigger EL caps, as I think i did this very late at night and realized my output capacitors were in nf, not the needed uf...
The Receiver PCB:
Receiver PCB Traces:
Both of these are currently being made, so I eagerly look forward to getting them (they're in black this time!) and seeing what I goofed up with!