Bedleveling for a industrial robot unsing BLTouch on a Marlin board

Hi,

for an university projekt I have to make a bedleveling system on an 5-axis-industrial-robot. The system consists of an industrial robot on which the printbed is attached. The robot is placed inside a closed chamber. On the celing of the chamber is a BLTouch mounted.
Unfortnunally I wont be able to read the x,y,z values from the robot controll. I can only read or write digital signals in order to communicate with the robot.

The plan now is to creat a little program, which will measure the time between the robot starts moving and the board actually touching the BLTouch. The robot will always go the same path for initializing. If this time is consistent, I can assume that the distance will also be the same.

Currently I am running a MKS-Board with Marlin and the BLTouch connected to it.

My plan is to write a program that can read and write digital signals from the raspberry and is also able to start a timer and read the signal from the BLTouch.

Unfortnally I am completly new to 3D-printing and have never used octoprint or marlin before.

So is there any way I can write my own program on the raspberry ?

Thanks a lot

Martin

What is your goal?
What brand of robot? If this is ABB, then RAPID will allow you to get the X,Y, & Z.
If you can't get the x,y,z then I don't see how this would be useful in anyway. You can not rely on time, since brakes degrade over time you have to use position and you probably should have absolute positioning.
You should have an interface such as DeviceNet, ProfiBus, Ethernet that most robot controllers can communicate over.
I personally think a five axes machine is overkill in this case. Is your plan to use the robot for all printing movement?
I would have to think about how you would figure the TCP of the robot since the actual controlling end would be the hotend that is not on the robot and the point of the contact on the hotbed would constantly be changing. I personally think having the hotend on the robot is the better way to go then the heatbed.
I'm not trying to dismiss you, I'm actually trying to understand what you are trying to accomplish.
Do you have the ability to have tool changes on the robot for different End Effectors (EE)? Somthing along the lines of an ATI tool changer. Having the touch inverted and as a tool would be more practical, but then why not use a Renishaw probe.

What I/O communication do you have with the robot controller right now?

The goal is to determen how leveld the bed in the z-axis is and to determen if there is any offset in it. The bed will be fixed as an endeffector to the robot and the extruder will always stay fixed at the celing. We want to check if for multiple atempts the offset will alwas be the same. Unfortunally since we have a Siemens based robot we wont be able to get the actual x,y,z values from the robot. Since we dont have access to the actuall position of the robot and can only communicate via digital inputs and outputs to the robot, time measurment is the only real option we have. The plan is to let the robot move a specific pattern where it will touch the BLTouch at predefined times. The board will then measure the time between each touch and will compare these times. I know that degrading brakes and other factors will have an impact but we want to see how much of an impatct this has later.

For that purpose I only need a way to write my one code that will let me have the BLTouch as an input and a digital Pin as an Output. That way I can start a timer when the BLTouch is triggerd and stop it when it will be touched again. I dont know if this is possibel with G-Code ? Or if I have to write my own program in Python/C++ ?

The robot is supposed to be used for all printing movements which can be quiet nice since you need way less cura support. So fare the results of the first prints were actually pretty good.

Is it a Siemens 840D controller?
Siemens controllers are typically way overpowered for the tasks they are given.
I currently work with a few a Siemens systems and use probes for the positioning.

So currently you would have the robot move up in Z to touch the heatbed to the probe at a slow rate and wait for an input (to robot) from the BLtouch to stop motion on 'impact'. Then lower Z, move in X or Y then back up in Z (rinse and repeat). This would give you a map of the bed. I assume the bed is oversized so you don't have to 'find' the ends of the bed each time?

You are setting the robot up at the 'estimated' same difference in Z at the various X/Y positions from the probe. Since you have to rely on the output from the BLtouch to stop up motion, I would continue to use the robot controller to figure the time since you would have to use that information to control robot movement unless you have some other adjustments on the heatbed itself.

I would be possible in G code but the underlying system would have to enable it which would require a module written to process it. Siemens tend to read a line ahead and you have to be careful with specific timing issues unless you specify it to process only one rung at a time.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.