Placement errors

186 views
Skip to first unread message

jdlv

unread,
Feb 9, 2022, 4:05:06 PM2/9/22
to OpenPnP

Hi,

I did investigate a bit about placement errors.
I changed all the parts of an unused pcb  to 0402 resistors, sprayed some repositionable adhesive on the pcb to make it sticky and then ran the placement job. The pcb has fiducials at the 4 corners.
Next I moved the camera over some resistors , ideally the resistors should be centered to the camera view. This is not always the case!
I selected resistors to form rows and columns, 5 rows for the X axis and 3 columns for Y
The first plot shows the Y axis errors measured with the camera and the DRO in relative mode:


Same for X axis:


Accuracy is better at the center of the pcb, Y errors increase with the same sign. X errors are smaller and the sign change.
It should be noted that errors are more important close to the fiducials.
More data would be better but this is not a task for a human, the machine would be much faster and accurate.
That explains the placement errors I noticed with real job but I have no idea where they come from and how to reduced them. Camera are both calibrated with the new advanced calibration, X and Y axis uses linear encoder.

Attached is the measurement data. If someone comes with an idea...!

joël

placement error.xls

Wayne Black

unread,
Feb 9, 2022, 5:01:54 PM2/9/22
to ope...@googlegroups.com
Not really understanding the point of this. What is the intended placement coordinates? The DRO should read the same as the intended placment coordinate within range of the resolution of the axis. How are you measuring the error via the camera? If your noticing variance between axis wouldn't that point to repeatability of the asix mechanics? If you're 'measuring' more error near fiducials that are typically near the perimeter of a pcb it sounds like the sum of mechanical slop.

Just curious what you mean by this.


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/eeac411c-6083-3e36-12d2-02b13b65ae6f%40gmail.com.


--
Wayne Black
Owner
Black Box Embedded, LLC

tonyl...@gmail.com

unread,
Feb 9, 2022, 6:20:02 PM2/9/22
to OpenPnP
 I assume you just used your eye to position the camera over the placements to measure the error.  Were all the placements at the same angle?  Rotational errors need to be characterized as well since they play an important role when placing large parts.

BTW - I took you data and generated a quiver plot as I think it is easier to visualize the errors.  The tail of the vector is located at the expected position and points in the direction of the error but is scaled to be 250 times larger than the actual error (just so you can see the arrows):
placementErrorQuiverPlot.png
There seems to be something definitely going on in your Y direction - perhaps a cyclical error due to an eccentric pulley or something?

Tony

mark maker

unread,
Feb 10, 2022, 4:10:11 AM2/10/22
to ope...@googlegroups.com

The AffineTransformation obtained from the fiducials (inside the Job) is not applied when you manually position over the part. The DRO never shows compensated coordinates. So I wonder what you measured.

The only thing that you should judge is how well centered the parts are over the actual PCB footprints.  I guess that's hard to measure, though.

_Mark

--

fxframes

unread,
Feb 10, 2022, 5:30:54 AM2/10/22
to OpenPnP
> The AffineTransformation obtained from the fiducials (inside the Job) is not applied when you manually position over the part. The DRO never shows compensated coordinates. So I wonder what you measured.
The only thing that you should judge is how well centered the parts are over the actual PCB footprints. I guess that's hard to measure, though.

Interesting. So what would be the best procedure for small "corrections" to a given part's position?


mark maker

unread,
Feb 10, 2022, 5:32:34 AM2/10/22
to ope...@googlegroups.com

Don't understand what you mean.

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

jdlv

unread,
Feb 10, 2022, 7:36:02 AM2/10/22
to ope...@googlegroups.com

with my poor english easier to explain with pictures:

when the placement job is over I visually check the parts placement with "position the camera at placement location" from the Job pane.
The camera crosshair is at PCB footprint location where should the placed part center be too. I measured the offset

To measure I reset the DRO to make relative measurement and jog the camera to the actual part center :


then the DRO shows the offset:

joël

jdlv

unread,
Feb 10, 2022, 8:37:23 AM2/10/22
to ope...@googlegroups.com

Thank's, nice plot!

I rejected the too much misplaced parts from measurements, too much angle included.

X and Y axis uses linear encoders,  a lot of mechanical errors should be cancelled out.

Maybe I'm wrong, I think mechanical errors should be the same for the camera and the nozzle or that would mean their offset change with X Y positions.
Except for some added "noise" but plots doesn't only noise. Some trends are visible.

jdlv

unread,
Feb 10, 2022, 8:40:56 AM2/10/22
to ope...@googlegroups.com

Is it the same when using "position the camera at placements location" from the job pane?

joël

tonyl...@gmail.com

unread,
Feb 10, 2022, 9:26:40 AM2/10/22
to OpenPnP
I believe the Affine transform is applied when you use the "position the camera at placements location" from the placements pane.  If you then switch the DRO to relative mode and jog over the part, I think you should be able to measure the relative placement error.

Tony

mark maker

unread,
Feb 10, 2022, 11:34:10 AM2/10/22
to ope...@googlegroups.com

> I believe the Affine transform is applied when you use the "position the camera at placements location" from the placements pane.  If you then switch the DRO to relative mode and jog over the part, I think you should be able to measure the relative placement error.

Well, I guess you would measure the "relative part from where-fiducial-guided-AffineTransform-and-machine-positioning-thought-the-placement-should-be error". ;-)

The real benchmark would be to first jog to the part center, then click on the DRO to make it relative, then jog to the copper footprint center behind the part.

_Mark

fxframes

unread,
Feb 10, 2022, 12:33:15 PM2/10/22
to OpenPnP
> The real benchmark would be to first jog to the part center, then click on the DRO to make it relative, then jog to the copper footprint center behind the part.

This is what I was asking about above. Thanks.

tonyl...@gmail.com

unread,
Feb 10, 2022, 2:49:15 PM2/10/22
to OpenPnP
> The real benchmark would be to first jog to the part center, then click on the DRO to make it relative, then jog to the copper footprint center behind the part.

Yes - you're quite right, but it might be hard to judge where the center of the copper footprint is once the part is placed.  I'd suggest doing it in two phases, first do the fiducial check and use the "position the camera at placements location" button to move the camera to where the machine thinks the placement should be, switch the DRO to relative mode, and manually jog to the center of the copper footprint to see the error, repeat for all placements.  That would give you a feel for how well the Affine transform part is working without placing any parts - any cyclical or time dependent errors should show up there.  You may want to repeat it several times just to see if you get repeatable results.  Then you can actually run a job and measure the "where-fiducial-guided-AffineTransform-and-machine-positioning-thought-the-placement-should-be error" portion of the error.

Tony

Jan

unread,
Feb 10, 2022, 4:47:42 PM2/10/22
to ope...@googlegroups.com
On 10.02.2022 17:34, mark maker wrote:
[...]
> The real benchmark would be to first jog to the part center, then click
> on the DRO to make it relative, then jog to the copper footprint center
> behind the part.
>
Yesterday I had the impression, that the camera tilt angel makes this
measurement challenging: I've placed some larger fine-pitch TQPFs
(0.5mm) an tried to verify their placements using the camera. It looked
as if the chip was placed a little bit off. But using the microscope it
was clearly placed very well.

Jan

> _Mark
>
> Am 10.02.2022 um 15:26 schrieb tonyl...@gmail.com:
>> I believe the Affine transform _is_ applied when you use the "position
>> the camera at placements location" from the placements pane.  If you
>> then switch the DRO to relative mode and jog over the part, I think
>> you should be able to measure the relative placement error.
>>
>> Tony
>> On Thursday, February 10, 2022 at 7:40:56 AM UTC-6 jdlv...@gmail.com
>> wrote:
>>
>> Is it the same when using "position the camera at placements
>> location" from the job pane?
>>
>> joël
>>
>>
>> Le 10/02/2022 à 10:10, mark maker a écrit :
>>>
>>> The AffineTransformation obtained from the fiducials (inside the
>>> Job) is not applied when you manually position over the part. The
>>> DRO never shows compensated coordinates. So I wonder /what /you
>>> measured.
>>>
>>> The only thing that you /should /judge is how well centered the
>>> parts are over the actual PCB footprints.  I guess that's hard to
>>> measure, though.
>>>
>>> _Mark
>>>
>>> Am 09.02.2022 um 22:04 schrieb jdlv:
>>>>
>>>> Hi,
>>>>
>>>> I did investigate a bit about placement errors.
>>>> I changed all the parts of an unused pcb  to 0402 resistors,
>>>> sprayed some repositionable adhesive on the pcb to make it
>>>> sticky and then ran the placement job. The pcb has fiducials at
>>>> the 4 corners.
>>>> Next I moved the camera over some resistors , ideally the
>>>> resistors should be centered to the camera view. This is not
>>>> always the case!
>>>> I selected resistors to form rows and columns, 5 rows for the X
>>>> axis and 3 columns for Y
>>>> The first plot shows the Y axis errors measured with the camera
>>>> and the DRO in relative mode:
>>>>
>>>>
>>>> Same for X axis:
>>>>
>>>>
>>>> Accuracy is better at the center of the pcb, Y errors increase
>>>> with the same sign. X errors are smaller and the sign change.
>>>> It should be noted that errors are more important close to the
>>>> fiducials.
>>>> More data would be better but this is not a task for a human,
>>>> the machine would be much faster and accurate.
>>>> That explains the placement errors I noticed with real job but I
>>>> have no idea where they come from and how to reduced them.
>>>> Camera are both calibrated with the new advanced calibration, X
>>>> and Y axis uses linear encoder.
>>>>
>>>> Attached is the measurement data. If someone comes with an idea...!
>>>>
>>>> joël
>>>>
>>>> --
>>>> You received this message because you are subscribed to the
>>>> Google Groups "OpenPnP" group.
>>>> To unsubscribe from this group and stop receiving emails from
>>>> it, send an email to openpnp+u...@googlegroups.com.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/openpnp/eeac411c-6083-3e36-12d2-02b13b65ae6f%40gmail.com
>>>> <https://groups.google.com/d/msgid/openpnp/eeac411c-6083-3e36-12d2-02b13b65ae6f%40gmail.com?utm_medium=email&utm_source=footer>.
>>> --
>>> You received this message because you are subscribed to the
>>> Google Groups "OpenPnP" group.
>>> To unsubscribe from this group and stop receiving emails from it,
>>> send an email to openpnp+u...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/openpnp/4f6d903e-f147-a6db-7c03-335e7485afdf%40makr.zone
>>> <https://groups.google.com/d/msgid/openpnp/4f6d903e-f147-a6db-7c03-335e7485afdf%40makr.zone?utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "OpenPnP" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to openpnp+u...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/openpnp/c6e00cfd-7b95-4669-a36b-5c0fa25f49a0n%40googlegroups.com
>> <https://groups.google.com/d/msgid/openpnp/c6e00cfd-7b95-4669-a36b-5c0fa25f49a0n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to openpnp+u...@googlegroups.com
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/12cd2b0c-fd47-434e-35a2-95dd58695fdf%40makr.zone
> <https://groups.google.com/d/msgid/openpnp/12cd2b0c-fd47-434e-35a2-95dd58695fdf%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Feb 11, 2022, 4:29:35 AM2/11/22
to ope...@googlegroups.com

Perfect!

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

mark maker

unread,
Feb 11, 2022, 4:40:41 AM2/11/22
to ope...@googlegroups.com

After the Advanced Camera Calibration, that effect should be completely gone. Do you have it enabled?

_Mark

Jan

unread,
Feb 11, 2022, 5:24:00 AM2/11/22
to ope...@googlegroups.com
Hi Mark!
Yes, I do. It says, that my camera is tilted by 0.74° with respect to
the x-axis. The position of the camera over the footprint is very good.
But from the cameras perspective it looks as if the chip is placed with
a slightly smaller y then expected. This corresponds to the tilting
angle. Using a microscope and tilting the PCB in different angles I can
not see any relevant offset. I guess that the elevated position of the
top side of the legs in combination with the tilting angle make it look
as if it would be offset.
Maybe this is only a personal thing as my setup and test scenario is
special: the camera is about 5cm above PCB level and the chip I used,
fills the vertical field of view entirely.

Jan
> https://groups.google.com/d/msgid/openpnp/f37c2ec8-1d59-7d9d-c397-c62f760d84d9%40makr.zone
> <https://groups.google.com/d/msgid/openpnp/f37c2ec8-1d59-7d9d-c397-c62f760d84d9%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Feb 11, 2022, 6:21:50 AM2/11/22
to ope...@googlegroups.com

The important thing is to center the chip in the cross-hairs. When the Advanced Camera Calibration is enabled, the tilt elimination should make sure that there is no parallax.

Note, Advanced Camera Calibration has a slider to eliminate all invalid pixels, which crops the image to be symmetric around the cross-hairs. I recommend sliding it all the way, even if you lose part of the view. Otherwise you might be tempted to fit the chip in the view area, i.e. not truly centered, i.e. you will have a parallax.

_Mark

tonyl...@gmail.com

unread,
Feb 11, 2022, 12:36:00 PM2/11/22
to OpenPnP
Jan,

> But from the cameras perspective it looks as if the chip is placed with
a slightly smaller y then expected.

As Mark explained you should be using the camera's reticle (crosshairs and/or ruler) and not the outer edge of the visible pixels.  If you are in fact centering with the crosshairs and it still looks like it has a smaller y than expected, would you post the image so I can see what you are seeing?

Thanks,
Tony

jdlv

unread,
Feb 13, 2022, 5:31:05 AM2/13/22
to ope...@googlegroups.com
Le 10/02/2022 à 17:34, mark maker a écrit :

> I believe the Affine transform is applied when you use the "position the camera at placements location" from the placements pane.  If you then switch the DRO to relative mode and jog over the part, I think you should be able to measure the relative placement error.

Well, I guess you would measure the "relative part from where-fiducial-guided-AffineTransform-and-machine-positioning-thought-the-placement-should-be error". ;-)

The real benchmark would be to first jog to the part center, then click on the DRO to make it relative, then jog to the copper footprint center behind the part.

_Mark

Yes you are right. I made the assumption of a smaller footprint / camera error than placed part / camera. I didn't make measurements but I noticed it every times a placement is off, the camera crosshair is at the footprint center within a few tens of µm. Close to perfect for my needs. Next picture shows a placement close to a fiducial. The camera crosshair is exactly at the footprint center but the part is not.


Aligning part center and camera crosshair :


And measuring placement offsets :


Fiducials and Affine Transform  performs very well, errors comes with placement and errors are not only random noise. Measurements shows trends.

It is not very common and maybe it has no connection, the top camera position offset is not 0:

Well, I'm lost!

joël

mark maker

unread,
Feb 13, 2022, 6:28:31 AM2/13/22
to ope...@googlegroups.com

> I didn't make measurements but I noticed it every times a placement is off, the camera crosshair is at the footprint center within a few tens of µm. Close to perfect for my needs. Next picture shows a placement close to a fiducial. The camera crosshair is exactly at the footprint center but the part is not.

OK, that makes it a lot clearer.

The things that come to mind to improve placement accuracy (you might have already reported some of the things below, can't keep track of every user 😅):

  1. Make sure everything is properly calibrated using Issues & Solutions-
  2. Make sure you have pre-rotate bottom vision enabled.
  3. Make sure Camera Settling is properly and conservatively set.
  4. Make sure your bottom camera focal plane it at the same Z as the PCB surface.
  5. Make sure you have nozzle tip calibration enabled and running on every nozzle tip change (point 4 is less important if you do).
  6. Make sure your backlash is properly calibrated. You might need to reduce the proposed tolerance to get a more conservative proposal.
  7. Unless your machine is super stiff: if you have a constant acceleration controller, try to run with Simulated3rdOrderControl, to avoid nozzle oscillations. This will also reduce Camera Settling times.
  8. see the effect on oscillations/vibrations

_Mark

mark maker

unread,
Feb 13, 2022, 6:29:50 AM2/13/22
to ope...@googlegroups.com

Forget point 8, that was an editing mishap.

Jan

unread,
Feb 14, 2022, 4:06:46 AM2/14/22
to ope...@googlegroups.com
Hi Tony! Hi Mark!
I tried to take the images but failed due to unexpected nozzle to
camera offset issues. Unfortunately I was not able to solve them
reliably yet (the target stuck on the nozzle and/or jumped after being
released.) I'll investigate that first and then come back.

Jan

On 11.02.2022 18:36, tonyl...@gmail.com wrote:
> Jan,
>
> > But from the cameras perspective it looks as if the chip is placed with
> a slightly smaller y then expected.
>
> As Mark explained you should be using the camera's reticle (crosshairs
> and/or ruler) and not the outer edge of the visible pixels.  If you are
> in fact centering with the crosshairs and it still looks like it has a
> smaller y than expected, would you post the image so I can see what you
> are seeing?
>
> Thanks,
> Tony
>
> On Friday, February 11, 2022 at 5:21:50 AM UTC-6 ma...@makr.zone wrote:
>
> The important thing is to center the chip in the cross-hairs. When
> the Advanced Camera Calibration is *en*abled, the tilt elimination
> should make sure that there is no parallax
> <https://en.wikipedia.org/wiki/Parallax>.
>
> Note, Advanced Camera Calibration has a slider to *eliminate all
> invalid pixels*, which crops the image to be symmetric around the
> cross-hairs. I recommend sliding it all the way, even if you lose
> part of the view. Otherwise you might be tempted to fit the chip in
> the view area, i.e. *not truly centered*, i.e. you /will /have a
>>>>>>>> <https://groups.google.com/d/msgid/openpnp/eeac411c-6083-3e36-12d2-02b13b65ae6f%40gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>> <https://groups.google.com/d/msgid/openpnp/eeac411c-6083-3e36-12d2-02b13b65ae6f%40gmail.com?utm_medium=email&utm_source=footer>.
>>>>>>>>
>>>>>>>     --     You received this message because you are
>>>>>>> subscribed to the
>>>>>>>     Google Groups "OpenPnP" group.
>>>>>>>     To unsubscribe from this group and stop receiving emails
>>>>>>> from it,
>>>>>>>     send an email to openpnp+u...@googlegroups.com.
>>>>>>>     To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/openpnp/4f6d903e-f147-a6db-7c03-335e7485afdf%40makr.zone
>>>>>>> <https://groups.google.com/d/msgid/openpnp/4f6d903e-f147-a6db-7c03-335e7485afdf%40makr.zone>
>>>>>>>
>>>>>>> <https://groups.google.com/d/msgid/openpnp/4f6d903e-f147-a6db-7c03-335e7485afdf%40makr.zone?utm_medium=email&utm_source=footer>
>>>>>>> <https://groups.google.com/d/msgid/openpnp/4f6d903e-f147-a6db-7c03-335e7485afdf%40makr.zone?utm_medium=email&utm_source=footer>.
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the
>>>>>> Google Groups "OpenPnP" group.
>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>> it, send an email to openpnp+u...@googlegroups.com.
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/openpnp/c6e00cfd-7b95-4669-a36b-5c0fa25f49a0n%40googlegroups.com
>>>>>> <https://groups.google.com/d/msgid/openpnp/c6e00cfd-7b95-4669-a36b-5c0fa25f49a0n%40googlegroups.com>
>>>>>> <https://groups.google.com/d/msgid/openpnp/c6e00cfd-7b95-4669-a36b-5c0fa25f49a0n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> <https://groups.google.com/d/msgid/openpnp/c6e00cfd-7b95-4669-a36b-5c0fa25f49a0n%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the
>>>>> Google Groups "OpenPnP" group.
>>>>> To unsubscribe from this group and stop receiving emails from
>>>>> it, send an email to openpnp+u...@googlegroups.com
>>>>> <mailto:openpnp+u...@googlegroups.com>.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/openpnp/12cd2b0c-fd47-434e-35a2-95dd58695fdf%40makr.zone
>>>>> <https://groups.google.com/d/msgid/openpnp/12cd2b0c-fd47-434e-35a2-95dd58695fdf%40makr.zone>
>>>>> <https://groups.google.com/d/msgid/openpnp/12cd2b0c-fd47-434e-35a2-95dd58695fdf%40makr.zone?utm_medium=email&utm_source=footer>
>>>>> <https://groups.google.com/d/msgid/openpnp/12cd2b0c-fd47-434e-35a2-95dd58695fdf%40makr.zone?utm_medium=email&utm_source=footer>.
>>>>>
>>>>
>>> --
>>> You received this message because you are subscribed to the
>>> Google Groups "OpenPnP" group.
>>> To unsubscribe from this group and stop receiving emails from it,
>>> send an email to openpnp+u...@googlegroups.com
>>> <mailto:openpnp+u...@googlegroups.com>.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/openpnp/f37c2ec8-1d59-7d9d-c397-c62f760d84d9%40makr.zone
>>> <https://groups.google.com/d/msgid/openpnp/f37c2ec8-1d59-7d9d-c397-c62f760d84d9%40makr.zone>
>>> <https://groups.google.com/d/msgid/openpnp/f37c2ec8-1d59-7d9d-c397-c62f760d84d9%40makr.zone?utm_medium=email&utm_source=footer>
>>> <https://groups.google.com/d/msgid/openpnp/f37c2ec8-1d59-7d9d-c397-c62f760d84d9%40makr.zone?utm_medium=email&utm_source=footer>.
>>>
>>
> --
> You received this message because you are subscribed to the Google
> Groups "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to openpnp+u...@googlegroups.com
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/d6a45d20-2593-4c95-a4af-9f3005a26032n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/d6a45d20-2593-4c95-a4af-9f3005a26032n%40googlegroups.com?utm_medium=email&utm_source=footer>.
Reply all
Reply to author
Forward
0 new messages