Page 1 of 1

Pseudo-closed-loop positioning for the Rostock MAX with FSRs

Posted: Fri Dec 12, 2014 4:54 am
by 626Pilot
I've been working on a heuristic calibration routine that uses parallel simulated annealing (parallel because each variable type can have its own annealing temperature) to figure out the right settings for arm length, inidvidual tower radii (the average of which is the delta radius), endstops, tower angles, and build surface normal. It works by Z-probing the print surface in a grid, and then "annealing" the printer's configuration until it comes up with the settings that would most likely produce the observed measurements. It works pretty well so far, but a Z probe can only tell you Z. If I could get X and Y as well, the annealing would be able to work on all three dimensions rather than just one. Correcting errors in Z is likely to improve X and Y as well (since no axis is independent on a delta printer), but if I had ALL three axes? That would be better still.

I was talking to someone in the Z=0 bug thread and he mentioned that his "Z probe" is three force-sensitive resistors (FSRs) under the glass, and tied in parallel to the Z_min pin. Wherever the hot end touches the glass, the three FSRs generate enough signal that it always triggers perfectly. He ran my probe calibration routine and found that his repeatability had a mu=0 and sigma=0. (That's statistics-speak for "utterly perfect" - no variation at all, it always triggers at precisely the same elevation.) This suggests to me that the FSRs he is using are highly accurate, at least for the way he's using them. Perhaps, then, FSRs can be used in a more elaborate way.

It occurred to me that IF:
  • You have three FSRs - one near X, one near Y, and one near Z, in precisely known locations (this would require some change in how the heated bed and glass are mounted)
  • Your controller has x_min, y_min, and z_min pins available to connect each FSR independently (they have to be ANALOG)
  • The FSRs are hardy enough to withstand routine temperature cyclings from 0C to 120C
  • The FSRs have enough resolution to discriminate the force and turn it into a usable signal, not just on or off, but on a gradient
...then, you have the beginnings of a CLOSED-LOOP calibration system! It would not be closed-loop when the printer is actually printing, but it would during calibration, which is when it matters the most. (Why? Because the steppers on these things would have to lose steps to require closed-loop during printing - and they don't.) In fact, this would be better than using servomotors with encoders, because that only tells you where each carriage is. The carriage position by itself isn't enough to figure out tower rotations and arm lengths and all that.

If the hot end touches the glass at (0, 100), near the Z tower, the Z tower's FSR should register more force than X's or Y's FSRs. If the hot end touches the glass at (0, 0), all three should register the same force. There should be some mathematical formula that would triangulate the true (x, y) based on the differences in force between the three FSRs.

Are there FSRs that can withstand repeated temp cycling up to 120C? Do they have enough accuracy to produce a signal we can use for triangulation?

If such a setup is possible using FSRs that are being produced today, we would get precise endstop adjustments, and that would take a considerable amount of slack out of the calibration. If you adjust the endstops, you also have to adjust the delta radius, and if you're messing with the tower radii and rotations, those have to be redone as well. However, if the endstops are known concretely, it's one less variable that could be throwing everything off. I've found that the annealing algorithm can be tripped up if you set it to calibrate two kinds of variable that produce similar error when they are mis-calibrated, especially if you turn on all the available calibration types at the same time. (Which you really want to do, because they work better when they're converged simultaneously.)

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 7:33 am
by critical_limit

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 1:12 pm
by bdjohns1
Those are the standard FSRs everyone is using. They're not really compatible with heated beds.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 1:17 pm
by Nylocke
I have my FSRs under my bed, they work fine. Ive printed for hours with them under a bed at 95C. I have a mount I made for them so they mount in place of the nylon spacers.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 4:26 pm
by Generic Default
What if the FSRs are in contact with an actively cooled plate under the hot bed that is insulated from the hot bed? I was thinking about doing this with either FSRs or regular limit switches on springs. I'd much rather touch off on the plate than at the top of the machine, especially since thermal expansion of the aluminum T slots can make big differences in calibration when the T slots get longer.

I've been trying to find a zeroing solution that works in a huge heated build chamber.

For X and Y (horizontal) you can have the force sensors on the side of the bed, then touch them off like a CNC lathe would do with tools. With that method, you can not only calibrate X, Y, Z, radius, arm length, nonlinearity errors, ect, but you can also calibrate the tool geometry (not that useful for plain nozzles only).

As always, we need lots of inputs on the electronic control board.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 7:01 pm
by jdurand
You could run insulated (thermal) posts to the bottom of plate and down to the resistors. Maybe even mount the resistors on the bottom of the wood (under the heater).

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 7:09 pm
by 626Pilot
Nylocke wrote:I have my FSRs under my bed, they work fine. Ive printed for hours with them under a bed at 95C. I have a mount I made for them so they mount in place of the nylon spacers.
Details?

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Fri Dec 12, 2014 8:56 pm
by Nylocke
They are a lot like rpress's mount in aluminum, but I made mine to be printed. The mounts should be in ABS, the puck should be in PLA. The upper mount is designed to have one of the tee nuts used with the wood kit keeping the screw captive.
Example
Example
If you want .ipt, STEP, or F3D files let me know. I can design the upper part of the mount to be threaded directly into, or whatever really. Installation is pretty obvious, but I can take pictures if needed.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sat Dec 13, 2014 12:40 am
by 626Pilot
I don't quite get what you do with them. Can you show what they look like mounted?

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sat Dec 13, 2014 1:14 am
by Nylocke
Yeah sure, but I can't get super indepth with everything, I have a print going atm. Basically those 6 small white Nylon(?) roller bushings used as spacers under the bed are replaced with 3 of these. Sorry for the sorta poor lighting. I have them positioned under the Melamine heat insulator in the same positions at the Mini Kossel has them I think.
Put in place
Put in place
Side view
Side view
This last one is an attempt to show how the FSR wiring comes out the cutaway part of the lower mount. Its back in the depths of the bed, so its hard to show properly.
Wiring hole
Wiring hole
Basically it all forms a sandwich, the lower part of the mount gets mounted to the base with countersunk #4 screws, the FSR goes on top of that, then the PLA puck goes on top of the FSR (to even out the less than flat surface of the upper part of the mount, it won't work without the puck). Then the upper part of the FSR mount goes on top with one of the Tee Nuts used to mount the bed on the base and the belt clamps on the cheapskates embedded into the bottom (make sure its either flush or slightly deeper set than the bottom of the upper mount). Then the whole rest of the bed assembly goes on top of that with one of the countersunk #4 screws holding the bed to the upper mount (you may have to trim the screw so it doesn't extend too far).

I hope that clears things up a bit. I was thinking of doing a guide of sorts but there aren't really that many steps. I might create a post in my build thread for installing these that goes into more detail though..

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sun Aug 02, 2015 2:27 am
by DGBK
Nylocke wrote:They are a lot like rpress's mount in aluminum, but I made mine to be printed. The mounts should be in ABS, the puck should be in PLA. The upper mount is designed to have one of the tee nuts used with the wood kit keeping the screw captive.
2014-11-21 22.17.29.jpg
If you want .ipt, STEP, or F3D files let me know. I can design the upper part of the mount to be threaded directly into, or whatever really. Installation is pretty obvious, but I can take pictures if needed.
I'm looking into possibly getting some FSRs for my ring. I have a question. Why do the pucks need to be made from PLA? Is there something wrong with using ABS?

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sun Aug 02, 2015 10:54 am
by ZakRabbit
DGBK wrote:
Nylocke wrote:They are a lot like rpress's mount in aluminum, but I made mine to be printed. The mounts should be in ABS, the puck should be in PLA. The upper mount is designed to have one of the tee nuts used with the wood kit keeping the screw captive.
2014-11-21 22.17.29.jpg
If you want .ipt, STEP, or F3D files let me know. I can design the upper part of the mount to be threaded directly into, or whatever really. Installation is pretty obvious, but I can take pictures if needed.
I'm looking into possibly getting some FSRs for my ring. I have a question. Why do the pucks need to be made from PLA? Is there something wrong with using ABS?
If you get the kit from Ultibot, it comes with pucks. They're rubber, I'm guessing you want something a little softer to do the actuation to keep them from wearing.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sun Aug 02, 2015 5:02 pm
by Renha
Guys, sorry for offtopic, but what do you think about moving FSRs from heatbed platform to the effector?

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sun Aug 02, 2015 6:15 pm
by ZakRabbit
Renha wrote:Guys, sorry for offtopic, but what do you think about moving FSRs from heatbed platform to the effector?
Something I've thought about, but how to mount them so that the hot end is solid enough to print with yet will allow the FSR's to act as the switch?

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sun Aug 02, 2015 10:19 pm
by DGBK
ZakRabbit wrote:If you get the kit from Ultibot, it comes with pucks. They're rubber, I'm guessing you want something a little softer to do the actuation to keep them from wearing.
Are the pucks the "6 High temperature silicon pads"? I'll probably order the FSRs soon. I'm so tired of terrible calibration on this thing. I'm hoping this will help.

Thanks

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Sun Aug 02, 2015 10:38 pm
by ZakRabbit
DGBK wrote:
ZakRabbit wrote:If you get the kit from Ultibot, it comes with pucks. They're rubber, I'm guessing you want something a little softer to do the actuation to keep them from wearing.
Are the pucks the "6 High temperature silicon pads"? I'll probably order the FSRs soon. I'm so tired of terrible calibration on this thing. I'm hoping this will help.

Thanks
They look to be about 12mm Diameter X 1mm thick, they are silicone adhesive, and there are 6 of them.
Edit: there are three at about 1mm and 3 at about 2mm thick, 6 total.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Mon Aug 03, 2015 7:58 am
by Jimustanguitar
Nylocke wrote:Yeah sure, but I can't get super indepth with everything, I have a print going atm. Basically those 6 small white Nylon(?) roller bushings used as spacers under the bed are replaced with 3 of these. Sorry for the sorta poor lighting. I have them positioned under the Melamine heat insulator in the same positions at the Mini Kossel has them I think.
So in this arrangement, are any of the screws going through the whole assembly, or is the bed just floating on top of the base?

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Mon Aug 03, 2015 5:44 pm
by ZakRabbit
Jimustanguitar wrote:
Nylocke wrote:Yeah sure, but I can't get super indepth with everything, I have a print going atm. Basically those 6 small white Nylon(?) roller bushings used as spacers under the bed are replaced with 3 of these. Sorry for the sorta poor lighting. I have them positioned under the Melamine heat insulator in the same positions at the Mini Kossel has them I think.
So in this arrangement, are any of the screws going through the whole assembly, or is the bed just floating on top of the base?
I haven't seen any FSR's with a hole in the middle, I assumed we'd need to have a set of three two piece "risers" where the upper part were a slip fit into the lower part.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Tue Aug 04, 2015 11:14 pm
by DGBK
I think Jim had the same question about this setup that I do/did. I always assumed that there were 3 out of the 6 screws that were still holding the heated bed to the Rostock frame, but it appears the whole bed plus snowflake is simply resting on the 3 FSRs. Is this correct?

It makes more sense to me to have them setup this way for proper actuation. I just always assumed we needed the other 3 screws going all the way through the frame for stability.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Tue Aug 04, 2015 11:52 pm
by ZakRabbit
DGBK wrote:I think Jim had the same question about this setup that I do/did. I always assumed that there were 3 out of the 6 screws that were still holding the heated bed to the Rostock frame, but it appears the whole bed plus snowflake is simply resting on the 3 FSRs. Is this correct?

It makes more sense to me to have them setup this way for proper actuation. I just always assumed we needed the other 3 screws going all the way through the frame for stability.
I can't see how that would be possible without causing interference with the FSR reading. That's why they're mounted at the bottom of a "cup:" the close fit of a post coming from beneath the bed is what provides the stability. 3 points are the most stable mount possible.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Wed Aug 05, 2015 5:04 am
by forrie
ZakRabbit wrote: If you get the kit from Ultibot, it comes with pucks. They're rubber, I'm guessing you want something a little softer to do the actuation to keep them from wearing.
I used the Ultimo pucks in Nylocke's design no worries. I've gotten pretty much identical results using this fsr setup (and McHackney's) compared with limit switches using pilots smoothie firmware. The disadvantage of the limit switches is the repeatability goes haywire when you heat the bed. The disadvantage of the fsr is that you need perfect buttery smooth movement in your setup to trigger the fsrs equally at all points, the advantage is the heat doesn't screw up repeatability. I had to vapor Acetone treat my fsr setup before I got it nice and smooth. I think an aluminum setup would be best.

Re: Pseudo-closed-loop positioning for the Rostock MAX with

Posted: Thu Aug 06, 2015 10:44 pm
by 626Pilot
The heated bed has to be "floating" on the FSRs, or you won't be able to get a reading at all. I also have a Deltaprintr (from a startup a while back) and their acrylic build surface sits directly on top of FSRs. The FSRs have sticky pads to hold everything in place, another necessity.

I recommend heating the bed before you do any kind of calibration, unless you plan to never, ever use bed heat. Best to calibrate the system in its normal operating condition. You WILL get a worse calibration (especially if you use a Z-only correction scheme, like G31 A in my firmware) if you calibrate with the bed cold, and then heat it up to do actual printing. The glass expands, simple as that!