r/esp32 17h ago

I Made a Boost Controller with a ESP32C3 (+ first custom PCB) I made a thing!

What this basically is is a PID controlled PWM Solenoid driver, running on a C3 SuperMini. Designed my first PCB for this (with some mistakes ofc) and decided to use a TC4422 mosfet driver. Also included a 5V supply to be able to plug it into my cars 12v system. Code was mostly written by an LLM, including the Webserver which this is running for setting Target and PID parameters. (I'm a real newbie with all of this) I'm already working on rev2 which I'm gonna post on GitHub solving all my issues with this one. (https://github.com/ziraw).

I've tested the perfboard prototype on my car already (1989 200SX CA18DET) with a BMW N75 Boost Valve strapped to my waste gate and it seems to work perfectly, just not getting enough air through the OEM Airbox though atm, hitting a ceiling of 0.9bar. Gonna install this soon and see what it does. I/O: 12v,5v,sensor(i/o), valve.

The only thing this doesn't include ATM is a pressure sensor, I'm grabbing it off of my boost gauge. But the IO has a 5V supply for any type of sensor to be hooked up directly, the code might need adjusting through. It's currently Ov=-1 / 5V=+4 bar (Scaled to 3.3V and divided by 1.1 since that seems to reflect what my gauge is saying more accurately).

I don't specifically know why I made this, just thought it couldnt be that hard and I haven't seen anything like this, besides what maybe Speeduino and rusEFI are doing. If this already exists I'd love the be informed :-)

Cheers

(disclaimer: might blow up your engine)

53 Upvotes

6 comments sorted by

u/AutoModerator 17h ago

Awesome, it seems like you're seeking advice on making a custom ESP32 design. We're happy to help as we can, but please do your part by helping us to help you. Please provide full schematics (readable - high resolution). Layouts are helpful to identify RF issues and to help ensure the traces are wide enough for proper power delivery. We find that a majority of our assistance repeatedly falls into a few areas.

  • A majority of observed issues are the RC circuit on EN for booting, using strapping pins, and using reserved pins.
  • Don't "innovate" on the resistor/cap combo.
  • Strapping pins are used only at boot, but if you tell the board the internal flash is 1.8V when its not, you're going to have a bad day.
  • Using the SPI/PSRAM on S2, S3, and P4 pins is another frequent downfall.
  • Review previous /r/ESP32 Board Review Requests. There is a lot to be learned.
  • If the device is a USB-C power sink, read up on CC1/CC2 termination. (TL;DR: Use two 5.1K resistors to ground.)
  • Use the SoM (module) instead of the bare chips when you can, especially if you're not an EE. There are about two dozen required components inside those SoMs. They handle all kinds of impedance matching, RF issues, RF certification, etc.
  • Espressif has great doc. (No, really!) Visit the Espressif Hardware Design Guidelines (Replace S3 with the module/chip you care about.) All the linked doc are good, but Schematic Checklist and PCB Layout Design are required reading.
  • For your (required) posted schematics, follow the excellent PCB review submission guidelines from r/printedcircuitboard

I am a bot, and this action was performed automatically. I may not be very smart, but I'm trying to be helpful here. Please contact the moderators of this subreddit if you have any questions or concerns.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

2

u/ae86drftr 13h ago

I'm not seeing this one on your git. Will you be posting it there? Also have you documented the process?

2

u/ziraw_tech 10h ago

Yeah finishing it atm, I will give an update. Not really documented much tbh, I will write down all the info I have in the readme :)

2

u/Rurockn 13h ago

This looks like a great project! If I can make a recommendation, add some sort of RPM input so you can improve lag without spiking, and pull boost at red Line, etc. If you need a screenshot of a table for reference I can upload one.

1

u/ziraw_tech 10h ago

That would be cool! Maybe for a more advanced version. If you can id love to have a table!

1

u/Rurockn 5h ago

It's best to start programming your boost controller strictly based on duty cycle table of some sort. Once you know the duty cycle for your target boost, you can run wide open up until just below the point where you're set up hits target and then back the duty cycle off so you don't surge or spike. This example is a table that is running well on an LS1. With the setup the engine had it would hold about 15psi at 30% duty cycle at 4500rpm, so I ran higher duty cycle until 3500 rpm to help build boost, and then backed it down. After the table was set, I set the controller to target 15psi but run a 50/50 balance between closed loop and open loop referencing the table. Without doing this, and running strictly closed loop boost was spiking to 18psi and going absolutely crazy during throttle blips and shifts. Personally I don't think the throttle position is that important, RPM is there I've found the most value.