The LinkMeter Snapshot and YOU


 
Yeah, one person says something and I'll look into it with skepticism. Two people report the exact same behavior and I am almost positive there is a problem somewhere.

I'm going to keep looking at it and running tests with the HeaterMeter connected to my fridge (which has a 1.5 hour period cycle of high and low) and see I can walk in on it at some point with the damper not where it is supposed to be and go from there. I'll also use it this weekend on the grill on an actual cook and see how that goes.
 
I've done some testing trying to reproduce the issue where the servo damper doesn't make it to closed when the HM is at 0%...

I've been aided by the hard frost last night, which gave my RD3 quite a chill! What I see happening is when the HM puts the servo at rest it gets cold and stiff, and it moves slower. Sometimes it is not making it to closed before the HM powers down the servo, leaving the damper somewhere less than closed. I have found depending on the power supply, the servo, the damper, environmental factors such as cold temps, rain, snow etc... the servo may be moving at different speeds and sometimes when longer moves are required the HM is cutting power before the servo finds its position.... then the HM makes no further attempt to move the servo (at 0 or 100%), so if the move was incomplete your HM is DOA basically.

I think it important to make sure the HM is getting the servo where it needs to be under any condition, which it had done reliably in the previous servo motion scheme where the servo was always powered. I understand the chatter is annoying, but the power running through the servo also keeps it warm and moving swiftly in the winter, and you're probably not sitting next to it to hear the chatter during a sub zero cook! LOL

There are probably a lot of remedies for this issue, a couple possibilities off the top of my head are:

Add an option in the HM config to select whether the servo is always powered or moves and rests.

Make the servo move faster

Give the servo more time to move before it goes to rest

Make the servo power up and take position on a regular cycle, in which case the servo may take two cycles to close, but it will close...

I'm sure there are other options....

I know lots of you guys are blessed with living in sunny Florida or other places that never freeze over, but there are lots of us in places where we cook through brutal cold and it's tough on the fan, servo, damper etc to operate through all that. I cooked through winter with the roto damper over a 50ft CAT5 cable last year, a brutal record setting winter in the midwest, I make sure to use a beefy power supply and beyond that the RD did great even when it was frozen over solid with ice before I start the cook. It has been pretty hearty thus far. I fear this move and rest scheme for the servo is going to wreak havoc on my cooking this winter, so this is sort of a preemptive post hoping to get some change implemented to make the servo move with a bit more authority before the bad weather really comes...
 
It just doesn't even make sense! I mean that would mean normally it takes multiple seconds to move to position, which is a pretty terrible servo. It's not like we say "move to your current position plus 10", which I could see would accumulate error if there is something holding it back. What we say is move to 100, move to 110, move to 120, move to 130, move to 140, move to 140, move to 140, move to 140, move to 140, move to 140. If it's been told to go to 140 for a half a second, and it's still only halfway there, then something is seriously wrong. The servos are rated to move 60degree in 0.10sec, and 0C-50C. It just doesn't make any sense that it is traveling at like 5 degrees per 0.1sec.

Thanks for the report though, I am going to put one of mine in the freezer and see if I can replicate the issue.
 
It seems to me the HM gives up on the movement much faster than a couple seconds, and the servo motion has been slowed down quite a bit from the original snappy motion of the past, correct? I also think the holding current running through the servo does keep it warm a bit and makes it more eager to move in cold weather. Last year when leaving the RD out in the winter I noticed it would be frozen over if left unplugged, but would not freeze over if left plugged in and powered on (at that time the servo was staying powered and holding position). Not to say one should leave it outside and powered, but just that the current through the servo while holding position keeps it warm and ready to move. If I start a cook at 0F, and the pit has overshoot, the damper closes and turns off, it may be frozen when the HM tells it to move again, if it has been holding position at 0% it would less likely be frozen.... and the RD moves the servo nearly its full range of motion, so going from open to closed is a fair amount of movement for a cold stiff tired servo to make likkety split.

TBHWY, the Tower Pro MG90s might fit the description of a terrible servo... LOL The whole reason you are making it move and rest is because some of them chatter badly and that annoys people, and I have seen the quality all over the block from excellent to usable to DOA. Perhaps its time to look into a more reliable servo to start with. I just got a bad batch and two of them jammed up right off the bat just having the HM move them without anything attached. So here I sit thinking I have spares, spare garbage! LOL

Finally, the servo isn't all that powerful so if it is fighting mass, gravity or drag it may move slower. So rigs that may have an off center fan they are rotating or any amount of weight or friction surface may experience slower servo movement or slipping positions. Or if running on a weak power supply or along side a large fan it may move slower too...

... and again, from a practical standpoint, the servo not moving to closed position for whatever reason is a rather serious failure, as the pit temp will likely continue to rise and the HM has lost control of the pit at that point.

From a programming point of view, how difficult is it to add a setting to select between servo always powered mode and move and rest mode? The funny thing is this servo I have here is moving slow, but under the old scheme it never chattered a bit and was always held firmly in the position it was supposed to be in.
 
Last edited:
As an experiment I held my damper so it cant move and placed it to my ear so I could hear the servo humm while it is powered and restricted from movement... by the time I count "one one-thousand" the humm is gone. So its seems the servo is energized for about 1 sec and turns off. It also seems to take the servo about a 1 sec to move from fully open to fully closed in my observation, using lid mode to toggle open/closed in one step. I just checked several Tower Pro MG90s servo's new and old, they all take a bit to go from one extreme to the other sitting loose on the table. Granted, they all make it from open the closed, but add freezing cold and some weight and resistance and sometimes it doesn't make it there in 1 second.
I just flashed the latest snapshot AVR firmware to be sure before I did the testing.
Is that about what you expect to be going on with the servo motion?
 
I just want to add that it is not always closing for me also with the latest snapshot. Twice during last cook (yesterday) the servo didn't go all the way closed when I selected lid open on heatermeter. The timing may have been a factor as the damper was almost full open when I selected lid open to tend the food.
 
The servos are rated to move 60degree in 0.10sec, and 0C-50C. It just doesn't make any sense that it is traveling at like 5 degrees per 0.1sec.

That is a dream rating from my experience, at least the way the HM is moving the servo at present. I have a bag of brand new Tower Pro MG90's here, tested 3 of them and they do not move that fast. I have several older Tower Pro MG90's that are slightly different (label text different, shaft size different, body size slightly different) and none of them move that fast either. This is sitting loose on the table not moving anything (not connected to a damper or anything else).

IDK if it is the way the HM is telling it to move that is restricting the speed, 'cause I recall back in the day the servo did seem to move much faster? Originally the servo whipped into position like speed racer, but it was very hyperactive. Then you made some changes that made the servo move slower which resulted in less jitter. Now it seems we have the servo moving slower and the HM only powering it for about 1 second.

All I know is if I set the SPD range for nearly 180 degrees rotation, and use lid mode to toggle open/closed, it takes about 1 sec for the servo to move from one extreme to the other while completely unencumbered. The HM only keeps the servo powered for about 1 sec, so that seems to be a potential problem. If I twist the servo to one extreme and then have the HM move it to the other extreme it doesn't make it there before the HM puts the servo to rest. So I think something is wrong with your assumption about how fast the servo is actually moving. My guesstimation would be the servo is actually moving about 60 degrees in 0.3 seconds, about 1/3 the speed you referenced. At least the ones I am holding here...
 
Last edited:
I think you might be forgetting that we don't snap the servo right to position, it is moved into position, so the angular velocity you're measuring is what is programmed in the source code. It moves the servo at a variable speed and changes position in 0.7 seconds then holds that position an additional 0.3 seconds before disabling. Even if you held onto the servo so it can't move for the first 0.6 seconds, when you let go it is going to move at the servo's maximum speed to where it is supposed to be, which would be at 96% of the distance it is supposed to travel (due to the accelerate/decelerate curve). Any resistance in the mechanism is countered by the way it is told where it should be, which is an absolute position, not a relative movement step.

I did some experimentation with my Offset Rotary Damper, RD3, and just a regular bare servo, which I have had in the freezer for 5 hours. It takes between 0.32-0.38 seconds for any of these servos to rotate from the 2000us position to the 1000us position at full speed. Surprisingly, it takes 0.28-0.30 seconds for it to move from the 1000us to 2000us position so it is especially interesting the speed is not symmetrical. However, in every instance it moved to within a margin of error, which is the width of a pencil line. If I apply a decent amount of friction it gets to about 90-95% of the way there, so it sounds like maybe you just have high friction in your dampers?

Either way, I'll be changing how it works again (to keep the servo energized at least 1.3 seconds in final position) as soon as I get time to work it out without making the code too messy and bloated.
 
My servos were sitting on the table, not installed in any damper, brand new servos. Maybe you just got a fast one, and frankly even the numbers you state above are too close for comfort IMHO. My RD3 needs to move from around 700-2100 for full range, so it also has to move further than in your experiment by about what, another 40%? The servo's I have here will BARELY make the move in the amount of time it is powered, leaving absolute no room for error. And, again, if the damper doesn't close its not just an annoyance, the HM actually becomes pretty much useless at that point.
Any chance that you can add an option to select whether the servo stays energized or moves and rests? Because to be fully honest with you, I think making the servo move and rest to prevent chatter is a rather trivial pursuit to fix an annoyance that could actually hurt the performance of the HM. Seems silly to hurt function to fix an annoyance that may or may not occur depending on your servo? This servo I have here may move slow, but it never chattered under the old always powered scheme.
 
It can move 1000us in the slow direction in 0.38s worst case in my tests which would be 0.532s for your range. That means the servo stays energized with almost a double margin of time to get there, assuming it has to go the full range. The reason it looks like it is "barely making it there" currently is because it is programmed to take 0.7s; I think that's making you think that if it were slowed at any point along the way that now it won't make it. That's not the case though because the servo speed is dependent on how far away from where it needs to be. If the position starts to fall behind, then it actually applies more torque and speeds up to catch up, up to the maximum speed of ~2630us/s.

I'm going to change it to be active longer, because in practice it isn't working for you and others, but your reasoning as to why is incorrect due to recording movement timings in a system where the speed is regulated to travel the distance in a fixed time. I'm trying to figure out what actually causes the problem so maybe it can be coded for.
 
Not knowing exactly what is going on under the hood with the servo motion I have to base my conclusion just on what I see the servo actually doing. What I see is the servo moving slow and resting quickly. I also see if I make the servo move near it's full range of motion it does not make it to from that position back down to the 700us position before the servo goes to rest. From what you said above I would think that would not be the case, but that is what I have seen, so reality VS theory and specs on what is happening with the servo doesn't really jive. We're bumping up against the common divide between the Engineer and the Technician here. The engineer quotes specs, does calculations, concludes things are well within the margin of error. The technician is in the field trying to make things work and is reporting back that theory isn't translating to reality. I've been on both sides of that fence, having a been through electronics tech school and engineering school. I always fall firmly on the side of what works in reality rather than in theory.
 
Have you checked your voltage, the only explanation is your 5 volts might be sagging. Servos can draw a lot of current stall current is 430ma for a mg90 that is a lot of current plus a fan you could be experiencing brown outs. Servo speed is dependent on supply voltage, lower volts the slower they go.
 
I tried 4 power supplies from 2A to 4A... Several servos and two HM's... But your point is actually a point I tried to make earlier. People may have slight brown out conditions and the servo may slow and fail to close completely. So this move and rest scheme increases the risk of failure on marginal systems, or systems with larger than usual blowers, or perhaps a wet or cold blower drawing more current than usual. I just see lots of scenarios where this could cause problems.

All tower pro servos just aren't created equal, I think that is the bottom line here, and the point I have been trying to make. We're talking about whether a cheapo servo does what it needs to do with a half a second to spare, I think expecting them all to perform within that margin is not realistic. That is just considering the servo itself, add to that the physical aspects of what people might be asking the servo to do... rotate a valve, move a lever, etc, out in the cold rain and snow, and the likelihood of error increases a bunch more. In this case the error is severe, the HM has completely lost control of the pit if that valve doesn't close..... because the HM will not try to close it again unless the temp dips below the setpoint, which is unlikely having left the damper open.
 
Last edited:
New snapshot 20151026 up with another new servo movement mechanism! The new mechanism moves the servo at a constant speed of 15us per every pulse duration and it takes as long as it takes to get there. For example if you have your servo set to 750 - 2300, it will take the servo 103.33 pulses to get there. 103 moves will be 15us, the last will be a 10us move, and there are 50 periods per second so it will take 2.08s to travel. Once the servo arrives at its destination, it will always stay energized there for 2 full seconds (100 periods) before shutting down, regardless of distance traveled. If there is a change in destination the servo will slew toward that target rather than the initial target and the travel time changes accordingly.

There's still the holdoff code so moves smaller than 100us are held for up to 10 seconds from the previous set command. So in our above example where it took 2.08 seconds to move + 2 seconds of energized time, a small move would hold off the remaining 5.92 seconds. If the previous move completed in one step, then the hold off would be closer to 8 seconds.

Let me know how this works, and how the speed feels (too fast, too slow, just right?). If your servo STILL isn't going to the fully closed position every time, I'd recommend listening and watching and seeing if it moves to the proper position then pops back after the servo de-energizes. You can also try extending your servo period a little extra to counteract it.
 
I am just uploaded the new AVR in the middle of this cook just after 2200.. Not currently paying any attention to what the servo is doing but seems to be working fine!

dqdEiH4.png
 

 

Back
Top