Ralim / IronOS

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

Add TS101 support #1420

Closed rozwell closed 1 year ago

rozwell commented 1 year ago

Hopefully TS101 hardware will be easy to adapt and there won't be any bootloader issues.

River-Mochi commented 1 year ago

The question is if the 90W can be unlocked on the TS101 only with a charger that complies with PD3.1 standard and can output 28V, or if it possible to supply the required power also with a PD charger that has for example an output of 20V at 5A (100W).

have to ask Miniware how to do this as you are asking about Miniware's own company firmware and not Ralim's IronOS firmware. There is no Ralim's IronOS firmware for the TS101. This is not Miniware official firmware support page (github ralim's ironos is a completely different firmware from Miniware's own that Miniware release with their iron and they officially support). The official Miniware forum page for supporting Miniware hardware and the firmware Miniware wrote is here https://www.miniware.com.cn/forum/

This is open source Ralim's IronOS which is able to be written to some Miniware devices. the new ts101 Only has miniware's official firmware which you have to talk to Miniware for support.

This ticket @rozwell - maybe consider closing as Ralim indicated above he is probably not going to put more effort into trying to get IronOS to work on TS101 because Miniware has made it too hard to do so.

To be clear the TS101 FW2.0 (made by miniware) is not relared to this volunteer Ralim's IronOS project. The miniware code for TS101 is written/supported by Miniware and it is not open source code, so you have to seek support and documentation for it on Miniware's website. There is no IronOS firmware for the TS101 and does not look like there will be although Ralim spent some time poking at it, you can read his comments linked below that Miniware has made the newest TS101 too burdensome and difficult presently to try to port IronOS open firmware to work on it. Where you downloaded the Miniware official FW2.0 for TS101 , that is probably the same place you can get support for Miniware official firmware.

Ralim said above in 2+ places in this ticket, he is probably not going to work on firmware for TS101 because Miniware is not cooperative enough and made a mess of things such that reverse engineering it is going to take way too much time and effort to do it that it's not worth the bother. see here https://github.com/Ralim/IronOS/issues/1420#issuecomment-1334529802 and here https://github.com/Ralim/IronOS/issues/1420#issuecomment-1404510840

River-Mochi commented 1 year ago

It is really not clear to me how the power management has been implemented in FW2.0 and if the 90W power can only be achieved with the latest PD3.1 chargers.

it's not clear to anyone how Miniware implemented it since the source code for the TS101 is not open as far as I know. See if Miniware will release the proprietary code for the TS101 firmware and email Miniware support to find out more . Since it's not open, no way to know and Miniware can answer this.

River-Mochi commented 1 year ago

if you really want to use a 28V 140W PD3.1 charger, I recommend getting an Iron that supports it using an open source firmware like Ralim's IronOS.
Pinecil V2 version (with green thumb grip) is the only Iron I know of that both supports PD3.1 and has been tested by many people with PD3.1 chargers at this point and also can use open source firmware - Ralim's IronOS firmware as opposed to a closed proprietary firmware. Being able to use open source firmware is an important feature to look for in soldering Irons if you want to use Github IronOS on them, not all irons can do this or the manufacturer makes it too hard to bother trying.

Pinecil V2 is confirmed by many to work with 28V although theoretically the maximum you could get after subtracting out the resistance of the Tip is about 126 Watts on Pinecil V2. and in practice using official 240W PD3.1 cable with a PD3.1 140w 28V charger, I've tested up to 110Watts putting Pinecil V2 into extreme testing.
Besides the tip having resistance which you have to use ohm calculator to account for, also consider there are other things causing resistance too and subtract for that (pcb components, cable itself, more resistance as pcb gets hotter). For Miniware, their tips are about 8.0 ohms but you should check that out yourself using multimeter, then add a little more resistance in the calculation for other little things, like the usb-c external tester and such. https://ohmslawcalculator.com/ohms-law-calculator

For Pinecil V2, we subtract 6.2ohms for ohms calculator because the new V2 has specially designed Pine64 shorter tips which are more ergonomic and also a side benefit of a much lower resistance. However the V2 can also use the normal longer ts100 tips as well, in which you use the 8.0 ohms in the Ohm calculator.

whereas the Miniware can not use the newly designed Pine64 short tips and therefore, just use 8.0 ohms normal length tips in the calculations on calculator.
For miniware then the theoretical maximum is 98W but you might not see more than 85W with resistance of other things added in, but you have to test this for yourself.

MINIWARE TS101 Theoretical maximum of 98W after adding in resistance of the 8.0-8.2 ohm Tip itself image

The Pinecil V2 on the other hand was designed with lower resistance shorter tips of 6.2-6.5 ohms in mind (although it can also use the older tips of 8.0 ohms as well if you unplug between tip swapping). and as you can see in ohm calculator, Pinecil V2 much better utilizes the PD3.1 charger as it has a theoretical max of 126W using a real EPR PD 3.1 charger of 28V and also using a real PD 3.1 240W USB-C cable. The cable is important, if people use old normal usb-C cable they will not get more than 20V plugged into PD3.1 charger. that cable has a special emark chip in it which opens negotiation for 28V to an IRon.

PINE64 Pinecil V2 theoretical maximum of 126W after subtracting out 6.2-6.5 ohm tip image

Keep in mind also that Pinecil V2 works with Ralim's IronOS and Miniware TS101 does not. Talk to Miniware directly for support on their proprietary firmware if it is not working for you to get 28V on the screen.

Wuthoqquan commented 1 year ago

@River-b Thank you so much! I was not expecting such a comprehensive reply to my question about the difference between 100W supplied by a charger capable of delivering 28V and 100W supplied by a charger capable of delivering only 20V but at a higher current. I do not own a certified PD3.1 charger, but a 100W USB-C charger working at 20V - 5A, hence why I was curious to understand if I could possibly still take advantage of the 90W offered by the TS101 with FW2.0. I do apologize if I asked the question here, as recognized in my earlier post, where I admitted my query could be off topic. But I was asking just from a general technical point of view, since I really do not know if 100W can be different, depending on the different combination of originating voltages and currents. In my specific case, I’ve purchased a 100W PD charger that can supply a maximum of 20V at 5A and I’m now questioning whether I would be better served by a certified PD3.1 charger capable of delivering up to 28V. I appreciated your insights about the need of proper cables to anyway be able to fully utilize the higher 28V attainable by PD 3.1. Thanks for that as well.

River-Mochi commented 1 year ago

but a 100W USB-C charger working at 20V - 5A, @Wuthoqquan unfortunately 20V 5amp 100W charger will not make difference. if you look at the Ohm Calculator math you will see this. Enter simply 20V and 8ohm for the Tip. and you get your answer on maximum watts. then "try" to clear ohm calculator , enter 20V, 5Amps, 8 ohm resistance. you will see the science auto corrects and you have exact same Power watts.

In this situation, you need to increase the Voltage as increase of amps rating of your charger doesn't really do anything significant as you can see for yourself if you play with Ohm calculator online.

you might try in real life a 20V 5amp 100w charger with a 100W PD usb-c cable and get a tiny bit more theoretically than using USB-C normal PD65W cable with 20V/3.25 amp charger, but I'm not sure it will even show on the miniware device. It makes no difference in real life for any performance or even watts you see with external usb test on the iron (from my testing of different 20V chargers and cables).

I have tested this on Pinecil devices myself and no matter if I use different cable PD100w cable or PD60 cable with either a PD65W 20V 3.25amp charger or a PD100W 20V 5amp Charger, the heating time and performance and also watts used and shown on screen is approxiamately the same in real life usage and also confirmed on external USB-C tester. although it might show 65W for the PD debug menu over 60W, the actual time of heating/performance was the same and if there was a slight gain I did not perceive it in using the iron.

The only true significant change I could see and feel in performance was upgrading to full 28V charger PD3.1 and combining this with a PD240W EPR PD3.1 cable ( many work you dont need certified ones). I recently got some $5 cables from aliexpress of PD3.1 240w kind and they work fine just like my $15 -$50 USB-C PD3.1 cables. for the charger, if you want a budget one that has proven to be pretty good and passed test, the Rocoren 140w 28V one has been tested by many and is about $44 on Aliexpress (use store coupons) and also is on Amazon too. The Ohm calculator also proves this to be true that 20V with any amps you stick in there doesn't make a difference on Power (remember to include 8 ohm for resistance of tip, although you might have as much as 8.3 ohms). but you can see clearly what happens if you clear the calculator and enter just 28V with 8 ohm resistance.

If you are interested I made a short video comparing typical 20V 3.25 amp charger to a 28V 5 amp charger, and comparing use of Pine short 6.2 ohm tips to normal ts100 style longer tips. I recommend watching in slow motion as it is a very short amateur video. https://www.youtube.com/watch?v=nTC-ah4f0hg

in order to get 100watts from a 20V-5 Amp charger and cable, you would somehow need to change the resistance of the Tip from 8.0 ohms to 4 ohms and this is not possible with TS100 tips. (measure resistance of tips on cold end of the cartridge, touch the 2 silver contact bands with a multimeter).

Wuthoqquan commented 1 year ago

@River-b WOW…. Thank you! Hats off! Your reply was again super informative! Now all makes sense to me. The way you have explained how the voltage impacts on the overall supplied power has clarified why PD 3.1 should be the preferred option in such use cases, given all the other variables that reduce the actual power output. Guess I will send back the 100W charger and replace it with a proper PD 3.1 140W one. Many thanks again!

River-Mochi commented 1 year ago

@Wuthoqquan PD3.1 is also more future proof. and the USB-C 240W cables also future proof. All 100W cables were officially deprecated by the USB-IF organization in December 2021 because they want to simplify cables into just 2 kinds. One category is SPR ( standard power) PD60 cables - cheaper because no emark smart chip inside. and the 2nd category is EPR PD3.1 cable (extended power rating) which is the 240W cables that come in different data speed. for Firmware even the lowest 480 mb/s is fast enough data speed so we only care about the 240W rating of the cable. Be aware there are some fake 240W cables on the market that I purchased and others as well, and tested. luckily I was able to get my money back on fake cable that only did 20V 5amp even though it said PD3.1 240W. I have both certified and non-certified. following cheap cables worked at 28V on usb-tester for me if you want to save some money.

Linked cables are not certified by USB-IF but they work and show me correct 28V on USB-C tester and on Pinecil Iron Detailed screen view.

yes 100W cables are still sold. I dont see a reason to buy them unless you get it dirt cheap same price as SPR PD60 cable. USB-IF said manufacturers who have certification on 100W cables can continue making them, but when they run out of 100W emark chips, they too will probably switch to selling EPR 240W emark cables. reference: https://compliance.usb.org/index.asp?UpdateFile=Cables%20and%20Connectors&Format=Standard#:~:text=Effective%20Immediately%20100%20Watt%20USB,on%20December%2022nd%2C%202021.

these days you can get PD3.1 240w (emark chip) cables for $5-$10 then why buy 100w old tech cable. I did buy a 100w cable recently but only because it was real silicone & cheap $5 and very flexible - will use it with my pd65w chargers.

rozwell commented 1 year ago

This ticket @rozwell - maybe consider closing as Ralim indicated above he is probably not going to put more effort into trying to get IronOS to work on TS101 because Miniware has made it too hard to do so.

Looks like TS101 is a no-go :unamused: And this thread went off-topic so... I agree, closing.

violavon commented 1 year ago

@rozwell please, re-open.

piit79 commented 1 year ago

@violavon Why...? It was explained adding support would be complicated, and there is no plan to do it. You can blame Miniware for that for being ignorant.

violavon commented 1 year ago

@piit79 As said, support may be done in the future, although it isn't a high priority.

River-Mochi commented 1 year ago

it will be basic because... read all comments from ralim in this ticket, miniware has laid it out in a way that it's too much work to reverse engineer and they haven't shared with Ralim the schematics or anything to make it easier.

violavon commented 1 year ago

Yep, and until then this should be open.

TheseDamnComputers commented 1 year ago

Screenshot_20230227_171831_Gmail

rozwell commented 1 year ago

Oh well, looks like there is still a chance, so let's keep it open until @Ralim decides otherwise ;)

L1cardo commented 1 year ago

Oh well, looks like there is still a chance, so let's keep it open until @Ralim decides otherwise ;)

I don't think so. Those are just some words without any meaning, just to make you go away.

bulletng commented 1 year ago

I think I'm going to return my TS101 and upgrade to the PINECIL because of this! I really like the shorter tips and how highly customizable it is.

gruvw commented 1 year ago

Got this response:

IMG_20230427_073516.jpg

Don't really know what it means 🤷‍♂️

Ralim commented 1 year ago

Neither do I so far 🤷🏼

whitequark commented 1 year ago

Hey folks, I've talked to Ralim and I am willing to do the hardware analysis work necessary to get TS101 supported. I think I'll have to sacrifice one unit for it, are any of you willing to buy me one after I post the reverse-engineered documentation necessary for bringup?

L1cardo commented 1 year ago

How about we all pay some?

whitequark commented 1 year ago

As long as someone who isn't me coordinates it :)

L1cardo commented 1 year ago

Is there any website that can do something like raising money?

whitequark commented 1 year ago

Oh yeah could probably do a gofundme or something

Tasshack commented 1 year ago

@whitequark what did you talk about to Ralim and what did responded about this?

whitequark commented 1 year ago

@Tasshack I talked about what would motivate them to add support for TS101, and they replied that getting a pin map (mainly heater and the USB PD PHY I2C) would go a long way. It's not really difficult for me to take my TS101 apart and reverse-engineer it to a sufficient degree, so I'll just do that, I'm thinking tomorrow or the day after.

whitequark commented 1 year ago

How to tear down your TS101 (and then be able to put it back in one piece)

This is actually not very difficult, and consists of only a few steps. To do this you will need three tools: a screwdriver set, a box cutter or any other narrow bladed knife, and a plastic opener tool of the kind they sell with smartphone displays (or ideally two).

Read all of these steps before starting to do anything. This minimizes the chance of breaking your iron by accident.

PXL_20230602_211840265

1. Removing the glass

First of all you will need to remove the glass in front of the display. As best as I can tell, This is an actual glass! It does not seem to be an acrylic or polycarbonate panel. Do not put excess strain on it, or you will crack it.

The glass is affixed to the case with two small cuts of adhesive strip under the darkened areas, one towards the front and one towards the back of the soldering iron. Use the knife to pry the glass on the short side of the glass, close to the DC barrel jack. This will damage the plastic a little, but nothing too noticeable.

Once you have your knife wedged in between the glass and the case, you have separated the glass from the first adhesive pad (or the pad from the case). Now, use any tool (a fingernail works) to lift the glass from that point. Try not to put fingerprints of it, or you'll hate yourself after reassembly. Once it is lifted enough, grab it by the sides and remove it. It is strong enough to withstand a fair bit of force as long as it is not bent.

2. Disassembling the case

The case is held together with four latches, indicated below. There are no fasteners; it is just plastic.

PXL_20230602_211919772_edit PXL_20230602_211907241_edit

To start the disassembly, use a thin soft object (a plastic opener or a fingernail all work) to lift the bottom part of the case at the short segment of the seam closest to the DC barrel jack. The plastic is thin and flexible and the nearest latch is far away, so it is not hard to separate it maybe 0.3-0.5 mm from the other part of the case. This causes the long segment of the seam, parallel to the case, to open up a bit. While holding the case in this position (it helps to squish it from the sides with your fingers), jam the plastic opener tool into the seam close to the DC barrel jack. Now that it is inside, drag it across the length of the seam, undoing the latches. Repeat on the other side.

3. Remove fasteners

Remove the hex head grounding screw on the outside of the iron, and the Philips head screw inside of the iron where the contacts are. You can leave the slot head screw in place, it doesn't matter. Also, remove the small half-circular PCB that is installed upright inside the iron, it is not held by anything, just inserted into the slot.

4. Starting extraction of the PCB

Take the thickest hex or Torx bit from your screwdriver set and put it into the screwdriver. Alternatively, something like a retractable pen would work (and may be even more convenient). Grab the case in one hand and your screwdriver or pen into another. While holding the case firmly, push the central pin of the DC barrel jack with the object you're holding, until the PCB moves a little down the case. The whole assembly will flex: the case and the PCB both. This is normal. Try not to break anything. When the assembly is flexing enough to have clearance for removing the DC barrel jack from the case, push it up and out of the case.

Once you're done, the iron should look like this:

PXL_20230602_212114173

Note the display held by my finger. This is important for the next step.

5. Finishing extraction of the PCB

As can be seen on the final image below, the case is sandwiched between the display and the PCB. There is an opening through which the flex cable passes, and the display can only be removed if it is tilted at an angle to the case. This is why the first step is removing the glass.

While holding the display at about 45° angle, start carefully pulling the PCB out of the case. The goal is NOT to completely remove it yet, but to move it to the point where there is more resistance to pulling it. Once this happens (and the PCB is stuck at the part of the case where latches are molded into it), you can release the display, since it will hang at an angle by itself. At this point, use both hands to pull the case and the PCB apart. This takes a little bit of force, but not too much, and the flat cable of the display should be reasonably safe from tearing at this point.

You're done! Put the screws and the display into a plastic bag and get yourself a coffee--the process was probably tense enough to warrant it.

PXL_20230602_212237971

whitequark commented 1 year ago

High resolution images of the PCB

Top 1

PXL_20230602_215953670_crop

Top 2

PXL_20230602_220120595_crop

Bottom

PXL_20230602_220149601_crop

whitequark commented 1 year ago

Composite image of both PCB sides, to scale

TS101_PCB_composite

This unassuming PCB is actually 4-layer, so top/bottom layer imaging isn't sufficient and tracing will be required.

whitequark commented 1 year ago

Labelled image of the MCU pins and nearby components

PXL_20230602_215953670_edit

whitequark commented 1 year ago

Pinout (done)

MCU pinout

Note: there are traces routed under the package, including to seemingly unconnected pins.

The device can be programmed (including bootloader) and debugged without disassembly using an SWD debug probe connected to a USB type-C cable as: USBDM-SWCLK, USBDP-SWDIO.

Likely functions connected to MCU based on TS100 schematic:

List of functions based on firmware reverse engineering and live instrumentation:

NRST: has trace connected BOOT0: Vss PA0: (TIMER1_CH0, TIMER4_CH0) PWM output for heater FET PA1: digital output, normally low, driven high briefly when measuring voltage on PA3 to sense tip temperature PA2: (ADC012_IN2) DC barrel jack voltage analog input PA3: (ADC012_IN3) tip voltage analog input PA4: (ADC01_IN4) ambient temperature analog input PA5: (ADC01_IN5) unused voltage reference?, measures at 3.3 V PA6: (ADC01_IN6) USB PD voltage analog input PA7: display pin 9, RSTn PA8: button A PA9: does not seem connected, seems unused in firmware PA10: button B PA11: (USBDM) PA14 and USB connector pins 6, 8 PA12: (USBDP) PA13 and USB connector pin 5 PA13: (SWDIO) PA12 and USB connector pin 5 PA14: (SWCLK) PA11 and USB connector pins 6, 8 PA15: select USB PD as power source PB0: display pin 10, SCL, bitbanged PB1: display pin 11, SDA, bitbanged PB2: (BOOT1) pull-down to Vss PB3: not connected (the trace near it goes under the IC, probably to PA14) PB4: select DC barrel jack as power source PB5: (I2C0_SDA) USB-PD SDA PB6: (I2C0_SCL) USB-PD SCL PB7: USB-PD INTn PD0: not connected PD1: not connected

Display pinout

The pin 1 of the display is towards the same side of the PCB as the pin 1 mark of the MCU (on the bottom, if the text on the MCU is oriented normally).

The display is connected via (software bitbanged) I2C and is likely SSD1306 compatible.

14: capacitor to Vdd 13: capacitor to Vdd 12: pull to Vss, IREF? 11: PB1, SDA 10: PB0, SCL 9: PA7, RSTn 8: Vdd 7: Vss 6: n/c 5: Vdd 4: C2x 3: C2y 2: C1x 1: C1y

x,y = P,N or N,P

whitequark commented 1 year ago

The pinout above (the third oldest edit) is probably about as far as offline tracing can go; further investigation requires firmware reverse-engineering and/or online tracing (using a debugger to toggle pins and seeing what happens).

whitequark commented 1 year ago

A brave type-C USB cable has been chosen to voluntarily give its life in the service of the Greater Good. Please take a moment of silence to honor its brave sacrifice, which will forever live in our hearts. 🫡🎖️🫡

I can confirm that the programming fixture that was speculated above works.

PXL_20230603_005442897

image_2023-06-03_01-50-39

whitequark commented 1 year ago

Stock firmware image

Download (128 KB binary dump)

whitequark commented 1 year ago

@Ralim Aside from PA1 and PA5, which neither have a confirmation for their function nor a definitive exclusion of any, the above is a complete pinout that has been verified against both the stock firmware and the hardware. I hope this helps!

By the way, most of the credit goes to @VioletEternity—I just gave her the iron, asked for help, and communicated the results. The whole process took her about 8 hours, which seems a little bit less than hundreds :p

Ralim commented 1 year ago

@whitequark & @VioletEternity Thank you so much 🙇🏼

This not only gives me all the missing pinout information, you even traced out the extra functions for each pins which confirms their firmware is running a lot like it used to (before it went effective closed source).

Nice to see no real innovation going on here, so everything apart from higher res screen should be quite quickly to bring up. But also whyyyy do they hate hardware I2C so much. Same issue as S60 where we spend a bunch of time bit-banging I2C rather than being productive.

I'll try and get on porting this over asap.

VioletEternity commented 1 year ago

Some additional information that may be useful.

Display controller ASIC identification

I have not verified this myself, but in a comment, a review was linked which describes (timecode) the display as being based on the SSD1316 controller.

Accelerometer ASIC identification and interface

I reverse-engineered the I2C initialization code for the accelerometer. Based on that and the package size, the cheapest (on Mouser) accelerometer that has a register set that is compatible with the initialization code would be ST LIS2HH12. The actual device is different; both the I2C address and the value of the WHO_AM_I register are different. There are many accelerometers with this type of interface and it is probably not important exactly which device it is considering it is only used to detect lifting of the iron.

The annotated accelerometer initialization and readout code follows: image image image

This code is extracted from the bootloader's accelerometer test routine.

This function confirms the pinout:

image

As far as I can tell the interrupt lines of the accelerometer are not connected to the MCU and it has to be polled, yes, using software I2C.

Note: If you are aiming to replace the bootloader, potentially with the possibility of using the original firmware with a custom bootloader, it may be important to consider that the firmware is not fully independent from the bootloader: it does not reinitialize the accelerometer. It doesn't seem to have any direct code dependencies and it does seem to initialize the peripherals it uses by itself, though.

Tip temperature measurement

The temperature measurement is performed twice, with the PA1 pin (cc @whitequark to update the function table) used to, most likely, multiplex something. It is being toggled in GPIOA->ODR using a bit banding area at 0x42210184:

image

The tip_degreesC variable is computed using software floating point that I didn't completely label. The computation looks like this in pseudocode, with OPx representing unknown arithmetic functions:

void OP1(float,float);
void OP2(float,float);
void OP3(float,int);
void OP4(float,int);
PA1 = 1
sample1 = measure_channel(3)
PA1 = 0
sample2 = measure_channel(3)
tip_degreesC = (int)((((((((((float )sample1) OP1 (float)sample2) OP2 3300.0f) OP2 1000.0f) OP2 100.0f) OP3 -12) OP4 2843) OP4 13)

I can dig into this further if necessary, but it seems like @Ralim might know the shape of the expression already.

Function of PA5

This pin is connected to the red pins of the unknown ASIC in the LGA-16 package:

image

It's not clear what the ASIC does since it has only two electrical connections (the blue pins are connected to Vss and the red pins to PA5 and probably other pins on that net). The ASIC is marked "2225" on my iron, and not "2111" as shown in this Reddit thread. In that thread, a few people speculate that it is a multiplexer, but that seems unlikely to me considering how it is connected.

It seems like a 3.3 V Zener to me. The net connected to PA5 measures at 3.3 V with or without tip, during heating or during idle operation, and is not connected to Vdd. I think that PA5 is intended as an analog measurement reference channel, considering the 3300.0f constant in the tip measurement code.

I cannot find any uses of PA5 in the firmware and as far as I can tell, this SoC does not have hardware functionality that would allow using it as a reference channel through register configuration. In addition, I measured Vdd=Vdda=3.3V, meaning that if PA5 would rise above the Vdda rail, the measurement would be clipped, making it pointless. Perhaps an earlier board variant used Vdda=3.9V, similar to the TS100 schematic?

Afterword

With this, I believe I've described every function known or implied to exist for every of the MCU pins.

VioletEternity commented 1 year ago

Addendum: Tip temperature sensing circuit overview

The tip temperature sensing circuit is based on the RS8551 operational amplifier and is located in this area of the PCBA:

image

The OUT pin of RS8551 is connected to PA3 through an 1 kOhm resistor. PA1 is connected to the anode of D1 (the via is located under D1). The net marked with red is connected to one of the tip terminals (the one closer to the MCU). The other terminal is grounded.

I'm not familiar with soldering iron control algorithms but perhaps PA1 is used to inject current to measure tip resistance?

sandmanRO commented 1 year ago

Hello @VioletEternity, it could be that chip (PA5 connected) is a 3.3V voltage regulator? Otherwise, I could see why (I'm speculating now, of course) someone might want to "measure" the Vdda level. Theoretically this measurement would return the maximum count (or the ADC resolution). This could be useful when computing the actual voltage level on other channels when you don't know precisely if the ADCs you are going to use are for example 12bit or 16bit.

sandmanRO commented 1 year ago

I'm not familiar with soldering iron control algorithms but perhaps PA1 is used to inject current to measure tip resistance?

If the TS101 is using the same tips as TS100, then the temperature measurement relies on measuring the thermoelectric voltage. I'm speculating again...that current injection is perhaps is part of the open thermocouple detection algorithm rather than an effort to measure the temperature based on temperature dependent resistance measurements. But I might be wrong.

VioletEternity commented 1 year ago

rather than an effort to measure the temperature based on temperature dependent resistance measurements

My suspicion is that the tip resistance is measured so that the power can be displayed or limited. There is no circuitry to measure the tip heating current, and given the known voltage, calculating the tip power requires knowing its resistance.

sandmanRO commented 1 year ago

Good point. It could be precisely as you said...otherwise, the TS100 tips resistance is rather small, few ohms or so. That means that while the tip is connected to the iron, the voltage across the tip would barely increase when the PA1 goes high (I don't remember precisely but I don't think that STM32 is capable of outputting more than few mA on its DIOs, right?). The story would be completely different when the tip is missing as the voltage would go all the way up to 3.3V and that would be a clear indication for the open thermocouple / missing tip. This would be the classic open TC mechanism. But then again, I'm only speculating here as I have no way of knowing what the Miniware guys had in mind when they designed the board.

VioletEternity commented 1 year ago

Theoretically this measurement would return the maximum count (or the ADC resolution).

The Vdda level is the same as the Vdd level (I don't entirely recall but I think they need to be connected to the same rail with this SoC), and so it should always measure as all-ones. There is no need to expend a pin to find that out.

But if the operational amplifier V+ rail was, in an earlier revision, connected to something other than Vdda, then this pin could have been used as a reference measurement for the operational amplifier output, which is what I was suggesting in my earlier message.

VioletEternity commented 1 year ago

Addendum: Outline of functional blocks

The following is an outline of the PCBA location of every known functional block used in the iron:

ts101_func_blocks

sandmanRO commented 1 year ago

Sure thing, @VioletEternity...what I was trying to say is rather academic: if you are going to use a chipset that embeds a 12bit ADC variant, the maximum count would be 4095. In the same time, a 16bit ADC variant would return a value of 65535. "Measuring" the VDD and using the result for computing the voltage on other channels would allow your code to run without change on both platforms.

VioletEternity commented 1 year ago

if you are going to use a chipset that embeds a 12bit ADC variant, the maximum count would be 4095. In the same time, a 16bit ADC variant would return a value of 65535

Usually this is solved on the STM32 devices by setting ADC_CR2.ALIGN (bit 11) to 1:

image

I don't believe this is done in the stock firmware.

sandmanRO commented 1 year ago

All right, @VioletEternity. Please disregards and focus on what it matters.

whitequark commented 1 year ago

I've updated the pinout to its final version.

Also, lmao @ Miniware not giving @Ralim any information for months because of concerns that a competitor could reverse-engineer it when @VioletEternity reverse-engineered most of the functions (and certainly enough to clone it) in less than 24 hours. All they're doing is draining goodwill.

Ralim commented 1 year ago

RE:

Addendum: Tip temperature sensing circuit overview

Thank you for this 🙇🏼 Can confirm that PA1 + Diode + Resistor is how we measure the tip resistance (use this to inject known current across tip heating element, then use the normal op-amp readback to read it. Then toggle a few times to get the delta and convert back to resistance).

Tip temperature measurement

Thank you for this, I wouldn't dig too much into this algorithum, this looks fairly similar to their existing conversion function that they have used for a while (that tends to fail on clone tips a fair bit). So not worth your time to dig into this Ithink.

Accelerometer ASIC identification and interface

Thank you sooo much, hunting for which damn accelerometer they have used this time is always a pain, as they tend to mix-and-match. I'll have to add support for this on to IronOS (yay another one lol)

OLED

I can confirm its the SSD1306 compatible, I have managed to get a picture up on the OLED by stubbing out most of the rest of the init.

Miniware always answered no when I asked roughly every Month. Even when I pointed out its going to be like 1 weekend for somone to figure out all their secrets. Thank you hugely for all of the information, I have like 70-80% of a port done already.

I'm rather glad you have gone far beyond a schematic and have provided enough details for someone to copy in a way, now its on them for being stubborn 🤣. Ever since I started to support more products than theirs they became insanely stubborn, while all others I've talked to have been at the least polite and generally exceedingly helpful.

Still; huge thankyou.

VioletEternity commented 1 year ago

Replacement display

Although I took care to not damage the display, it seems that my handling caused an invisible crack to appear in the display FPC, and now it works only if the FPC is flexed in certain ways. (This does not include the way in which it's flexed when the iron is assembled.) In retrospect, I should have desoldered it before handling the PCB this much.

In any case, I looked through Aliexpress listings for 0.87 inch OLED displays, and this one seems to be an exact match. In particular, I confirmed that the dimensions of the glass and the length of the FPC match this drawing (copied from the listing):

image

The display costs 3.24 GBP (incl. shipping), so breaking the display doesn't seem to be an expensive mistake after all.