Closed discip closed 3 years ago
@discip
You are on the right track for the movement timer. If you sit the unit stationary the movement timer should not updated. its the timestamp as of the last movement, so whenever you move it should update; and when the unit sits still it should stay static.
If Auto start is set to either S or O, the iron should start heating up only, if it gets moved.
In S mode iron should heat up to sleep temperature, then when the iron is moved it should jump to the final temperature.
Out of curiosity, are you plugging in the unit while holding it and then setting it down - or are you powering up a power supply that would not cause cable movement?
@Ralim Good afternoon, Yes, I am aware of the behavior of the S mode. I put the iron stationary and I am very careful about the cable as well, so there is no movement, that could trigger the accelerometer.
@discip so what Move values are you seeing? I have "20" here if I'm trying to be a bit careful when giving it the power and checking right after it boots. Both S and O work as expected. But it's on TS100, not TS80. Also, what sensitivity do you set it to?
The Move value shown is the timestamp of the last movement detected. So no wonder it's related to the time.
@discip , please enable "detailed soldering screen" and "detailed idle screen" and retry.
@paulfertser I am seeing different values dependent on the model.
I am using the detailed screen for both. - | TS80P | TS80 |
---|---|---|
values | 13 & 20 | 37, 39 & 46 |
sensitivity | 7 | 7 |
So you plug it in and it goes to full soldering mode right away, without showing Sleeping etc, do I get it right? Also, do you have logo enabled (I do). And what are your sleep and standby timeouts?
@paulfertser No, it does not go to full soldering mode right away. It first shows "Sleeping ..." and almost immediately after that starts to heat up.
On the TS80 there is no logo, but I have never changed anything regarding the logo, I only flashed @Ralim's. firmware.
On the TS80P there is a logo.
For me it also shows Sleeping... and starts to heat up to 150 C (which I set as sleeping temperature in the settings) and it continues to show Sleeping and to keep 150 C. That's in Auto S mode. To what temperature does it heat up for you?
I am mostly concerned about the O mode, since it is the mode I use. And in this mode it should keep sleeping, until it is moved.
But the S mode does not work for me either, because it heats up even beyond the configured sleep temperature.
One more thing is, if the S mode is selected it should display Sleeping ...
and heat up to the desired sleep temperature in the background.
@discip, thank you for the clarifications. For me O mode doesn't start heating at all, and S mode heats up just to 150 C (which matches the settings), in both cases after power on I see "Sleeping..." for as long as I do not move the iron. I also have logo enabled which might probably make a difference (by adding a few seconds delay at the startup). And probably my TS100 vs. your TS80 is also playing a role. To sum up, unfortunately, I can't reproduce and thus can't really help, but I hope our conversations helped to clear up the details and probably @Ralim will now be able to see it.
@paulfertser Thank you for your investigation and willingness to help.
@discip It does sound like your iron is reading a higher vibration than the sensitivity level and therefore thinking that it should exit the sleep modes.
Is this a regression compared to previous firmware versions? I might need to just delay the accelerometer readings to let them stabilise a bit more if so.. 😅
@Ralim In terms of stability and functionality it is definitely a regression, at least for the TS80, because this worked flawlessly after @firebie hast solved 'my problem (#571)'. On the TS80P it did not work yet, so I think it is not correct to call it a regression.
The idea was to pre-fill movement data array with initial accelerometer readings:
datax[currentPointer] = (int32_t) tx;
datay[currentPointer] = (int32_t) ty;
dataz[currentPointer] = (int32_t) tz;
if (!accelInit) {
for (uint8_t i = currentPointer + 1; i < MOVFilter; i++) {
datax[i] = (int32_t) tx;
datay[i] = (int32_t) ty;
dataz[i] = (int32_t) tz;
}
accelInit = 1;
}
Wrong idea, checked wrong commit :-(
@Firebie I somehow knew, that i could count on you. 😁
Is there any chance, of checking, if your assumption is right? 😉 I would love to test compiled versions of firmwares, which were alternated in the way you suggested! (If only I knew, what exactly has to be changed!) 😩
Try this: TS80P_EN.hex.fix.1.zip
First of all:
But unfortunately this did not solve the problem. 😔
@paulfertser I know it is off topic, but since this is not crucial, i did not want to open a new issue on that. It is about the blinking frequency of the 'scroll bar': To me it seems somewhat hectic. 😅 Would this take much effort, to make it slower?
Try this: TS80P_EN.hex.fix.2.zip
No, this did not work either.
Now even the Sleeping...
on power up is gone.
Just to verify we are talking about the same:
I am testing, having the 'O' mode enabled.
Ver 3: TS80P_EN.hex.fix.3.zip
Nope, sorry sir, but still not there.
But it shows now the Sleeping...
again.
Just to be clear - it shows that it sleeps, but heats up to normal soldering temp?
Yep! And all that, without being moved!
Thank you again for working on the solution for this!
Unfortunately I have to go to bed now. 🥱 So testing will be resumed tomorrow, if you are still willing.
When it shows sleep, it has to show also current tip temp. Which tip temp it shows in your case?
@Firebie
Sorry, unfortunately I have to revise my last answer from yesterday. 😔
It clearly was to late. Despite having read you post twice, I misunderstood your question.
The correct answer is:
It shows Sleeping...
on being plugged in, but shortly after that, skips it and starts heating up (without the Sleeping...
indicator).
The tip temp is 26°C.
thanks & kind regards
Ver 4: TS80P_EN.hex.fix.4.zip
@Firebie
For O mode this works at first glance. Let me test it on different scenarios and then I will report back.
ps: Could you please provide the TS80 build as well?
Thank you very much.
Sorry I celebrated to early. 😔 Connected to my computer 5V it worked, but for 12V PD it failed.
However at least S mode works now as intended. 👍
Ver 5 (TS80) - delay 2 seconds: TS80_EN.hex.fix.5.zip
Refering to: TS80P_EN.hex.fix.4.zip
For S mode it only works, if:
current tip temp
is greater than sleep temp
or if
current tip temp
is much smaller than sleep temp
.
For sleep modes (stayOff - O mode) we have next code:
currentTempTargetDegC =
stayOff ?
0 :
min(systemSettings.SleepTemp,
systemSettings.SolderingTemp);
Sorry, I do not really know, what I am supposed to do with this information.
So I propose, to let me test this (V5) on the TS80P as well.
Ralim was right, we need a delay before we start reading data from accelerometer. In V5 it is 2 seconds. V6 - no changes from orinal code (origin/master) except delay for 2 seconds: TS80_EN.hex.fix.6.zip TS80P_EN.hex.fix.6.zip
The only thing I noticed while Sleeping...
is active, the iron does delay the negotiation for 12V as well, because it does that a bit later than usual.
Power check added earlier (before 2 seconds delay): TS80P_EN.hex.fix.7.zip
May I ask for the TS80 build as well? 😊
Sorry for being undecided, but I think it is actually even better, to delay the heat up 'speed' (By delaying the power check.) even after the triggering of the accelerometer.
Because when you pick the 'S' mode you do not want to start soldering right away. So it would be better in terms of wear of the tip (That is why I prefer 'O' mode over 'S' mode.) and in terms of power draw (hence money).
It is about the blinking frequency of the 'scroll bar': To me it seems somewhat hectic. 😅 Would this take much effort to make it slower?
Not much effort but the code will get a bit more complicated and less maintainable IMHO. But that's not something for me to judge.
diff --git i/workspace/TS100/Core/Threads/MOVThread.cpp w/workspace/TS100/Core/Threads/MOVThread.cpp
index 4ef12c21..355af584 100644
--- i/workspace/TS100/Core/Threads/MOVThread.cpp
+++ w/workspace/TS100/Core/Threads/MOVThread.cpp
@@ -45,6 +45,12 @@ void startMOVTask(void const *argument __unused) {
postRToSInit();
OLED::setRotation(systemSettings.OrientationMode & 1);
+ if ((PCBVersion == 1
+ || PCBVersion == 2)
+ && (systemSettings.autoStartMode == 2
+ || systemSettings.autoStartMode == 3))
+ osDelay(2000);
lastMovementTime = 0;
int16_t datax[MOVFilter] = { 0 };
int16_t datay[MOVFilter] = { 0 };
@Firebie
@paulfertser
But that's not something for me to judge.
Neither do I want to arrogate to be able to do so. But, if no one minds, I would like to have it blink slower. So, I am officially making a request for this to be implemented. 😁 Unless somebody has a reason for this not being done.
Since this is solved, I am closing this issue.
Change for delay for accelerometer has to be review/merged by Ralim first.
Yes, I am aware of this. 😊 And I am confidently looking forward to this being done. Are you going to make a PR for this, or is this not necessary?
Ralim is invited here to review the changes, if they are ok, I will create PR.
Thank you all, @Firebie solved this before I even got back around to looking into this after work 😅 @discip If you need, you can easily use the artefacts that are generated from the merge for other irons should you need to. https://github.com/Ralim/ts100/actions
@Ralim Thank you. @Firebie upgraded my knowledge regarding this topic, after having encountered accelerometer issues last time.
This is a [Bug Report]
I have
/Documentation
What is the current behavior? If
Auto start
is set to either S or O, the iron starts to heat up, without being moved.What is the expected behavior? If
Auto start
is set to either S or O, the iron should start heating up only, if it gets moved.Is the issue reproducible. Yes
Soldering settings
and setAuto start
to either S or O.What is the motivation / use case for changing the behavior? To help, making the iron function as it was intended to.
Additional information
In the
info menu
(holding B in idle screen), I read the output ofMove
and to me it seemed suspicious (as if time and movement were interlinked), because if the iron is moved the value increases slightly. But when the iron is left for a while and then moved again, the value increases drastically. The longer you wait the bigger is the increase.Thank you in advance kind regards