Ljudinspelning med microkontroller?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
TheUnreal
Inlägg: 115
Blev medlem: 4 september 2005, 16:04:57
Ort: Sundsvall
Kontakt:

Ljudinspelning med microkontroller?

Inlägg av TheUnreal »

Jag har fått en idé som jag inte vet om den är realiserbar.

Jag har tidigare lekt lite med mindre PIC modeller, men inte givit mig in i några större projekt. Nu har jag fått en idé som kanske kan bli nått även utanför mitt hobby område :)

Frågan är igentligen: Finns det någon microcontroller som är kraftfull nog att A/D omvandla upp till åtta kanaler "sammtidigt" med 16 bitars upplösning, och signaler upp till 15-20 kHz?
Om inte den sammtidiga lösningen är möjlig så kan även en kanal i taget vara intressat i en lite bantad ide.

Är det svårt att jobba med externa RAM-kretsar och microcontrollers?
Jag inser ju att det blir en del data som ska sparas undan.
Det finns inga behov av att lagra datat strömlöst, utan jag vill gärna peta iväg datat på någon form av buss till centrallagring fortast möjligt.

Vore tacksam för lite uppgifter som kan ta mig frammåt i tankearbetet, vore kul att göra annat än projektdokument för något av mina projekt :)

mvh
/Mattias
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Ingen "standard" PIC sannolikt, kanske någon av dsPIC'arna, de har
generellt snabbare ADC och de kan i många fall köras flera parallellt.
Men inte i 16-bitar, så vitt jag minns...
limpan4all
Inlägg: 8458
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Inlägg av limpan4all »

Ja det låter sig göras "ganska" enkelt.
Tag en LPC2368 med externa I2S Codecar (2st typ AD1935) och "sänd" det hela via UDP och Ethernet som "medium".
Jag har antagit att du skall sampla med 44k1 och att det är 8 monokanaler och ingen lokal datakomprimering eller annan signalprocessning.

Om du vill göra någon som helst form av databearbetning så hamnar du på en Blackfin lösning, då finns det mycket färdigt bara att handla...
http://blackfin.uclinux.org/gf/
Men då har vi lämnat hemsoppade kort och hobby projekt och snarare är i semiproffsnivå.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Låt oss räkna lite:
"...signaler upp till 15-20 kHz" ger att samplefrekvensen måste vara minst 40KHz och helst mer men vi stoppar där för att ha ett tal.

8 kanaler med 16 bit... faktisk har jag inte sett speciellt många µC med 16-bitars AD, de brukar stanna vid 10-12 bit.

OK, dedikerat AD-omvandlare alltså, detta kan lösa kanalantalet också.

Den mängd data som ska skyfflas är 40000 * 2 * 8 bytes per sekund = 640kBPS, detta är en ganska stor datamängd. Ska du spara 1 sek ljud ska du alltså ha minst 640kB RAM, det är nog tvingande nödvändigt att ha extra minne... mycket av det också...

Och 16 bit till ljud... pratar vi studio här?

Och för att behandla den uppmätte ljud ska det en "aning" datakraft, säg att varje kanal behöver 20 CPU-cyklar/sample, det ger att processorn kör med minst 6,4MIPS, ska det göras med t.ex. PIC18 ska kristallen vara på 25,6MHz bara för att nätt och jämt hänga med.

Så det är alltså stora datamängder det rör sig om och jag misstänker att du har "missat lite i planeringen" när du tänkte fram vad det nu är du vill göra. Men det betyder inte att man inte kan lösa det, det är egentligen bara frågan för HUR man ska lösa det. Det kan även vara en hjälp om du beskriver VAD du vill göra, det finns lösningar på nästan allt.
Lars1970
Inlägg: 192
Blev medlem: 22 februari 2008, 22:30:36
Ort: Stockholm

Inlägg av Lars1970 »

För inspelning av ljud och styrning vilket "spår" som ska spels upp mhja uC så kan jag rekommendera någon av ISD25xxx kretsarna tex ISD25120 med vilket du kan spela in upp till 120s ljud eller kortare ljudsnuttar som tillsammans ger en total tid på 120s. Styrningen sker med 3 IO pinnar från uC.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Men de klarar förvisso bara "telefonkvalitet", inte frekvenser upp till 15kHz vid 120sek och definitivt inte heller i 16-bitars kvalitet.

Men det kan mycket väl vara att de räcker till och blir över, det framgår ju inte om de uppställda krav har substans eller inte.
TheUnreal
Inlägg: 115
Blev medlem: 4 september 2005, 16:04:57
Ort: Sundsvall
Kontakt:

Inlägg av TheUnreal »

Frågan är igentligen mer av akademiskt ursprung.

I början så var planen att bygga ett bevattningssystem för dom stackars "gröna" växterna hemma.

Men sen började jag fundera lite på om inte distribuerat A/D vore nått att föreslå på jobbet.... Därav 16-bit och absolut minimum 12kHz.
Eller åtminstonne ta upp som idé till examensarbete på den där ingenjörsutbildningen jag gick för nått år sedan (nä inte helt avslutad pga.... arbetslivets kallelse)

Hur som haver så har jag fått ett "utvecklingsstopp" och ska ut på vägarna och skapa nya kunder istället :)

Men i mitt stilla sinne så skulle jag som fritidsprojekt villja bygga en POE ansluten A/D omvandlare som kan buffra ca en sekund i 16-bit 12-15kHz.
Om jag får det projektet på fötter så skulle kanske chefen få kunna köpa lös det... ;)

Någon som känner till om det finns ethernet anslutna A/D-kort? Mina sökord verkar inte ha kraften med sig på google :/
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Mest troligt behöver en sådan modul även en signalprocessor eller kraftig mikrokontroller som styr en AD, minne och fixar ethernetprotokollet.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

En inte helt orelaterad fråga: Om man ska göra tvärtom, dvs spela upp ljud (kanske från .wav-format eller liknande) med en MCU, vilken väg är att gå? Låt oss anta att ljudfilen i fråga finns tillgänglig på ett ställe där MCU:n kommer åt den, hur skapas själva ljudet? D/A och lämpliga filter? Spelar ljudets samplingsmängd / freksvens in även här?

Jag har inte googlat ännu, det jag är ute efter är den ungefärliga tankegången för ett eventuellt projekt, så att jag senare kan sätta mig ner och detaljgoogla på saker och ting.
limpan4all
Inlägg: 8458
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Inlägg av limpan4all »

Det är oftast enklare att spela upp än in.
Även om man måste packa upp t.ex MP3 ljud (finns dedicerade coprocessorer att ta till om CPU´n inte räcker till).
Men generellt har man problem att hantera datavolumerna vid inspelning så kommer man att ha problem även vid uppspelning.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

@ bos

Ja, om du lyckas skyffla datamängderna till mikrokontrollern så är det bara att DA-omvandla och lågpassfiltrera. För att underlätta konstruktionen av det analoga filtret så är det lämpligt att översampla signalen digitalt innan man kör ut den på DAn.
Matte
Inlägg: 218
Blev medlem: 4 april 2007, 19:54:17
Ort: Stockholm

Inlägg av Matte »

Du kan juh kolla på STM32 vilket är en 32-bitars ARM mcu den har 2st 12-bit 1Msmp ADCer vilket kan ge dig ungefär 5ggrs översampling vid 8kanaler och 44.1kHz.
Den ska enligt uppgift även klara FS+ MP3 dekodning i mjukvara, största MCUn kostar under 100kr på elfa och farnell.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Det är en bra idé, det är bara bitdjupet i ADn som saknas för att få riktigt bra ljudinspelningar.
Skriv svar