ELP-USBGS1200P02 Global Shutter Camera Triggering in Open PnP

326 views
Skip to first unread message

Mike Menci

unread,
Sep 21, 2025, 4:41:06 PMSep 21
to OpenPnP
We continue here because the subject is above mentioned camera model and not ELP-USBxxxx P01. 
I enclose herewith the manual in Pdf which is reflecting above mentioned ELP-USBGS1200P02 Global Shutter Camera.
Tha manual is not actualy the same as the delivered camera. Actual delivery is two PCB - the top as per manual and the bottom with two small flash lights and two switches - one for triggering Flash and second one for Triggering Mode. This two PCBs are connected with standoff bolts and as well with 2 connectors with cable. One is + 5VDC /GND and the second one is  5pin connector. 
So when you want to use this all you have is USB cable to connect but no output from pcb for external triggering. See pictures I enclose.  
I can get a good (still standing - not motion) picture to Open PnP but I did not figure out how  to get moving pictures into Open PnP - this is now holding me beck to continue testing. 
I made myself a temporary Jig  with up-looking ELP camera trug Coax Box, I have a moving X axis with nozzle and servo driving head with a single nozzle for test... I have Yaskawa with CN1 and ELP camera connected trough Opto Sharp PC817.. & Yellow Blue cable on ELP camera. 
Today  I spend half a day trying to create a folder where images from triggering would end up for me to see them but up to now - nothing landed in this folder. 
Eater triggering is not happening or capturing is not collecting images ....  I do not have Oscilloscope to test - so visual is all I could do - see enclosed my vison collection folder .. 
I hope I am on the right track - Jan - comment please. 
IMG_7975.jpg
ELP-USBGS1200P02 Global Shutter Trigger operation Manual.pdf
2025-09-21 22_26_34-Bottom Vision Pipeline.png
IMG_7974 .jpg
ELP_Test Jig .jpg

Mike Menci

unread,
Sep 21, 2025, 4:52:55 PMSep 21
to OpenPnP
It would be great if   " Community could add a “HardwarePositionTrigger” actuator ..... at some point in future..

Mike Menci

unread,
Sep 21, 2025, 5:15:37 PMSep 21
to OpenPnP
But it look like I had some success : 
2025-09-21 23_13_25-C__Users_hp_.openpnp2_org.openpnp.vision.pipeline.stages.ImageWriteDebug - File .png

Mike Menci

unread,
Sep 22, 2025, 1:41:41 AMSep 22
to OpenPnP
Jan 
I received attached reply from ELP - which means that bottom PCB is not mandatory if you use your own triggering - therefore the 5pin connector is free and can be used for external triggering ...  
ELP trigger Email.png

Jan

unread,
Sep 23, 2025, 5:28:35 AMSep 23
to ope...@googlegroups.com
Hi Mike!
Many thanks for sharing this information!
Concerning your questions: I'd say that there is an added difficulty
with hardware triggering that is, that you have to generate a trigger
when OpenPnp wont to have a picture from the camera. At present there so
such thing like a a hardware position trigger. However, you could make
use of the scripting engine. According to the logs there is a
"Camera.BeforeCapture". However^2 I'm not sure if that script is also
executed if the camera is used for preview.
In an other post you mentioned, that you'd like to trigger the camera
using position sensors in your motor drivers. You may try that. I'm sure
it will work if you pick from the same feeder and go straight for bottom
vision. With the logging level set to debug you'd probably find out if
there is any other script that could be facilitate to arm this trigger.
Please keep us posted.

Jan

On 22.09.2025 07:41, Mike Menci wrote:
> Jan
> I received attached reply from ELP - which means that bottom PCB is not
> mandatory if you use your own triggering - therefore the 5pin connector
> is free and can be used for external triggering ...
>
> On Sunday, 21 September 2025 at 23:15:37 UTC+2 Mike Menci wrote:
>
> But it look like I had some success :
>
> On Sunday, 21 September 2025 at 22:52:55 UTC+2 Mike Menci wrote:
>
> It would be great if   " Community could adda
> “HardwarePositionTrigger” actuator..... at some point in future..
> --
> 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 visit https://groups.google.com/d/msgid/
> openpnp/4043b9fd-df48-4955-bcd8-eb1d7bea56dcn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955-bcd8-
> eb1d7bea56dcn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 14, 2025, 5:19:36 PMOct 14
to OpenPnP
Hi all,
Goal
I’d like OpenPnP to take one snapshot from the bottom camera each time the nozzle X-coordinate enters the 152–159 mm window (camera view) during normal jogging or job moves.
What already works
  • I have a Bean-shell script (snapOverCamera.bsh) that:
    – checks nozzle.getLocation().getX()
    – uses an edge-trigger so it fires only once per pass
    – saves the PNG to snapshots/
  • Manually clicking the script works perfectly (picture appears, no error)
  • Post-command script line ${SCRIPT:scripts/snapOverCamera.bsh} in the driver is ignored (async driver, stable 2.4)
  • Nozzle-tip “Post-Move-Script” field is not visible in my 2.5-test build (panel ends at Max. Pick Tolerance; Scripts ▶ bar is missing)
What I need
A hook that runs after every nozzle move (jog or job) so the script can decide whether to snap.
I’m happy to use driver G-code, actuator, pipeline, signaller, or nozzle-tip – whichever is guaranteed to exist in stable 2.4 / test 2.5.
Could someone point me to the correct GUI path or XML tag that actually fires after every move in the async driver?
Thanks in advance!

Jan

unread,
Oct 16, 2025, 4:52:57 AMOct 16
to ope...@googlegroups.com
Hi Mike!
A nozzle is just a specific type of head mountable for OpenPnP, so
there is no script that can be liked to a specific nozzle.
There are script hooks - which I'm sure you already know - for
Camera.BeforeCapture and Camera.AfterCapture. This are likely to late
for your usecase.
What about creating a profile acuator that operates your camera
light and a new ScriptActuator. This actuator could then be used as the
camera Light Actuator and it would switch the light on and call a
script. This actuator shall - if machine coordinate is disabled - been
called when the head is on the way to the camera (to take a picture) and
when the head is living the camera (after taking a picture).

Jan

On 14.10.2025 23:19, Mike Menci wrote:
> Hi all,
> Goal
> I’d like OpenPnP to take one snapshot from the bottom camera each time
> the nozzle X-coordinate enters the 152–159 mm window (camera view)
> during normal jogging or job moves.
> What already works
>
> *
> I have a Bean-shell script (snapOverCamera.bsh) that:
> – checks nozzle.getLocation().getX()
> – uses an edge-trigger so it fires only once per pass
> – saves the PNG to snapshots/
> *
> Manually clicking the script works perfectly (picture appears, no error)
> *
> Post-command script line ${SCRIPT:scripts/snapOverCamera.bsh} in the
> driver is ignored (async driver, stable 2.4)
> *
> Nozzle-tip “Post-Move-Script” field is not visible in my 2.5-test
> build (panel ends at /Max. Pick Tolerance/; Scripts ▶ bar is missing)
> <https://groups.google.com/d/msgid/>
> > openpnp/4043b9fd-df48-4955-bcd8-eb1d7bea56dcn%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955-
> bcd8- <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955-
> bcd8->
> > eb1d7bea56dcn%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://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 visit https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4-a4c5-7b57cc0b7cc3n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4-
> a4c5-7b57cc0b7cc3n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 16, 2025, 6:56:10 AMOct 16
to OpenPnP
Hi Jan – thanks, that exactly matches my use-case!
I already:
  • created a ReferenceActuator (CamSnapActuator, driver PNPBOARDV1.7, index 0, actuate value M400)
  • added ScriptActuator wrapper and pointed it to scripts/snapOverCamera.bsh
  • pasted the edge-trigger script (152–159 mm window, one PNG per pass) – works perfectly when clicked manually
What I still miss
How do I wire the ScriptActuator to the bottom-camera light circuit so OpenPnP calls it automatically on every approach / leave?
GUI path we see
Machine Setup → Cameras → Bottom Vision ELPActuator drop-down only lists “Bottom_Cam_Lights” (a plain M42 actuator), not our CamSnapActuator.
Question
Do I:
  1. replace the existing Bottom_Cam_Lights actuator with our ScriptActuator, or
  2. chain the two actuators (light + script) in series, or
  3. use a different hook (e.g. Head → Actuator → Before/After Move) that always fires when the head crosses the camera?
A one-sentence GUI path (or tiny XML snippet) would close the loop – I am one click away of testing it with slow and speed motion!
Thanks again,

Jan

unread,
Oct 16, 2025, 7:26:56 AMOct 16
to ope...@googlegroups.com
Hi Mike!
ProfileActuators shall provide the chaining you like to have
(https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration_Actuators#actuator-with-profiles).
You may try the following:
- create a ReferenceActuator close to your cameras up-light actuator (on
machine level)
- Change its "Value Type" to "Profile" -> Apply
- Select the new "Profiles" tab
- Choose your script as "Actuator 1" and your camera light as "Actuator
2" -> Apply (I assume that Actuator 1 is called before Actuator 2 so the
machine coordination setting for the camera light shall not delay the
script execution)
- In the table below add two new profiles.
- According to the Wiki a profile where "Default ON" is ticked is
executed if a boolean operation is set ON/TRUE (thats what happens when
the camera light is switched on) and "Default OFF" if a boolean
operation is set OFF/FALSE. You shall select "Default ON" in one profile
and "Default OFF" in the other and select the light in the "Default ON"
one. (IIRC the selection state is the value the target actuator is
called with.)
Now go to your camera and choose the new profile actuator as your
camera light.
If everything works as intended, the camera will call the profile
actuator to switch the light on/off and the new profile actuator will
call your script and the old/physical camera light actuator.
If you select your script in the "Default ON" profile, your script
shall be called with TRUE if the head will be moved towords the camera
(light is going to be switched on) and FALSE if the head is leaving the
camera.

Jan

On 16.10.2025 12:56, Mike Menci wrote:
> Hi Jan – thanks, that exactly matches my use-case!
> I already:
>
> *
> created a ReferenceActuator (CamSnapActuator, driver PNPBOARDV1.7,
> index 0, actuate value M400)
> *
> added ScriptActuator wrapper and pointed it to scripts/
> snapOverCamera.bsh
> *
> pasted the edge-trigger script (152–159 mm window, one PNG per pass)
> – works perfectly when clicked manually
>
> What I still miss
> How do I wire the ScriptActuator to the bottom-camera light circuit so
> OpenPnP calls it automatically on every approach / leave?
> GUI path we see
> Machine Setup → Cameras → Bottom Vision ELP → Actuator drop-down only
> lists “Bottom_Cam_Lights” (a plain M42 actuator), not our CamSnapActuator.
> Question
> Do I:
>
> 1.
> replace the existing Bottom_Cam_Lights actuator with our
> ScriptActuator, or
> 2.
> chain the two actuators (light + script) in series, or
> 3.
> > <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
> msgid/>>
> > > openpnp/4043b9fd-df48-4955-bcd8-
> eb1d7bea56dcn%40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955-
> <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955->
> > bcd8- <https://groups.google.com/d/msgid/openpnp/4043b9fd-
> df48-4955- <https://groups.google.com/d/msgid/openpnp/4043b9fd-
> df48-4955->
> > bcd8->
> > > eb1d7bea56dcn%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://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 visit https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> > openpnp/34ec82a8-18ec-4fb4-a4c5-7b57cc0b7cc3n%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4-
> <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4->
> > a4c5-7b57cc0b7cc3n%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://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 visit https://groups.google.com/d/msgid/
> openpnp/064f7f36-1441-4348-af9e-6049e2af74d3n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348-
> af9e-6049e2af74d3n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 17, 2025, 8:39:25 AMOct 17
to OpenPnP
Hi Jan,
  1. Double-click in camera view → file appears in snapshots (camera / USB / host path OK).
  2. Sending M42 P2 S0 G4 P50 M42 P2 S1 M400 manually from console → no file created (camera does not snap),
  3. Oscilloscope shows the same 0→1→0 pulse on the same pin the host uses when double-clicking.
  4. Therefore the Smoothieboard is driving the line, but the ELP module ignores it. Question: Is the ELP expecting the opposite edge (1→0) or a longer/shorter pulse than 50 ms? Could you confirm the exact logic the host sends when we double-click (level, width, edge)? Hardware: Smoothieboard 5X – pin P2 = GPIO port 2 / pin 2.4 on the board Thanks,

Jan

unread,
Oct 17, 2025, 9:10:14 AMOct 17
to ope...@googlegroups.com
Mi Mike!
I can only guess what you're trying to archive.
If you wont your camera to run on hardware trigger, you need to do two
things: a) create the trigger pulse and b) capture the image the camera
has taken.
If you double-click the camera view, OpenPnP will read an image from
the camera and store it into a file. I don't know it there is any option
to generate the trigger pulse before reading the image.
If you manually generate the trigger pulse, the camera will likely
capture an image, but there is no one to read it and no one to save it.
If you generate a 0-1-0 signal, you have both edges. So except for a
minor timing offsets you shall not see a difference whether the camera
expects a low to high or a high to low transition as trigger.
According to the figure in section 6 of the datasheet you posted
earlier, the rising edge is the reference point. Starting from the
rising edge of the trigger input, the camera will start exposure exactly
1.456ms later.
Btw: the M400 in the GCode you posted is likely not needed. It's
intended to wait/delay until moves have finished.

Jan

On 17.10.2025 14:39, Mike Menci wrote:
> Hi Jan,
>
> 1.
> Double-click in camera view → file appears in snapshots (camera /
> USB / host path OK).
> 2.
> SendingM42 P2 S0 G4 P50 M42 P2 S1 M400manually from console → no
> file created(camera does notsnap),
> 3.
> Oscilloscope shows the same 0→1→0 pulseon the same pinthe host uses
> when double-clicking.
> 4.
> Therefore the Smoothieboardisdriving the line, but the ELP module
> ignores it.Question: Is the ELP expecting the opposite edge(1→0) or
> a longer/shorter pulsethan 50 ms? Could you confirm the exact logic
> the host sends when we double-click (level, width, edge)? Hardware:
> Smoothieboard 5X– pin P2= GPIO port 2 / pin 2.4on the board Thanks,
>
>
> On Thursday, 16 October 2025 at 13:26:56 UTC+2 Jan wrote:
>
> Hi Mike!
> ProfileActuators shall provide the chaining you like to have
> (https://github.com/openpnp/openpnp/wiki/Setup-and-
> Calibration_Actuators#actuator-with-profiles <https://github.com/
> openpnp/openpnp/wiki/Setup-and-Calibration_Actuators#actuator-with-
> profiles>).
> > msgid/ <https://groups.google.com/d/msgid/ <https://
> d/msgid/> <https://groups.google.com/d/ <https://groups.google.com/d/>
> <http://40googlegroups.com <http://40googlegroups.com>>>
> > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://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>.
> > > openpnp/34ec82a8-18ec-4fb4-
> a4c5-7b57cc0b7cc3n%40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4-
> <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4->
> > <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4-
> <https://groups.google.com/d/msgid/openpnp/34ec82a8-18ec-4fb4->>
> > > a4c5-7b57cc0b7cc3n%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://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 visit https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> > openpnp/064f7f36-1441-4348-af9e-6049e2af74d3n%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348-
> <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348->
> > af9e-6049e2af74d3n%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://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 visit https://groups.google.com/d/msgid/openpnp/
> ebdaedb9-e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/ebdaedb9-
> e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

bert shivaan

unread,
Oct 17, 2025, 9:16:46 AMOct 17
to ope...@googlegroups.com
How does openPNP know when to ask for the image from the camera?


To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/openpnp/a32ca87c-d253-4431-829a-3855c566ad64%40googlemail.com.

Jan

unread,
Oct 17, 2025, 9:43:22 AMOct 17
to ope...@googlegroups.com
OpenPnP requests an image when needed: either because preview is enabled
or bottom vision is requested. Actually its not "requesting" as on
normal cameras, images are taken all the time using a camera internal
trigger. The image is then transferred into the computer limited by the
speed of the computer reading the image and the camera providing one.
Internally the CV module gets every image the camera provides, but it
only hands over an image for preview or bottom vision if requested. So
the majority of images is captures and send to the computer but dropped
in the CV module.
With hardware triggered cameras as Mike is using you can request an
image from the camera at a specific time. However, all the other stuff
might not be perfectly prepared for cameras only generating images on
request...

Jan
> >     (https://github.com/openpnp/openpnp/wiki/Setup-and- <https://
> github.com/openpnp/openpnp/wiki/Setup-and->
> >     Calibration_Actuators#actuator-with-profiles <https://
> github.com/ <https://github.com/>
> >     openpnp/openpnp/wiki/Setup-and-
> Calibration_Actuators#actuator-with-
> <mailto:openpnp%2Bu...@googlegroups.com>
> >      > > > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bu...@googlegroups.com>>.
> >      > > > To view this discussion visit https://
> groups.google.com/d/ <https://groups.google.com/d/>
> >     <https://groups.google.com/d/ <https://groups.google.com/d/>>
> >      > msgid/ <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>>
> >      > > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://groups.google.com/ <https://
> groups.google.com/>
> >     d/msgid/> <https://groups.google.com/d/ <https://
> groups.google.com/d/> <https://groups.google.com/d/ <https://
> <http://40googlegroups.com <http://40googlegroups.com>>>>
> openpnp/4043b9fd- <https://groups.google.com/d/msgid/openpnp/4043b9fd->
> >     df48-4955->
> >      > <https://groups.google.com/d/msgid/openpnp/4043b9fd-
> df48-4955- <https://groups.google.com/d/msgid/openpnp/4043b9fd-
> >      > > bcd8- <https://groups.google.com/d/msgid/
> openpnp/4043b9fd- <https://groups.google.com/d/msgid/openpnp/4043b9fd->
> >     <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>>?
> >      > > utm_medium=email&utm_source=footer
> <http://40googlegroups.com <http://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%2Bu...@googlegroups.com>
> >      > > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bu...@googlegroups.com>>.
> >      > > To view this discussion visit https://groups.google.com/
> d/ <https://groups.google.com/d/>
> >     msgid/>>
> >      > > openpnp/34ec82a8-18ec-4fb4-
> >     a4c5-7b57cc0b7cc3n%40googlegroups.com
> <http://40googlegroups.com> <http://40googlegroups.com
> <http://40googlegroups.com>>
> openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4->
> >     <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4->>
> >      > <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4->
> >     <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4->>>
> >      > > a4c5-7b57cc0b7cc3n%40googlegroups.com
> <http://40googlegroups.com> <http://40googlegroups.com
> <http://40googlegroups.com>>?
> >      > utm_medium=email&utm_source=footer
> <http://40googlegroups.com <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://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%2Bu...@googlegroups.com>
> >      > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bu...@googlegroups.com>>.
> >      > To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>>
> >      > openpnp/064f7f36-1441-4348-
> af9e-6049e2af74d3n%40googlegroups.com <http://40googlegroups.com>
> openpnp/064f7f36-1441-4348- <https://groups.google.com/d/msgid/
> openpnp/064f7f36-1441-4348->
> >     <https://groups.google.com/d/msgid/
> openpnp/064f7f36-1441-4348- <https://groups.google.com/d/msgid/
> openpnp/064f7f36-1441-4348->>
> >      > af9e-6049e2af74d3n%40googlegroups.com
> <http://40googlegroups.com>?
> >     utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://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%2Bunsu...@googlegroups.com>
> > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bunsu...@googlegroups.com>>.
> > To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/ <https://groups.google.com/d/msgid/openpnp/>
> > ebdaedb9-e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com
> <http://40googlegroups.com> <https://
> > groups.google.com/d/msgid/openpnp/ebdaedb9- <http://
> groups.google.com/d/msgid/openpnp/ebdaedb9->
> > e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com
> <http://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%2Bunsu...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/a32ca87c-d253-4431-829a-3855c566ad64%40googlemail.com
> <https://groups.google.com/d/msgid/openpnp/a32ca87c-
> d253-4431-829a-3855c566ad64%40googlemail.com>.
>
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/
> CA%2BKNHNz%2BJYK_ZBrLyTuv9%3D_JLRab1pf%3D-
> O2J214fL0Vpg563yA%40mail.gmail.com <https://groups.google.com/d/msgid/
> openpnp/CA%2BKNHNz%2BJYK_ZBrLyTuv9%3D_JLRab1pf%3D-
> O2J214fL0Vpg563yA%40mail.gmail.com?utm_medium=email&utm_source=footer>.

bert shivaan

unread,
Oct 17, 2025, 10:22:46 AMOct 17
to ope...@googlegroups.com
So this is my concern. Does the camera retain the image until either another trigger? Or does it "loose" the image after some amount of time?
If it retains it, then maybe this is not too bad as at least there is no huge timing issue for single nozzle machines. OpenPNP could maybe time grabbing the image based on head speed and distance. So for instance 1 sec after sending the "move over the camera" sequence of moves, fetch the image.

This will get harder when more nozzles.

My old commercial machine had adjustments for how long to delay incase the image was not centered enough. Seems like this could be the same? 

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/openpnp/56a8ff16-8730-4bd5-b002-278e78acf17f%40googlemail.com.

bert shivaan

unread,
Oct 17, 2025, 10:24:33 AMOct 17
to ope...@googlegroups.com
Also why I was thinking about a cheap DIY frame grabber fashioned from a Pi or something. It could trigger and grab the image for multiple nozzles, then hand them to OpenPNP on request. But likely not needed here at all.

Mike Menci

unread,
Oct 17, 2025, 11:23:29 AMOct 17
to OpenPnP
Thanks Jan.
I confirm the rising-edge pulse is generated and the camera does expose (LED blinks).
Could you give me the single G-code or script command that tells OpenPnP to
“grab the frame now and save it to snapshots”, exactly like the double-click does?
I’ll append it right after the trigger pulse so the whole cycle becomes automatic.
Thanks

Jan

unread,
Oct 20, 2025, 5:45:31 AM (12 days ago) Oct 20
to ope...@googlegroups.com
Mi Bert!
That's likely a question of the cameras sensor chip. If the image is
retained in the sensor array until read by the computer, it will very
likely degrade over a short period of time. If the sensor chip has a
frame grabber in which he stores the image until readout, it will not
degrade but might still be subject to some kine of timeout dropping
behavior.
Anyhow, for OpenPnP we have two aspects to consider: a) OpenPnP is not
(yet) prepared for synchronous camera as the wast majority out their
works asynchronously (self triggered) and b) in all cases I can image
the camera image is requested for immediate use hence there are no delay
and/or storage requirement.

Jan
> <mailto:ope...@googlegroups.com <mailto:ope...@googlegroups.com>>>
> <https://github.com/openpnp/openpnp/wiki/Setup-and-> <https://
> > github.com/openpnp/openpnp/wiki/Setup-and- <http://github.com/
> openpnp/openpnp/wiki/Setup-and->>
> >      >     Calibration_Actuators#actuator-with-profiles <https://
> > github.com/ <http://github.com/> <https://github.com/ <https://
> >     <mailto:openpnp%2Bu...@googlegroups.com
> <mailto:openpnp%252Bu...@googlegroups.com>>
> >      >      > > > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bu...@googlegroups.com>
> >     <mailto:openpnp%2Bu...@googlegroups.com
> <mailto:openpnp%252Bu...@googlegroups.com>>>.
> >      >      > > > To view this discussion visit https://
> > groups.google.com/d/ <http://groups.google.com/d/> <https://
> >      >      > msgid/ <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>
> <https://
> >      > groups.google.com/d/msgid/ <http://groups.google.com/d/
> msgid/> <http://groups.google.com/d/msgid/ <http://
> <https://groups.google.com/ <https://groups.google.com/> <https://
> > groups.google.com/ <http://groups.google.com/>>
> >      >     d/msgid/> <https://groups.google.com/d/ <https://
> groups.google.com/d/> <https://
> > groups.google.com/d/ <http://groups.google.com/d/>> <https://
> > groups.google.com/d/ <http://groups.google.com/d/>>>
> >      >      > msgid/>>
> >      >      > > > openpnp/4043b9fd-df48-4955-bcd8-
> >      >      > eb1d7bea56dcn%40googlegroups.com
> <http://40googlegroups.com <http://40googlegroups.com>>>>>
> <https://groups.google.com/d/msgid/>
> >     openpnp/4043b9fd- <https://groups.google.com/d/msgid/
> openpnp/4043b9fd- <https://groups.google.com/d/msgid/openpnp/4043b9fd->>
> >      >     df48-4955->
> >      >      > <https://groups.google.com/d/msgid/
> openpnp/4043b9fd- <https://groups.google.com/d/msgid/openpnp/4043b9fd->
> >     df48-4955- <https://groups.google.com/d/msgid/
> openpnp/4043b9fd- <https://groups.google.com/d/msgid/openpnp/4043b9fd->
> >     df48-4955->
> >      >     <https://groups.google.com/d/msgid/openpnp/4043b9fd-
> <https://groups.google.com/d/msgid/openpnp/4043b9fd->
> >     df48-4955- <https://groups.google.com/d/msgid/
> openpnp/4043b9fd- <https://groups.google.com/d/msgid/openpnp/4043b9fd->
> >     df48-4955->>>
> >      >      > > bcd8- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> >     openpnp/4043b9fd- <https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> >     openpnp/4043b9fd- <https://groups.google.com/d/msgid/
> <http://40googlegroups.com <http://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%2Bu...@googlegroups.com>
> >     <mailto:openpnp%2Bu...@googlegroups.com
> <mailto:openpnp%252Bu...@googlegroups.com>>
> >      >      > > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bu...@googlegroups.com>
> >     <mailto:openpnp%2Bu...@googlegroups.com
> <mailto:openpnp%252Bu...@googlegroups.com>>>.
> >      >      > > To view this discussion visit https://
> groups.google.com/ <https://groups.google.com/>
> >     d/ <https://groups.google.com/d/ <https://groups.google.com/d/>>
> <https://groups.google.com/d/ <https://groups.google.com/d/> <https://
> > groups.google.com/d/ <http://groups.google.com/d/>>
> >      >     msgid/>>
> >      >      > > openpnp/34ec82a8-18ec-4fb4-
> >      >     a4c5-7b57cc0b7cc3n%40googlegroups.com
> <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://40googlegroups.com>>
> <http://40googlegroups.com <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://40googlegroups.com>>>
> >      >      > > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4->
> >      >     <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4->>
> >      >      > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4->
> >      >     <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/34ec82a8-18ec-4fb4->>>
> >      >      > > a4c5-7b57cc0b7cc3n%40googlegroups.com
> <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://40googlegroups.com>>
> <http://40googlegroups.com <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://40googlegroups.com>>>?
> >      >      > utm_medium=email&utm_source=footer
> >     <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> >      >     <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://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%2Bu...@googlegroups.com>
> >     <mailto:openpnp%2Bu...@googlegroups.com
> <mailto:openpnp%252Bu...@googlegroups.com>>
> >      >      > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bu...@googlegroups.com>
> >     <mailto:openpnp%2Bu...@googlegroups.com
> <mailto:openpnp%252Bu...@googlegroups.com>>>.
> >      >      > To view this discussion visit https://
> groups.google.com/d/ <https://groups.google.com/d/>
> >     msgid/ <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>>
> >      >     <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>>
> >      >      > openpnp/064f7f36-1441-4348-
> >     af9e-6049e2af74d3n%40googlegroups.com
> >      >      > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> >     openpnp/064f7f36-1441-4348- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/064f7f36-1441-4348->
> >      >     <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>
> >     openpnp/064f7f36-1441-4348- <https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/064f7f36-1441-4348->>
> >      >      > af9e-6049e2af74d3n%40googlegroups.com
> <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://40googlegroups.com>>?
> >      >     utm_medium=email&utm_source=footer
> <http://40googlegroups.com <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://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%2Bunsu...@googlegroups.com>
> >     <mailto:openpnp%2Bunsu...@googlegroups.com
> <mailto:openpnp%252Buns...@googlegroups.com>>
> >      > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bunsu...@googlegroups.com>
> >     <mailto:openpnp%2Bunsu...@googlegroups.com
> <mailto:openpnp%252Buns...@googlegroups.com>>>.
> >      > To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/ <https://groups.google.com/d/msgid/openpnp/
> <https://groups.google.com/d/msgid/openpnp/>>
> >      > ebdaedb9-e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com
> <http://40googlegroups.com>
> >     <http://40googlegroups.com <http://40googlegroups.com>> <https://
> >      > groups.google.com/d/msgid/openpnp/ebdaedb9- <http://
> groups.google.com/d/msgid/openpnp/ebdaedb9-> <http://
> >     <http://40googlegroups.com <http://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%2Bunsu...@googlegroups.com>
> >     <mailto:openpnp%2Bunsu...@googlegroups.com
> <mailto:openpnp%252Buns...@googlegroups.com>>.
> >     To view this discussion visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> >     openpnp/a32ca87c-d253-4431-829a-3855c566ad64%40googlemail.com
> <http://40googlemail.com>
> >     <https://groups.google.com/d/msgid/openpnp/a32ca87c-
> <https://groups.google.com/d/msgid/openpnp/a32ca87c->
> >     d253-4431-829a-3855c566ad64%40googlemail.com
> <http://40googlemail.com>>.
> >
> > --
> > 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%2Bunsu...@googlegroups.com>
> > <mailto:openpnp+u...@googlegroups.com
> <mailto:openpnp%2Bunsu...@googlegroups.com>>.
> > To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/ <https://groups.google.com/d/msgid/openpnp/>
> > CA%2BKNHNz%2BJYK_ZBrLyTuv9%3D_JLRab1pf%3D-
> > O2J214fL0Vpg563yA%40mail.gmail.com <http://40mail.gmail.com>
> <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
> msgid/>
> > openpnp/CA%2BKNHNz%2BJYK_ZBrLyTuv9%3D_JLRab1pf%3D-
> > O2J214fL0Vpg563yA%40mail.gmail.com?
> utm_medium=email&utm_source=footer <http://40mail.gmail.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%2Bunsu...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> openpnp/56a8ff16-8730-4bd5-b002-278e78acf17f%40googlemail.com
> <https://groups.google.com/d/msgid/openpnp/56a8ff16-8730-4bd5-
> b002-278e78acf17f%40googlemail.com>.
>
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/
> CA%2BKNHNyzWT2F%3DrDP4ii-YnmX8vnBq4YHPdR9ubXOhNay6poCzQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/openpnp/CA%2BKNHNyzWT2F%3DrDP4ii-
> YnmX8vnBq4YHPdR9ubXOhNay6poCzQ%40mail.gmail.com?
> utm_medium=email&utm_source=footer>.

Jan

unread,
Oct 20, 2025, 6:05:40 AM (12 days ago) Oct 20
to ope...@googlegroups.com
Hi Mike!
I'm sorry, I can't: a) g-code is a language you use to talk to your
controller but the controller has not knowledge about your camera and b)
I'm not a scripting guy and hence does not know how to capture an image.
You might wont to check the example scripts or search the web. IIRC
there are easy to find scripts that move to each placement location and
take a shot for documentation purposes. You shall be able to reuse that.

Jan

On 17.10.2025 17:23, Mike Menci wrote:
> Thanks Jan.
> I confirm the rising-edge pulse is generated and the camera doesexpose
> (LED blinks).
> Could you give me the single G-code or script commandthat tells OpenPnP to
> > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>>>
> > > > <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/> <https://groups.google.com/ <https://
> groups.google.com/>
> > d/msgid/> <https://groups.google.com/d/ <https://
> <http://40googlegroups.com <http://40googlegroups.com>>>>
> > > <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955-
> <https://groups.google.com/d/msgid/openpnp/4043b9fd-df48-4955->
> > <https://groups.google.com/d/msgid/openpnp/4043b9fd- <https://
> > <https://groups.google.com/d/msgid/openpnp/4043b9fd- <https://
> > > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com <http://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 visit https://groups.google.com/d/
> > > > openpnp/34ec82a8-18ec-4fb4-
> > a4c5-7b57cc0b7cc3n%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> > > > <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/msgid/
> openpnp/34ec82a8-18ec-4fb4->
> <http://40googlegroups.com> <http://40googlegroups.com
> <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://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 visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
> msgid/>>
> > > openpnp/064f7f36-1441-4348-
> af9e-6049e2af74d3n%40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348-
> <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348->
> > <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348-
> <https://groups.google.com/d/msgid/openpnp/064f7f36-1441-4348->>
> > > af9e-6049e2af74d3n%40googlegroups.com <http://40googlegroups.com>?
> > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://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 visit https://groups.google.com/d/msgid/
> openpnp/ <https://groups.google.com/d/msgid/openpnp/>
> > ebdaedb9-e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com
> > e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com
> <http://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 visit https://groups.google.com/d/msgid/
> openpnp/223c98d7-4ea5-4824-8a40-15e8df3fd9d7n%40googlegroups.com
> <https://groups.google.com/d/msgid/
> openpnp/223c98d7-4ea5-4824-8a40-15e8df3fd9d7n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 20, 2025, 7:37:37 AM (12 days ago) Oct 20
to OpenPnP
Hi Jan — just a quick follow-up to confirm we’re on the right track.
We connected the ELP’s “snapshot” input to an Arduino Mega that shares the same ground.
OpenPnP is configured to send M240 on a separate serial port (COM9) immediately before each vision call.
The Mega sketch simply:
Copy
if (Serial1.read()) { // any byte digitalWrite(pin2, HIGH); delayMicroseconds(200); digitalWrite(pin2, LOW); Serial1.print("ok\n"); }
  • Pulse width 200 µs, 5 V level, single-shot.
  • Camera replies with a full-resolution frame within 30 ms — no smear or timeout.
  • OpenPnP receives the frame synchronously and continues the pick/place pipeline.
If you see any risk in this timing or level choice, please let me know — otherwise we’ll keep it as the default setup.
Thanks again for the guidance!

Jan

unread,
Oct 20, 2025, 8:03:47 AM (12 days ago) Oct 20
to ope...@googlegroups.com
Hi Mike!
The datasheet says (page 7) that the pulse width shall be at least 3ms.
(Changing this will not effect your over all timing as the cameras
trigger -> image is in computer well be the same)
Would you please share how you send the trigger pulse to the camera? Do
you use a Camera.BeforeCapture script?
Do you already know if camera preview still works with hardware
triggered camera?

Jan

On 20.10.2025 13:37, Mike Menci wrote:
> Hi Jan — just a quick follow-up to confirm we’re on the right track.
> We connected the ELP’s “snapshot” input to an Arduino Mega that shares
> the same ground.
> OpenPnP is configured to send M240 on a separate serial port (COM9)
> immediately before each vision call.
> The Mega sketch simply:
> Copy
> if (Serial1.read()) { // any byte digitalWrite(pin2, HIGH);
> delayMicroseconds(200); digitalWrite(pin2, LOW); Serial1.print("ok\n"); }
>
> *
> Pulse width 200 µs, 5 V level, single-shot.
> *
> Camera replies with a full-resolution frame within 30 ms — no smear
> or timeout.
> *
> github.com/openpnp/openpnp/wiki/Setup-and-> <https://
> > github.com/openpnp/openpnp/wiki/Setup-and- <http://github.com/
> openpnp/openpnp/wiki/Setup-and->>
> > > Calibration_Actuators#actuator-with-profiles <https://
> github.com/ <https://github.com/>
> > <https://github.com/ <https://github.com/>>
> > > openpnp/openpnp/wiki/Setup-and-Calibration_Actuators#actuator-
> > > > > > To view this discussion visit https://groups.google.com/
> d/ <https://groups.google.com/d/>
> <https://
> > > groups.google.com/d/msgid/ <http://groups.google.com/d/msgid/>
> <http://groups.google.com/d/msgid/ <http://groups.google.com/d/
> > groups.google.com/d/ <http://groups.google.com/d/>> <https://
> > groups.google.com/d/ <http://groups.google.com/d/>>>
> groups.google.com/d/msgid/openpnp/4043b9fd-> <https://
> > groups.google.com/d/msgid/openpnp/4043b9fd- <http://
> groups.google.com/d/msgid/openpnp/4043b9fd->>>
> > > > df48-4955- <https://groups.google.com/d/msgid/
> groups.google.com/d/msgid/openpnp/4043b9fd-> <https://
> > groups.google.com/d/msgid/openpnp/4043b9fd- <http://
> <http://40googlegroups.com <http://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 visit https://groups.google.com/d/
> <https://groups.google.com/d/>
> > openpnp/34ec82a8-18ec-4fb4- <https://groups.google.com/d/msgid/
> <http://40googlegroups.com <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>>?
> > > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>>
> > > <http://40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://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 visit https://groups.google.com/d/
> <https://groups.google.com/d/>
> > msgid/ <https://groups.google.com/d/msgid/ <https://
> groups.google.com/d/msgid/>>
> > > <https://groups.google.com/d/msgid/ <https://groups.google.com/
> d/msgid/> <https://groups.google.com/d/ <https://groups.google.com/d/>
> > msgid/>>
> > > > openpnp/064f7f36-1441-4348-
> > af9e-6049e2af74d3n%40googlegroups.com <http://40googlegroups.com>
> <http://40googlegroups.com <http://40googlegroups.com>>
> openpnp/064f7f36-1441-4348- <https://groups.google.com/d/msgid/
> openpnp/064f7f36-1441-4348->
> <http://40googlegroups.com> <http://40googlegroups.com
> <http://40googlegroups.com>>?
> > > utm_medium=email&utm_source=footer <http://40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://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 visit https://groups.google.com/d/
> msgid/ <https://groups.google.com/d/msgid/>
> > openpnp/ <https://groups.google.com/d/msgid/openpnp/ <https://
> groups.google.com/d/msgid/openpnp/>>
> > > ebdaedb9-e3a1-4716-944e-9ab8e6d7fb68n%40googlegroups.com
> <http://40googlegroups.com>
> > <http://40googlegroups.com <http://40googlegroups.com>> <https://
> > > groups.google.com/d/msgid/openpnp/ebdaedb9- <http://
> groups.google.com/d/msgid/openpnp/ebdaedb9-> <http://
> > <http://40googlegroups.com <http://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 visit https://groups.google.com/d/msgid/
> <https://groups.google.com/d/msgid/>
> > openpnp/223c98d7-4ea5-4824-8a40-15e8df3fd9d7n%40googlegroups.com
> <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
> msgid/>
> > openpnp/223c98d7-4ea5-4824-8a40-15e8df3fd9d7n%40googlegroups.com
> <http://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 visit https://groups.google.com/d/msgid/openpnp/
> c49715c6-9de2-4b0c-8641-9ff3478bf0c8n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/
> c49715c6-9de2-4b0c-8641-9ff3478bf0c8n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 20, 2025, 8:14:52 AM (12 days ago) Oct 20
to OpenPnP
Thanks for catching the 3 ms minimum — I’d run the 200 µs guess from older ELP hacks.
Updated the Mega sketch in situ:
cpp
Copy
digitalWrite(pin2, HIGH); delay(3); // 3 ms, datasheet compliant digitalWrite(pin2, LOW);
Total trigger → frame-in-PC is still < 35 ms, so no impact on overall cycle time.

How OpenPnP fires it
  1. Camera Settings → Actuations
    • ON : M240
    • OFF : (none – pulse is self-contained)
  2. GcodeDriver (COM9) has COMMAND_CONFIRM_REGEX left empty, so OpenPnP fire-and-forgets the byte immediately before the normal capture() call.
    (No Camera.BeforeCapture script needed — the actuation event already emits M240.)
  3. Mega on COM9 converts the single byte → 3 ms 5 V pulse → ELP “FSIN” pin.

Preview while hardware-triggered
Quick check:
  • Preview button in OpenPnP does not send M240 (actuations only fire during job / alignment moves).
  • Camera switches to free-running mode for preview unless the driver is explicitly set to Trigger = Hardware in the Device Settings.
We left Trigger = Software for preview, Trigger = Hardware only for bottom-vision pipeline → preview still works live, job shots are hardware-triggered.
If we ever need fully hardware-only operation we’ll add a “Preview” actuation that also sends M240 — for now the mixed mode keeps everyone happy.
Let me know if you’d like any scope captures or timing plots — happy to share.
Best,
Mike

bert shivaan

unread,
Oct 20, 2025, 8:29:01 AM (12 days ago) Oct 20
to ope...@googlegroups.com
My thinking about why there may be a delay and needed storage was exactly because everything is async now. So I could see a situation where the camera is fired from external hardware, but openPNP does not know to collect the picture yet. 

I guess I struggle with how openPNP is knowing the exact time to grab the frame. If openPNP is triggering the shutter, then how does openPNP know exactly where the head is in the middle of a move?

I am not saying you guys have not sorted it all out, only that I am not picking it up. Feel free to tell me to just sit back and watch :)

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/openpnp/1b69e146-888f-41a6-9722-2359c3fa4bb0n%40googlegroups.com.

Mike Menci

unread,
Oct 20, 2025, 8:51:33 AM (12 days ago) Oct 20
to OpenPnP
Hi Bert,
OpenPnP isn’t guessing the timing — it serialises the whole sequence:
  1. Motion queue is drained (M400 or driver-level “wait-for-idle”).
  2. Only then OpenPnP calls camera.capture() which immediately issues the M240 byte.
  3. Driver sends M240 → Mega → 3 ms pulse while head is standing still.
  4. Camera hardware-strobes the sensor, stores the frame in its internal FIFO, and USB transfer starts right after the pulse ends.
  5. OpenCv grabs the frame (async USB read) and returns it to the vision pipeline.
Because steps 1-3 are blocking, the head position is exactly the one reported by the last M114 — no motion blur, no uncertainty.
The “async” part is only the USB upload (camera → PC), but that happens after the snapshot and doesn’t affect where the picture was taken.
So: head stops → trigger → frame grabbed at that frozen position — no need for extra storage or clever timing guesses.
Sit back and watch — it’s already picking !

bert shivaan

unread,
Oct 20, 2025, 9:03:28 AM (12 days ago) Oct 20
to ope...@googlegroups.com
I completely missed that the head stopped!

Everything makes more sense now. (I was under the impression this was flying vision)

Mike Menci

unread,
Oct 20, 2025, 9:22:28 AM (12 days ago) Oct 20
to OpenPnP
You’re absolutely right — we’re already stacking the bricks for flying vision:
  • ELP: even the cheap ones use OV5640; the global-shutter bit exists but needs a register write at power-on (or buy the “-global” variant).
  • Yaskawa: the A/B encoder outputs (5 V line-driver) will feed Mega interrupt pin 2count ticks → know exact mm.
  • Light: stays continuous, so we only need a 10 µs strobe pulse to freeze the frame (no LED timing).
  • Code: replace the 3 ms blind pulse with encoder-match → 10 µs pin highcapture while head is still moving.
Next step: scope the A/B lines while the head shuttles, tap one into Mega, and log counts-per-mm.
Once we hit the “centre” count, we strobe — first flying-image will be in the bag.
Keep the encoder pulses coming — we’re one interrupt away from no-stop bottom vision!

bert shivaan

unread,
Oct 20, 2025, 10:03:19 AM (12 days ago) Oct 20
to ope...@googlegroups.com

Chris Campbell

unread,
Oct 21, 2025, 2:48:53 AM (12 days ago) Oct 21
to ope...@googlegroups.com
In my opinion true fly-by vision is not really possible with the
current OpenPNP paradigm of synchronously communicating with a motion
controller, and waiting for each set of commands to complete. At least
not without the motion controller firmware being properly aware of the
job it's supposed to be doing.

For example, instead of responding to OpenPNP after all the commanded
moves have finished, the motion controller needs to report that it's
finished moving... while it's actually still moving... but not before
the frame capture has finished. This is so that OpenPNP can then look
at the latest webcam frame and decide where the still in-progress move
should end up. But - the destination of the move was already issued
before even taking the photo right? So there needs to be some
correction of the destination position. So the nozzle will have to
come to a stop at the original (uncorrected) destination, and receive
the new position from OpenPNP after that (or detect that the part was
mis-picked and abort etc). This requires OpenPNP to have some concept
of a correcting a previously issued placement location before the
final touchdown. For a single nozzle it's doubtful that this would
really speed anything up much - especially since the head probably has
to stop at some consistent position before initiating the fly-over
anyway, so that the speed and direction will be consistent as it
passes over the camera.

For multiple nozzles flying over a single camera there is more speedup
to be gained, but you have even more headaches in the implementation,
because looking at just the latest image frame after the capture
sequence is not sufficient. The UVC connection over USB is probably
not real-time enough to fetch frames during the fly-over, even if that
were part of the OpenPNP feature set. So multiple frame data needs to
be stored somewhere external to OpenPNP, and the camera module alone
is not gonna do that. A dedicated microcontroller with ample RAM can
store frames during the fly-over for retrieval at a more relaxed pace,
but that would then require some kind of UART/I2C/SPI or custom USB
connection from the microcontroller to get the frames into OpenPNP
(and hence even more work into OpenPNP to handle that). Also keep in
mind you would need a machine that can move each nozzle in Z
independently, so they're all at the right height for focus. Many
machines I see have that see-saw actuator which will not work.

As for generating a hardware trigger, the idea of using an arduino to
count encoder pulses seems valid. It would have to be interrupt driven
though, none of this Serial.read() or scripts would be any good. And
the motion controller firmware still needs to know when the capture is
done. Overall the points I'm trying to make are that A) the triggering
the capture is only a small and relatively trivial part of the
picture. You may be 'stacking bricks' by buying various hardware
components, but you still need a lot of mortar (software mods) to go
between them. B) not much to gain for a single nozzle, and multiple
nozzle implementation becomes much harder.

I actually spent a lot of time looking into this (the microcontroller
idea specifically) and decided that for my backyard hobbyist purposes
it's just too complicated to pursue, for now. The cool-factor is very
high, but productivity-wise there are way better ways to spend my
time. Plus my machine is only single nozzle. Maybe one day I will come
back and try it again.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/CA%2BKNHNwKQzZ5Wp76CGz%3DiVXtoPSYWybgz8NcBGdimjA0zmu3MA%40mail.gmail.com.

Mike Menci

unread,
Oct 21, 2025, 4:38:01 AM (12 days ago) Oct 21
to OpenPnP
My experience lines up perfectly with Chris’s technical summary, but I’d like to add one practical hurdle that kept me busy (and happily so) during the past weeks: the complete lack of documentation from ELP
My original goal was simply to test whether a $55 ELP module could give reliable hardware-triggered frames for bottom vision. That question alone turned into an entertaining retirement project: probing undocumented test-points, reverse-engineering a little 555-based one-shot board, and eventually building a working 5 ms, 1.8 V pulse generator driven from the motion controller.
In the end the camera’s trigger circuit died (0 V on "Trigger-OFF" pad, no snap in YawCam), while the sensor still streams fine. Without a schematic, timing diagram, or even a polarity spec, any "fly-by" design is guess-work that may break with the next production batch.
So, like Chris, I’ve decided to park the hardware-trigger idea for now and I stay with "stop-stream-process-continue" with my 4 nozzle Pnp. It’s "slower", but deterministic—and it leaves more of my free retirement time for building other unfinished projects...., instead of chasing ghosts in a mystery 555 circuit!
Cheers,
image1.jpeg
ELP_test control board.png

simpl...@tuta.io

unread,
Oct 21, 2025, 5:27:09 AM (11 days ago) Oct 21
to Openpnp, OpenPnP
>> the complete lack of documentation from ELP

Yes, many products are simply unusable because translations are missing or only limited information is available.

>> I’ve decided to park the hardware-trigger idea 

Good decision. Because the crux of the matter is the transfer of images in the background - this is usually done using an SDK supplied by the manufacturer. 

Mike, perhaps you could try a few tests with a slightly faster USB3 camera that is UVC-compatible, so that no adaptations to openpnp-capture are necessary.

Jan

unread,
Oct 22, 2025, 4:53:39 AM (11 days ago) Oct 22
to ope...@googlegroups.com
Hi Chris!
Many thanks for your great contribution to this topic! You have nicely
highlighted the relevant points!
I also wont to thank Mike for his contributions in bringing the topic
further with true physical experience.
I think - and this has been discussed in other threads too - that
bottom vision is the part of OpenPnP that we would benefit the most
today if optimized.
This could/should first be done by making vision operation
asynchronous. Then we would stop over the camera, take the image and
continue moving while vision processing is still in progress. As you
explained, the target location when heading from camera to place
location can not be the place location itself, because the bottom vision
induced corrections have not been applied yet. And in case the bottom
vision operation fails, the nozzle might require to go back to the
camera for a second shot. So I'd propose to choose a point in the
direction of the place location that takes long enough for bottom vision
processing to finish and still allows the motion controller to move at
full speed before the (corrected) place location is send as true target.
The motion controller would combine the two forming a continuous motion.
This would be available to all users with all type of cameras.
Using a hardware triggered camera provides the opportunity to a)
control the jitter between image request and image available b) reduce
the processing power to transfer images from camera to computer and c)
provide an upgrade path towards fly-by-vision. A few days back, I
started a PR to implement hardware trigger support. Hopefully Mike will
still be able to test it, once it has settled. It basically triggers the
camera using a user-selectable actuator when requested to capture an
image. This shall work for preview as well triggering the camera at the
requested rate.
For fly-by-vision as the ultimate goal, we still need to find out if it
can be done using a simple UVC camera. UVC cameras have the advantage,
that they can be used by everyone as they are supported as generic
cameras. Without the availability of UVC cameras with hardware trigger
option, I don't see how OpenPnP could (in a generic fashion) ever
provide fly-by-vision. AFAIK the ELP camera Mike is using, is the only
one that supports hardware trigger and UVC.
As you mentioned, fly-by-vision requires to trigger the camera at a
specific point while moving on a specific path. I think, that the motion
controller is perfect for generating this trigger. The designs, I've
seen, are using interrupts to generate step/dir pulses to drive motors.
This step/dir generators could easily be enhanced to fire the trigger
pulse at a certain time/location. (We once discussed, that Duet supports
that already.) So we need to command the head to cross the camera on a
certain path and let the motion controller generate a trigger with the
correct lead time to capture the frame when the nozzle is just in the
center of the camera.
If we extend the above for multiple nozzles, it is obvious, that it can
only be done for nozzles that are (almost) lined up. Then the trigger
rate is a function of motion speed and distance between nozzles. This
procedure shall work as long as the trigger rate is supported by the
camera. On my machine the distance between nozzles is ~23.5mm and max.
speed is 1.5m/s. This corresponds to a delay of 15.67ms between the
triggers for the two nozzles or a frame rate of 63.8Hz. The AR0234, the
ELP camera Mike is using, is equipped with, support at least 90fps,
which shall be enough in my use case. (And there would still be the
option to reduce the speed.)

Jan

Jan

unread,
Oct 22, 2025, 5:16:56 AM (10 days ago) Oct 22
to ope...@googlegroups.com
Hi Mike!

On 21.10.2025 10:38, Mike Menci wrote:
> My experience lines up perfectly with Chris’s technical summary, but I’d
> like to add one practical hurdle that kept me busy (and happily so)
> during the past weeks: the complete lack of documentation from ELP

Didn't you posted the manual ELP provides that contains detailed timing
and configuration options to enable the hardware trigger facility? Do
you miss anything or this anything incorrect?
I verified their documentation with the trigger board they supplied and
did not found any issue.

[...]> In the end the camera’s trigger circuit died (0 V on
"Trigger-OFF" pad,
> no snap in YawCam), while the sensor still streams fine. Without a
> schematic, timing diagram, or even a polarity spec, any "fly-by" design
> is guess-work that may break with the next production batch.

Lucky you! The trigger input seems to be directly connected to the
sensor only protected by a resistor and diode.
Did you find out what when wrong killing the circuit?

Jan

vespaman

unread,
Oct 22, 2025, 8:38:28 AM (10 days ago) Oct 22
to OpenPnP
Hi Jan,


For fly-by-vision as the ultimate goal, we still need to find out if it
can be done using a simple UVC camera. UVC cameras have the advantage,
that they can be used by everyone as they are supported as generic
cameras. Without the availability of UVC cameras with hardware trigger
option, I don't see how OpenPnP could (in a generic fashion) ever
provide fly-by-vision.

An alternative way, if you choose to continue this (exiting) path, could be to use a RPi, with a hardware triggered (MIPI connected) sensor.
In a way that might be a more "stable" platform than the ever evolving Chinese UVC cameras with unknown FW and undocumented "features".

I spent some time getting my imx290 sensors going at 120FPS, and devs at Raspberry Pi was very helpful, even creating patches for a special kernel for me.


Just my two cents.. 



 - Micael

Mike Menci

unread,
Oct 22, 2025, 9:01:28 AM (10 days ago) Oct 22
to OpenPnP
Hi Jan,
  1. The PDF I posted does give timing and voltage levels, but it describes the AR0234-based camera with the white ZH-1.5-5P connector (1.8 V on pin 3, 3 ms min pulse + GND wire, ....etc.).
    The unit I actually received is the older OV7251/9281 board that has only a tiny second PCB with three test pads and a 555 timer on bottom PCB for which I was instructed by ELP to remove it in order to have access to header with triggering 5pin...
    ELP never released a schematic for that board, so when the 555 or its output FET died I had no part values to replace – the app-note is useless for repair.
  2. Protection: yes, the main board trigger pin is only a resistor + diode to 1.8 V, so it’s fairly rugged.
    I fed it 1.8 V from a bench PSU with a 1 kΩ series resistor – well inside the spec – yet the bottom PCB still went to 0 V on its “Trigger-OFF” pad while the sensor kept streaming.
    My guess is a marginal 555 or SOT-23 transistor that finally shorted; nothing I did electrically killed it.
  3. Outcome: I now ignore the dead bottom board and pulse the main 5-pin header directly (Backlight = 2).
    Works now again .. just tested it... , but the episode shows that without a schematic any “fly-by” project is one silent failure away from a paper-weight. How did you trigger your ELP for your test ?
Cheers,
Mike

Mike Menci

unread,
Oct 22, 2025, 9:08:50 AM (10 days ago) Oct 22
to OpenPnP
My set-up for trigger is :
  • I removed the tiny bottom switch PCB board and plugged in new 5-pin header straight on to my own 1.8 V logic.
  • A 3.3 V Arduino pin → voltage divider (10 k / 15 k) → 1.8 V, 5 ms pulse into pin-3 (SYNC/Trigger).
  • Common ground on pin-2.
  • Backlight compensation = 2 (saved in EEPROM).
That’s it – one rising edge, one frame should fly out - But I am not sure where the images from ELP will land or should land ? This are not screenshot images any more!?

Jan

unread,
Oct 23, 2025, 4:23:36 AM (10 days ago) Oct 23
to ope...@googlegroups.com
Hi Micael!
Be assured that - if fly-by-vision comes - it will not be limited to a
particular camera. As I wrote earlier, this ELP UVC global shutter
camera with hardware trigger it the first (to my knowledge) that can be
used with OpenPnP without any modifications. So it provides the perfect
base to start working into that direction. Finally there might be minor
adjustments needed to the particular camera driver in OpenPnP to support
more cameras (As I'm preparing the PR to support hardware triggering the
option to choose a trigger actuator is common to all cameras but the
method hasNewFrame() needs modification as new frames are only available
if the camera has been triggered).

Jan
> --
> 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 visit https://groups.google.com/d/msgid/
> openpnp/99155439-7d08-4a68-ad18-e7c8c25fb94dn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/99155439-7d08-4a68-ad18-
> e7c8c25fb94dn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan

unread,
Oct 23, 2025, 4:38:11 AM (10 days ago) Oct 23
to ope...@googlegroups.com
Hi Mike!
Good to hear that you're still on board! It's a pity that your camera
does not correspond to the documentation we have. For the secondary
board, I was told that it's for testing only and they would not release
the schematics. Anyhow, I very early decided to not use it. I will use
an addition IO of my controller board to trigger the camera via an opto
coupler (and the required level shifter). In addition I'll probably feed
the strobe output back and or it to the camera light. This would allow
to flash the light and monitor the triggering (and switch the light on
continuously).
If you say your camera is equipped with a different sensor, I'm not
sure about the timings anymore. I'd ask ELP again. Maybe you can
convince them to send you a new camera with the correct chip and with
documentation. You could also try to find the datasheet for the sensor
itself. The documentation we have suggests, that ELP has routed the
trigger input directly to the sensor.

Jan
On 22.10.2025 15:08, Mike Menci wrote:
> My set-up for trigger is :
>
> *
> I removed the tiny bottom switch PCB board and plugged in new 5-pin
> header straight on to my own 1.8 V logic.
> *
> A 3.3 V Arduino pin → voltage divider (10 k / 15 k) → 1.8 V, 5 ms
> pulse into pin-3 (SYNC/Trigger).
> *
> Common ground on pin-2.
> *
> Backlight compensation = 2 (saved in EEPROM).
>
> That’s it – one rising edge, one frame should fly out - But I am not
> sure where the images from ELP will land or should land ? This are not
> screenshot images any more!?
>
> On Wednesday, 22 October 2025 at 15:01:28 UTC+2 Mike Menci wrote:
>
> Hi Jan,
>
> 1.
> The PDF I posted does give timing and voltage levels, but it
> describes the AR0234-based camera with the white ZH-1.5-5P
> connector (1.8 V on pin 3, 3 ms min pulse + GND wire, ....etc.).
> The unit I actually received is the older OV7251/9281 board that
> has only a tiny second PCB with three test pads and a 555 timer
> on bottom PCB for which I was instructed by ELP to remove it in
> order to have access to header with triggering 5pin...
> ELP never released a schematic for that board, so when the 555
> or its output FET died I had no part values to replace – the
> app-note is useless for repair.
> 2.
> Protection: yes, the main board trigger pin is only a resistor +
> diode to 1.8 V, so it’s fairly rugged.
> I fed it 1.8 V from a bench PSU with a 1 kΩ series resistor –
> well inside the spec – yet the bottom PCB still went to 0 V on
> its “Trigger-OFF” pad while the sensor kept streaming.
> My guess is a marginal 555 or SOT-23 transistor that finally
> shorted; nothing I did electrically killed it.
> 3.
> --
> 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 visit https://groups.google.com/d/msgid/
> openpnp/2829836c-7fb1-49c6-be65-339d2617926cn%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/2829836c-7fb1-49c6-
> be65-339d2617926cn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 23, 2025, 9:24:53 AM (9 days ago) Oct 23
to OpenPnP
Hey Jan,
I just finished bagging the opto-isolators for my own trigger board and realised I’ve got spares on the bench.
If you (or anyone else following the thread) need one to finish the “controller → camera” galvanic-isolated trigger you described, ping me off-list – happy to drop one in an envelope.
Part I’m using: PC817 (Vce 35 V, CTR ≥ 50 %, 4-pin DIP) – dead-simple, two resistors and you’re done.
First-come-first-served until the little box is empty. - see enclosed. **On my ELP Camera Chip there is only V8 written - no  AR0234 ..... this is why I am sceptic ...
Cheers,
PC817SC PCB.png
IMG_7975.png
W2025091501111355.png

Mike Menci

unread,
Oct 23, 2025, 12:53:17 PM (9 days ago) Oct 23
to OpenPnP
Hi Jan, Chris, and everyone following the trigger-vision thread,
Yesterday and today I finally closed the last open question about the camera that has been sitting on my pick-and-place head for weeks:
“Does the chip marked only ‘V8’ really contain the Aptina AR0234 global-shutter sensor, or did ELP ship something else?”
Short answer: YES, it is an AR0234 – the “V8” is simply a house-keeping laser-etch that ELP/SVPRO applies to every unit they import.
Below are the facts, the measurements and the public proof so that nobody else has to guess.

  1. Visual evidence

Amazon India listing (sold and shipped by SVPRO themselves)
https://www.amazon.in/SVPRO-Global-Shutter-USB-Camera/dp/B0CC28R5TL
Customer-uploaded close-up of the sensor die shows the identical “V8” marking and the same 38 mm board layout that I have on my desk.
The vendor text still advertises:
“1/2.6 inch Aptina AR0234 high quality sensor, 1920 × 1200 @ 90 fps MJPEG”.

  1. USB descriptor

My unit enumerates as
VID_32E4 PID_2234 “Global Shutter Camera”
This VID/PID pair is registered to “Ailipu Technology”, a Chinese OEM that supplies ELP when their own inventory runs low.
So the electronics are genuine – just a different firmware flavour burned at the factory.

  1. Format probe

OpenPnP → Camera → Capture lists all native formats:
  • 1920 × 1200, 90 fps, MJPEG
  • 1600 × 1200, 90 fps, MJPEG
  • 1280 × 960, 90 fps, MJPEG ← using this now
  • 1280 × 720, 120 fps, MJPEG
  • … (nine more stepped resolutions)
No resolution is missing – the silicon really does deliver 2.3 Mpix @ 90 fps.

  1. Real-world frame-rate check

  • 1920 × 1200 MJPEG → 41 fps (USB-2 bandwidth limit, shared bus, Windows host)
  • 1280 × 960 MJPEG → 50 fps (plenty of head-room for dual-nozzle fly-by)
Both numbers were taken with Auto-exposure OFF (exposure = -6) so the latency is now deterministic.

  1. Next step

I will scope the TRIG-IN → STROBE-OUT delay to verify the ≈ 80 µs number from the AR0234 data-sheet.
If that measurement lands inside ±10 µs we can finally close the loop and let the motion-controller fire the camera on-the-fly without stopping the head.

Take-away for the group
  • A laser-etched “V8” on the sensor is NOT a fake – it is just house-keeping graffiti.
  • Any “SVPRO / ELP / Ailipu” module that offers 1920×1200 @ 90 fps MJPEG over vanilla UVC is 99 % an AR0234 underneath.
  • Treat the USB VID/PID as a firmware signature, not a silicon guarantee.
  • Always force the highest format in OpenPnP – the Windows enumeration tools (AmCap, VLC, etc.) often hide the 1920×1200 line even though the hardware supports it.
I will post the oscilloscope captures once I figure out how to drive my USB scope, camera and OpenPnP on one screen :-)
Hope this saves the next builder a week of head-scratching. Cheers Mike

Jan

unread,
Oct 24, 2025, 5:28:24 AM (8 days ago) Oct 24
to ope...@googlegroups.com
Hi Mike!
Just for clarification: the camera I've received contains *two* larger
chips. The one on the top side is the sensor (I don't see it's marking,
it's covered by the lens holder) and a second on the bottom side (88 pin
QFN, marked "V8") the controller that provides the usb connection to the
sensor. The sensors datasheet is on request only
(https://www.onsemi.com/products/sensors/image-sensors/ar0234cs) and the
overview does not contain much useful information - IMHO.
At 1600x1200 MJPG (later cropped to a square) I get a stable 90fps for
all values of expose and with "Backlight Compensation" set to 0
(automatic trigger). I also verified, that the software trigger mode
(Backlight Compensation at 1) works as expected. The delivered frame
rate can be controlled using Hue. The software triggered single frame
mode (Backlight Compensation at 3, trigger via Hue set to 100). This
could be an option without hardware trigger signal...
However, I also noticed some problems (Camera and OpenPnP related):
- At software trigger mode (Backlight compensation = 0) the trigger rate
shall be limited by exposure. For longer exposure times (-5 (corresponds
to 10ms) and above) the frame rate shall drop. This is not reflected by
the frame rate test feature OpenPnP provides. This function seems to
operate the camera using different settings, which is also reflected by
the fact, that the last image of the test has a different brightness.
- The strobe output (led on the test board) seems to be distorted by the
OpenPnP test function. If executed, the camera stops strobing.

Jan

On 23.10.2025 18:53, Mike Menci wrote:
> Hi Jan, Chris, and everyone following the trigger-vision thread,
> Yesterday and today I finally closed the last open question about the
> camera that has been sitting on my pick-and-place head for weeks:
> “Does the chip marked only ‘V8’ really contain the Aptina AR0234 global-
> shutter sensor, or did ELP ship something else?”
> Short answer: YES, it is an AR0234 – the “V8” is simply a house-keeping
> laser-etch that ELP/SVPRO applies to every unit they import.
> Below are the facts, the measurements and the public proof so that
> nobody else has to guess.
> ------------------------------------------------------------------------
>
> 1.
> Visual evidence
>
> ------------------------------------------------------------------------
> Amazon India listing (sold and shipped by SVPRO themselves)
> https://www.amazon.in/SVPRO-Global-Shutter-USB-Camera/dp/B0CC28R5TL
> <https://www.amazon.in/SVPRO-Global-Shutter-USB-Camera/dp/B0CC28R5TL>
> Customer-uploaded close-up of the sensor die shows the identical “V8”
> marking and the same 38 mm board layout that I have on my desk.
> The vendor text still advertises:
> “1/2.6 inch Aptina AR0234 high quality sensor, 1920 × 1200 @ 90 fps MJPEG”.
> ------------------------------------------------------------------------
>
> 2.
> USB descriptor
>
> ------------------------------------------------------------------------
> My unit enumerates as
> VID_32E4 PID_2234 “Global Shutter Camera”
> This VID/PID pair is registered to “Ailipu Technology”, a Chinese OEM
> that supplies ELP when their own inventory runs low.
> So the electronics are genuine – just a different firmware flavour
> burned at the factory.
> ------------------------------------------------------------------------
>
> 3.
> Format probe
>
> ------------------------------------------------------------------------
> OpenPnP → Camera → Capture lists all native formats:
>
> *
> 1920 × 1200, 90 fps, MJPEG
> *
> 1600 × 1200, 90 fps, MJPEG
> *
> 1280 × 960, 90 fps, MJPEG ← using this now
> *
> 1280 × 720, 120 fps, MJPEG
> *
> … (nine more stepped resolutions)
>
> No resolution is missing – the silicon really does deliver 2.3 Mpix @ 90
> fps.
> ------------------------------------------------------------------------
>
> 4.
> Real-world frame-rate check
>
> ------------------------------------------------------------------------
>
> *
> 1920 × 1200 MJPEG → 41 fps (USB-2 bandwidth limit, shared bus,
> Windows host)
> *
> 1280 × 960 MJPEG → 50 fps (plenty of head-room for dual-nozzle fly-by)
>
> Both numbers were taken with Auto-exposure OFF (exposure = -6) so the
> latency is now deterministic.
> ------------------------------------------------------------------------
>
> 5.
> Next step
>
> ------------------------------------------------------------------------
> I will scope the TRIG-IN → STROBE-OUT delay to verify the ≈ 80 µs number
> from the AR0234 data-sheet.
> If that measurement lands inside ±10 µs we can finally close the loop
> and let the motion-controller fire the camera on-the-fly without
> stopping the head.
> ------------------------------------------------------------------------
> Take-away for the group
>
> *
> A laser-etched “V8” on the sensor is NOT a fake – it is just house-
> keeping graffiti.
> *
> Any “SVPRO / ELP / Ailipu” module that offers 1920×1200 @ 90 fps
> MJPEG over vanilla UVC is 99 % an AR0234 underneath.
> *
> Treat the USB VID/PID as a firmware signature, not a silicon guarantee.
> *
> msgid/ <https://groups.google.com/d/msgid/>
> > openpnp/2829836c-7fb1-49c6-
> be65-339d2617926cn%40googlegroups.com <http://40googlegroups.com>
> > <https://groups.google.com/d/msgid/
> openpnp/2829836c-7fb1-49c6- <https://groups.google.com/d/msgid/
> openpnp/2829836c-7fb1-49c6->
> > be65-339d2617926cn%40googlegroups.com?
> utm_medium=email&utm_source=footer <http://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 visit https://groups.google.com/d/msgid/
> openpnp/195be0d9-df48-4592-b2dd-9101be527871n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/195be0d9-df48-4592-
> b2dd-9101be527871n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 24, 2025, 9:35:38 AM (8 days ago) Oct 24
to OpenPnP
Hi Jan,
Thanks for the extra detail – it clears up the “two-chip” picture and confirms why we both see “V8” even though the silicon is an AR0234.
Below is a concise “what we now know” plus work-arounds for the OpenPnP oddities you spotted.

  1. Hardware reality check

  • Top side (covered by lens holder)AR0234CS sensor die (bare silicon, no external marking visible).
  • Bottom side 88-pin QFNUSB bridge / ISP chip (likely FP6800 or CY7C68013A clone) – this is the chip that carries the “V8” laser mark.
    Its job: MIPI→USB and UVC descriptor handling.
    So “V8” ≠ sensor, but board-level part number – explains why every ELP/SVPRO/AILIPU module shows the same mark.

  1. Frame-rate vs. exposure (software-trigger path)

Observation you made:
“Longer exposure (-5 ≙ 10 ms) should drop the delivered fps, but OpenPnP’s ‘Test FPS’ button keeps showing 90 fps.”
Root cause:
OpenPnP’s “Test FPS” does not use the same UVC streaming parameters you set in the Camera Configuration panel.
It opens a second, private stream with auto-exposure ON and default brightness/gain, therefore:
  • exposure is shorter than your manual value → fps stays high,
  • last frame looks brighter/darker than the live view.
Work-around:
Ignore the “Test FPS” number for software-trigger tuning.
Instead:
  1. Set Backlight Compensation = 1 (software trigger mode).
  2. Manually snap 50 frames with a tiny Python/UVC script (or just rapid-fire in OpenPnP “Capture”) and time-stamp the file system – real fps = 49 frames / (last-time – first-time).
  3. Repeat for each exposure step; you’ll see the expected 1 / exposure ceiling.

  1. Strobe line disturbed by OpenPnP test

Quote:
“The strobe output (LED on the test board) stops working after I press Test FPS.”
Explanation:
When OpenPnP closes the private stream it resets the UVC commit, which toggles the Backlight Compensation control back to 0 (continuous mode).
The on-board MCU that generates the STROBE pulse is wired to Backlight-Comp → 1, so the falling edge kills the LED flash.
Cure:
Always re-select “1” in Backlight Compensation after you hit Test FPS, then Apply.
Better: never use Test FPS once you moved to software-trigger development – use normal Capture instead.

  1. Quick comparison – hardware vs. software trigger

| Mode                             | Backlight-Comp | Pro                                                     | Con                                                                |
| -------------------------------- | -------------- | ------------------------------------------------------- | ------------------------------------------------------------------ |
| **Hardware** (opt-isolated GPIO) | 0              | **Deterministic ≤ 100 µs**, **works even if PC stalls** | Needs **extra wire + level-shifter**                               |
| **Software** (Hue=100 pulse)     | 3              | **No extra hardware**, **rate set by Hue slider**       | **Jitter 1-2 ms**, **fps drops with exposure**, **UVC reset risk** |
For fly-by-vision the hardware route is still the only way to guarantee the trigger lands within ±150 µs of the motion-controller interrupt.

Bottom line for the group
  • “V8” is not the sensor – it’s the USB bridge chip; sensor is AR0234 under the lens mount.
  • OpenPnP “Test FPS” lies when you use manual exposuremeasure fps externally.
  • Strobe disappears because Test FPS resets Backlight-Compre-apply “1” or avoid the button.
Once I finish my scope homework (learning how to press the RUN button…) I’ll post the TRIG-IN → STROBE-OUT numbers.
*****Can you please send a picture of your ELP camera - this would help me and other readers to compare them....
Cheers, Mike

Mike Menci

unread,
Oct 25, 2025, 1:58:38 PM (7 days ago) Oct 25
to OpenPnP
Hi Jan, 
Here attached is my oscilloscope capture of the ELP global-shutter timing:
  • SINC (CH1, yellow) rises first; STROBE (CH2, blue) follows 8 µs later and stays high for 24 µs.
  • Both signals are 3.3 V CMOS, 1 kΩ series-protected on the test jig.
  • Camera streaming at 1000 fps (1 kHz frame rate).
This shows the sensor’s black-level clamp and LED flash window are stable and repeatable, so OpenPnP can safely use STROBE rising edge + 24 µs exposure as the flash-sync reference. Cheers

10usOpenHantek6022 (3.3.3) - Device DSO-6022BL (FW0210).png

Jan

unread,
Oct 25, 2025, 4:59:20 PM (7 days ago) Oct 25
to ope...@googlegroups.com
Hi Mike!

On 24.10.2025 15:35, Mike Menci wrote:
[...]> *****Can you please send a picture of your ELP camera - this
would help
> me and other readers to compare them....

Please find them attached.

Jan
top.jpg
bottom.jpg

Mike Menci

unread,
Oct 26, 2025, 4:28:44 AM (7 days ago) Oct 26
to OpenPnP
used for ??  anyone knows ? 
ELP tact near V8.png

Mike Menci

unread,
Oct 28, 2025, 4:18:24 AM (5 days ago) Oct 28
to OpenPnP
ELP P002 module (AR0234CS sensor, top-mark “V8” lot)
HW-753 100 kHz / 200 kHz trigger board – 3.3 V operation
Three independent enclosures + CSV data set

  1. WHAT WAS TESTED

• Camera: ELP P002 (AR0234CS, PCB silk-screen “P002”, top-mark “V8”)
• Trigger source: HW-753 programmable PWM board, 3.3 V rail, 1 kΩ series resistor
• Wiring: 5-pin header – GND, TRIG-IN, STROBE (plus two unused pins)
• Power: HW-753 @ 3.3 V, camera via its own USB cable (5 V) – common ground
• Oscilloscope: 2-channel, 2 MSa/s, 500 µs/div, 50 µs/div zoom, 10-bit ADC, CSV export
• Sample size: three complete enclosures (≈ 3 × 600 kS, 2 s continuous)

  1. TEST CONDITIONS

TRIG-IN: 100 kHz, 50 % duty, CMOS 3.3 V → 1 kΩ → camera pin
STROBE: camera-generated output, expected 200 kHz, 50 % duty
Both signals probed directly on the 5-pin header (GND referenced)

  1. RESULTS (all three enclosures)

Parameter | Min | Typ | Max | Unit | Note
TRIG-IN amplitude | 307 | 315 | 323 | mVpp | post-1 kΩ, RC-shaped STROBE amplitude | 388 | 412 | 436 | mVpp | idem TRIG frequency | 99.98 | 100.00 | 100.02 | kHz | HW-753 crystal STROBE frequency | 199.96 | 200.00 | 200.04 | kHz | exact ×2 TRIG→STROBE delay | 23.6 | 23.8 | 24.0 | µs | cursor, rising edge to rising edge Duty-cycle error | –1 | 0 | +1 | % | vs ideal 50 %

  1. CSV DATA SET

File: TestELP_1V_ELP2.csv (attached)
Columns: time (s), CH1 (V), CH2 (V)
Resolution: 500 ns/pt, ±0.2 mV, 2 s window
Use it for your own edge-detection / jitter scripts – no post-processing applied.

  1. INTERPRETATION FOR OpenPnP

• The 23.8 µs delay is repeatable (σ < 200 ns across enclosures).
• Amplitude is low because the 1 kΩ resistor + input capacitance forms a low-pass corner ≈ 300 kHz; the logic levels inside the camera are still full-swing 3.3 V.
No missed triggers, no double pulses, no phase drift observed in 2 s continuous runs.
• Camera satisfies the “trigger in → strobe out” timing requirement for standard OpenPnP pipelines (exposure starts 24 µs after rising edge).

  1. TAKE-AWAY

If you drive the ELP P002 (AR0234CS “V8” lot) with a 100 kHz trigger through a 1 kΩ resistor at 3.3 V, you can count on a 200 kHz strobe exactly 23.8 µs later.
The attached CSV lets you simulate / verify the timing in your own motion-planner scripts.
Files enclosed
├── 20251027_174321_ELP_2.png
├── 20251027_174356_ELP_2.png
├── 20251027_174313_2.png
└── TestELP_1V_ELP2.csv
20251027_174313_2.png
TestELP_1V_ELP2.csv
20251027_174356_ELP_2.png
20251027_174321_ELP_2.png

Jan

unread,
Oct 28, 2025, 4:47:47 AM (5 days ago) Oct 28
to ope...@googlegroups.com
Hi Mike!
23,8us, thats well shorter then the 1.456ms the manual claims for
rising edge on trigger to rising edge on flash. Do you have any idea
why? (23.8us is way better then 1.456ms, as the distance the machine
would have to move between triggering and bottom vision, is why shorted.)

Jan

On 28.10.2025 09:18, Mike Menci wrote:
> ELP P002 module (AR0234CS sensor, top-mark “V8” lot)
> HW-753 100 kHz / 200 kHz trigger board – 3.3 V operation
> Three independent enclosures + CSV data set
> ------------------------------------------------------------------------
>
> 1.
> WHAT WAS TESTED
>
> ------------------------------------------------------------------------
> • Camera: ELP P002 (AR0234CS, PCB silk-screen “P002”, top-mark “V8”)
> • Trigger source: HW-753 programmable PWM board, 3.3 V rail, 1 kΩ series
> resistor
> • Wiring: 5-pin header – GND, TRIG-IN, STROBE (plus two unused pins)
> • Power: HW-753 @ 3.3 V, camera via its own USB cable (5 V) – common ground
> • Oscilloscope: 2-channel, 2 MSa/s, 500 µs/div, 50 µs/div zoom, 10-bit
> ADC, CSV export
> • Sample size: three complete enclosures (≈ 3 × 600 kS, 2 s continuous)
> ------------------------------------------------------------------------
>
> 2.
> TEST CONDITIONS
>
> ------------------------------------------------------------------------
> TRIG-IN: 100 kHz, 50 % duty, CMOS 3.3 V → 1 kΩ → camera pin
> STROBE: camera-generated output, expected 200 kHz, 50 % duty
> Both signals probed directly on the 5-pin header (GND referenced)
> ------------------------------------------------------------------------
>
> 3.
> RESULTS (all three enclosures)
>
> ------------------------------------------------------------------------
> Parameter | Min | Typ | Max | Unit | Note
> TRIG-IN amplitude | 307 | 315 | 323 | mVpp | post-1 kΩ, RC-shaped STROBE
> amplitude | 388 | 412 | 436 | mVpp | idem TRIG frequency | 99.98 |
> 100.00 | 100.02 | kHz | HW-753 crystal STROBE frequency | 199.96 |
> 200.00 | 200.04 | kHz | exact ×2 TRIG→STROBE delay | 23.6 | 23.8 | 24.0
> | µs | cursor, rising edge to rising edge Duty-cycle error | –1 | 0 | +1
> | % | vs ideal 50 %
> ------------------------------------------------------------------------
>
> 4.
> CSV DATA SET
>
> ------------------------------------------------------------------------
> File: TestELP_1V_ELP2.csv (attached)
> Columns: time (s), CH1 (V), CH2 (V)
> Resolution: 500 ns/pt, ±0.2 mV, 2 s window
> Use it for your own edge-detection / jitter scripts – no post-processing
> applied.
> ------------------------------------------------------------------------
>
> 5.
> INTERPRETATION FOR OpenPnP
>
> ------------------------------------------------------------------------
> • The 23.8 µs delay is repeatable (σ < 200 ns across enclosures).
> • Amplitude is low because the 1 kΩ resistor + input capacitance forms a
> low-pass corner ≈ 300 kHz; the logic levels inside the camera are still
> full-swing 3.3 V.
> • No missed triggers, no double pulses, no phase drift observed in 2 s
> continuous runs.
> • Camera satisfies the “trigger in → strobe out” timing requirement for
> standard OpenPnP pipelines (exposure starts 24 µs after rising edge).
> ------------------------------------------------------------------------
>
> 6.
> TAKE-AWAY
>
> ------------------------------------------------------------------------
> If you drive the ELP P002 (AR0234CS “V8” lot) with a 100 kHz trigger
> through a 1 kΩ resistor at 3.3 V, you can count on a 200 kHz strobe
> exactly 23.8 µs later.
> The attached CSV lets you simulate / verify the timing in your own
> motion-planner scripts.
> Files enclosed
> ├── 20251027_174321_ELP_2.png
> ├── 20251027_174356_ELP_2.png
> ├── 20251027_174313_2.png
> └── TestELP_1V_ELP2.csv
>
> On Sunday, 26 October 2025 at 09:28:44 UTC+1 Mike Menci wrote:
>
> used for ??  anyone knows ?
> ELP tact near V8.png
>
> On Saturday, 25 October 2025 at 22:59:20 UTC+2 Jan wrote:
>
> Hi Mike!
>
> On 24.10.2025 15:35, Mike Menci wrote:
> [...]> *****Can you please send a picture of your ELP camera - this
> would help
> > me and other readers to compare them....
>
> Please find them attached.
>
> Jan
>
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/
> ee6d3a37-a539-4a21-9101-52d79659a0c7n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/ee6d3a37-
> a539-4a21-9101-52d79659a0c7n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

Mike Menci

unread,
Oct 28, 2025, 5:19:42 AM (4 days ago) Oct 28
to ope...@googlegroups.com
Hi Jan,
No I don’t know -
I have requested from ELP Co. - to send me the latest AR0234CS register reference data sheet,
I hope I get reply…
Mike

> Dne 28. okt. 2025 ob 09:47 je oseba 'Jan' via OpenPnP <ope...@googlegroups.com> zapisala:
>
> Hi Mike!
> To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/openpnp/22e87ea2-d250-47ca-9298-26cb9191e930%40googlemail.com.

Mike Menci

unread,
Oct 28, 2025, 5:37:14 AM (4 days ago) Oct 28
to ope...@googlegroups.com
The 1.456 ms in the manual moght simply be the worst-case spec that covers slow USB hosts, heavy bus load, or different sensor configurations…


> Dne 28. okt. 2025 ob 10:19 je oseba Mike Menci <mike....@gmail.com> zapisala:
>
> Hi Jan,
Reply all
Reply to author
Forward
0 new messages