Tip Detection for Dispensing Nozzles

Does anyone else have a system that dispenses materials such as glue or epoxy? We have a CB3 that we’ve been using for a while and has a tip detection system and every once in a while we’ll have a small offset, maybe 3-5mm. We don’t know where the offset is coming from. We’ll start the robot up again the next day and the offset is gone, that sort of thing. Haven’t been able to track it down. However, I’m wondering if our tip detection has a bug or flaw in it.
The z axis is just a button in a known position that creates an offset for it. The X and Y use an optical sensor (E3T-SL13 2M | OMRON Industrial Automation), again in known positions, and slowly moves the tip across the front until it triggers, goes past it, and comes back across it until it triggers again to get the thickness of the tip and mathematically give you the center point of where the tip is.

X≔(X1+X2)/2
Y≔(Y1+Y2)/2
TCP0≔get_tcp_offset()
TCPX≔(X-DatumX)+TCP0[0]
TCPY≔(Y-DatumY)+TCP0[1]
TCPZ≔(Z-DatumZ)+TCP0[2]
TCPA≔p[TCPX,TCPY,TCPZ,0,0,0]
set_tcp(TCPA)

Any thoughts?

I cant see where you get “DatumX”, “X1”,“Y2”, “DatumY”, “Y1”,“Y2”, “DatumZ”, “Z”

but maybe this helps:
I had like a similar program where i would set my TCP in the seam and then teach the product by geting the actual tcp.

So after the teaching proces i would calculate my waypoints and set a 0.7 mm ofset to the weld seam. most of the time this was oke but somtimes after some test and changing the lead angle the ofset would be like 2.8 mm (hard to see but a huge differance.)

so it took me a while and after sometime i realized if i didn’t reteach my seam this occurs so what happend: after every cycle where i said “No reteaching TCP locations” but “calculate again TCP oriantation” (cause i changed my lead angle) it would be my old TCP was used and i would reofset the ofset again so that would be 1.4mm ofset.

so summarized:

After every calculation cycle my tcp offset would be like 0.7*N

short term solution is setting tcp ofset after one cycle to zero, long term was to save the original TCP and re-use te original TCP instead of the calculated TCP

I hope this helps you to track your problem

Corné

For clarification, the datum points are variables in the installation file that define where the button and the sensors are relative to the base. The X1 and X2 are the detected positions from the sensor in the X direction and the Y1 and Y2 are the detected positions in the Y direction. I didn’t include the entire code because it’s a bit long and didn’t seem relevant.