EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

Searching SBC/DSP board/microcontroller; 4ADC/1kHz/USB Host

Started by Yoreki May 7, 2009
Hello,

I am looking for something along the lines of a Single Board Computer
(SBC), a Digital Signal Processing (DSP) board, or a microcontroller. 
Though I am open to any other suggestions, but what I essentially need to
be able to do is the following.

Requirements:

- 4 channel ADC
- Sample rate of 1kHz; meaning I want to be able to sample from all 4
channels at a rate of 1kHz, whether that means sampling each input
individually (in a round-like fashion at a higher rate in order to complete
sampling all 4 channels at an overall rate of 1kHz), or sampling all 4
channels at the same time each at a rate of 1kHz.
- Can write to USB (USB Host port)

Project Breakdown:  I have 4 analogue signals I need converted to digital
signals, and store on a USB key, at a rate of 1kHz.

I am very new to working with these pieces of equipment, so please be
understanding if I make any errors in talking about them, or am completely
mistaken about the components to use.

I have so far been steered in the direction of using a SBC or a DSP board.
 However, I’ve been searching for days going over board after board, and
I can’t find anything that has a high enough sample rate.  The closest
I’ve found to what I need is a series of ARM single board computers, the
TS-7000 series.

http://www.embeddedarm.com/products/arm-sbc.php#ts-7800-series

Other than the TS-7800, the others didn’t seem to come close enough. 
Even the TS-7800, after reading the manual closely and inquiring about the
meanings of some parts, I still found that when operating with 4 channels
the overall sample rate would only be 0.5kHz (2kHz/ch).

I would really appreciate any advice, or experience that anyone can share
with me.  If you know of an actual component that fits my requirements that
would be amazing, but even if you’re just able to steer me in a good
direction it would be greatly appreciated.

Thanks a lot, hope I can get some feedback soon,

Tyler



On Thu, 07 May 2009 15:21:07 -0500, "Yoreki" <tseredynski@gmail.com>
wrote:

>I am looking for something along the lines of a Single Board Computer >(SBC), a Digital Signal Processing (DSP) board, or a microcontroller. >Though I am open to any other suggestions, but what I essentially need to >be able to do is the following. > >Requirements: > >- 4 channel ADC >- Sample rate of 1kHz; meaning I want to be able to sample from all 4 >channels at a rate of 1kHz, whether that means sampling each input >individually (in a round-like fashion at a higher rate in order to complete >sampling all 4 channels at an overall rate of 1kHz), or sampling all 4 >channels at the same time each at a rate of 1kHz. >- Can write to USB (USB Host port) > >Project Breakdown: I have 4 analogue signals I need converted to digital >signals, and store on a USB key, at a rate of 1kHz. ><snip>
Will the board be connected to a PC while collecting data? Or is it supposed to be a self-powered system that can collect data for you and write it to a USB stick-type memory that you may later connect to a PC for data processing at a later time? Do you want all the software pre-written for data capture and transfer to the USB memory for this device, or are you looking for something that will allow you to write your own programs on the device itself, as well, as opposed to only doing post-processing on an IBM PC type machine? In other words, do you require outputs other than the USB host port, which I assume you intend as storage for data recording? Oh, and how many bits of precision do you need? Single-ended or differential? Voltage range? Galvanic isolation or not? Isolation between channels? etc. Best to just state clearly what you are trying to do. It's a lot less complex, that way, figuring out how to help you think about solutions. Jon
Yoreki schreef:
> Hello, > > I am looking for something along the lines of a Single Board Computer > (SBC), a Digital Signal Processing (DSP) board, or a microcontroller. > Though I am open to any other suggestions, but what I essentially need to > be able to do is the following. > > Requirements: > > - 4 channel ADC > - Sample rate of 1kHz; meaning I want to be able to sample from all 4 > channels at a rate of 1kHz, whether that means sampling each input > individually (in a round-like fashion at a higher rate in order to complete > sampling all 4 channels at an overall rate of 1kHz), or sampling all 4 > channels at the same time each at a rate of 1kHz. > - Can write to USB (USB Host port) > > Project Breakdown: I have 4 analogue signals I need converted to digital > signals, and store on a USB key, at a rate of 1kHz. > > I am very new to working with these pieces of equipment, so please be > understanding if I make any errors in talking about them, or am completely > mistaken about the components to use. > > I have so far been steered in the direction of using a SBC or a DSP board. > However, I&rsquo;ve been searching for days going over board after board, and > I can&rsquo;t find anything that has a high enough sample rate. The closest > I&rsquo;ve found to what I need is a series of ARM single board computers, the > TS-7000 series. > > http://www.embeddedarm.com/products/arm-sbc.php#ts-7800-series > > Other than the TS-7800, the others didn&rsquo;t seem to come close enough. > Even the TS-7800, after reading the manual closely and inquiring about the > meanings of some parts, I still found that when operating with 4 channels > the overall sample rate would only be 0.5kHz (2kHz/ch). > > I would really appreciate any advice, or experience that anyone can share > with me. If you know of an actual component that fits my requirements that > would be amazing, but even if you&rsquo;re just able to steer me in a good > direction it would be greatly appreciated. > > Thanks a lot, hope I can get some feedback soon,
An Atmel USBKey is able to do what You want. Good luck with Your project! Yours sincerely, Rene
Yoreki wrote:

> I am looking for something along the lines of a Single Board Computer > (SBC), a Digital Signal Processing (DSP) board, or a microcontroller. > Though I am open to any other suggestions, but what I essentially need to > be able to do is the following. > > Requirements: > > - 4 channel ADC > - Sample rate of 1kHz; meaning I want to be able to sample from all 4 > channels at a rate of 1kHz, whether that means sampling each input > individually (in a round-like fashion at a higher rate in order to complete > sampling all 4 channels at an overall rate of 1kHz), or sampling all 4 > channels at the same time each at a rate of 1kHz.
What resolution do you need for your ADC? I would build the ADC part be myself, then you can choose any SBC solution. You can search an ADC with the parametric search engine at Digikey: http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2556291&keywords=adc Then search it at http://findchips.com , if you like, to find the lowest price.
> - Can write to USB (USB Host port)
If price doesn't matter, you could buy something like this, which I've tested some time ago (the eval kit with the AT91SAM9263 with integrated display controller, has an additional color TFT touchscreen, but maybe the eval kit with the 9G20 is sufficient for your project) http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=AT91SAM9G20-EK-ND The advantage is that Linux is included with the eval kit, so you don't have any problems with writing a custom firmware for accessing the USB host and the filesystem on the memory stick, because this is already integrated in Linux. You'll need just a small kernel mode driver (for realtime ADC reading) and a user mode application, which writes on the memory stick. There are lots of other cheaper SBC with Linux available from other companies. WindowsCE could work, too, e.g. http://www.digi.com has some nice inexpensive quality boards with USB host ports, where you can choose WindowsCE or Linux. -- Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de
First of all, sorry for not replying for so long.  I was having trouble
logging into the website, and it took a little while to get it sorted out
with the webmaster.

I had meant to reply the day you guys posted, but as I said couldn't. 
I've been able to find a solution or two in the meantime:

APF27 dev_light board
http://armadeus.com/english/products-development_boards-apf27_dev.html

TS-7800 (the board I had mentioned before)
http://www.embeddedarm.com/products/board-detail.php?product=TS-7800

Someone mentioned to me that the reason the TS-7800 appeared to have such
a slow sample rate was that TS had programed the AVR to sample at a low
rate, but apparently can go faster... so I'm currently looking into this.

The APF seems to fill my qualifications... I'm just inquiring about the
boot time atm.

However, I'll answer your guys questions and if you have any
comments/suggestions about what I'm thinking about doing please let me know
:)

----

[QUOTE] Will the board be connected to a PC while collecting data?  Or is
it supposed to be a self-powered system that can collect data for you and
write it to a USB stick-type memory that you may later connect to a PC for
data processing at a later time?[/QUOTE]

It will be a self-powered system that can collect data and write it to a
USB stick, which will then be connected to a PC at later time for data
processing.

[QUOTE] Do you want all the software pre-written for data capture and
transfer to the USB memory for this device, or are you looking for
something that will allow you to write your own programs on the device
itself, as well, as opposed to only doing post-processing on an IBM PC type
machine? In other words, do you require outputs other than the USB host
port, which I assume you intend as storage for data recording?[/QUOTE]

At the moment I only plan to do data processing on a PC after data has
finished being collected.  So I suppose I only need the USB host as an
output.

[QUOTE] Oh, and how many bits of precision do you need?  Single-ended or
differential?  Voltage range?  Galvanic isolation or not?  Isolation
between channels?  etc.[/QUOTE]

- Around 10-16 bit precision
- I think I&rsquo;d like a voltage range around &ndash;5V to +5V, but a little
smaller would also be alright.

In response to your other questions&hellip; honestly I don&rsquo;t seem to know
enough to answer them.  I tried reading up on single-ended vs. differential
inputs after reading your post, but I got a little lost&hellip; from the sounds
of it explaining my project a little more in depth would probably help you
tell.

[B]Project Summary:[/B]

I will have 8 diodes (8 diodes are used to give me 4 signals) attached to
muscles on a human body.  The signals will be sent through an amplifier to
bring them around the (+/-)0-5V range (thus I can adjust this gain
depending on what the MAX input is of the ADC), the signals will then be
sent through a Bandpass Filter to filter out noise and unwanted signals.

After this I need to convert the analogue signals to digital signals at a
rate of 1kHz (taking all 4 readings within this rate; thus if there is only
one ADC then it will have to be able to at least run at a rate of 4kHz/ch),
and then record the signals to USB stick-type memory.

Processing will be done later on a separate PC.


[QUOTE] An Atmel USBKey is able to do what You want.[/QUOTE]

It does seem to be able to do so&hellip; let me confirm some things.  This
device is a MCU?  In order to us it in my application I would need to us it
along with a separate ADC, correct?

[QUOTE] I would build the ADC part be myself, then you can choose any SBC
solution. You can search an ADC with the parametric search engine at
Digikey:

http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2556291&keywords=adc[/QUOTE]

Neat site, thanks a lot!

So I have a question then&hellip; how much more difficult is it to put together
your own unit, say as you&rsquo;re suggesting with finding your own ADC, and
then using say the AT91SAM9G20 to write to the USB, in comparison to
finding a Single Board Computer already with an ADC, USB host port, and
Linux OS?  What kind of differences would I come across? (really new to all
this)

Thanks for everyone's help!
Yoreki wrote:

> [QUOTE] An Atmel USBKey is able to do what You want.[/QUOTE] > > It does seem to be able to do so&hellip; let me confirm some things. This > device is a MCU? In order to us it in my application I would need to us it > along with a separate ADC, correct?
http://lmgtfy.com/?q=Atmel+USBKey :-) Then click "AT90USBKey Hardware User Guide" to see which chip it uses and if you need an external ADC. I think the suggestion was to let it act as a USB memory stick (see "AVR273: USB Mass Storage Implementation"), because then you don't need the trouble of implementing a USB host port yourself and implementing the access for it, but you simply plug in this stick in your PC and the recorded data appears as a file on it.
> So I have a question then&hellip; how much more difficult is it to put together > your own unit, say as you&rsquo;re suggesting with finding your own ADC, and > then using say the AT91SAM9G20 to write to the USB, in comparison to > finding a Single Board Computer already with an ADC, USB host port, and > Linux OS? What kind of differences would I come across? (really new to all > this)
If you are new to it (e.g. not much experience with designing circuits), you should not try to create a PCB with the AT91SAM9G20 and USB host support. But attaching a 4 channel 16 bit ADC for 1 kHz sampling rate to a single board computer, or the Atmel USBKey or similiar devices, should be easy, if you can recognise the hot end of a soldering iron and if you understand datasheets and how to write C programs. -- Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de
Frank Buss wrote:

>I think the suggestion was to let it act as a USB memory stick (see
"AVR273: >USB Mass Storage Implementation"), because then you don't need the trouble >of implementing a USB host port yourself and implementing the access for it, >but you simply plug in this stick in your PC and the recorded data appears >as a file on it. So let me try this again... I would basically have a external ADC (haven't been able to find the details of the on board ADC =s), which would write to the AT90USBKey's on board flash memory. Once I am done recording information, I would take the whole device to the computer that I want to process the data on, and connect them by a USB cable? If that's correct... 1. Am I correct in saying that the on board flash memory of the AT90USBKey is 2x64MB? 2. If I'm sampling at a rate of 1000SPS per channel, therefore ~4000SPS in total, with 16 bit samples, I would fill the memory in roughly 2000s (or ~30min)? Frank Buss:
>If you are new to it (e.g. not much experience with designing circuits), >you should not try to create a PCB with the AT91SAM9G20 and USB host >support. But attaching a 4 channel 16 bit ADC for 1 kHz sampling rate to
a
>single board computer, or the Atmel USBKey or similiar devices, should
be
>easy, if you can recognise the hot end of a soldering iron and if you >understand datasheets and how to write C programs.
Good ^^; I can do that much... Thanks.
Yoreki wrote:

> So let me try this again... I would basically have a external ADC (haven't > been able to find the details of the on board ADC =s)
So lets do it in small steps :-) Google for AT90USBKey gives you this page: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3879 There is a datasheet "AT90USBKey Hardware User Guide". On page 5 there is picture and the name of the microcontroller: a AT90USB1287. Google for this, second link gives you this page: http://www.atmel.com/dyn/Products/product_card.asp?part_id=3875 Datasheet Summary: http://www.atmel.com/dyn/resources/prod_documents/7593S.pdf Page 2: 8 channels, 10-bit ADC. Looks like the summary datasheet doesn't say something about the speed of the ADC, but would be suprising if it can't do at least audio frequencies. You can take a look at the detailed datasheet and the ADC section for details, if 10 bit is sufficient. Do you have already the circuit for measuring the bio signals? This could be more complicated than the rest and there can be much noise, so it is possible that more than 10 bit is useless anyway.
> , which would write to > the AT90USBKey's on board flash memory. Once I am done recording > information, I would take the whole device to the computer that I want to > process the data on, and connect them by a USB cable?
Yes.
> If that's correct... > > 1. Am I correct in saying that the on board flash memory of the AT90USBKey > is 2x64MB?
Yes, looks like the AT45DB642D is a 64 MB serial flash and it has two of this chips on board.
> 2. If I'm sampling at a rate of 1000SPS per channel, therefore ~4000SPS in > total, with 16 bit samples, I would fill the memory in roughly 2000s (or > ~30min)?
Yes, if there a no problems writing the serial flash with the required speed and sampling the data in parallel, but I think this should be possible.
>>and if you >>understand datasheets and how to write C programs. > > Good ^^; I can do that much...
Maybe the part with the datasheet is something you have to work on :-) -- Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de
Frank Buss wrote:

>So lets do it in small steps :-)
Thanks for taking the time to lead me through this :)
>Page 2: 8 channels, 10-bit ADC. Looks like the summary datasheet doesn't >say something about the speed of the ADC, but would be suprising if it >can't do at least audio frequencies. You can take a look at the detailed >datasheet and the ADC section for details, if 10 bit is sufficient. Do
you
>have already the circuit for measuring the bio signals? This could be
more
>complicated than the rest and there can be much noise, so it is possible >that more than 10 bit is useless anyway.
Is there any way to find out the sample rate of the ADC? It's pretty important for me to know... I've found many boards with ADCs that cannot fill my requirement :( Yes, I'm done my circuit. I have my amplifier and bandpass filter all set up. Currently learning more about MATlab (this is what I'll be doing the processing with on the computer) so that I may be able to get rid of a 60Hz sinusoid I have superimposed on my signal (supposedly due to the power supply of my breadboard... though that may go away once I have a stand alone unit set up...). As far as the bit accuracy... well, I'm not sure if I mentioned but I'm and undergrad student working for a professor of mine this summer. So this is a joint project with her... however, we only found out last minute that I'd be able to work for her and she'd already made arrangements to be gone for the first month of my term. So unfortunately I am still lacking some of the more detailed requirements of my project :( All I can really specify is that between 10-16 bits is most likely good enough...
>> 2. If I'm sampling at a rate of 1000SPS per channel, therefore ~4000SPS
in
>> total, with 16 bit samples, I would fill the memory in roughly 2000s
(or
>> ~30min)? > >Yes, if there a no problems writing the serial flash with the required >speed and sampling the data in parallel, but I think this should be >possible.
What might cause problems with the writing speed? Would that be a spec I'd look to find on the USBkey datasheet? Is it possible to add more memory? I'm currently unsure how long at a time I'll need to run the unit.
>>>and if you >>>understand datasheets and how to write C programs. >> >> Good ^^; I can do that much... > >Maybe the part with the datasheet is something you have to work on :-)
lol... yea, maybe so... Thanks again :)
Yoreki wrote:

> Is there any way to find out the sample rate of the ADC? It's pretty > important for me to know... I've found many boards with ADCs that cannot > fill my requirement :(
To quote myself:
>>You can take a look at the detailed >>datasheet and the ADC section for details, if 10 bit is sufficient.
That's the 463 pages thing on this page: http://www.atmel.com/dyn/Products/product_card.asp?part_id=3875 Do you have previous experience with microcontroller projects? Could be a bit hard to read such a datasheet for the first time without experience how it feels like to implement some hardware related functions in C (or other languages). Of course, not for your question in this case, you just have to click on chapter 25 and it says it in the features list at the beginning.
> Yes, I'm done my circuit. I have my amplifier and bandpass filter all set > up. Currently learning more about MATlab (this is what I'll be doing the > processing with on the computer) so that I may be able to get rid of a 60Hz > sinusoid I have superimposed on my signal (supposedly due to the power > supply of my breadboard... though that may go away once I have a stand > alone unit set up...).
I don't know much about analog circuits, but if you think it is the power supply, you can test it with a battery. I think you should see something on a scope, if you try to measure some muscle contraction, otherwise you are out of luck with a simple single ended ADC of a microcontroller.
> As far as the bit accuracy... well, I'm not sure if I mentioned but I'm > and undergrad student working for a professor of mine this summer. So this > is a joint project with her... however, we only found out last minute that > I'd be able to work for her and she'd already made arrangements to be gone > for the first month of my term. So unfortunately I am still lacking some > of the more detailed requirements of my project :( All I can really > specify is that between 10-16 bits is most likely good enough...
A good specification is important, but sometime you have to do some research on your own to fill missing details in the specification.
> What might cause problems with the writing speed? Would that be a spec > I'd look to find on the USBkey datasheet?
No, you'll need the datasheet of the microcontroller and the serial flash. First the serial flash needs to be fast enough, but theses days usually they support speeds in the MHz range. Then the microcontroller has to be fast enough to write at the required sample rate. Maybe this is done with hardware SPI, on smaller microcontrollers interrupt driven, on larger ones with DMA, so this should work, too. Then you have to do it in parallel, with higher priority for the ADC interrupt, or maybe you can use just one timer interrupt and trying to implement it with a state machine, e.g. ten times the sampling rate, every tenth interrupt reading the ADC and the rest for the SPI communication (depends on how much overhead you have). Maybe you'll need some buffering. Should be no problem for your speed, but to be sure you have to read the datasheets and estimate the required time for your program and all actions and data transfers. Maybe some timing diagram sketches helps: overview of a full sample-and-save cycle and zooming diagrams for interesting aspects.
> Is it possible to add more memory? I'm currently unsure how long at a > time I'll need to run the unit.
If the memory has SPI and you can get the SPI signals on the external pins, this should be no problem. Usually they have a chip select signal, so you can connect all MISO and MOSI in parallel and just select the desired chip. A standard serial flash would be something like this (data flash should be compatible) http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=M25P64-VME6TGCT-ND This one has 64 MBit and costs $3 for larger quantities. That's strange, because you'll get 2 GBytes USB memory sticks in single quantities for much less than $10, even for a single unit. I wonder what flash chips they use. Comparing the prices, the 64 MBit chip is about a factor of 100 to expensive. Maybe it's cheaper to buy an USB memory stick, break it and desolder the flash :-) -- Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

The 2024 Embedded Online Conference