Hallo,

Ik wil een ADC-box gaan ontwerpen. De reden is dat er geen kant en klare
ADC-boxen bestaan die geleverd worden met Windows en Linux-drivers en
voldoen aan de volgende specs:

- 16 kanalen

- ingangsbereik +/- 10 Volt

- 16 bits resolutie

- 5000 Hz samplefrekwentie per kanaal

- alle kanalen moeten gelijktijdig worden bemonsterd
(dus niet sequentieel)

- USB aansluiting

- de ingangen moeten galvanisch geïsoleerd zijn t.o.v. de USB aansluiting
en de eventuele netadapter

Als iemand denkt dat een dergelijke ADC-box wel verkrijgbaar is voor
Windows en Linux dan hoor ik dat graag.

De bedoeling is om er een openbron project van te maken. Dat houdt in
dat ik het schema, de printlayout en de software vrijelijk ter beschikking
wil stellen onder de GPL licentie.

Ik wil geen SMD componenten gebruiken tenzij het niet anders kan.

Op dit moment ben ik aan het rondkijken welke componenten ik wil gaan gebruiken.

Dit is mijn idee zover:

ADC: 16 stuks AD976 van Analog Devices, deze hebben een parallelle data uitgang.
De uitgangen wil ik multiplexen en dan via optocouplers (74OL6000, Fairchild)
aanbieden aan een of meerdere FIFO's (IDT7208, IDT). Daarna komt de USB-interface.
Dat wordt de UM245R van FTDI. Het voordeel van deze USB-module is dat er een seriële
poort geëmuleerd wordt en je dus niet zelf een USB-driver hoeft te schrijven.
De drivers hiervoor bevinden zich standaard al in de kernels van zowel Windows
als Linux. Voor de galvanische scheiding in de stroomvoorziening kan de THP-3
van TracoPower dienstdoen. Dat is een medical approved DC/DC-converter module.

De data transfer snelheid is 180 KByte/sec, te snel voor de meeste makkelijk
programmeerbare microcontrollers zoals de PIC familie. Ik wil kijken of het
mogelijk is om de besturing op te bouwen uit componenten die niet geprogrammeerd
behoeven te worden.

De aquisitie software voor op de pc schrijf ik zelf in C/C++ en voor de
grafische schil gebruik ik Qt zodat het geheel platform onafhankelijk is.
Het opslag formaat wordt EDF (European Data Format). De viewers voor dit
formaat zijn al gratis beschikbaar. Ook zijn er plugins voor Mathlab.

En dan nu de reden dat ik dit verhaal hier ophang, zijn er mensen die nuttige tips
hebben? Het zou een beetje zonde zijn als ik het wiel weer opnieuw zou gaan
uitvinden. Misschien dat er mensen zijn die een betere aanpak weten?

dat klink erg goed, ik had ook al zo'n idee ik heb een keer een 8 bits adc met parallelle uitgang op mijn parallelle poort aangesloten.
simpel uit te lezen en het werkte wel, alleen langzaam en mijn nieuwe pc heeft geen parallelle poort meer.
en mijn software kennis is niet zo goed om in C of VB een seriele poort programma te maken of zoiets.

Ik heb dat gedaan voor op het werk, maar een maatje groter:

16 kanalen, 500kHz parallel samplen, FPGA met DDR ram en ethernet verbinding.

Ik zou voor ethernet gaan, en niet voor USB: geen gezeik met drivers. Eenmaal dat je dat draaiende hebt is het echt een droom om mee te werken.

Op 26 januari 2009 16:16:53 schreef Teuniz:
En dan nu de reden dat ik dit verhaal hier ophang, zijn er mensen die nuttige tips
hebben?

16 bits is een behoorlijke resolutie, zorg dat je ontwerp analoog goed in elkaar zit. Ik ooit aan zoiets gewerkt, maar dat was ambitieuzer: 22 bit. Ik weet niet meer of dat ooit echt gehaald is.

Ik kom uit op een data bit rate van 1.28 Mbit, dat is dacht ik aan de hoge kant voor de FTDI VCI drivers, misschien beter de DLL drivers gebruiken.

Geen programmeerbare chips (dus geen uC, geen progr. logica) gebruiken lijkt me onzinnig, maar ieder zijn meug. Ik zou er een ARM voor nemen (mijn meug).

Op 26 januari 2009 16:16:53 schreef Teuniz:
- ingangsbereik +/- 10 Volt
- 16 bits resolutie
- 5000 Hz samplefrekwentie per kanaal
- de ingangen moeten galvanisch geïsoleerd zijn t.o.v. de
-Ik wil geen SMD componenten gebruiken tenzij het niet anders kan.

ADC: 16 stuks AD976 van Analog Devices, deze hebben een parallelle data uitgang.
De uitgangen wil ik multiplexen en dan via optocouplers (74OL6000, Fairchild)

aanbieden aan een of meerdere FIFO's (IDT7208, IDT).

De drivers hiervoor bevinden zich standaard al in de kernels van zowel Windows
als Linux.

-Ik wil kijken of het
mogelijk is om de besturing op te bouwen uit componenten die niet geprogrammeerd
behoeven te worden.

+ en- 10 volt .. ik zou een PGA inzetten voor da a/d. 20 volt verdeeld over 16 bit ... das pakweg 3mv per stap ..
maak jezelf jet leven makkelijk en werk van 10.24 tot -10.24 dan heb je niet af te rekeken met kromme copnversiefactoren. ( kwestie van een vref te pakken die een macht van 2 is .der zijn 2.048 en 4.096 volt referenties zat tegenwoordig.

hou er ook rekening mee dat je uit een 16 bit a/d hoogstens 14 bit nuttig data haalt...

5kHz ? waarom zo laag ? een geluidskaart haalt al veel meer. als je een motu koopt heb je 192 kiloherts inclusief alle drivers en dat spul is bulletproof. elke recording studio gebruikt dat.

galvanish geisoleerd : ook ten opzichte van elkaar ?

geen sMd ? good luck my friend... je fifos alleen al worden een ramp. en je sluit al direct al het beste materiaal uit.

de uitgangen multiplexen / dan sample je al niet meer simultaan he ...

ad976. slik dat ding kost 32 dollar ... 16 kanalen ? dat ding gaat meer kosten dan een complete computer ....
kijk eens naar i2c of spi A/d convertoren.

en zoiets maken zonder programmeerbare componenten ... dat wordt al een heel drama. dat wordt me een immense kast.

ik zou een ft245 vastknopen aan een kleine fpga , daar 16 seriele a/d convertoren aan vast en een controleerbare pga ervoor. met wat 'chance' kan je het zelfs volledig usb powered maken.

gebruik een FTDI2232 en emuleer een microcontrollerbus.
Gebruik ADC's met meer kanalen.

Mocht je sneller willen kan je nog een andere FTDI pakken.
http://www.ftdichip.com/Products/FT2232H.htm Hier mee kan je de bussnelheid van 480Mbit /s halen.

Als je perse galvanisch gescheiden wilt werken zijn SPI AD converters handiger. De galvanische scheiding kan je dan met optocouplers doen. Voeding is dan inderdaad een optie via een DC/DC converter.

Dit heb ik ook al gezien op boarden die voor de ESA gebouwd zijn. Soms vind je bij de BACO en quakelstein wel eens leuke 19"modules waar je die oplossingen uit leert.

Gezien de specs en bijbehorend analoog design is een gaatjesprint uitgesloten. Als je dan dus toch een PCB gaat (laten) etsen, waarom dan nog SMD uitsluiten? Er zit zat spul bij dat gewoon met het handje prima te solderen is. Kijk, dat je BGA's/LGA's en andere idioterie uitsluit kan ik begrijpen, maar zomaar 'geen SMD' zeggen werk je jezelf mee tegen, gezien je overige eisen.

NI (National Instruments) heeft toch zo'n ADC-boxen in hun gamma. En ik dacht dat die ook op een linux werken...

Het enige wat ze niet doen is simultaan werken... Ze zijn voor een hobby wel vrij prijzig (vind ik).

Iedereen bedankt voor de reacties.

stecj366: Ik zou voor ethernet gaan, en niet voor USB: geen gezeik met drivers.

In de Linux kernel zit die driver al ingebakken, dat is echt plug and play.
Onder Windows moet je wel eenmalig een driver installeren, stelt niet veel
voor.

Wouter van Ooijen: Ik kom uit op een data bit rate van 1.28 Mbit, dat is dacht
ik aan de hoge kant voor de FTDI VCI drivers, misschien beter de DLL drivers
gebruiken.

De FTDI VCI drivers gaan tot 300 KByte/sec. Dat is 2.4 Mbit/sec. Dat zou
dus moeten werken. De vraag is alleen hoe groot de FIFO buffer moet worden.
Ik weet van eerdere experimenten dat een USB-interface geen gelijkmatige
datastroom kan verwerken. Er vinden regelmatig hickups plaats. Weet iemand
daar iets meer over?

Wouter van Ooijen: Geen programmeerbare chips (dus geen uC, geen progr. logica)
gebruiken lijkt me onzinnig, maar ieder zijn meug. Ik zou er een ARM voor nemen
(mijn meug).

Een goed idee, maar... waar vind ik een ARM in een DIP behuizing?

free_electron: 5kHz ? waarom zo laag ? een geluidskaart haalt al veel meer.
als je een motu koopt heb je 192 kiloherts inclusief alle drivers en dat
spul is bulletproof. elke recording studio gebruikt dat.

En die motu:
- werkt onder Linux?
- heeft een frequentiebereik wat begint vanaf 0 Hz (DC)?
- heeft een galvanische scheiding d.m.v. optocouplers?

free_electron: galvanish geisoleerd : ook ten opzichte van elkaar ?

Nee, alleen t.o.v. de USB-interface en de eventuele netadapter.

free_electron: geen sMd ? good luck my friend... je fifos alleen al worden een ramp.
en je sluit al direct al het beste materiaal uit.

Voor de FIFO heb ik een IDT7208 in gedachten, die is verkrijgbaar in een DIP behuizing.

free_electron: de uitgangen multiplexen / dan sample je al niet meer simultaan he ...

Dat staat los van elkaar, je kunt alle ADC's op hetzelfde moment een converse_start pulse
geven. Daarna kun je de data van de ADC's een voor een uitlezen.

free_electron: ad976. slik dat ding kost 32 dollar ... 16 kanalen ? dat ding gaat meer
kosten dan een complete computer ....

Daar heb je gelijk in, voor wat de prijs betreft zou een andere ADC gunstiger zijn.

jovak: Gebruik ADC's met meer kanalen.

De meeste ADC's met meerdere ingangen gebruiken intern een analoge multiplexer waardoor
je dus niet simultaan kunt bemonsteren. Uitgezonderd sommige sigma/delta ADC's.

jovak: Als je perse galvanisch gescheiden wilt werken zijn SPI AD converters handiger.
De galvanische scheiding kan je dan met optocouplers doen.

Dat snap ik niet, waarom kun je een parallelle bus niet via optocouplers verbinden?
Daarnaast kan ik geen optocouplers vinden met een TTL interface die snel genoeg zijn
voor een 10Mbit SPI-bus.

Jochem: Gezien de specs en bijbehorend analoog design is een gaatjesprint uitgesloten.
Als je dan dus toch een PCB gaat (laten) etsen, waarom dan nog SMD uitsluiten?
Er zit zat spul bij dat gewoon met het handje prima te solderen is.

Voor sommigen misschien wel, maar ik vind het solderen van een LQFP behuizing met 52
pinnen en een pin afstand van 0.65 mm een ramp.
Daarnaast wil ik de moeilijkheidsgraad van dit zelfbouw project zo laag mogelijk houden
zodat ook minder begaafde personen dit kunnen nabouwen.

BLUE Config: NI (National Instruments) heeft toch zo'n ADC-boxen in hun gamma.
En ik dacht dat die ook op een linux werken...

Inderdaad, maar de galvanische scheiding laat te wensen over, de isolatie moet minimaal
1000 Volt zijn en de lekstroom minder dan 10 uA (medical approved).

Het enige wat ze niet doen is simultaan werken... Ze zijn voor een hobby wel vrij prijzig (vind ik).

Het is niet voor de hobby, ik wil hem gebruiken voor (medisch) onderzoek.

Op 27 januari 2009 11:23:06 schreef Teuniz:
Het is niet voor de hobby, ik wil hem gebruiken voor (medisch) onderzoek.

Oei. Niet zelf frobelen, laten maken of iets wat op de plank ligt kopen. Gaat een dure grap worden.

> Dat snap ik niet, waarom kun je een parallelle bus niet via optocouplers verbinden?

kan wel, maar je hebt er zo veel nodig

> Daarnaast kan ik geen optocouplers vinden met een TTL interface die snel genoeg zijn voor een 10Mbit SPI-bus.

6N137 dacht ik?

> Daarnaast wil ik de moeilijkheidsgraad van dit zelfbouw project zo laag mogelijk houden zodat ook minder begaafde personen dit kunnen nabouwen.

dat beperkt je enorm in je mogelijkheden.

een TQFPtje solderen *op een goede PCB* en *met goed gereedschap* is heus geen heksentoer.

> waar vind ik een ARM in DIP

niet. ik zei dat *ik* voor een ARM zou gaan, want daar ben ik op thuis. anderen nemen een flinke FPGA ofzo (ook niet veel kans dat die in DIP vindt)

Laat dat DIP toch varen. Er zijn SMD-to-DIP converter prints (zie bv mijn shop), en er zijn kant-en-klare modules met bv een ARM of een FTDI chip.

Ik zie een aantal gekke combinaties.

Je wilt dat het ding door iedereen is op te bouwen (geen SMD, geen programmeerbare logica), én dat het ding medical napproved is?

Ik denk niet dat je dan lekker in je hoofd ben, als de assemblage alleen al fout gaat, werkt dat niet meer. En denk je nou echt dat ik aan een apparaat wil hangen waar een of andere "onervaren persoon" aan heeft lopen knutselen? En denk je dat het apparaat door approvals komt? Alleen de tests al (en de kliniasche onderzoeken) zijn niet te doen bij een opensource project: om dit te betalen moet je er flink aan kunnen verdienen.

Ik zou zeggen: gooi het hele opensource en nabouwbaarmogelijkheids idee in het ronde archief en maak iets wat voor jou onderzoek voldoet. Gebruik SMD en programmeerbare logica om het mogelijk te maken.

Ik heb niks over approvals gelezen hoor. Niet alles waar het woord "medical" in voor komt moet approved zijn.

Maar ik ga mee met de rest.. neem gewoon smd spul. Zo'n toch wel uitdagend project moet je as-simple-as-possible houden, zeker als het om een medische toepassing gaat. Met zo'n rare through-hole eis gaat dat nooit een elegante oplossing worden.

Op 27 januari 2009 11:23:06 schreef Teuniz:

[...]

Dat snap ik niet, waarom kun je een parallelle bus niet via optocouplers verbinden?
Daarnaast kan ik geen optocouplers vinden met een TTL interface die snel genoeg zijn
voor een 10Mbit SPI-bus.

Wat wouter al zei, als je het hele systeem galvanisch gescheiden wilt maken heb je er al iets van 1 per bit van je AD converter nodig.

Wil je dan ook nog alle AD converters galvanisch gescheiden van elkaar hebben heb je er per kanaal het aantal bits nodig. Je hebt dan alleen al een heel bord vol met optocouplers.

Ik moet even zoeken welke optocouplers ik thuis van me sloopborden gehaald had, maar die haalden de 10Mbit/s

Is er ook een voldoende budget gereserveerd?

16 ADC, 16bits, galvanisch gescheiden betekent ook 16 DC/DC converters die 1000V kunnen hebben.

Ik zou seriele ADC's gebruiken en waar nodig smd. ;)
Voor dit project is redelijk wat kennis nodig.
Het beste is een kanaal ontwerpen, bouwen en testen.

Er is wat verwarring over de galvanische scheiding.
De ingangen hoeven onderling niet galvanisch gescheiden te zijn.
Alleen tussen de ingangen als geheel en de USB-interface (plus eventuele netadapter) moet een galvanische scheiding komen.

Waarom laat je geen schema zien?

Als je ethernet gebruikt heb je dan niet al automatisch een galvanische scheiding? Er moeten natuurlijk aan de ingang ook nog opamps met sample en hold komen. De ingangsimpedantie van die AD omzetter is met 13Kohm wel laag.
Je wilt waarschijnlijk skew van je data voorkomen en daarom 16 aparte converters gebruiken. Dit kan je ook doen door gelijktijdig te samplen en daarna met een gemuxte AD omzetter uit te lezen.

Als je AD doet, en dan 256 digitale signalen optisch wilt scheiden levert dat nogal veel optocouplers op. Persoonlijk zou ik de boel serieel maken, en dan optisch scheiden. Wat je bijvoorbeeld kan doen is een atmel aan de ADC kant zetten, en die op hoge baudrate door een goede optocoupler serieel de data laten versturen. Voila! 1 optocoupler en klaar is kees! (en dan eigenlijk de andere kant op ook nog 1).

Een ftdi232RL zet je op 3Mbit, en de avr kan dat ook. Anderzijds, dan heb je wel driver gezeik.... Hmm. Lastig.

Zolang je de smd niet kleiner maakt dan 0805 is het prima te doen. Ik ben begonnen met een paar pincetten, wat dun tin (0.5mm) en een simpele soldeerbout van ersa met 1mm punt. Even zorgen dat je printje goed ligt (vast tapen oid), heel klein beetje tin op een pad, onderdeel erop en even opnieuw verwarmen, andere kant en klaar.

Het lijkt misschien wat klein, maar het is prima te doen.

smd solderen is niet heel erg moeilijk.
vooral met die smd naar dip converters is het goed te doen.
je kan dan ook goedkopere IC's nemen waarschijnlijk.
SOIC is erg goed te doen, TQFP is al wat kleiner maar ook te doen.
zolang je geen SSOP verpakingrn neemt kan je het gewoon met een puntboutje doen hoor.
typ bij www.youtube.com maar eens smd soldering ofzo in.

voor verloop printjes kan je bij voti terecht of bij futurlec als je een paar weken geduld hebt:
http://www.voti.nl/winkel/catalog.html
moet je even op PBC's klikken

en voor futurlec:
http://www.futurlec.com/SMD_Adapters.shtml
futurlec verzend vanuit thailand dus dat kan even duren.
je hebt wel paypal of een creditcard nodig om te betalen

Wat moet je met verloopprintjes als je je eigen print gaat maken?

Op 27 januari 2009 17:02:44 schreef riktw:
TQFP is al wat kleiner maar ook te doen.
zolang je geen SSOP verpakingrn neemt kan je het gewoon met een puntboutje doen hoor.

Ik liep vandaag langs het zelf-gesoldeerde bordje met de altera Cyclone er op. Jee, wat zitten die pennetjes dicht bij mekaar. Ik dacht, laatst nog zo'n tssop gedaan (FT232RL), is dat nu even klein? Antwoord: Nee. Die altera heeft nog kleinere pennetjes. Flux, soldeerlitze, en een 0.25mm punt en het lukt uiteindelijk allemaal...

deze?

http://www.uploadarchief.net/files/download/bluebird%20053.jpg

Heb je helemaal geen 0.25mm punt voor nodig joh, dikke punt, liefst gullwing, fluxen, bal tin er langs trekken, bij sluitinkjes nogmaals fluxen en trekken, klaar.

Op 27 januari 2009 20:40:20 schreef Jochem:
Wat moet je met verloopprintjes als je je eigen print gaat maken?

lijkt me handig om te oefenen, en ik zet ook wel eens verlooprpintjes op een printplaat die ik ga etsen/laat etsen.
dit omdat ik op die bordjes makkelijk het smd component erop kan solderen en met de multimeter makkelijker kan testen.