Page 1 of 1

Any Arduino wizards out there? / FSR bed leveling

Posted: Wed Apr 30, 2014 9:50 am
by bam
Heyo!

I'm working on something pretty awesome that I think you guys will get a kick out of. As you may know, we're hard at work on a new printer codenamed Azalea (http://devel.lulzbot.com/Easy_TAZ_Mini/Azalea); the goal is to produce TAZ quality parts with as little calibration and fiddling as possible.
IMG_1393.JPG
the adorable mini bed. It'll most likely be just over a 6" cubed build volume (155mm)
We're currently going down a couple of routs for the bed leveling, but my favorite by far is a force sensitive resistor (FSR) based system. It's clean, adds no additional moving parts and will completely get rid of the probe to nozzle offset calibration that plagues other bed leveling systems. Here's a setup pretty similar to what we're working on: http://www.youtube.com/watch?v=HcnhCNh2Ln4
IMG_1366.JPG
I sense a great disturbance in the force...
IMG_1394.JPG
the FSR's are hooked up in parallel, it gives pretty consistent readings regardless of where the bed is touched
We've got the mechanical components pretty well nailed down, and as always the development source is openly available: http://devel.lulzbot.com/Easy_TAZ_Mini/autolev/. In order to avoid mechanical calibration of the FSR sensitivity we're looking at using one of the extra thermistor ports to read the resistance of the FSR's, rather than the Z endstop pin.

On the firmware side, I'm getting tripped up trying to get the firmware to recognize a drop in the readings from thermistor port 3 as a Z-home indication (nozzle touching glass=homed in z). Anyone interested in helping out with the firmware tweaks? You'll definitely earn my eternal gratitude (and possibly some Lulzbot schwag :))

More updates to come
-bam

Re: Any Arduino wizards out there? / FSR bed leveling

Posted: Wed Apr 30, 2014 10:47 am
by piercet
Very interesting looking! Unfortunatly, the arduino side is where I'm weakest so I won't be of much help. Hopefully someone can help you get it working though!

Re: Any Arduino wizards out there? / FSR bed leveling

Posted: Wed Apr 30, 2014 12:33 pm
by bseishen
Super easy way of accomplishing this is with a little hardware. A simple comparator would just require an opamp, some resistors, and a potentiometer, possibly a couple caps to filter out some noise. With the comparator, the z endstop pin could be used.

How bad will heat affect the resistance? Will the readings tend to drift over time?

Re: Any Arduino wizards out there? / FSR bed leveling

Posted: Thu May 01, 2014 9:06 am
by bam
piercet wrote:Very interesting looking! Unfortunatly, the arduino side is where I'm weakest so I won't be of much help. Hopefully someone can help you get it working though!
Thanks man! It's going to be pretty sweet, hopefully something we can retrofit to a full size TAZ 8-)
bseishen wrote:Super easy way of accomplishing this is with a little hardware. A simple comparator would just require an opamp, some resistors, and a potentiometer, possibly a couple caps to filter out some noise. With the comparator, the z endstop pin could be used.

How bad will heat affect the resistance? Will the readings tend to drift over time?
We're looking into this, but want to see if we can accomplish it in the firmware without adding any more hardware. Also, from what I've seen, the actual readings form most FSR's aren't terribly consistent and do change with heat and age. I'm thinking that a firmware fix could be adaptive so that if the FSR's change over time (thermal changes, get lulzjuice spilled on them, etc) they'll still work without you needing to fiddle with the bed sensitivity knob.
IMG_1397.JPG
super early Azalea prototype. We're working on dropping the LCD in favor of a full debian system with 7" touchscreen
I think it'd be more reliable in the long temp to have a system that will take the average of 15 or so readings as a baseline as it starts to home or probe the bed, then register a set drop (30% seems attainable) as a Z-min limit. We'd need to chose a drop that's outside of the normal fluctuations of the fsr's as the bed moves, but small enough that we can reliably register a nozzle touch before the nozzle pushes the bed down too far. This shouldn't be too bad once we've got a starting point in the firmware :)

Re: Any Arduino wizards out there? / FSR bed leveling

Posted: Fri May 09, 2014 3:34 pm
by bam
Heyo

After a chat with the awesome people of sparkfun, we had our doubts about the longevity of the force sensitive resistors.

Luckily, we've begun work on a super elegant solution. We're replacing the bed fingers (little tabs that hold down the corners of the bed) with metal bits of a known thickness - shim washers in this case. We then wired the 5v side of the Z endstop to the nozzle and the ground to the bed.
IMG_1398.JPG
washers > limit switches
Check out the images and videos of the probing sequence at http://devel.lulzbot.com/Easy_TAZ_Mini/ ... Budaswitch

There's development firmware up as well if you're inclined to give it a try :)

More to come
-bam

Re: Any Arduino wizards out there? / FSR bed leveling

Posted: Fri May 09, 2014 3:38 pm
by gannon
I've seen this form of homing / leveling before. The issues come into play when your nozzle is covered in plastic mostly :)

Re: Any Arduino wizards out there? / FSR bed leveling

Posted: Fri May 09, 2014 4:45 pm
by jebba
gannon wrote:I've seen this form of homing / leveling before. The issues come into play when your nozzle is covered in plastic mostly :)
Ya, we're likely gonna add a wire brush or similar to clean the nozzle too. This will be nice in general, but needed here.