Sida 1 av 2

Utnyttja slew-rate hos OP-förstärkare

Postat: 15 mars 2006, 00:03:58
av JimmyAndersson
Ett av mina favorit-ordspråk är "If you can't beat them, join them".

Kom på att man kan utnyttja en OP-förstärkares slew-rate och bygga en pryl som förstärker transienterna hos ett ljud. Transienter är det absolut första ljudet som når örat. Till största del så använder hjärnan det för att riktningsbestämma ljud. Förstärker man transienterna kan man även få lite mer "liv" i en trött ljudfil.

Matar man in en fyrkantvåg i en OP med långsam slew-rate så får man en lite mer trekantig kurva. Den tar helt enkelt lite tid på sig för att gå upp till rätt nivå. Det är det som är slew-rate.


Det jag vill göra är i princip:

* Dela på ljudsignalen så man får tre likadana signaler.
* Signal A fasvänds och passerar en OP med långsam slew-rate.
* Sedan slås den ihop med ljudsignal B (orginal-ljud.)

Resultatet blir att man bara hör transienterna. Inte så kul.
Därför mixar man den signalen med C (orginal-ljudet) igen.

Nu låter ljudet kraftfullare. Motsatsen till överkomprimerat ljud (som vissa radiostationer har) ungefär.



Två frågor:
1. Tips på OP-förstärkare med långsam slew-rate? (Som exempel har 741'an 0.5 V/µs.) Jag vill ha mindre värde (långsammare stigning) än det.
2. Kan man påverka slew-raten på något sätt? Eller rent av bygga något som har riktigt långsam slew-rate? Det kuligaste vore om slew-raten gick att påverka steglöst med en pot.


edit: Allt mellan 0.001V/s till 1V/µs är av intresse... :)
Som vanligt är alla idéer välkomna.

Postat: 15 mars 2006, 01:10:35
av $tiff
Låter som en spännande idé!

Går det inte att betrakta samma filter i frekvensdomänen istället;
ger inte en långsam slew-rate samma effekt som ett högpassfilter?

EDIT: Jag menade lågpassfilter, tack Rohan!

Postat: 15 mars 2006, 01:43:07
av JimmyAndersson
*Tänker efter..*

Jo det har du helt rätt i.


Men förresten, skulle det även kunna påverka låga frekvenser?
Rent allmänt brukar högpassfilter plocka bort låga frekvenser, men det kanske finns något sätt att lösa det utan att all diskant förstärks efter fasvändning och mixning med orginal-ljudet.


edit:
Kanske om man delar upp frekvensområdet, typ delningsfilter och kör en fasvändning/mixning av varje område. Nu anar jag att det kanske var så du tänkte... :) Då får man en liten bonus-effekt: Man kan bestämma förstärkningen vid flera frekvensområden. Bra!

Postat: 15 mars 2006, 01:48:07
av Marta
Varför inte en mjukvarulösning när det ändå gäller ljudfiler?

Postat: 15 mars 2006, 01:55:45
av JimmyAndersson
Ojdå, en tungvikts-lösning. :)

Tänker du på en dator-variant eller någon mikroprocessor? Det senare kräver förstås lite mer. A/D och D/A-omvandlingar uppåt 40kHz minst. Någonstans kring 16 till 24-bit. Plus en snabb processor som klarar alla beräkningar. Ehm, oj.. det blir nog en DSP...

Jag har inte programmerat något ljud-relaterat i den här klassen tidigare.
Kan du (eller någon) bjuda på en liten snabb-genomgång av vad som skulle behöva göras i programmet?


Det känns ändå som att en mjukvaru-lös variant vore både lättare och betydligt billigare. :)



"Varför inte en mjukvarulösning när det ändå gäller ljudfiler?"

Egentligen är det nog lättare att behålla ljudet i den analoga världen. Det känns åtminstone så efter att jag listade sampling-specifikationen... :D


edit: Tanken är förresten att kunna använda resultatet i musikproduktion. Blir det bra så kan det bli ett oväntat verktyg vid slut-mixning.

Postat: 15 mars 2006, 11:08:45
av Rohan
$tiff skrev:Går det inte att betrakta samma filter i frekvensdomänen istället;
ger inte en långsam slew-rate samma effekt som ett högpassfilter?
Borde det inte vara tvärtom? Långsam slew-rate är väl att den inte hinner med att återge höga frekvenser? Typ, du skickar in en fyrkantspuls men får ut något utsmetat triangelliknande. Då har väl de höga frekvenskomponenterna försvunnit och alltså lågpass-effekt? Eller tänker jag fel?

Visserligen blir resultatet av summeringen av originalet och den fasvända lågpassfiltrerade signalen en högpassfiltrerad signal.

Postat: 15 mars 2006, 15:22:33
av JimmyAndersson
Gjorde en simulering av en fyrkantvåg med högpassfilter, och du verkar ha rätt. Utsignalen ser mer ut som effekten av en långsam slew-rate. Först en kurva med högpassfilter:


Bild

Lågpass:
Bild

Filtren var passiva. Motståndet var på 40ohm och kondensatorn på 10µF. Fyrkantvågen var på 45.3Hz.


Frågan är hur pass frekvensberoende en filter-lösning är.
Jag provade att öka infrekvensen till 900Hz och då såg det ut såhär efter samma högpass-filter som innan:

Bild


edit: Fixade bilderna.

Postat: 15 mars 2006, 15:56:36
av Rohan
Filterlösningen skulle jag vilja påstå är extremt frekvensberoende. Det är väl det som är poängen med ett filter?

Postat: 15 mars 2006, 16:25:52
av JimmyAndersson
Jo, det är sant.
Då kommer det alltså bara att fungera om man delar upp frekvensområdet som jag skrev tidigare. Om man annars bara använder ett högpassfilter så blir enda resultatet en ökning av låga frekvenser (efter fasvändning/mixning.)

En OP med långsam slew-rate uppför sig visserligen nästan likadant, men ett filter går ju att påverka mer.

Får någ fundera mer på detta.
Har en tanke om att blanda in en schmitt-trigger för att få samma stigning på varje kurva oavsett frekvens. Då blir det inte lika frekvensberoende resultat.


edit: Tips på något bra simulatorprogram för sånt här?
Jag laddade ner Matlab, men i demoversionen kan man knappt göra någonting, så det hjälpte inte så mycket. Behöver därför fler tips.
Det jag använder nu heter kort och gott "Circuit Simulator Applet" och är en java-applet som fungerar bra. Men om man laddar in ett sparat schema så försvinner det förra. Lite jobbigt att behöva bygga en oscillator varje gång. Det vore bättre om man kunde bygga en oscillator och sedan spara och ladda in så många man vill ha. Sedan vore det kul om man kunde skicka in en befintlig ljudfil i simulatorprogrammet. Det blir inte riktigt samma sak att använda sinus eller fyrkantkurvor..

Postat: 15 mars 2006, 19:44:43
av BER
Filter som piggar upp ljudet... Frekvensdomänen som en ideal fyrkantsvåg har är ju knappast något som ens den dyraste ljudutrustning skulle kunna återskapa aukustiskt. Så schmitt-trigger är väl ingen större ide att blanda in trots att den inte skapar en ideal fyrkantsvåg. Men om man skall göra denna typ av filter så gör det i mjukvara, då är det bara att byta koden för att ändra egenskaper.
Det senare kräver förstås lite mer. A/D och D/A-omvandlingar uppåt 40kHz minst. Någonstans kring 16 till 24-bit.
Blev lite förvånad över detta... som ljudtekniker borde man väll kunna nyquist teorem. Nog om detta ...

Mitt förslag på digital signalbehandling där hög ljudkavlite önskas(Insignalen antas ha frekvensen 20 Hz - 22 kHz):

1. Lågpassfilter på 30 kHz
2. AD med 88 kSa, upplösningen väljs efter vad man hittar som har bäst SQNR dock över 14 bitar och som plånboken medger. Klokt är nog även att välja en med seriellt gränssnitt då man annars kommer ha fullt upp med att följa alla konstruktionsregler.
3. DSP med DMA mot AD och DA.
4. DA med 44 kSa upplösning väljs enligt samma sätt som ovan.

Mjukvara
1. FFT
2. Lågpassfilter i frekvensdomänen
3a Återskapa frekvenskomponenterna i tidsdomänen med hemsnickrad vågform (blandning av fyrkant och sinus ) i 44 kSa

eller

3b Skapa övertoner till frekvenskomponenterna och sedan IFFT 44 kSa.

Postat: 15 mars 2006, 20:04:55
av grym
slewraten har ett annat ljud än lågpassfilter, så det kan vara värt att prova
jag tror inte riktigt men ändå kan det vara värt att prova, om inte annant än för att förkasta iden

jag har sett någon koppling med variabel slewrate, kommer dock inte ihåg i vilken bok jag såg den i

kanske man kan ordna något annat samtidigt, eko och fördröjningar i enbart högre frekvenser ger kul ljud om man inte överdiver

Postat: 15 mars 2006, 20:43:19
av JimmyAndersson
BER:

"Blev lite förvånad över detta... som ljudtekniker borde man väll kunna nyquist teorem."

Jodå, den kan jag. Det var därför jag skrev "uppåt 40kHz minst". :)


"Men om man skall göra denna typ av filter så gör det i mjukvara"

Vad är fördelarna med att lösa det i mjukvara istället för med (mestadels) analoga komponenter? Än så länge är de bästa filtren analoga.


"Så schmitt-trigger är väl ingen större ide att blanda in trots att den inte skapar en ideal fyrkantsvåg."

Det gör inget. Det är på sätt och vis det jag vill åt: Göra frekvenskurvan lite mjukare.
Idealet vore om lösningen påverkar alla frekvenser lika mycket. Det är just där schmitt-triggern kommer in. Med ett lågpassfilter efter schmitt-triggern så har man fått en funktion som gör frekvenskurvorna mjukare, helt oberoende på frekvensen man matar in. Fasvänder man den signalen och mixar med orginal-ljudet så borde man få ett resultat där ljudet är lite skarpare över helt frekvensområdet. -Det är iallafall tanken (i version 0.001b, men ändå.)

Jag skrev tidigare att idealet vore om lösningen påverkar alla frekvenser lika mycket. Med andra ord skulle detta bli en "exciter", dvs en apparat som brukar användas för att få ljudet lite "krispigare". T.ex för att få ljudet från kassettband att låta bättre.


Men nu har vi bara tittat på de enstaka ljudkurvorna. Musik består ju som bekant inte av en statisk frekvens. Idén ovan skulle ju påverka varje frekvens. Men hur löser man det om man vill att den bara ska förstärka (eller förminska) den första attacken av varje ljud? Den består ju inte av en enda liten period (dvs från att ljudet går från noll tills det är vid noll igen).


Tur att det här är idébanken. :)
Därför provar jag en annan idé: En peak-detektor. Inte särskillt svårt att bygga med en OP-amp, några motstånd och en kondensator. Låter man den styra när ljudet ska filtreras så är man lite närmare målet.


Jag har inget emot att lösa det i en DSP. Fördelen vore att man kan lägga in fler funktioner. Sodjan var inne på det i en annan tråd. Nackdelen är att jag som sagt aldrig har programmerat filter eller andra ljudpåverkande funktioner.


Nåja, nu har jag skrivit tillräckligt. Vad tycker ni om det jag skrivit?
Har jag en poäng eller är det helstolligt? :)



Grym:
Då finns det alltså "prylar" med variabel slew-rate. Det låter bra.
Idén med eko/fördröjning var inte dum. Förstår hur du menar. Tror att jag sett en sådan lösning någonstans.

När jag tänker efter så har jag gjort så för att få lite mer kraft i elgitarrer:
Delat på signalen. Den ena förskjuts i ett delay, komprimeras och åker igenom ett filter. Ut kommer ett tunnt, hårt, skrapigt ljud. Blandat med orginal-ljudet blir det mycket bättre. Lärde mig det av Michael B Tretow.. (Skrytvarning..) :D

Postat: 15 mars 2006, 22:25:22
av grym
tror det var en koppling med två op och något litet till

kanske en annan lösning är att mixa in lite ljud som är tonhöjt krångligt men fullt analogt möjligt, med samma saker kan man ju ändra till nedfrekvens med

Postat: 15 mars 2006, 22:44:22
av JimmyAndersson
En snabb sökning på op "variable slew-rate" gav en intressant träff:

Datablad till en op-förstärkare. På sidan 10 finns ett schema för en koppling med variabel slew-rate! På sidan 9 finns förklaringen till schemat. (Vet inte varför de gjort så..)

Fint!


edit: "Variable slew-rate filter".. hm, det kanske inte är rätt funktion?
edit 2: Eller.. jo. :)

Postat: 15 mars 2006, 22:49:11
av Fritzell
Om du behöver en OP med dålig slewrate kan du bygga en själv! :) Jag har gjort precis detta (fast med mycket bra slewrate ;)) Titta tex på schemat till min förstärkare (här
Kondensatorn 100pF som ger upphov till millereffekten bestämmer op:ns slewrate. Om du ökar den markant får man sämre slewrate (men också kortare frekvensspekrum). Självklart behöver du inte den högra delen av schemat och en hel del andra grejer också (antar att op:n inte behöver kunna pumpa ut 6A :)) Det finns även enklare sett. Bara ett vanligt GE-steg med en transistor och en kondensator mellan bas och emitter bör ge upphov till samma effekt.
Om du är intresserad kan du läsa mer om Millereffekten här

edit: Var visst lite sen ser jag. Det där som du länkade till verkar betydligt enklare