This thread is about my battery driven self-heating-mug v1.
Main outlines:
- 50°C drinking temperature
- 100°C Resistor temperature (typ. 40K above fluid if not empty)
- 10W nominal heating power
- 3 or 4 power resistors glued to bottom with heat conductive glue (TO-package, 1.0 to 1.2 Ohm total
- resistors will be thermally isolated by the following stack: (mug floor - heating resistors - silicone - 3D printed wall - standoff - PCB - soft buffer - battery - stainless steel bottom)
- 3.7V LiPo Battery > 3000mAh
- (I am thinking about wrapping the battery with some PCB or similar to lower the center of mass and have some thermal mass in the event of a battery fire)
- small-ish MCU (currently Pi Pico W for legacy reasons, will be upgraded to something like SAMD21 down the line)
- main control interface 0.9" OLED screen and 3 Buttons
- WiFi Webserver (for legacy reasons)
- housing (might) be re-designed to expose the components visibly on the mug's side though transparent housing
I made a v0 proof-of-concept prototype some time ago:

Worked well enough, but had a few ... inadequacies. It was hard to handle and the DS18B20 temperature sensor network (3 sensors on a 1-wire bus) failed for some reason.
I started working on a v1, where the hardware was better contained, so I bought a couple of double walled steel mugs and cut the bottom off. A colleague designed a 3D printed housing to fit in between, this is the test-print for comparison, the final print will be with something a bit more temperature resistant. My colleague bought some PC or CPE+ iirc:

I'm currently botching together a PCB-design using EasyEDA to have it manufactured by JLCPCB ... no idea if the price will be to my liking, but my current thinking is that I have no infrastructure or experience to make PCBs or solder SMD components, so having up to 10 pieces completely manufactured might be OK compared to buying SMD solder equipment for just this project.
The circuit schematic and PCB is attached as PDF files ... not sure how this typically goes, it's simple enough so I will stick with the PDF for now. I can upload different files later if needed.
The PCB outline is currently just a guideline to how much space I have inside the mug (ID ~ 65mm)
Standard trace widths are:
- Heater Lines 3.0mm (=> max current ~10A @ 1oz, 4A are utilized)
- Charging Lines 1.5mm (=> max current ~5A @ 1oz, 1.2A are utilized)
- GP Lines 0.3mm (=> max current ~1A @ 1oz, <0.2A are utilized)
Working principles:
- Electric interface will be a USB Type A socket, supplying 0.5, 0.9 and 1.2A of current and a data connection to the MCU
- Power Input is PPWRUSB
- Data Input is PDATUSB
- ==================
- BATTERY CHARGING is handled by a charging IC (currently a MCP73833 for legacy reasons)
- charging IC is interfaced with the MCU through GPIOs 1 through 7
- GPIO2 through 4 switch the charging current (1.2, 0.9 and 0.5A) by using the GPIOs as drain transistors (1/1000 of load current, so GPIO current of <1.2mA)
- GPIO1, 5 and 6 detect charging state (GPIO1 is PowerGood [PG], GPIO5 is IDLE/DONE, GPIO6 is CHARGE)
- ==================
- POWER DELIVERY to MCU is done through:
- direct 5V connection to PPWRUSB or the Push-Button PPWR and the pMOSFET Q1 to protect the battery from 5V (MOSFET handles >300mA iirc, pico W draws < 150mA)
- INTERFACE is done via a 0.9" OLED screen connected to Header J1 using I2C
- (draw at full brightness should be well below 36mA, taken from here)
- USER INPUT is done with 3 momentary Push-Buttons on PB1 through PB3
- ==================
- SENSOR INPUT covers total Battery current, half the battery voltage, 4 thermistors and a fixed ADC characterization input
- total Battery current is dropped over R11, a 2mOhm Shunt resistor with larger package that can handle >10A, irrc
- shunt voltage is amplified by the current measuring IC U3 that amplifies by 50x with low input offset
- (maps 0-4A load current to 0-0.4V, giving me around 1% resolution steps on an ADC with 10bits effective resolution)
- Battery voltage is MUXed onto the input ADC using the pMOSFET Q3, dropped over a 10k resistor
- the complementary 10k resistor is R17 that will divide the battery voltage signal through GPIO11
- Q3 has a threshold voltage of around 2V, MCU can supply 3V3, battery is between 3.0 and 4.2V, so the MCU GPIO should be enough to keep Q3 off
- (I should probably not be so frugal and just slap it with a pull-up resistor and a pull-down BJT)
- 4 Thermistors will be connected to GPIOs 16 through 19 using PRTH1 through4
- (Temperature points are: mug floor, heater package, battery and one I have not determined yet, maybe PCB temperature)
- the complementary Resistors to form a resistance bridge are R13 (2k) and R17 (10k) connected to GPIOs 10 and 11 respectively
- switching the GPIOs in this network i can MUX VBAT and the 4 thermistor signals onto ADC1
- R13 with 2k gives me most resolution around 50°C and activating R17 with 10k additionally allows me to avoid the ADC Differential errors of the Pico
- ADC_VREF of the Pico is shorted to 3V3 to give me the full 3V3 measurement range (noise will be countered/used with oversampling and decimation)
- GPIO12 is permanently connected to the ADC characterization to somewhat counter the Pico ADC's horrible ADC Nonlinearity steps
- Low pass a PWM though R12 (10k) and C3 (1u) @ f_c~100Hz with a drive frequency of 30kHz to translate PWM timing to a linear voltage reference and record the ADC's nonlinearity
- ==============
- HEATING is controlled using the TO package power nMOSFET Q2, controlled using GPIO0, limited to < 30mA with R10 and pulled to GND for security
- the PCB is still missing the GND-Back plane since it's a kind of WIP
- the PCB outline is currently just a size reference for the ID inside the 3D print, I will likely make it rectangular with 2 screw holes
Please let me know what I forgot ^^
I tried to follow general commons sense that I could extrapolate from my bits of electronics "knowledge" and some guidelines from watching 1 or 2 YoutubeVideos. I should probably have researched a bit more, so please let me know if you have a few sources that I should study or direct advice you would like to give me.
All help is appreciated and thanks a lot in advance ! Feel free to ask anything.