Multiple JS capturing by hard triggering

Hi,
we are working on taking captures with multiple joulescopes (trying to sync them) using python and we have some questions.

  1. We read similar topics and concluded that there is currently no on-instrument method to (hard) trigger a capture. Could we please get a confirmation on that?

  2. If we are correct on 1, can we get some information about the best sync error we can achieve via host-side multi-capturing? Is it near ± 100 microseconds? Any suggestions or script we could use to optimize it?

  3. As suggested in another topic, we used gpi_region.py to perform multi-jls capture, but need to save data in .jls files. Can we do that with the script? Any ideas on how to add this feature?

Thank you in advance,
Christos

Hi @christos_kalogeras and welcome to the Joulescope forum!

If you are using a GPI signal to delimit regions of interest, you do not even really need to worry about wall-clock (UTC) time synchronization. Just wire the same GPI signal to all JS220’s and use the GPI signal recorded by each JS220 to determine the regions of interest to analyze.

1.

I am not sure what hard triggering a capture means. Joulescope instruments rely on the host computer to store data, so capturing samples always involves software running on the host computer.

I am assuming you mean that you want to detect some condition to start a capture. Whether this condition detection is performed on the instrument or on the host really doesn’t matter for capturing samples. Unlike traditional oscilloscopes, Joulescopes stream ALL the samples ALL the time from the instrument to the host computer, no sample windows.

Neither the JS110 nor the JS220 has a way to detect conditions to drive a GPO or the Trigger OUT signal, at least not today. We still plan to implement some condition detection to drive Trigger OUT on the JS220, but this will not affect sample captures.

2.

JS220’s will sync their sample time to wall clock time (UTC) to within 100 µs, typical. We already have some improvements in development that will take this to 20 µs, typical. Finally, we are adding a way for JS220’s to take a pulse-per-second signal, typically produced by a GPS / GNSS time source, for about 1 µs accuracy.

Having the JS220’s open and running with the host software allows them to synchronize time. The exisitng method is quite fast, so you normally do not have to worry. The new methods will require more time to achieve the accuracy levels, so you will need to have the instruments open for a while before starting a capture if you want the full accuracy level.

3.

Does the Trigger widget in the Joulescope UI already do what you want?

It sounds like you may be using a GPI signal to delimit regions of interest. Is this true?

If so, you can run the same GPI signal to all JS220’s. You then do not even need to worry about time synchronization. You can simply use this GPI signal to extract the same info from all Joulescopes. I am not sure exactly what you are trying to do, but you can just record all the data for the full duration to a JLS file, don’t even worry about “triggering”. After you record data, you can then open the JLS file and analyze the regions of interest delimited by the GPI signal.


Does this help and answer your questions?

Hello,
thank you for your help. Yes, the trigger widget is performing the desired function, but we want to integrate this function in our python scripts. Also, I have a small problem using the trigger widget, which is that sometimes I get an error that the program couldn’t open a file. I will try to solve it and come back.
Best regards,
Christos

Hi @christos_kalogeras - The trigger_host_pyjoulescope_driver uses the same _DetectDuration from the condition_detector. It can be a good starting point for figuring out how to write the Python code that you need.

I am not familiar with the error you are seeing in the Joulescope UI when using the Trigger widget. The next time this occurs, could you report an issue? Simply click HelpReport Issue.

Hi @mliberty, thank you for the script suggestions, we will check them out. The error I reported should be due to the oscillations of the output of our PS when setting voltage from 0 → 3V and 3 → 0V, because the joulescope UI might not be able to manage such fast jls files handling.

One more question, is there any example of recording samples from more than one joulescope on the same jls file?

Not currently, but I am working to modify the record entry point for the pyjoulescope_driver to record from all connected Joulescopes by default.

Hi @christos_kalogeras - This feature is now available!

Update pyjoulescope_driver to 1.5.5 or newer:

python -m pip install -U pyjoulescope_driver

And then use the record entry point:

python -m pyjoulescope_driver record out.jls

Does this work for you?

Hi @mliberty,
thank you for adding the new feature, it will help a lot.
We will try to make our project with the ± 100μs sync. Thank you again for all the help.

1 Like