Dacista esivahvistin

elviz

Hifiharrastaja
Liittynyt
20.2.2007
Viestejä
6 289
Kaupunki
Tappara
Jatkan lörinöitäni tässä ketjussa, kun on keskustelu https://foorumi.hifiharrastajat.org/showthread.php?61613 ketjussa ei enää vastannut aihetta. Alkuperäinen tavoite oli rakentaa esivahvistin Dacille ja päätevahvistimelle, mutta päädyinkin rakentamaan digitaaliset kontrollit Buffalo 32s Dacille.

Suunnitelma on siis rakentaa käyttöliittymä lcd näytölle kaukosäädöllä ja komentaa Dacia i2c portin yli. Tämä toivottavasti onnistuu Arduino nimisellä ohjelmoitavalla mikroprosessorilla/protoilulaudalla. Näyttö ja kaukosäätö tuntuisi olevan aika "helppo" homma, mutta Dacin kanssa varmaan tulee haasteita.

Sain hiljattain tarkemmat speksit ESS:ltä ja niistä selviää kuinka tuota Dacin ES9018 piiriä komennetaan. NDA piti allekirjoittaa ennenkuin tietoa herui. Niiden perusteilla pitäisi sitten säätää oikeat rekisterit kuntoon, koska Dacin omasta firmwaresta ei ole apua, koska se pitää nyppästä irti, ennenkuin I2C väylään pääsee käsiksi.

Vähän tylsä ketju varmaan kun niistä asioista, mitkä ovat haasteellisia, ei voi puhua. Mutta jospa vaikka saan jotain tarpeeksi geneeristä Arduinon yli aikaiseksi, mistä on muillekin DIYläisille apua. Nuo I2C laitteet toimivan varmaankin aika samalla periaatteella (ominaisuus = laite_id, rekisteri, arvo). Näytöt tuntuvat myös toimivan aika samalla periaatteella (virta, kello pinnit ja data). Kaukosäätökin on aika helppo, etenkin jos pysyy rc5:ssa.

Tästä siis lähdetään liikkeelle.
 
Eli siis, käytännössä tuo kortti on minun käsittääkseni vain ATMEGA328 kontrolleri, johon on tuupattu USB bootloaderi. Lisäkivaa löytyy ainakin näköjään BT:n muodossa.

Mutta joo, I2C on kiva väylä jos vaan driveri on kunnossa. Eli sinuna kattelisin netistä jonkun hyväksi havaitun driverin tuolla väylälle ja testaisin sen toiminnan ensin. Näyttö (oletan että kyseessä on alphanumeerinen ASCII-näyttö) on aika triviaali tapaus. Siihenkin löytyy kytkennät kerran guuglaamalla. Ne näytöt on tosin niin sysirumia eikä yli puolen metrin päästä näe mitään, joten kannattanee suosiolla metsästää väyläyhteensopiva VFD-ruutu. Maksaa vähän enemmän, mutta on huomattavasti kivempi katsella.

-A
 
Taannoiseen volaprojektiin laitoin 7-segmenttinäytön. Ainoaksi bugiksi jäi, että näytön himmennys PWM:llä ei onnistunut kun valitsin juurikin sellaisen timerin output-pinnin jota ei voi käyttää PWM:nä. USB osoittautui yllättävän näppäräksi, jos vehje on PC:n jatkeena. Nimimerkki Skorde81 teki oikein hienon windows-softankin jolla volaa voi ohjata koneelta. Vastaavasti volan säätö manuaalisesti tai IR:llä indikoidaan takaisin PC:n suuntaan, jotta pysytään synkassa.

Edellisessä ketjussa spekuloitiin nouseeko noista kohinataso miten paljoa, mutta oma ja em. nimimerkin kokemus on että tuo on siinä mielessä selvästi parempi kuin suosittu Behrun DCX. Josko se nyt on kummoinenkaan saavutus :p

t. Janne
 
leino_antti sanoi:
Eli siis, käytännössä tuo kortti on minun käsittääkseni vain ATMEGA328 kontrolleri, johon on tuupattu USB bootloaderi. Lisäkivaa löytyy ainakin näköjään BT:n muodossa.

Mutta joo, I2C on kiva väylä jos vaan driveri on kunnossa. Eli sinuna kattelisin netistä jonkun hyväksi havaitun driverin tuolla väylälle ja testaisin sen toiminnan ensin. Näyttö (oletan että kyseessä on alphanumeerinen ASCII-näyttö) on aika triviaali tapaus. Siihenkin löytyy kytkennät kerran guuglaamalla. Ne näytöt on tosin niin sysirumia eikä yli puolen metrin päästä näe mitään, joten kannattanee suosiolla metsästää väyläyhteensopiva VFD-ruutu. Maksaa vähän enemmän, mutta on huomattavasti kivempi katsella.

-A


Tohon Arduinoon (tiedä sitten onko yleisesti Atmelille) löytyy valmis I2C rajapinta, nimeltään Wire , joka toimii näin:
Koodi:
Wire.beginTransmission(dev_id); 
Wire.send(reg_addr); 
Wire.send(reg_val); 
Wire.endTransmission();
Ei oo kovin vaikean näköistä ;).

Siihen löytyy myös LiquidCrystal niminen rajapinta joka hoitaa näytöt. Ainakin nykyaikaiset näytöt. Se toimii näin:
Koodi:
// start place
lcd.setCursor(0,1); 
// output
lcd.print("Haloo");
Tosin en tiedä toimiiko tuo kuin rinnakkaisporttinäyttöjen kanssa. Sarjaporttisen näytön tarttisin, jotta ei mene kaikki i/o sen hanskaukseen. Ja niitä olikin jo kaksin kappalein vanhastaan, mutta olen säilönyt ne penteles vieköön jonnekin. Jostain puuhapussista semmonen varmaan löytyis. Olisi aivan täydellinen semmonen mustataustainen led-matriisinäyttö (8 merkkiä ja oliko 8x11 matriisi). Eikä mikään vihreellä taustalla ja keltasella tekstillä helottava LCD mitä jokapaikassa tuntuu olevan.

Ja sitten on se IR sensori, johon löytyy valmis rajapinta nimeltään IRremote, joka toimii näin:
Koodi:
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn(); // Start the receiver
}

void loop() {
 if (irrecv.decode(&results)) {
  Serial.println(results.value, HEX);
  irrecv.resume(); // Receive the next value
 }
}
Ei ole sekään kovin vaikeaa...
 
No löytyhän se näyttö kun tarpeeksi kauan kuoputin laatikoita. Siemensin SDA 5708. Vanha kunnon led matriisi. Resoluutio olikin huimat 5x7. Tuohon kun laittaa vähän tummennuspleksiä eteen, niin hyvä tulee. Tuommoselle olen joskus vässännyt linux ajurin fontteineen päihineen printteriportin yli. Ties vaikka löytyisi sourcet vielä jostain. Fontin voisin ainakin varastaa sieltä.

Demovideokin löytyy oikein:
http://www.youtube.com/watch?v=M3SUdFy3j-Q

Joku on on näköjään speksitkin jo kirjoittanut muistin virkistämiseksi niin ei tarvi edes kaivaa Siemensin sivuilta:
http://www.sbprojects.com/knowledge/footprints/sda5708.htm
 
No joo, kyllä on tehty liian helpoksi nää hommat nykypäivän nuorisolle 8)...toista se oli talvisodan aikaan kun I2C tehtiin itse softalla pinnejä nitkuttamalla :D.

Oma designi muistuttaa kovasti paljon tota Jannen 8-kanavaista, tosin balansoituna ja HT-kytkennällä varustettuna (== analogiatulon voi routata suoraan lähtöihin). Ajattelin käyttää jotain muutaman tuuman pistematriisi näyttöä, jos motivaatio riittää.

-A
 
Tulikin muuten mieleeni, että kannattaisikohan sitä alentaa DACin output leveleitä, kun se puskee balansoituna 4V RMS. Siellä on valmiin paikat vastuksille ja arvotkin on tiedossa. Vissiin joku 2V tai 1V RMS olisi aika turvallinen. Tai voisihan sitä ensin vaan kokeilla, että jos ääni on lujalla jo aivan minimi volumella niin luultavasti laite vahvistin alkaa klippaamaan aika nopeasti. Pistin kuitenkin tilaukseen jokusen setin 0.1% metallikavovastuksia 2V, 1.5V, 1V ja 0.5V RMS outputeille.
 
Hyvä huomio. DACin lähtö kannattaa sovittaa päätevahvistimen herkkyydelle, jotta biteistä saadaan kaikki irti.

Jos sulla on 400W vahvistin, 90dB/W kaiuttimet, niin maksimi saatavissa oleva äänenpaine ilman että vahvistin leikkaa on teoriassa 116dB. Sitä passaa vielä suht turvallisesti kuunnella 100dB keskimääräisellä kuunteluvoimakkuudella. Jos ei ole tarvetta kuunnella ihan niin lujaa niin DACia voi skaalata alaspäin, sillä erään myytin mukaan DACin eniten merkitsevät bitit ovat tarkempia. Sabre DACilla ongelma lienee tosin keskimääräistä pienempi.

Yksi watti syntyy 8ohm kaiuttimella 2.8Vrms signaalilla (= -3dB vs 4Vrms) Jos päätevahvistimen gaini on 34dB, DACin lähtö 4Vrms , ja kaiuttimet edelleen 90dB/W, niin ääntä syntyy 127dB!
Kannatta vaimentaa 4Vrms vähintään se 11dB, elikkä siihen 1Vrms saakka.

Ps.
Balansoituna coldamp lupaa 40dB gainia, joten 0.5Vrms tai jopa vieläkin vähempikin riittäis. Ehkä kannatta selvittää voiko coldampin herkkyyttä laskea.
 
Sain tuon Arduinon, ja se vaikuttaa oikein mukavalta leikkikalulta. Ohjelmointi tapahtuu kirjoittamalla softa Arduinon omalla ympäristöllä, missä on kaikki rajapinnat käytettävissä ja sitten vaan klikataan "upload" ja ohjelma ladataan laitteeseen ja se lähtee heti toimimaan.

Käytännössä alustassa on yksi funktio nimeltään "loop" jonka sisään laitettua ohjelmakoodia ajetaan luupissa, eli ajetaan ohjelmakoodi, ja kun päästään loppuun niin alotetaan taas alusta. Kaikki muuttujien alustukset hoidetaan vaan ennen loop funktion ajoa. Eli todella yksinkertainen ja helppo systeemi, varsinkaan kun itse ei tarvitse kirjoittaa keskeytysrutiiineja tai mitään semmoista.

edit: kappas, alustukset hoidetaan funktiossa "setup".

Jo heti ensimmäinen esimerkki ohjelma antaa palautetta, sillä laudalla on (ylimääräinen?) ledi, jota voi vilkutella ja todeta laitteen toimivuuden, muuttemalla valon palamisen ja poissaolon aikoja. Tulee mieleen 70-80 luvulla mekanot :).

Piirilevy on myös pienempi mitä kuvittelin (noin 5x7 cm) ja se on tietenkin hyvä asia. Nano versio on sitten varmaan todella pieni.
 
Näyttö toimii, tosin piti ihan omin kätösin koodata systeemi, joka nököttelee datat sisään tuon ikivanhan näytön kanssa. Fontinkin kanssa oli säätämistä.

Kuva: http://yfrog.com/0wimg0198qgj

Seuraavaksi kaukosäädön kimppuun...
 
Kaukosäätö oli aika helppo toteuttaa. Heti perään toteutin käyttöliittymän laitteelle. Sitä toteutettaessa muistui kivasti mieleen millaista se koodaus kotitietokoneilla oli 80-luvun alkupuolella. muisti niimittäin loppuu. Stack sanoo aina äkkiä käsipäivää heapille ja sitten ollaan reboot loopissa. Taitaa vissiin olla vain 2 kilotavua(!) käyttömuistia tuossa Arduinossa. Ei tonne mitään lentosimua ainakaan easter eggiksi laiteta.

I2C:n kanssa pähkäillessä meni pari päivää, kunnes minulle kerrottiin, että jos laitteet ovat ei virtalähteissä kiinni, niin SDA + SCL piuhojen lisäksi pitää vielä yhdistää GND. No sittenhän se lähti heti pelaamaan. Ja pääsin leikkimään laitteen ominaisuuksilla, mitä datasheetissä on mainittu. Ja toteutin volume/balance kontrollit, sekä aika kattavan Settings menun.

Seuraavaksai oli sitten aika työstää kotelo. Haasteellista oli tehdä reikä IR receiverille ja näytölle sentin vahvaan alumiiniseen etulevyyn. No ehkäpä se ei ole vaikeaa, jos on kunnon työkalut. Itse hoidin homman HSS poranterillä, reikäsaha-poralla, kartioporalla ja viilalla. Etupaneelin "tuulilasin" pöllin vanhasta rikkinäisestä HK:n cd soittimesta.

Lopuksi vielä piti kiinittää laitteet DAC/esivahvarin runkoon ja hoitaa aikaavievä ja tylsä vaihe, eli uusien laitteiden johdotus. Mutta kyllähän sekin tulee aina tehtyä, koska palkintona on uuden laitteen koekuuntelu. Innostuin vielä vähän ohjailemaan vanhojenkin johdotusten vetoja.

Mutta versio 1.0 on nyt valmis. Ja mielestäni siitä tuli aika kivan näkönenkin laite.

Tosin Coldampin kanssa en ole suoraan vielä kokeillut. Pientä viilausta softapuoleen tietenkin voi aina tehdä ja voi olla, että laitan ne tasojen allennus vastukset.

Kuvia tekovaiheista ja lopputuloksesta myöhemmin.
 
Päätteeseen on myös vaihdettu balansoidut liittimet ja luottamusta alkaa löytyä firmwarea kohtaan, ettei se lyö 0db tasoja keskellä yötä, joten NAD M3 on välistä pois kokonaan.

Mitä tulee Vrms tasoisin, niistä ei tuntuisi olevan ongelmaa. Itseasiassa volaa voi kääntää 6-12 db enemmän kuin NADin ollessa välissä, jotta pääsisi arviolta samoihin äänenpaineisiin. Aikaisemmin jossain -45db hujakoilla, ja tällä kombolla alle 40db.

Paremmat signaalikaapelit laitan vielä joskus päätteeseen, koska XLR runko oli niin pitkä verrattuna RCA runkoon. Semmoista muutaman sentin pätkää on vaikea saada siistiksi mikrofoonikaapelista.
 
Kuva sisältä. Arduino löytyy vasemmasta ylänurkasta. Harmaa USB johto on vielä kiinni, kun pitää vielä tehdä pari lisäystä softaan:


Ulkoa ilman salamaa, jotta saa näytöstä vähän paremman käsityksen:


ps. Kyllä ne DB tasojen alkuarvioinin jälkeen ovat osoittautuneet melkolailla samoiksi kuin NADin kanssa. Voisi noita siihen 2Vrms tai 1Vrms laskea, jotta saapi lisää digitaalista headroomia.
 
Nyt kun on Coldamp modattu myös XLR inputille, niin täytyy sanoa, että olen oikein tyytyväinen lopputulokseen. Ääni rauhoittui pykälän lisää kun esivahvistin lähti välistä. Melkolailla kaikki mahdolliset DACin asetukset on katettu "settings" menussa. Ainoa mikä uupuu, on että DACin 2-tasoista FIR filtteriä voisi muokata suoraan settings menusta. Ehkä sekin vielä tulee.

Nyt enää tarvitaan ne 0.1% ulostulovastukset. Pari viikkoa jo mennyt tilausessa, joten eiköhän ne kohta tule.

Tuon Coldampin gainia saa myös laskettua. Mutta aattelin ensin hakea optimin Dacin päässä, koska tämä vaatisi useamman pintaliitoskomponentin vaihtoa. Noita pintaliitoskomponentteja ei ihan heti viitsi vaihtaa toisiin, jos ne kerran saa nyherrettyä paikoilleen.
 
Jep, tässä on alkanut pyöriä itsellänikin ajatukset jostakin digitaalisesta etusesta.
 
No vihdoinkin ne vastukset lähtivät pääkaupungista tulemaan Tampereelle. Oli jäänyt elkot ahtaajien lakkoon. Taidan lähteä liikkeelle 1Vrms ulostulolla. Harmi kun en perehtynyt paremmin asiaan ja laskenut omia vastusarvoja. Tosin en ole ihan varma, että millä kaavalla tuo lasketaan.

Ulostulon ohmit ja Vrms:t
------------------
2K 2.0VRMS
1.2K 1.5VRMS
750Ω 1.0VRMS
287Ω 0.5VRMS

Kuis tuosta derivoitaisiin 0.707Vrms (1.0V peak)?

Coldamp ilmeisesti saa 0.707Vrms:llä kehitettyä maksimit 0db levelillä, mikä tarkoittaisi, että tuosta 1Vrms tasosta klippaa jotkut viimeiset 2-4db. Nuo 2-4db olisi kiva kyllä ottaa hyötykäyttöön. Toisaalta 0.5Vrms tasolla se 2-4db jää käyttämättä päätteen resursseista.

Hmm...olisikohan sittenkin parempi mennä tuolla 0.5Vrms tasolla. Saisi noin 6db hyvää ditigaaliselle puolelle ja en mä mitään sillä viimesellä 2-4db:llä tee.

Buffalon manuskassa sanotaan, että kannattaisi pitää tasot vähintään tuossa 0.5Vrms, mutta sitten kuitenkin, eihän ne normaali-ihmisen kuunteluvoimakkuudella ole lähelläkään edes sitä, eikä mikään suhise tai hurise. Eikös tuo Vrms taso juuri määritä kuunteluvoimakkuuden? Onko tuosta ulostulon rajoituksesta jotain muunlaisia penaltia, mitä en ole ottanut huomioon?

edit: tällä hetkellä volumetasot liikkuvat -50 - -40db tasoilla musiikista ja kellonajoista riippuen. Tuolla olisi kyllä se 20db helposti varaa kadottaa. En mä oikeasti tarvi kuin sen 18-24db gainia. Mutta jos nämä ovat ne viimeiset 18-24db, voiko tämä tehdä volumesäädöstä liian jyrkän 0.5db stepillä, vai vaikuttaako se ollenkaan?
 
Jos nyt DACin max lähtö on 4Vrms ja vaihdat sen 0.5Vrms, niin lähtö vaimenee 18dB. Äänenvoimakkuuden 0.5dB stepit eivät ole tämän muutoksen jälkeen yhtään suurempia eikä pienempiä kuin ennenkään.

Jos nyt volumetasot ovat -50 - -40dB, niin muutoksen jälkeen ne ovat -32 - -22dB. Jos olet aivan varma, että tulevaisuudessa ei tule koskaan tarvetta zoomata edelleen enempää kuin 22dB, edes esim. biisin hiljaisessa kohdassa pianistin penkin rutinaa tms., niin DACin lähtötason vaimentaminen kannattaa tehdä.

Pahinta mitä voi tapahtua, että Buffalo DACin SNR heikkenee ehkä pari dB. Se jää silti ColdAmpin kohinatason jalkoihin.
 
Nyt on outputin mätsäys asennettu paikoilleen. Kokeilen ensin tuolla 0.5Vrms:llä, koska jos jotain negatiivista kuultavaa eroa vs 4Vrms on, niin siitä sen pitäisi kuulua selvimmin. Ilmeisesti käytäntö vastaa teoriaa tässä tapauksessa, koska normaali kuunteluvoimakkuus löytyy 30db tienoilta ja luukutusvoimakkuus tai hiljaisen levyn kanssa jostain 25-20db. Voimakkuus alkaa menemään epämiellyttävä puolelle jossain 14db tienoilla ja siitäkin saisi vielä 4 kertaa lujemaksi. Eli aivan riittämiin on tehoja.

En ole ainakaan vielä huomannut ainakaan mitään negatiivista vaikutusta. Positiivisena vaikutuksena on ainakin tieto siitä, että pari vähiten merkitsevää bittiä (edit: 16 bit inputilla) eivät huku Dacin kohinaan. Muuta positiivista en ole vielä huomannut kuin, että hyvältähän se kuulostaa.
 
Back
Ylös