Test and Measurement Forum

matlab examples with picoscope 3405A

Post your MATLAB discussions here

matlab examples with picoscope 3405A

Postby joejk » Thu Apr 13, 2017 6:58 am

Hello,
I am trying to run the MatLab examples supplied with the PS3000a SDK. They don't seem to work with my unit. The Picoscope firmware version is 1.2.1. I'm particularly interested in the streaming example -- it should work as is, shouldn't it?
Cheers
Joe
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am

Re: matlab examples with picoscope 3405A

Postby Hitesh » Wed Apr 19, 2017 8:17 am

Hi Joe,

Sorry for the delay in a response coming back to you owing to the Easter break.

Please could you e-mail support@picotech.com and we can provide you with some updated files.

Regards,
Hitesh

Technical Specialist
Pico Technology
Hitesh
Site Admin
Site Admin
 
Posts: 2284
Joined: Tue May 31, 2011 3:43 pm
Location: St. Neots, Cambridgeshire

Re: matlab examples with picoscope 3405A

Postby joejk » Thu Apr 20, 2017 6:47 am

Thanks for your response. Before I email support, the problem I'm having is with the call to 'GetStreamingLatestValues' which returns 13 (PICO_INVALID_PARAMETER). The c-code indicates that this is returned when it gets and invalid deviceIndex value. But the MATLAB example invokes this call using the device object (handle). Could that be the problem?
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am

Re: matlab examples with picoscope 3405A

Postby Hitesh » Mon Apr 24, 2017 11:21 am

Hi joejk,

I have responded to your e-mail with some files to try.

These will be available via our File Exchange page in the near future.

Regards,
Hitesh

Technical Specialist
Pico Technology
Hitesh
Site Admin
Site Admin
 
Posts: 2284
Joined: Tue May 31, 2011 3:43 pm
Location: St. Neots, Cambridgeshire

Re: matlab examples with picoscope 3405A

Postby joejk » Tue Apr 25, 2017 11:49 pm

Hi Hitesh,
I have not received an email from you. Please let me know which files to download.
Cheers
Joe
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am

Re: matlab examples with picoscope 3405A

Postby Hitesh » Thu Apr 27, 2017 9:41 am

Hi Joe,

I've resent the e-mail to you.

Please do check spam/junk folders as sometimes e-mails from our e-mail support system can end up there.

Regards,
Hitesh

Technical Specialist
Pico Technology
Hitesh
Site Admin
Site Admin
 
Posts: 2284
Joined: Tue May 31, 2011 3:43 pm
Location: St. Neots, Cambridgeshire

Re: matlab examples with picoscope 3405A

Postby joejk » Tue May 02, 2017 12:23 am

Thank you. The streaming example in the new files is working.

I noticed in the new example that there is code like the following:
triggerGroupObj = get(ps3000aDeviceObj, 'Trigger');
triggerGroupObj = triggerGroupObj(1);
[status.setTriggerOff] = invoke(triggerGroupObj, 'setTriggerOff');

This is a bit different than what is documented in the Matlab Instrument Driver Guide that is available on the download page (updated May 2014). It looks like a new object is derived from the device object and has its own library functions. Is there more documentation on the triggerGroupObject? For example, if I wanted to use a simple external trigger, would I invoke the usual 'setSimpleTrigger' with the new trigger object? Or is there another function to be called using this object?

Similarly, there is also a streamingGroupObj:
streamingGroupObj = get(ps3000aDeviceObj, 'Streaming');

Are there other derived objects? Are they documented?
Cheers
Joe
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am

Re: matlab examples with picoscope 3405A

Postby Hitesh » Wed May 03, 2017 4:31 pm

Hi Joe,

Once you have created an icdevice object, you can use the methods function via the command window to view the functions available e.g.

Code: Select all
methods(ps3000aDeviceObj);

To view help for a function, use the instrhelp function e.g.

Code: Select all
instrhelp(ps3000aDeviceObj, 'ps3000aSetChannel');

To view the properties (and groups) of an object, call

Code: Select all
fieldnames('ps3000aDeviceObj')

You can then call the instrhelp function to view help text for the property you are interested in.

The same can be repeated for the various groups shown in the examples such as 'Block' and 'Trigger'.

If you are looking to use the external trigger, you can do so by calling the setSimpleTrigger() function from the newly created trigger group object.

There are other groups for Block, Rapid Block and the Signal Generator in order to group relevant functions together. The device object has the core functions and properties that apply to the setup of the device and are common to various modes of data collection.

It is our aim to provide Instrument Driver specific documentation via html files which will be packaged with the Instrument Driver.

You can also open the Instrument Driver in the Instrument Driver editor and view the functions and properties of the device.

Hope this helps,
Hitesh

Technical Specialist
Pico Technology
Hitesh
Site Admin
Site Admin
 
Posts: 2284
Joined: Tue May 31, 2011 3:43 pm
Location: St. Neots, Cambridgeshire

Re: matlab examples with picoscope 3405A

Postby joejk » Wed May 24, 2017 6:11 am

Hello,
Thank you, Hitesh. That was helpful.

Further on streaming data with matlab: I'm trying to use triggering with streaming. It seems that the trigger is recorded upon the first trigger signal (rising edge), and I can get the index of the data where that trigger happens. But I need a way to get all the data indices corresponding to repeated trigger signals while I'm streaming data. Is this possible?
Cheers
Joe
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am

Re: matlab examples with picoscope 3405A

Postby Hitesh » Wed May 24, 2017 11:29 am

Hi Joe,

It is only possible to obtain one trigger event during the course of a streaming data collection event, so you would have to consider multiple streaming acquisitions in succession or process the data afterwards looking for the trigger events.

How long do you need to capture data for and what is the sampling rate? What is the time interval between trigger events?

Regards,
Hitesh

Technical Specialist
Pico Technology
Hitesh
Site Admin
Site Admin
 
Posts: 2284
Joined: Tue May 31, 2011 3:43 pm
Location: St. Neots, Cambridgeshire

Re: matlab examples with picoscope 3405A

Postby joejk » Wed May 24, 2017 11:33 pm

Hi Hitesh,
Thank you for the reply.

Using my current configuration, I want to capture data on each and every channel at 20MS/s. The trigger signal is ~1kHz. For each channel, that's 20kS per trigger event. That data is to be squared and summed into the application buffer while data for the subsequent trigger event is being collected. I haven't yet tried this, so I don't know if there will be timing issues. I prefer not to miss data. Then I would like to continue to collect datain this manner for a variable amount of time - a few seconds to a few minutes.

Cheers
Joe
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am

Re: matlab examples with picoscope 3405A

Postby Hitesh » Thu May 25, 2017 10:59 am

Hi Joe,

When stopping and starting streaming acquisition, there will some downtime of most likely tens of milliseconds.

If you did not need to process the data until after the whole data collection is complete, you could use rapid block mode to capture the 20 kS segments into memory.

The 20 MS/s sampling rate could potentially be achieved using downsampling in rapid block mode but in streaming mode the closest below the limit of the USB bus would be about 17 MS/s.

Regards,
Hitesh

Technical Specialist
Pico Technology
Hitesh
Site Admin
Site Admin
 
Posts: 2284
Joined: Tue May 31, 2011 3:43 pm
Location: St. Neots, Cambridgeshire

Re: matlab examples with picoscope 3405A

Postby joejk » Fri May 26, 2017 1:18 am

Thank you, again.
I have tried a streaming with start/stop technique from the matlab script and a fraction of a second of data took many seconds to acquire (without squaring and summing). The other disadvantage was that each data segment was a bit arbitrary in length, and, though I did have the index of the trigger, sometimes the length was less than the 20kS minimum. I'm probably not doing it the best way, and it may be that the matlab for-loop is the bigger bottleneck -- not sure. I will investigate rapid block mode. Perhaps a MEX file to square and sum the data would be faster and on a separate thread(?).

How did you calculate the 17MS/s limit? Would this be the same for a picoscope 4824 (USB 3.0)? I would like 5 data channels, ideally, and that would require 5x20MS/s to be squared and accumulated in as close to real time as possible.

Joe
joejk
User
User
 
Posts: 4
Joined: Thu Mar 30, 2017 5:11 am


Return to MATLAB

Who is online

Users browsing this forum: No registered users and 0 guests