Time Ch Max ADC Max mV Min ADC Min mV
0 ChA 135 = 0mV, 135 = 0mV
5 ChA 72 = 0mV, 72 = 0mV
10 ChA 51 = 0mV, 51 = 0mV
15 ChA 72 = 0mV, 72 = 0mV
20 ChA 72 = 0mV, 72 = 0mV
25 ChA 72 = 0mV, 72 = 0mV
30 ChA 51 = 0mV, 51 = 0mV
35 ChA 30 = 0mV, 30 = 0mV
40 ChA 72 = 0mV, 72 = 0mV
45 ChA 51 = 0mV, 51 = 0mV
50 ChA 114 = 0mV, 114 = 0mV
55 ChA 72 = 0mV, 72 = 0mV
60 ChA 51 = 0mV, 51 = 0mV
65 ChA 93 = 0mV, 93 = 0mV
70 ChA 197 = 0mV, 197 = 0mV
75 ChA 197 = 0mV, 197 = 0mV
So I would suspect that the data is not being read correctly from the device.
I would suggest stepping through the code, making sure that all status code returns are Pico_OK (0), to see if you can find where it is failing.
Another option is to put in a DC voltage at a known level, and set the range so that it is twice this value 1V signal 2V range. You should then get ADC counts in the range of 15000
I have tested with a DC signal generator, Scale of ChannelA: 10V with DC coupled.
Here are the results:
Voltage generated Measured in Int
0V -32767
1.6V -32767
2.5V -29817
5.0V -21604
7.5V -13523
9.9V -5423
-1V 32767
-5V 21746
There is a dead band from 0 to 1.6V with wrong values. For the rest int values, they are not correct but there are some tendances with offset.
I have checked all returned status, they are all 0.
Therefore, the all functions of the card4824 are currently integrated in another existing application. I'll try to merge all functions in one file and ask you later for an overall checking.
Thanks in advance
Xavier
Dear Martyn,
Many thanks for your continuing help.
When I check all my program libraries this afternoon, I realized that ps4000a.dll I used is dated in April 2019.
I have then updated the last one in SDK dated September 2021 (I have regenerated ps4000a.lib for my C++Builder).
Very good surprise, my card4824 works (I have only tested BlockDataHandler(), presently it is enough for my application). The values measured are almost the same as you mentioned in our last exchange messages.
Maybe there are some issues between signed and unsigned ints in different versions. Anyway, with the last SDK, 4824 has a good performance in our application under Embarcadero C++ Builder.
Have nice day
Xavier
Dear technical support team,
My ps4824a is now operational with BlockDataHandler (with or without trigger).
May I continue this discussion for the function
that I try to use now.
It works, my question concerns my understandings of this function.
If I want to define sampling period (this function doesn't use "timebase"), I have to select good values of "sampleInterval" and "timeUnits".
"timeUnits" gives ns, µs, ms, etc.
"sampleInterval" gives integer number of "timeUnits".
So sampling period = "sampleInterval" * "timeUnits", i.e. integer number of ns, µs, ms etc. I can't use 2.5µs as sampling period.
Am I right or is there any other method to set sampling period?
Many thanks in advance for your help.
Xavier