Better RPico CAN Controller for Tesla Model 3

    Being a perfectionist, I was pretty quickly dissatisfied with the fully functional solution that I built a while back for controlling the aftermarket stereo on my Tesla Model 3. It works fine. That wasn't the problem. The problem was that it didn't look as clean as it could. And since it's buried in the trunk of my car where no one will ever see it, that really bothered me. So I redesigned it again.


    First off, I wanted to just eliminate as much wiring as possible. I had a lot of redundant wiring left over from previous designs. I also had standalone components like connectors and MOSFETs and resistors just dangling all over the place in that birds nest of unnecessary wires. So mainly I wanted to clean all of that up. It wasn't a hazard. It had all mostly been there for four years with no problems. But I wanted to clean it all up.

    So I drew up a few new iterations of the control PCB with quite a few changes.

  • The biggest change was that I redesigned the PCB to mount directly onto the solid state relay, which screws onto the board that holds the entire power system in place. So not only is everything rigidly mounted to the car, but it's also much more compact with fewer connections.
  • Then I replaced a row of bare-wire terminals with a variety of Molex connectors. Years ago I got into a design groove using Molex Picoblade connectors for pretty much all board-to-wire data connectors. They're very easy to work with, they're inexpensive, they're extremely reliable, they're available all over the place, and you can buy pre-made cables and splice them into the wires you already have.
  • I added a second, separate solid state relay to control the fans, instead of just driving those using the DSP/amp turn-on signal.
  • I also added a SPST DIP switch that allows me to enable/disable the entire stereo system with a flip if needed.
  • I moved the amplifier charging resistors onto the PCB as well. That consolidates all of the custom electronics into one neat little box.
  • And last of all I added in voltage dividers that allow me to read the analog voltages above and below the main relay, so I can close the relay based on actual knowledge of voltage difference instead of based on timing assumptions. I haven't enabled that behavior yet, but I plan to.

    That's it. I'll call that done because I honestly can't think of any other way to improve this, aside from replacing that big solid state relay with something smaller and/or cheaper that could also mount directly onto the PCB ... but I'm not really worried about it.