High Speed Data Acquisition Project

The official pyboard running MicroPython.
This is the reference design and main target board for MicroPython.
You can buy one at the store.
Target audience: Users with a pyboard.
Post Reply
User avatar
Talore Thulehand
Posts: 1
Joined: Sun Feb 28, 2016 11:01 pm

High Speed Data Acquisition Project

Post by Talore Thulehand » Sun Feb 28, 2016 11:58 pm

Hi all, I'm new to the MicroPython community. I have been looking into the capabilities of the MicroPython pyboard as it seems that this little guy could possibly be a nice data acquisition tool for my project. I thought that Id's just make a post here to get some expert advice on whether this system might actually be able to meet the project specifications. So, without further ado, here's some background on the project:

I'm working on a radar data acquisition system. Using a COTS automotive radar which outputs I&Q signals (two separate channels). The signals are amplified/conditioned into a suitable voltage range for the ADC. The radar can operate in LFM mode by supplying a linear ramp signal to the VCO pin. The output frequencies for the I&Q signals range from DC to roughly 60 KHz, in my application. So I need to sample them at least at 120 Ksps, according to Nyquist criteria.

So, with that being said, I need:

1.) To generate an arbitrary waveform at the output of one of the DAC pins. This will be a calibrated waveform which accounts for VCO non-linearity, injected to VCO pin on radar module after amplification and level shifting. Voltage range for the VCO is 1 to 10 volts, but I'd expect something like 0 to 3.3 volts coming out of the DAC. Preferably would have something like 1024 or 2048 levels at 8bit resolution, so would need roughly 16KB at most for wave-table storage.

2.) To acquire and store to micro SD card (class 10; Fat32) data from two channels which are sampled at least at 125 Ksps (I'd like to go higher if I can pull it off). Simultaneous sampling is desired, but if I can get the sample rate up to about 250 Ksps then this won't matter as much if I go to sequential sampling. Also open to the idea of having multiple MicroPython boards, one for each channel.... is there a way to synchronize two MicroPython clocks? I did read up on some of the specs for the CPU and found that the sample rates listed there show that the maximum ADC sampling rate for a single 12bit channel is 2 Msps, which would be way overkill here:
http://www.st.com/web/en/resource/techn ... 037051.pdf
...I also saw mention of a simultaneous sampling option and an interleaved sampling option. Does the python OS support these methods for two ADC channels?

3.) RTC updates/synchronized with an external GPS, preferably through an SPI link. Only need a one-time update from GPS on the time for the RTC each time I go to start a recording sequence; my collection times will not be long enough to worry about the skew. Need to have the RTC logging time onto the SD card in a separate file for the start of the data acquisition, and then periodically throughout.

Nice-to-haves, but not necessary:
1.) level triggered ADC acquisitions with timing from and RTC

My data acquisition times will max out around 15 minutes, so I'm not so worried about data size if I use a high speed class 10 micro SD card, say 32Gig or so with Fat32 filesystem.

So what do you guys think? Would the MicroPython pyboard be able to handle all that?

Thanks!
Talore

Post Reply