Maximum sampling for DACADC Pi
The ADC Pi is an Analogue to Digital converter for the Raspberry Pi
17/05/2019
Posted by:
tfv3
t1 = time.time() # start time in s
d=np.empty([10000])
for i in range(10000):
adcdac.set_dac_voltage(1, 1.5*i/10000) #set the voltage on channel 1
d[i]=adcdac.read_adc_voltage(1, 0)
t2 = time.time() # end time in s
dt = t2 - t1 # time delta
The measured time is approx 1 s, which means that I can transfer 10000 IO pairs (one write and one read) in 1 second. Read only takes 0.62 s for 10.000 reads. So this is all I can achieve, which is far off the 70 kHz communicated somewhere else?
17/05/2019
Posted by:
andrew
Python is an interpreted language which has a far lower performance than compiled programming languages like C or C++.
To get the most performance out of the ADC DAC Pi I would recommend using a compiled programming language like C.
To give you an idea of the performance difference I rewrote your program using the C version of our ADC DAC Pi library and ran it on a Raspberry Pi B 3+. The C program takes approximately 22.3 milliseconds to complete the same 10000 loops as your python program.
The code for the C program is shown below. You can download the ADCDAC Pi C library from our Github repository.
/*
* test.c
* compile with "gcc ABE_ADCDACPi.c test.c -o test"
* run with "./test"
*/
#include <stdio.h>
#include <stdint.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include "ABE_ADCDACPi.h"
void clearscreen ()
{
printf("\033[2J\033[1;1H");
}
int main(int argc, char **argv){
setvbuf (stdout, NULL, _IONBF, 0); // needed to print to the command line
struct timeval t1, t2;
double dt;
double d[10000];
set_dac_gain(1);
// start timer
gettimeofday(&t1, NULL);
int i;
for (i = 0; i <= 10000; i++){
set_dac_voltage(1, 1.5*i/10000);
d[i] = read_adc_voltage(1, 0);
}
// stop timer
gettimeofday(&t2, NULL);
// compute and print the elapsed time in millisec
dt = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms
dt += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms
printf("%G",dt);
return (0);
}
Forum Notice – Closure to New Posts
As part of our compliance with the UK’s Online Safety Act, the AB Electronics UK support forum is now closed to new posts and replies.
We understand the importance of continued support for our products, so if you have a technical query or require assistance, please use the Contact Form or consult our Knowledge Base for helpful articles and documentation.
We appreciate your understanding and continued support.
Note: documents in Portable Document Format (PDF) require Adobe Acrobat Reader 5.0 or higher to view.
Download Adobe Acrobat Reader or other PDF reading software for your computer or mobile device.