Improving FarmBot accuracy

Has anyone achieved sustained accuracy to the millimeter with their Farmbot? Could you share any tips on how you did this? Is it possible?

I am having trouble picking up seeds from the small holes in the seed tray. I am using encoders to home and calibrate.

I have set up my sequences and they work the first time but each subsequent run the seeder moves out 1-5mm. The x-axis is the culprit and I’m assuming that has something to do with the 3 meter longer belt.

I don’t want to have to recalibrate between each sequence run if possible.

1 Like

Could you please elaborate in more detail? After which exact positioning commands does what happen?

Thank you for replying Klimbim, hope my description below sheds more light.

I am testing for accuracy, the y-axis and z-axis are correct every single test, I only have issues with the x-axis.

  1. I home x,y,z axis using encoders.

  2. Then run the following 3 sequences repeatably.

2.1) Get Seed Injector From Tool Tray: this always works as the magnets will move the tool to the universal tool mount even if the x-axis is a couple of mm out. Co-ordinates are:
20,466,400 - lock onto seed injector in tool tray
80,466,400 - move seed injector out of tool tray
80,466,300 - lift up seed injector

2.2) Pick Up Seed From A1: this picks up a seed from A1 in the seed tray and it is where I am having x-axis accuracy problems each time I re-run it moves 1-2 mm out and this can accumulate over time. I need the farmbot to be accurate to put the seed injector into the A1 hole. The x-axis value of 21 goes inaccurate on each subsequent run. Co-ordinates are:
21,385,317 - position over hole
21,385,330 - go into hole and turn vacum pump on
21,385,280 - lift seed out of hole

2.3) Return Seed Injector To Tool Tray

  1. Using the control panel I then send the farmbot to a random place and then re-run 2.1, 2.2, 2.3 and as I’ve said above the x-axis accuracy gets worse each time.

So are there any tips I can try to improve the x-axis accuracy?

I tried but still have issue:

  1. Making sure both belt holders on the x-axis were in the same place so the motors don’t twist the gantry when the hit them during homing as they was 1cms difference
  2. Changing homing to the tool bay end so the farmbot doesn’t have to travel as far to pick up seeds, it was at the other end originally

Note I tried to install end stops but they caused issues with the arduino so I thought I’d try encoders first. It would be great if Farmbot or a member of the community published a concise how to guide for end stops.

1 Like

Hey @whitecaps

We’re just discussing a similar problem in another thread See here.

I assume you have the same or at least similar problems:

  • Bot runs the first sequence and hits the right hole. Now when the sequence is done you could potentially see that the bot is not at the real position that’s shown on the controls tab (maybe a few millimeters off from the home position). So when you start the next or the same sequence again, the needle won’t or just barely hits the hole that he should go to (example A1).

In this case it seems that your x-axis drives too far (mostly on long distances) and your encoder does not recognize that. There are a few possible reasons for missing steps. Checking hardware settings like I wrote in the other thread would be a thing to start with. If you have questions or another idea, feel free to ask or tell us here :slight_smile:.

Running a homing sequence after every seeding sequence would make a temporary fix, but should not be our goal I guess. Installing endstops would not make any difference in this case, if your homing position is always the exact same. If you add endstops you won’t get any improvements because you can either home via encoder or endstop. Basically the encoders cover the functions of endstops.

Please let us know if you still want to add endstops and need guidance with that. :slight_smile:

2 Likes

Thanks Ascend I read the thread and will run the sequence and check the motor coordinates, scaled encoder. And see whats, what. I’ll try the find home sequence between seeding but I agree it’s a bit of a hack.

I agree that end stops won’t help if steps are being missed in normal operation. They may help however to ensure the home position is more accurate each time you calibrate rather than crashing into the belt holders and relying on the encoders in order to home, I notice the motors sound like they spin a bit when that happens.

I would like to try end stops out, I have bought some after starting this thread End-stops vs Encoders. I will continue the conversation on how to install end stops on that thread, it’s a better place to put that info.

1 Like

You will never get a high quality, repeatable absolute home position without a high quality end-stop of some type. I like optical and if not optical, go with all effect sensors.

Given that the tools are also at an “absolute position”, having an absolute position for home is necessary so that the relative position between the tool trays and home can be establish with little to no error.

The encoders should then be used for position determination only. Stall detection should be done using both current draw on the motor controllers and encoder readings. Unfortunately, the Arduino (and likely farmdruino) are know to not be up to the task. Unless and until you replace the motor control sub-system you will have issues with positional accuracy.

IMHO, the “hack” of constantly re-homing is mandatory for the current system. End-stops give you a little repeatability improvement and should be part of every farmbot.

3 Likes

Thanks for clarifying @bgmoon I am now getting accuracy if I re-home after each seed placement. So I will now try and get the end stops working and see if that makes a difference.

I added end stops which was a bit of a mission as there’s little ocumentation, see Getting end stops working thanks @bgmoon, @Ascend and @Gabriel. If I had more time I’d write an FAQ on this topic but hope the forum posts help others.

I am still seeing gradual and increasing inaccurate movement on the x axis and can’t use encoders at all for positioning or the end stops won’t work.

I was just wondering if farmbot planned any changes to the software or hardware to increase repeatable to the mm accuracy and if so what is the possible ETA?

You should re-read the last two paragraphs of my last post on the topic:

The encoders should then be used for position determination only. Stall detection should be done using both current draw on the motor controllers and encoder readings. Unfortunately, the Arduino (and likely farmdruino) are know to not be up to the task. Unless and until you replace the motor control sub-system you will have issues with positional accuracy.

IMHO, the “hack” of constantly re-homing is mandatory for the current system. End-stops give you a little repeatability improvement and should be part of every farmbot.

1 Like