Ember
A custom hot plate controller powered by USB-C Power Delivery.
Created by
NotARoomba 🚀
Tier 1
50 views
2 followers
Timeline
NotARoomba 🚀
added to the journal ago
USB-C PD Working + Jingle Bells

So I finally got the PCB and it looks cool and even better was that when I plugged it in, it didn't burn up like Cyberboard V1 (wooo) so then I started trying to turn on the LEDs (first thing you always have to do) and the STM32 kept resetting and I didn't know why until later debugging (commenting out peripherals until it worked) I found out that I had mislabled an input pin as output:


After that I started configuring the USB-C PD controller to get the status of my laptop and aja after a bit of configurint I finally was able to get PDO's (power data objects) that specify what different power options the source has:

Sadly my laptop only provides [email protected] so yea...

moving on, I wanna try and get the speaker running and lookign at the datasheet I found this cool graph:

but nothign telling me at which speeds it's running at so I will make my own driver that can control the PCB duty cycle
After messing around I got jingle bells playing on the board lol.
zliskovyi
gave kudos to Ember ago
this looks beautiful I hope i can make one of these sooner or later
CAN ⚡🚀
approved Ember ago
Tier approved: 1
Grant approved: $345.00
Nice project!
NotARoomba 🚀
submitted Ember for review ago
NotARoomba 🚀
requested changes for Ember ago
Use a cheaper material for the top case
NotARoomba 🚀
added to the journal ago
Blueprint Banner
This is just to update the blueprint banner after waiting on it to render, I just need to write 150 characters to fill up the requirement so that I can post this.

NotARoomba 🚀
submitted Ember for review ago
NotARoomba 🚀
added to the journal ago
Blender and BOM
After that I decided to put it in blender and get some nice renders of the PCB and case:




Then I finished up the BOM, created a logo, and cleaned up the README:


NotARoomba 🚀
added to the journal ago
CAD (Canadian Dollars)

After procrastinating a bit, I decided to make the case. I had in mind to have the bottom with holes for USBcC and also have a space to add in the cables for the temp sensors and heatplate. I also thought about adding in a slope for the NFC section so that it will work for phones that have a limited range.
Then I posted the board in r/PrintedCircuitBoards and also in the KiCad discord and got some feedback for the board. I then had to change out the optocoupler for a gate driver and also added another screw hole and made them more symmetrical.

After that I worked on the case and tried to make it look good:

I also found this cool image because I want the USB-C cable flush with the socket:

Then after that I finished the bottom case

but I didn't know how to connect the top case to it so I will research that later.
After sleeping I thought about using heatset inserts and then also the different types of screws that I can use:

I think a sloted head would look decent as I wanted something that has a cylindrical head.


After a bit I finally finished the CAD!

NotARoomba 🚀
added to the journal ago
Change Buck and Heatbed
After posting it in the KiCad Discord I got the feedback to use another buck converter (TPS56339DDC) as electrolytic caps don't like heat so I rewired the buck converter and then routed it up on the PCB.


This gave me more space to put the MOSFET in the middle to dissipate more heat.
Moving on to the hotplate/heatbed, I found out that the design I am basing this off of has this schematic and PCB:


and I found out that these values come from KiCad's calculator:

So to design my own, I wanted to do the same. Looking through JLCPCB's Flexible Heater capabilities, I found out that the thickness of the material can be from 30um to 50um (silicone)

Looking at the voltage drop and power consumption, I only have 20V and 100W to play around with and the 3.3V buck converted needs a minimum of 5V so I have to change the length to make sure that I have at least 5V (with a bit of leeway) to be able to use as much area as I can.
I started researching about Hilbert Curves (very interesting) and also how there is a KiCad plugin to generate it:

I was playing around with it as I am trying to generate curves to fill the space in the heating element.

I then ended up woth this 400mm x 400mm board design AND THE BEST PART IS THAT IT'S ONLY 9 USD ON JLCPCB:

So after making the heatbed and the board I now am going to design a case in OnShape.
NotARoomba 🚀
added to the journal ago
Design Schematic
After working for a bit, I finally finished routing up most of the PCB:

I still have to impedance match the antenna and add in the 3D models and fix the silkscreen but for the most part it's done.
After that I fixed up the silkscreen aligning everything perfectly (ocd)

I entered the lock in call and finished impedance matching, edited the silkscreen, and added a few more aesthetic touches.


NotARoomba 🚀
added to the journal ago
PCB Routing
After coming back, I had a thought. There will probably be space under the OLED so I can add in components under it. Although there will be resistors and stuff under it, I can always put a sheet of paper or smth to separate it.


I decided to reorganize the board to edit the space between the components:

After a while of procrastination and burnout, I finally started something:

I still have a bit of routing to go and then I'll send it for review in the KiCad Discord (first time lol) and also the blueprint channel before rendering it :sob:
NotARoomba 🚀
added to the journal ago
Start PCB Layout
After finishing the schematic and selecting the footprints, I went over to the PCB and started grouping the components (ICs) together along with their passives.

(STM32 for example)
and continued until I had the rest of the components laid out. After that, I made a board outline of 50mmx150mm and then started placing the components there. From what I had in mind, I wanted the NFC tag on the opposite side of the USB-C connector and I also wanted the USB-C PPHV line to go through the top away from the other components. I wanted the Bluetooth antenna in a corner away from any noisy components so I decided to place it in the corner opposite of the PPHV line. The screw terminals I wanted in the top and preferably in the center, as well as the OLED and rotary encoder. After playing around with the layout I got something like this:

I started routing a bit but needed to work on Accelerate so I'm gonna take a break lol.
NotARoomba 🚀
added to the journal ago
Finished Schematic and Footprints
I routed up the external temperature sensors, using chips from MAXIM and ended up with this:



I then routed up the PWM hotplate channel (design taken from here) and ended up with this:

I then proceeded to add all of the LEDs and try to find in the OLED and rotary encoder footprints and add them in:


Then I organized the board and ran an ERC to make sure that I didn't have any unconnected items. After that I found a cool font that I am going to use for all of the logos and icons and design and added it in.

Then I updated the footprints for all of the components (making sure not to use 0201) and then imported it into the schematic.

NotARoomba 🚀
added to the journal ago
STM32 Pinout and Most Peripherals
I started by first defining the pinout for the STM32, as I wanted to use most of the pins, I added some status LED's and a buzzer. Continuing on from yesterday's work, I skimmed through the datasheets of each component to see which extra pins I would need to add them immediately and not have to worry about adding them later. I had some trouble with the timers and flash as I could only use 2 timers (out of 4) so I needed a way to get input from the rotary encoder, set the heatbed, and also to control the buzzer. After researching a bit more, I ended up using LPTIM1 for the rotary encoder as I say that It had input for that.
After configuring all of the pins, my STM32 looked like this:


After that I went to work wiring up the rest of the peripherals like the flash, buzzer, board temperature sensor, current sensor, and NFC antenna.





After that, I routed the buck converter to convert from PPHV to 3.3V:

I looked carefully in the datasheet and made sure that I was using the right inductor and capacitors (looked them upon LCSC and added the part numbers).
I also bom optimized a bit by using as many 4.7K pull-up resistors as I could to not have extra costs for different resistor values.
All that's left is to route up the external temperature sensors and also add in the connections to the heatplate. ALSO THE ROTARY ENCODER AND OLED DISPLAY. I plan on using screw terminals and making holes in the acrylic top case to be able to screw/unscrew them. I also plan on
NotARoomba 🚀
added to the journal ago
Worked on Schematic
I started wiring up the STM32 and configuring it in STM32CubeMX. THIS TIME LOOKING AT THE REFERENCE SCHEMATIC AND NOT COPY PASTING TO AVOID ERRORS.


THIS TIME I ACTUALLY ADDED PULL UP RESISTORS ON THE I2C LINES AND DOUBLE CHECKED THE DECOUPLING CAPACITOR VALUES.
I researched a bit about the different screens like the ones on the flipper zero but the standard I2C OLED is fine (SSD1306). I found this cool tool to create UI/UX so I'll put it here to save for later (https://arduinogfxtool.netlify.app/)
I also added in a bit more stuff like current sensor, buzzer, and board thermometer just in case. I might also add in NFC functionality to be able to wirelessly transfer temp data to the board/have presets set in NFC tags and I just put it on top and let it go (overkill but why half ass it).
I also added a 32MB flash to add images/graphcs onto the OLED (might be possible)
I hope to find this encoder somewhere: https://tech.alpsalpine.com/e/products/detail/EC11E18244A5/
I also spent some time thinking about the case:

(very crude)
I'd want it made out of a high quality plastic (PA11-HP Nylon) or acrylic to be able to see the board interior with rounded corners and space to fit the board and OLED/Encoder. I might also include one of those push-push-switches to turn it on or off. (sends signal to STM32 to disable USB-C PD and turns off the display/lights. OR I COULD DO THE BACK AS (PA11-HP Nylon) AND THE TOP COVER AS ACRYLIC, but I'm too tired to think so tmrw I'll finish the schematic and start the routing.
NotARoomba 🚀
added to the journal ago
Start of Schematic
I first created a new KiCad project and then opened up STM32CubeMX and followed this guide on the ST website to configure USB PD. I also changed the processor to the STM32G0B1CBT6 as the other one didn't have a second CC pin due to the pin count.
Yknow what, scratch that, I'm a Texan and should be loyal to TI. So I'm gonna go with a TPS25730D and then use an STM32WB55 to get bluetooth support (everythings better with bluetooth lol). Jokes aside, I am going with TI because I want to complete this project in 3 days (crazy right?) and I feel more comfortable with their chips (Also serves as practice for when I have to work with Athena's PD chip).
For the mosfet I will be using IRFB3207 and TLP183 to drive it (taken from the original repo) and for temperature sensors, MAX6675 (thermocouple to digital), and a PT1000 with opamps to filter/amplify the signal.
I will also be using LM22676MR-ADJ as a good step down converter from high voltages (42V just in case I want more power lol).

I added the components and started wiring up the ESD and USB-C port first:

After that I finished wiring up the USB-C PD chip. (Yes I made sure that there were pull up resistors on the I2C lines)

NotARoomba 🚀
added to the journal ago
Research
This is another project that surged out of nowhere (like trace) but mainly because I want to be able to solder/reflow my own PCB's in my house to be able to save cost and make bigger and better projects in the future (*cough* *cough* robotic arm *cough* *cough*).
While I could buy a hotplate in the shop, I feel like it's too small and I might need to reflow bigger PCB's so just in case, I want to build a large custom hotplate that has these characteristics:
- Powered by USB-C
- Portable/Easy to store
- OLED screen + knob and button to config
- Cool looking case (opportunity to learn CAD before making a robotic arm/rocket)
Looking through the internet to see if anyone has done anything like this, I stumbled on this repo. While cool looking, it uses an external power supply and has a relatively small heatbed (80mm x 80mm). I'm aiming for 4 times that (in terms of area) with a 160mm x 160mm heatbed (or even bigger).
Doing more research and looking at materials, making a heatbed out of aluminum and one layer of copper costs a lot for big boards (slabs of aluminum)

Or even a bit smaller:

BUT, JLCPCB HAS THIS NEW COOL THING CALLED FLEX HEATERS THAT ARE WAYY CHEAPER AND CAN GO FOR BIGGER BC THEY'RE ALL AT 9 USD! SO being the capitalist that I am, I am going to capitalize on these savings and use one.

Now all that's left is to design the board. As I want USB-C PD, I am thinking about using a STM32G0B1KE (32 pin version) as it's powerful enough to do everything that I want it to do. I also would need a 3V3 converter (LM3281YFQR). In addition to a mosfet to control the how much current is going through (PWM). I also plan on adding a bunch of redundancy like USB-C ESD protection, fuses, current sensors, and temperature sensors (Thermocouple and Pt1000).
Since this is going to be a flexible heater, I will also need a way to "prop" it up in the air so that it doesn't burn my desk. I plan on using an aluminum sheet with a hole in each corner to insert a "leg" (screw or smth) to be able to prop it up. Then at the bottom I plan on having a nice case (titanium /j) for the PCB and screw terminals to connect it to the hotplate/heatpad/flex heater.
NotARoomba 🚀
started Ember ago