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

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.

formatting link

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

Reply to
Yoreki
Loading thread data ...

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

Reply to
Jon Kirwan

An Atmel USBKey is able to do what You want.

Good luck with Your project! Yours sincerely, Rene

Reply to
Rene

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:

formatting link

Then search it at

formatting link
, if you like, to find the lowest price.

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)

formatting link

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.

formatting link
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
Reply to
Frank Buss

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

formatting link

TS-7800 (the board I had mentioned before)

formatting link

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?d like a voltage range around ?5V to +5V, but a little smaller would also be alright.

In response to your other questions? honestly I don?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? from the sounds of it explaining my project a little more in depth would probably help you tell.

Project Summary:

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? 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:

formatting link

Neat site, thanks a lot!

So I have a question then? how much more difficult is it to put together your own unit, say as you?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!

Reply to
Yoreki

formatting link
:-)

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.

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
Reply to
Frank Buss

"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:

a

be

Good ^^; I can do that much...

Thanks.

Reply to
Yoreki

So lets do it in small steps :-)

Google for AT90USBKey gives you this page:

formatting link

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:

formatting link

Datasheet Summary:

formatting link

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.

Yes.

Yes, looks like the AT45DB642D is a 64 MB serial flash and it has two of this chips on board.

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.

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
Reply to
Frank Buss

Thanks for taking the time to lead me through this :)

you

more

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...

in

(or

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.

lol... yea, maybe so...

Thanks again :)

Reply to
Yoreki

To quote myself:

That's the 463 pages thing on this page:

formatting link

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.

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.

A good specification is important, but sometime you have to do some research on your own to fill missing details in the specification.

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.

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)

formatting link

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
Reply to
Frank Buss

Ah, I think I missed the "detailed" part... yea, that datasheet is loads more helpful! I got the SPS rate and the settling time when switching channels :)

I have absolutely no prior experience with microcontroller projects :(

power

on

are

Yea, testing with a battery is probably a good idea. My signal is... pretty good at the moment, there is just a small sinusoidal signal superimposed on the muscle signal... I'll have to consult my professor when she gets back if she has any recommendations... not sure if I could try adding another small range filter to eliminate the 60Hz before recording or something... shall see.

Good point. I'll try doing some more reading up on what others have already done.

much

use.

I'd probably prefer to just pay a few extra bucks rather than mess around taking apart a memory stick ^_^;;

Thanks for all the help :) Sounds like I've got some more things to research..

Tyler

Reply to
Yoreki

Then this would be a hard project for your first microcontroller project. But the good news is that you'll learn a lot, if you manage to finish it.

You could try a notch filter.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.