Usually, when I have a board design, I don't waste much time milling and assembling it.
This time, though, it became pretty clear that I was a tiny bit rusty when it comes to milling on my CNC machine as I do maybe two boards a year and usually I switch around what software I use - at least parts of the tool chain.
As I learned my steps again, I created a lengthy tutorial about all the different steps I need to take to make this work which can be found here.
So after the CNC milling and the following cleanup was done, I was reasonably happy with the result. It wasn't perfect to a number of reasons and lessons learned like: drill the holes after milling the second layer so that auto leveling can actually work!
So while the top side turned out amazing, the bottom side had a bit of an offset and the bed leveling didn't work at all. I had this issue before where all my traces were milled out way too deep but I forgot why that was an issue and what the potential solution was. So I did it again. Result: Adding data to the tutorial to make it easier for myself next time around!
I also had a routing error on my board as the TFT display I was using was different from the last TFT I bought off of ebay. They might all look kinda the same, but these 1.8" displays are pretty much all ever so slightly different and need voltage divider or just some resistors or they need a software pixel offset... or not.. and so on. Luckily, this one was very easy to fix. Added some resistors to ground to create a voltage divider for the SPI signals.
In addition to sensing and displaying 5 different voltages from 12V batteries, I also wanted to add the possibility to wirelessly send the data to other modules on the boat using the extremely cheap NRF24L01 communication module one can by on ebay for about 90 cents a pop. This piece is a work in progress, though, and has not been tested at all, yet.
The end result is supposed to look kinda like this but in a nice 3D printed case and connected to actual boat batteries. As soon as I do that, I also have to calibrate the inputs. It wasn't enough to measure all the different resistors because my multimeter doesn't seem precise enough. I will have to calibrate the individual inputs and provide calibration values in the code to correct the measurements to be accurate. For example, a 4.2V fully charged LiPo shows up at 4.05V. That's a lot of deviation!