jetperch / pyjoulescope_ui

Joulescope graphical user interface
https://www.joulescope.com
Apache License 2.0
87 stars 26 forks source link

Boxcar downsampling option #290

Closed Insulet closed 1 week ago

Insulet commented 1 month ago

Joulescope model

JS220

UI version

1.1.12

Your idea

Create a native, UI selectable, downsampling option of boxcar filtering with no overlap. This will eliminate artificial time domain over/undershoots. The current sinc filter has great frequency domain fidelity, however I care more about the time domain: What is my highest/lowest current? I understand that lower sample rates will mute out peaks. False peaks created from FIR filters with negative coeffs become edge glitches that trip up my analysis tools.

I do care about my DC accuracy, which is maintained with either method.

Our company just purchased 20 channels of this instrument solely because of this feature: Keysight N6705C DC Power Analyzer User’s guide https://www.keysight.com/us/en/assets/9018-01649/user-manuals/9018-01649.pdf Page 165

Does your idea concern a specific OS?

No response

mliberty1 commented 1 month ago

Hi @Insulet, and thanks for the recommendation. A boxcar downsampling filter is super simple: for every Nth sample, output the average of the previous N samples. You can see how the current code works in downsample.c.

Changing this to boxcar would only take me a few minutes. Changing be configurable from the UI is more time, but still not more than a day. I could have saved your company a ton of money if this is the only reason you went with the N6705C over the JS220!

We are actually working on something even better - adding boxcar filtering on-instrument so that you also reduce USB bandwidth. This will allow for even more JS220s on the same USB root hub.

If you are allowed to share, what output sample rate do you normally use?

Insulet commented 1 month ago

When do you anticipate the boxcar down-sample release?

Output sample rate. I try to run as fast as possible. This can make for giant data files. N6705C data logger min sample period is 0.1024mS*things sampled. In the worst case this is 4channels of V and I, so a period of 0.8192mS.

1mS different islands of current are hard to separate as BLE spikes are muted.

From: Matt Liberty @.> Sent: Wednesday, October 9, 2024 8:21 AM To: jetperch/pyjoulescope_ui @.> Cc: Jerry Witt @.>; Mention @.> Subject: Re: [jetperch/pyjoulescope_ui] Boxcar downsampling option (Issue #290)

[External email] Spot the Sham, Slam the Scam.


Hi @Insulethttps://github.com/Insulet, and thanks for the recommendation. A boxcar downsampling filter is super simple: for every Nth sample, output the average of the previous N samples. You can see how the current code works in downsample.chttps://github.com/jetperch/joulescope_driver/blob/main/src/downsample.c.

Changing this to boxcar would only take me a few minutes. Changing be configurable from the UI is more time, but still not more than a day. I could have saved your company a ton of money if this is the only reason you went with the N6705C over the JS220!

We are actually working on something even better - adding boxcar filtering on-instrument so that you also reduce USB bandwidth. This will allows for even more JS220s on the same USB root hub.

If you are allowed to share, what output sample rate do you normally use?

- Reply to this email directly, view it on GitHubhttps://github.com/jetperch/pyjoulescope_ui/issues/290#issuecomment-2402166479, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BL6AZ3YQDCRLZCD3SFPIMVLZ2UNS7AVCNFSM6AAAAABPS42VMCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMBSGE3DMNBXHE. You are receiving this because you were mentioned.Message ID: @.**@.>>

mliberty1 commented 1 week ago

Fixed. JS220 FPGA 1.3.0 implements on-instrument sinc1 (boxcar) filtering. Not only does this on-instrument filtering address this issue, it also reduces USB throughput allowing more JS220's to run on the same USB root hub.

To get full support, you need FW 1.3.0, joulescope_driver 1.7.0 and UI 1.2.0. We are starting testing today. Assuming testing goes well, we should have a release within two weeks.