Sida 1 av 1

Programmeringshjälp till lågfrekvens dator-interface

Postat: 30 juli 2007, 22:06:46
av ashsama
Skulle kunna behöva lite hjälp då jag ej kan programmera och ej kan fullfölja hela projektet utan hjälp, då kan jag bara göra den analoga biten, visst går det också men när jag gör kortet/designen vill jag passa på att göra även den digitala biten.

Det jag skall bygga är ett lågfrekvens interface, 0-100kHz (ev. 0-44.1kHz).
Detta skall mäta en insignal analogt, framför allt var det tänkt för lite radioastronomi för att kunna analysera större områden, men den kommer gå lika bra till audio och troligvis även saker som EEG och ELF, jordens magnetfält, oscilloscope, spektrumanalysator mm - använd fantasin...

Anledningen till detta var att kunna FFT/spektrum-analysera lite bredare frekvensområden än vad ett ljudkort klarar, samt göra detta med låg brusnivå och faspåverkan o distortion.
Lite isoleringskretsar, lite op'n, mm består analogdelen av, däremot digitalbiten skall ha en A/D och på detta vill jag ha usb så jag antar det blir nån FTDI krets på detta (om inte nån har bättre idéer).
Polarn o jag gjorde iofs usb interface direkt med en Mega8 men kan som sagt inget om sånt stuff, jag är analogdesigner :)

Så detta vill jag ha två funktioner till.

Ett, det skall till en drivrutin så att enheten poppar upp och identifieras som ett 'vanligt' ljudkort, på det viset funkar apparaten med all befintlig FFT mjukvara som använder ljudkort.

Två, om programmeraren ej orkar göra en vettig app. själv så skall det gå att komma åt digitala streamen så att andra kan göra sin egna mjukvara lätt, partiell open source? :)

Med vettig app så menar jag saker som FFT waterfall/spektrogram (helst 2D/3D), spektrum, väldigt gärna även time series som kan detektera pulser på på ms, och även fas-analysering skulle vara trevligt.
De två första är dock de viktigaste.
Man skall kunna justera dB känsligheten samt området inom vilket det skall analysera. (floor och range)
Man bör kunna ändra samplingshastighet och fft (samples) sizen, för att få hög upplösning, gärna under 0.1Hz men minst 1Hz iaf.
Lite average/smoothing, samt möjlighet att spela in till wave i olika format (behöver kanske inte alltid CD kvalitet).
Uppdateringshastigheten skall gå att ändra från så fort som möjligt (så bra realtid man kan få) till att sampla flera sekunder/minuter emellan.
Gärna en triggerfunktion som kan detektera en spik och larma.

Kanske låter som mera än det eg. är... är inte så mycket riktigt - jag säger inte det är lätt - jag kan inte ett jota om det...

Nån som känner sig manad? hehe :)

TILLÄGG: Detta skall för den delen vara till windows då dom som kan vara intresserade att köpa detta knappst kör unix/linux

Postat: 31 juli 2007, 07:38:37
av grym
bara en liten fundering, sb live externt usbljudkort 24 bitar och 96 khz, jag skaffade ett sådant för att ha det till labbdatorn(må den bli färdig snart) , jag vill annvända den som skop, fft och logger med riktigt lång samplingstid

jag har två saker som måste ordans, dc koppling och hitta mjukvara som passar, det sista hadde jag ett men glömde bort vilket det var så jag måste börja leta igen :oops:

Postat: 31 juli 2007, 12:05:34
av ashsama
96khz samplingsfrekvens menar du? Blir lätt missförstånd :)
(tror inte SB bryr sig om sådant utanför hörbart område)
Jag menar bandbredden, DC-100(44)khz...

Postat: 31 juli 2007, 12:09:12
av grym
japp, fel av mig, för att få vettig signal upp till 100khz så behöver du någonstans 400-500 kilosampels per sekund

Postat: 31 juli 2007, 12:56:25
av ashsama
Enligt Nyqvist eller vad tusan han hette så säger man 2xfrekvensen så för 44.1khz bandbredd skall det räcka med 192khz samplingsfrekvens,
det är korrekt ja...
(därför jag skrev 44 inom parantes för det blir antagligen det jag kommer köra för enkelhetens skull)

Postat: 29 december 2007, 05:20:28
av Lonius
Blir det något mer om detta ämne???

Postat: 29 december 2007, 05:49:00
av blueint
En fotnot om nyqvist/bandbredd. Att återskapa en frekvens x kräver f=2x. Men det är inte detsamma som bandbredd, vilket oftast kräver f=5x eller f=10x. Kolla på digitala oscilloskop (DSO) så ser man detta.
Ett tankeexempel är en halvvågssinus som är samplad 2 ggr. Eller 5-10 ggr, man kan lätt föreställa sig vilket dataset som får fram vågformen mest korrekt. Så för 0-100kHz, kanske man bör sampla med iaf 500 ksps. 12 Mbps USB bör klara detta med 8 bitars bredd.
Glöm inte USB interfacets natur med overhead, pollning etc.. så rejäl buffring (=latens) blir en konsekvens.

(finns firewire/ethernet etc.. annars :D )