Ralim / IronOS

Open Source Soldering Iron firmware
https://ralim.github.io/IronOS/
GNU General Public License v3.0
7.28k stars 723 forks source link

Support Miniware MHP50? #1872

Open SimGas opened 10 months ago

SimGas commented 10 months ago

Is your feature request related to a problem? Please describe. Recently, the MHP50 Hotplate was released as a successor to the MHP30. It is available for about 110€ on Aliexpress and supports 100 or 150W heating, together with a new mode for reflow soldering. Little can be found on the web for this hotplate yet, but I actually expect it to get more popular than the MHP30 very soon (much larger solder plate (50x50mm instead of 30x30mm).

However, This plate is more complex (e.g. multicolor display) than its predecessor and I am not sure if it could be covered within this project. But I just wanted to ask if you guys see any possibility supporting this plate anytime in future.

A few things I've already noted:

The discussion is hereby opened :)

If anyone is curious what's inside, I've taken a few pictures: IMG-20240126-WA0007 IMG-20240126-WA0008 IMG-20240126-WA0009 IMG-20240126-WA0010 IMG-20240126-WA0011 IMG-20240126-WA0012 IMG-20240126-WA0014

IMG-20240126-WA0005 IMG-20240126-WA0006 CONFIG.TXT

ius commented 10 months ago

MCU marking reads CH32F208WBU6 - a STM32 clone by Nanjing Qinheng Microelectronics (WCH). Vendor website has CH32F208WBU6 which does have BLE.

I don't see any obvious debug headers (other than UART?) - so maybe it supports SWD via USB D+/D- like the MHP30?

Ralim commented 10 months ago

Honestly this looks like a better design than the MHP 30. Makes me less inclined to finish my designs for a competitor.

Same rules would apply to this being supported as anything else really: 1) Need to get Freertos running on it 2) Need docs on how to connect a debugger 3) Need a full pinout of the mcu

orzel commented 10 months ago

For the record, there's a thread about it at eevblog: https://www.eevblog.com/forum/reviews/miniware-mhp50/

TowerDefender007 commented 9 months ago

@SimGas Short question dio you also have the problem that the temperature isnt correctly displayed? So it should heat up to 300°C but only displays around 150°C? ALso did it run for longer and ever encountered the problem that the controler says "over temperature"?

SimGas commented 9 months ago

@TowerDefender007 I have not yet observed any problems with my MHP50. I've used it in reflow mode around 5-10 times with temperatures up to 260 degrees. Everything was displayed properly. Right now, I tried heating in "heat" mode and this also seems to show the correct temperature.

Which power supply do you use? If you use one with a low voltage, that could maybe overheat it? I use a 65w lenovo laptop power supply right now. 17080704937221864055700349196409

I never had the over temperature error, but longest I used it was maybe 25 minutes or so.

TowerDefender007 commented 9 months ago

@SimGas I am using an Anker PowerPort Speed 5 with USB-C with PD but I also tried using my Shargeek battery bank that is capable of outputting 100W on the USB-C (20V at 5A) also I can see that the MHP 50 is using around 82W from the powerbank. But the biggest problem isnt that the temperature isnt accurate (or at least it would take 10min to read the right temperature) because it turns off at some point and says that the controller overheated. Does your fan turn on at some point or is he also never active?

SimGas commented 9 months ago

Just tried it with 250 degrees for 8 minutes. Afterwards the fan speed was 4400r/min and mcu temperature was 41 degrees. Maybe your fan is not connected? Does it show anything in the info menu? ![Uploading PXL_20240216_082142731.jpg…]()

TowerDefender007 commented 9 months ago

@SimGas The info menu only says 0 r/min but the funny thing is after I let it heat up and the error occured I unplugged it and plugged it back in again the fan started for a short time and then turned off again. Do you know how I can open it up to take a look at the fan because I thing the fan is the problem here?

TowerDefender007 commented 9 months ago

IMG_4065

SimGas commented 9 months ago

Well, there are four screws under the rubber pads on the underside. Losen those and wiggle the plate slightly. When it comes off you should be left with what you can see in photo 7. However, if the fan comes on eventually, I think it is not broken.

TowerDefender007 commented 9 months ago

I opened it and the fan is working but there is something odd happening after rebulding it the MHP 50 turns on the fan at the start and says there is no fan connected. Then I dissambled it again and rebuild it again and now it works again.

SimGas commented 9 months ago

Maybe the pin for reading back the fan speed has a slack joint?

TowerDefender007 commented 9 months ago

I didnt checked that. I only checked the cable because it looked a little bit crushed.

ius commented 9 months ago

Just adding a note to document that I've tested SWD via the USB C connector on MHP50, but it doesn't work for me.

I'm fairly confident about the electrical part and am familiar with OpenOCD (although not with Pico).

So either this particular device doesn't do SWD via USB C (seems ubiquitous on Miniware products though) or I've messed up.

Anyone else feel like giving it a go? Or perhaps someone who has torn down the device is able to tell whether the SWD pins are in fact connected to USB D+/D- on this device?

EDIT: This in fact worked on a second attempt, not sure why it failed initially.

orzel commented 9 months ago

Honestly this looks like a better design than the MHP 30. Makes me less inclined to finish my designs for a competitor.

Exactly my thoughts.... And i'm (or I was?) also designing something.

StevenSeifried commented 8 months ago

Hey there, any news about IronOS support for the MHP50? Mine has arrived today, maybe I can help

ius commented 8 months ago

EDIT: This comment contained a question about whether 28V DC input is supported on the barrel jack (rated 19-24V) while we wait for Miniware to release their firmware supporting the PD3.1 28V profile via usb. In the meantime I've received an answer from Miniware support: yes it does!

.. which is another thing IronOS on MHP50 would be great for (28V PD support) - but it seems we lack traction. Other than my (failed) SWD experiment I'm not to keen on tearing it down as the rubber feet seem glued on...

MurdoMcLeod commented 7 months ago

Hi Folks, I'm new here so forgive me in case I sin against the Git-Gods.

I got one of these MHP50-B5 hot plates a few days ago, and tried it on Friday. I spent 2 hours trying to get it to work properly. I could not get it to go above ~80'c no matter what I tweaked in the menus, and no matter the different power supplies I used (USB-C PD and DC-5255 at 24V/10A).

It turns out (after much wrangling with customer support) that Miniware have a batch of these things with trapped (or easily trapped) fan cables. Mine was one of them. See attached pictures. Turns out that any shorting from the fan wires causes the hot plate to not heat up properly. IMG_4884 IMG_4885 IMG_4886 IMG_4887 After I un-trapped the wires and repaired them with insulating tape, and reassembled it to make sure nothing was trapped, the unit worked properly.

Like night and day - the heating with 24V input was blisteringly fast. It melted all the SMD components off a small DCDC board in 1 minute.

Hope it helps - if you have one and it is playing up, dismantle and free/repair the fan wires. Murdo.

PS Yes the feet are well stuck down but if you're careful you can re-attach the sticky feet afterwards. Just be gentle.

danielkurek commented 6 months ago

I have traced some connections on the PCB. I have noticed that USB-C does have only one pair of D+ and D- connected that could be the reason why first attempt of connecting SWD by @ius failed. Also D+ and D- are not directly connected to other MCU pins apart from SWD communication, they could be through some resistors or some other IC for USB communication.

Here is what i have traced so far:

ius commented 6 months ago

@danielkurek Thanks for chiming in!

In the meantime I did get SWD to work, dumped the firmware and performed some cursory reverse engineering to patch the arbitrary limits Miniware put in place for the reflow temperature/time. In the process I also identified parts of the pinout.

mhp50_ch32f

It's a bit rough (because I only did a first pass mapping all pins I've seen referenced in code) - but I have quite some functions labeled in IDA - identifying peripherals isn't too difficult based on the configuration settings/menus.

For my current use case the (patched) Miniware firmware works quite well, but if someone is willing to invest time in actually writing code to port IronOS (@Ralim?) I might be able to spend some more time on reversing.

Display is ST7735 based by the way. External flash is just used for configuration settings.

Miniware have released v1.01 as a downloadable firmware upgrade, just in case anyone wants to take a look at the firmware without having to wire up SWD.

danielkurek commented 5 months ago

Here is updated list of the MCU pinout. The main thing missing is controlling of the mosfets for the heating element. They are controlled by TPS51601A but unfortunately the main pins are connected through unknown IC.

EDIT: Updated pins EDIT2: added functions of PD4 and PB8 EDIT3: details about controlling mosfet driver


Accelerometer?

Power input

Buttons

USB-C

Hotplate

Mosfet driver

6-pin connector

4-pin connector

Fan

Op-amp

Display

External flash

danielkurek commented 4 months ago

The pinout of the MCU is almost complete. The main pins were traced. Pins PC1 and PC2 are probably used for charging a supercapacitor (15F, 3.8V) and powering the MCU. During testing I found out that the MCU can be run entirely from the supercap even if no power input is connected (I was really confused that the display was still working even after disconnecting the power when the MCU was halted :smile:).

I have managed to get FreeRTOS working using examples from MCU manufacturer. The example project was converted to GCC so that it can be easily compiled. You can find the project in repository CH32F208WB-FreeRTOS-GCC (beware currently the project overrides the original bootloader). Additionally, I have fixed a fork of OpenOCD that enables flashing firmware to the MCU (fixed version). I will start working on porting IronOS in the next few weeks.

StevenSeifried commented 3 months ago

The pinout of the MCU is almost complete. The main pins were traced. Pins PC1 and PC2 are probably used for charging a supercapacitor (15F, 3.8V) and powering the MCU. During testing I found out that the MCU can be run entirely from the supercap even if no power input is connected (I was really confused that the display was still working even after disconnecting the power when the MCU was halted 😄).

I have managed to get FreeRTOS working using examples from MCU manufacturer. The example project was converted to GCC so that it can be easily compiled. You can find the project in repository CH32F208WB-FreeRTOS-GCC (beware currently the project overrides the original bootloader). Additionally, I have fixed a fork of OpenOCD that enables flashing firmware to the MCU (fixed version). I will start working on porting IronOS in the next few weeks.

Hi @danielkurek maybe it's a bit too early for that, but I wanted to ask kindly about the porting progress

danielkurek commented 3 months ago

I did not have much time to work on it but i started to work on controlling the heating element. (Also, I have updated the above pinout with my current findings). I have not found datasheet to the IC (with markings 0101 A317A) that is between mosfet driver and some MCU pins so I am currently in progress of guessing how to drive the MCU pins to control the heating element. After that, I think that it should not be hard to get the first alpha version of IronOS working on it (with minimal functions - display, buttons, heating).

I do not have much experience in reverse engineering hardware so the progress is quite slow with my limited time. However, if someone has more time to work on this, I would be happy to help and provide all my notes on reverse engineering/development. Otherwise I will be slowly working on it in my free time.

danielkurek commented 2 months ago

I have an update. I have managed to get the heater control working. There is a failsafe mechanism that ensures that the heater will not work if the MCU fails. Pin D4 needs to have a constant software PWM (no hw timer support) which enables power to the mosfet driver IC and logic level shifter (which shifts control PWM to 5v).

I will start working on porting IronOS to the MHP50.

agilum commented 2 months ago

Hey danielkurek,

is there hope to have ironOS with freely selectable reflow max temp available on mhp50 (similar to mhp30)?

danielkurek commented 2 months ago

@agilum I will start with a very basic firmware with only buttons, screens and constant temperature mode working. Once that is working, I will try to match the features of the MHP30 that are in IronOS. So, yes reflow temps should be freely selectable (the hardware does not limit this behaviour).

Ralim commented 2 months ago

@danielkurek If you get stuck on anything IronOS side let me know and I can try and help or guestimate out things.

Both the ST7735 and the CH32F208WBU6 will likely need driver work put in that I can do a rough pass on (dont have hardware to test).

I don't have hardware but I'm happy to try and help with the messier parts of IronOS itself.