Tarkka RIAA-korjain putkilla

Markus Kantola

Hifiharrastaja
Liittynyt
27.8.2018
Viestejä
357
Kaupunki
Pyhtää
Ajatus tarkasta putkilla toteutetusta riaa-korjaimesta jäi kytemään messuilla 2019. Levyjä soiteltiin benzin äänirasialla, Riston tarkalla riaa;lla, Hoffan 525 kajareilla ja mun hybridiputkipäätteillä.
Hyvää toteutusta olen netistä etsinyt ja päädyin jalostamaan John Broskyn passiivisilla kaksivaiheisilla suotopiireillä varustettua versiota.
Harrastajaporukasta sain Salolta apuja että löytyi mukava simulointiohjelma, ilmainen LTSpice, muutaman illan kun siihen arvoja naksutteli niin nyt 10Hz - >50kHz alue kulkee 0.1dB korkean ruudun keskiosaa pitkin.
Tuloputkeksi kaavailin ensin EF86 pentodia mutta päädyin sitten kuitenkin ECC83 tuplatriodiin. Kohinataso näillä on samaa luokkaa .. hilalla 2-3 uV joten selvää on että mc-rasiaa ei tähän tarvitse kytkeä kun 300uV tulojännitteellä s/n suhde jäisi 40dB paikkeille.(Kiitos Salolle tästä huomiosta) MM-rasialla sen sijaan päästään yli 60dB lukemiin kun rasian antojännite on suurempi kuin 2.5mV. E
En tykkää laittaa katodille niitä elkoja joten 1k katodivastuksella vahvistus jää sen verran alas että ylimääräinen vahvistusaste tarvitaan että päästään noin 50dB/ 1kHz lukemiin.
Tämä aste ei saa kääntää vaihetta joten sekin tuli sitten tuplatriodista tehtyä.
Lähtöimpedanssi piti saada niin alas että korjain ohjaa moitteetta myös transistorivahvistimia, siksi ECC82 katodiseuraaja jossa 2.5kohm katodivastus ja biasointi tällä hetkellä 5mA .. näihin voi tulla vielä hiukan muutosta.

RIAA_V13.jpg
 
Simulodessa huomasin että käyttöjännitteiden rc-suotopiirien vaikutus taajuusvasteeseen on huomattava ... siksi rc-suodot on hyvä olla ajateltuna jo tässä vaiheessa.
Piirikortin tein KiCadilla ja modasin putkikantaa sen verran että siihen mukavasti menee tuo Uraltonen kullattu jossa pinnien leveys on 1.6mm. Kortilla on mahdollisuus
muuttaa äänirasialiitännän tuloimpedanssia sekä kapasitanssia .. kortilla on pin-header johon voi liittää vastuksen ja kondensaattorin.
Kortilla on myös käyttöjännitteen rc-suodot sekä putkien hehkujen pehmokäynnistys.
Passiiviset suotopiirit täytyy rakentaa tarkkaan jotta korjauskäyrä pysyy 0.1dB ruudussa. 675pF kondensaattori täytyy mitata ... 1% tarkkuus ei riitä mihinkään.
Miten sitten pieniä kapasitansseja mitataan tarkasti ilman siihen tarkoitettuja mittalaitteita ... hyviä ideoita otetaaan vastaan.
Netistä löysin yhden tavan .. tehdään cmos 555 värähtelijä ja mitataan taajuus .. 1Mohm + 1Mohm + 675pF >> 711.1 Hz.
Kortit tilasin tänään Seedistä ... muutaman viikon päästä siis pääsee kasaamaan testikappaletta.
 
Tuohan näyttää oikein hyvältä! Sinänsä n. 42 dB vahvistus pitäisi riittää MM-rasialle ja siitä 20 dB lisää sopii MC-rasioille. 50 dB on aika paljon mutta vaimentaminen on toki paljon helpompaa kuin vahvistuksen lisääminen ja 50 dB sopii myös high-output MC:lle.

Periaatteessa 1% konkkien tarkkuudeksi pitäisi hyvinkin riittää vai näyttääkö simulointi että herkkyys on tälle erityisen suuri?

Oskillaattorikytkentä on hyvä menetelmä kapasitanssiarvojen vertailuun kunhan se on riittävän stabiili.
 
Hei Risto
Vahvistus tuli laitettua hiukan yläkanttiin kun molemmille kanaville on oma tasonsäätö jolla voi kompensoida vaikkapa edullisten äänirasioiden kanavatasapainoa. Äänirasioiden antojännitteitä näkyy myös olevan suunnilleen yhtä monta kuin rasiamallejakin joten tasonsäätö RIAA;ssa puoltaa paikkaansa. Simuloidessa kun pienennän tuota 675pF konkkaa 6pF niin diskanttitaso nousee 70mDb jolloin voi käydä niin että jos muiden komponenttien toleranssit vaikuttavat bassopäähän saman verran niin ei pysytä enää 100mDb ruudussa niinkuin halusin. Siksi rakentelen nyt tarkkaa pikofaradiluokan kapasitanssimittaria LMC555;stä ja Arduinosta LCD-näytöllä.
 
V12_riaa.jpg

Kortit on tänään laitettu Seeediltä meillepäin tulemaan ... tässä vielä kuvakaappaus KiCadista ... kaikki romppeet käyttöjännitteiden rc-suotoineen ovat kortilla.
Sähköä sisään ja soittelemaan. Proto kasataan Hammondin 1550N koteloon .. katsellaan myöhemmin jos mitoista voi vähän tinkiä.
 
Arduino UNO;sta tuli toimiva ja riittävän tarkka kapasitanssimittari ... sillä saa mitattua nuo korjauspiirien kondensaattorit kun juottaa nastojen A0 - GND väliin noin 500pF kondensaattorin jonka tarkka arvo täytyy tietää ja kirjoittaa koodin 25. riville. Mitattava kondensaattori laitetaan arduinon liittimiin A0 - A2 ja sitä voi vaihtaa lennossa.
Mittarin resoluutio 500pF alueella on 0.1pF ja heikkenee mitattavan kapasitanssin suuretessa niin että alueella 22000pF se on noin 21-22pF (0.1%) Siis resoluutio .. ei kokonaistarkkuus. Tarkkuus määräytyy siitä kuinka tarkkaan tuo juotettava "referenssikondensaattori" saadaan mitattua ... sekä sitten arduinon sisäinen kapasitanssi voi heitellä yksilöittäin. Sitä voi korjata koodiriviltä 23. Yritän liittää koodin tähän jotenkin viksusti ...

const int OUT_PIN = A2;
const int IN_PIN = A0;
const int i = 0;
volatile int val = 0;

/* Mittari perustuu tähän https://hackaday.com/2014/01/22/capacitance-measurement-with-the-arduino-uno/

Resoluutio parannettu niin että alueella 500pF se on 0.1pF ..
1500pF noin 0.3pF eli noin 0.02%
ja siitä heikkenee mitattavan kapasitanssin kasvaessa
niin että 22000pF resoluutio on 21.2pF (0.1%) ... m.kantola
Arduinon outputtia käytetään tässä kytkennässä tosi väärin
kun sillä varataan ja puretaan kondensaattori ilman sarjavastusta
mutta alkuperäinen kytkentä oli näin ja toiminee kunhan mitattavat
kondensaattorit ovat kohuupieniä arvoltaan ... alle 50nF ok (luulisin)
Tämä on ihmeen tunteeton ulkopuolisille häiriöille ja printtaa
usein samaa lukemaa pitkään.

Capacitance between IN_PIN and Ground
Stray capacitance is always present. Extra capacitance can be added to
allow higher capacitance to be measured.
*/
const float IN_STRAY_CAP_TO_GND = 29.00; //initially this was 30.00
// A0 - GND väliin juotettu 500pF kondensaattori
const float IN_EXTRA_CAP_TO_GND = 500.00; // laita tähän juotetun konkan tarkka arvo
const float IN_CAP_TO_GND = IN_STRAY_CAP_TO_GND + IN_EXTRA_CAP_TO_GND;
// Lisätty lukukertoja niin että arvo luetaan 30 kertaa .. siksi 30690
const int MAX_ADC_VALUE = 30690; // alkuperäinen 1023 * 30

void setup()
{
pinMode(OUT_PIN, OUTPUT);
//digitalWrite(OUT_PIN, LOW); //This is the default state for outputs
pinMode(IN_PIN, OUTPUT);
//digitalWrite(IN_PIN, LOW);

Serial.begin(9800);
Serial.print("Yhteys OK ");
Serial.println("Kapasitanssimittari 1pF - 30000pF");
Serial.println(" ");
}

void loop()
{
//Capacitor under test between OUT_PIN and IN_PIN
//Rising high edge on OUT_PIN
for (int i = 0; i <= 29; i++) {
pinMode(IN_PIN, INPUT);
digitalWrite(OUT_PIN, HIGH);
val = val + analogRead(IN_PIN);

//Clear everything for next measurement
digitalWrite(OUT_PIN, LOW);
pinMode(IN_PIN, OUTPUT);
}


//Calculate and print result

float capacitance = (float)val * 30.0 * IN_CAP_TO_GND / (float)(MAX_ADC_VALUE - val);
capacitance = capacitance / 30.0;

Serial.print(F("Kapasitanssi = "));
Serial.print(capacitance, 1);
Serial.print(F(" pF ("));
Serial.print(val);
Serial.println(F(") "));

val = 0.00;

while (millis() % 1500 != 0)
;
}

Koko tuo lainauksessa oleva on siis arduino unoon tuleva koodi ja tulos näkyy arduinon oman ohjelmointiohjelman (arduino ide) serial monitorissa 9800baud valittuna.

kapasitanssimittari.jpg Serialmonitor.png
 
Viimeksi muokattu:
Jep, ihan hyvä menetelmä jonka hieman hienostuneempaa versiota käytetään erään tunnetun valmistajan kapasitassipohjaisten kosteusanturien mittaamiseen. ;)

Ei siitä tosiaan haittaakaan ole jos saa sovitettua mahdollisimman tarkat komponenttiarvot RIAA-ketjuun. Minua hieman huolestuttaa kuinka paljon 1. asteen putken lähtöimpedanssi saattaa vaihdella ja kuinka tarkka se on. Sehän vaikuttanee RIAA-ketjun vakioihin ainakin hiukan. No, tämä selvinnee mittaamalla sillä simulointi kertoo vain mallinmukaisen putken käytöksen. Tietenkin jos putkien vaihtelu on selvillä niin simulointimallia tai kytkentää muokkaamalla saadaan tämäkin vaihtelu simuloitua ja saadaan selville vaikutus toistokäyrään.
 
Putken lähtöimpedanssin vaihtelu on vaivannut minunkin mieltäni ja sillä on tosiaan suuri vaikutus korjauskäyrään 1. sekä 2. asteessa.
Voiko sitten anodin tasajännitearvosta päätellä että putki olisi spekseissään jos anodi asettuu samaan jännitteeseen kun simulaattorissa ... luulisi tämän ainakin antavan suuntaa.
Täytyy protoon valita putket tällä perusteella
Laskuri näyttää ecc83 antoimpedanssiksi noin 78kohm kun katodivastus on 1k ja anodivastus 150k ...
Simulaattorissa voin tosiaan muuttaa anodivastuksen vaikkapa arvoon 140k jolloin antoimpedanssi on 75.4k ja tutkia miten tämä vaikuttaa vasteeseen.
 
Hei Risto
Pitihän tuo antoimpedanssin muutos simuloida ... muutin tokan putken antoimpedanssin 78kohmista 75.4 kohmiin jolloin yli 1kHz alue nousee noin 0.2dB
sitten muutin ekan putken antoimpedanssin vastaavasti ja koko taajuusalueen vahvistus muuttui -0.2dB ... aivan alin 20Hz ... 0.28dB
Joten ei tässä nyt aivan metsään mennä vaikka putki poikkeaisi hiukan optimista.
Korjaimen syöttöjännitteen ollessa 300V on U1 ja U2 anodilla simulaatiossa 132.4V ... katsellaan sitten miten tämä arvo käytännössä toteutuu.
 
Antoimpedanssin muutos ei siis osu herkimpään paikkaan RIAA-ketjussa. Mahtaisiko putkien eroja pystyä tasaamaan trimmerillä joka olisi osa anodivastusta? HUOM: Olen ihan noviisi putkien kanssa. Perusperiaate on tiedossa ja erotan triodin pentodista mutta siihen se melkein jääkin. :D

Olen paljon enemmän omalla alueellani oparien ja erillistransistorien kanssa...
 
Putken lähtöimpedanssin vaihtelu on vaivannut minunkin mieltäni ja sillä on tosiaan suuri vaikutus korjauskäyrään 1. sekä 2. asteessa.

Triodin jyrkkyys (S) ja sisäinen vastus (Ri) riippuvat suuresti putken anodivirrasta (Ia).
Mitä suurempi virta, sitä suurempi jyrkkyys ja sitä pienempi sisäinen vastus, eli pienempi lähtöimpedanssi.
Lähtöimpedanssihan muodostuu putken Ri:stä ja putken anodin rinnalla olevasta kuormasta.
Kokonaisuuteen vaikuttaa lisäksi ohittamattoman katodivastuksen tuottama vastakytkentä, joka kasvattaa lähtöimpedanssia.

Jos lähtöimpedanssia haluaa hienosäätää, niin tutkisin ensimmäiseksi miten trimmerivastus osana katodivastusta toteuttaa tätä tavoitetta.

MUTTA, vaikuttaa siltä, että tavoitteesi amplitudivaihtelun suhteen on niin kova (0,1 dB), että tuota luokkaa olevan vaihtelun mittaaminen todellisesta kytkennästä
hyvilläkin mittalaitteilla on erittäin vaikeaa, ellei mahdotonta. Minusta +​ 0,5 dB on jo riittävä tavoite hyvälle RIAA:lle.
 
Virtakohina oli mielessä kun asettelin näille toimintapistettä ... tosin taitaa olla niin että putken virtakohina on erittäin pieni verrattuna tuohon "kohinaan hilalla" ja huoleni oli aiheeton.
Toki tuossa voi simuloida uudet arvot vaikka 4x anodivirralle jos sille tulee tarvetta.
Nyt lähdetään liikkeelle valikoiduin putkin ... tein tuon dc-kytkentäosion ja syötin siihen 277.4 volttia 150k anodivastuksen päähän ja testailin putkia...
Tube Amp Doctorin ECC83 anodi asettuu 146 - 150 V paikkeille eikä siis ole simulaation arvoissa ollenkaan ...
Elektro Harmonix ECC83 kaikki mittaamani putket 4kpl anodit (8kpl) asettuivat 131 - 136 V kun simulaattorissa näkyy anodilla 132.4 V
Erittäin tasainen putki ... nämä laitetaan protoon ja soitellaan ... kuvittelisin että kun putken dc-tasapaino on simulaattorin arvoissa niin lähtöimpedanssikin olisi.
Tuo tavoite pysyä 0.1dB ruudussa on melko kova mutta pysytään sitten vielä mukavasti +-​ 0,5 dB arvoissa vaikka joku komponentti poikkeaa optimista.
 
Putken lähtöimpedanssin vaihtelu on vaivannut minunkin mieltäni ja sillä on tosiaan suuri vaikutus korjauskäyrään 1. sekä 2. asteessa.
Voiko sitten anodin tasajännitearvosta päätellä että putki olisi spekseissään jos anodi asettuu samaan jännitteeseen kun simulaattorissa ... luulisi tämän ainakin antavan suuntaa.
Täytyy protoon valita putket tällä perusteella
Laskuri näyttää ecc83 antoimpedanssiksi noin 78kohm kun katodivastus on 1k ja anodivastus 150k ...
Simulaattorissa voin tosiaan muuttaa anodivastuksen vaikkapa arvoon 140k jolloin antoimpedanssi on 75.4k ja tutkia miten tämä vaikuttaa vasteeseen.

Simulointiohjelma ilmeisesti olettaa, että putken ECC83 anodiresistanssi (plate resistance) on 62.5k ja vahvistus 100, koska antoresistanssin kaavalla
saadaan: Ro = 150k||(62.5k+(1+100)*1k) = 78.23k.
RIAA:n suurin aikavakio, joka tehdään ensimmäisen ja toisen vahvistusasteen välissä, on siis: ((Ro+118.47k)||1000k+18.27k)*17.4nF = 3178us.
Tämä vastaa hyvin ideaaliarvoa, joka on 3180us.
Toisen asteen perässä oleva vastus-kondensaattori-rykelmästä pitäisi syntyä aikavakio 75.02us ja näin tapahtuukin, sillä ((R0+42.7k)||1000k+1.33k)*675pF = 73.72us, mikä on ok. Mutta sieltä löytyy myös nollaa edustava outo aikavakio 1.33k*675pF = 897.8ns.
 
Viimeksi muokattu:
Simulointiohjelma ilmeisesti olettaa, että putken ECC83 anodiresistanssi (plate resistance) on 62.5k ja vahvistus 100, koska antoresistanssin kaavalla
saadaan: Ro = 150k||(62.5k+(1+100)*1k) = 78.23k.

Ei LT Spice sentään näin "tyhmä" ole. Simulointi perustuu tarkkoihin putkimalleihin, joitten tärkeimmänt suureet ovat (tässä tapauksessa):

- vahvistuskerroin (mu)
- sisäinen vastus (Rp) ohmia
- jyrkkyys (gm) mA/V

Tunnetusti näittein suureitten keskinäinen riippuvuus on seuraava: gm = mu/Rp

Triodin jyrkkyys on suuresti riippuvainen putken anodivirrasta, kun taas vahvistuskerroin on lähes vakio.

Ohessa 6SN7 triodin kyseiset suureet esitettynä graafisesti:
 

Liitteet

  • 6SN7_gm_rp_mu.jpg
    6SN7_gm_rp_mu.jpg
    85,1 KB · Katsottu: 26
Eli simulointiohjelma siis selvittää ensin putken anodivirran ja määrittää siitä graafien perusteella sisäisen anodiresistanssin ja vahvistuksen.
Ja käyttää sen jälkeen niihin perustuvaa lineaarimallia.
Mikähän olisi putkien U1 ja U2 anodivirta tuossa esimerkkivahvistimessa?

ANTORES.jpg
 
Viimeksi muokattu:
Netistä löytämistäni graafeista näkyy, että putken sisäinen anodiresistanssi (Rp) ja vahvistus (µ) ovat tuolla anodivirralla hyvinkin sitä, mitä esitin (62,5kΩ ja 100).
Ja ilmeisesti vahvistimen suunnittelija on samaa mieltä, koska laskettu RIAA on noilla oletuksilla hyvin kohillansa lukuun ottamatta outoa aikavakiota 897.8ns,
joka tehdään toisen vahvistusasteen perässä.

http://www.mif.pg.gda.pl/homepages/frank/sheets/093/1/12AX7.pdf
 
Viimeksi muokattu:
P.S. Aikavakio-ongelma korjaantuu, kun tehdään vaihto 1.33k --> 4.7k, jolloin aikavakioksi tulee 4.7k*675pF = 3.173us eli se edustaa tällöin Neumann-aikavakiota 3.18us.
Lisäksi ((78.23k+42.7k)||1000k+4.7kk)*675pF = 75.99us, mikä on ok.
 
Viimeksi muokattu:
Hei Salo ja acmn
Tuo 1.33k resistanssi toisessa korjauspiirissä ei ole mitenkään välttämätön .. 675pF kapasitanssi voisi olla suoraan gndssä ja silti mentäisiin äänialueella "ruudussa" mutta simuloidessa se suoristaa yli 15kHz vastetta (sekä korjaa vaihevirhettä) aina tuonne yli 50kHz josta sitten lähtee putoamaan. Toinen hässäkkä (1M + 33n) tässä toisessa korjausasteessa on sitten matalien taajuuksien lähinnä kytkentäkondensaattoreista johtuvan vaihevirheen korjaukseen .. samalla se tietysti korjaa vasteen niin että pysyy "ruudussa" tuonne 7Hz paikkeille.
 
Tänä aamuna simuloin kytkentää sitä silmälläpitäen että kaikilla ei ole mahdollisuutta tai halua mitata korjauspiirien kondensaattoreita. Niinkuin Risto ounastelikin niin +-0.1dB ruudussa pysytään 1% kondensaattoreilla myös pahimmassa mahdollisessa tapauksessa jossa esim. korkeat korostuvat ja matalat vaimenevat... jollei korjauspiirin vastekset sitten vielä poikkea arvostaan juuri epäedulliseen suuntaan.
Piirikortteja vielä odottelen ... lähetetty 24.10 seediltä tulemaan ... postilakkokin on alkamassa.
 
Back
Ylös