Jump to content

Turntable Tachometer / Controller


Preporučeni Komentari

Мали апдејт.

Више од годину дана се заносим идејом да укомпонирам могућност директног мерења отступки од ротација (wow компонента wow&flutter метрике). Мислим да сам дошао до срећног решења што се тиче кода, али проблем је то што изворни код овог пројекта одузима скоро 98% меморије за програм Ардуино Нано плочице...

...од пре пар месеци, Ардуино нуди Arduino Nano Every, која је наводно иста плочица, али са 50% више меморије за програма. :)

Када стигне нови Nano Every, очекујте апдејт кода и могућности контролера овде, и ако успе, и ако је покушај неуспешан.

Link do poruke
Podeli na ovim sajtovima
  • 1 year later...
  • Odgovora 84
  • Kreirano pre
  • Zadnji odgovor pre

Aktivni članovi u ovoj temi

Aktivni članovi u ovoj temi

Popularni postovi

Увод Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира ск

Да заокружимо пројект овде - хвала @Leonardo за веома прецизну обраду горње плоче - даљинац је сада спакован:

Neka njih sa raketlama. Mi se trudimo oko PEVALICA. Od njih zaplače samo onaj koga pesma pogodi u srce, ili tu negde.  

Postovane slike

И овде сам остао дужан.

Нажалост, Nano Every није био добар "fit" због различитих логичких напона, тако да сам остао на "обичном" Nano-y.

Али, W&F фукнционалност је сад део кода. :)

Код је(5b09854), као и увек, овде:

https://github.com/stojnev/dwr-controller

Ако некога још интересују моји brain-farts, додаћу касније дужу елаборацију.

Link do poruke
Podeli na ovim sajtovima

labaratorija za materijale je pre 25-6 godina rasturena i ljudi su se razisli.radili lopatice za reaktivne motore.odeljenje za keramiku

sinterovalo sta oces i neces.ja pokupio neke elektrode za punktovanje,bakar,berilijum rtrtmrt sta jos ima unutra.nema deformacije ni posle 5000 udara.a najzalije mi napravili neki mix  u tecnom stanju valjda se zvalo "zalem".zardjo lim gvozdeni,namazes s time,kalaj i udri.kalaj se razliva po limu ko u fabrici belih limova u sapcu.bar da sam uzo recepat.ono:uzmes dva prsta  i pomesas itd...

Link do poruke
Podeli na ovim sajtovima

По плану, почео сам са интеграцијом нове верзије микроконтролера. Arduino Nano Every је требало заменити садашњи Arduino Nano због већег мемориског капацитета који би омогућио више функција контролера.

Кажем раније "требало" зато што сам на крају опет завршио са старим Arduino Nano микроконтролером. Наиме, Nano Every јесте pin-compatible, и код за раније верзије се компајлира без пуно компликација, али разлика у хардверским захтевима pullup-a довела до тога да аутоматска регулација брзине не ради.

У пракси, у стандардно очекиваним околностима, то значи промена вредности отпорника повезана на тих 4 пина.  Али како нисмо у стандардно очекиваним околностима, оставио сам старе отпорнике и рефакторирао цели код за повећану ефикасност истог, и тиме, бољег управљања постојећим ресурсима.

Резултат тога је да се нова могућност, мерење wow (отступања брзине) као интегрална компонента W&F параметра, сада налази у последњој верзији кода, који је, као и увек, објављен у свом GitHub репоу (функционалност активна од commit-a 02f96de па надаље).

Очекивања

Раније сам напоменуо да сам радио посредна мерења који указују на то да је W&F погона мог грамофона око (или нешто мањи од) 0.1%.

Али које су релевантне вредности? Истражујући спецификације транспорта (и то оних који су довољно храбри да их објаве) нашао сам малу количину података, или подаци без икаквог контекста. Због тога, вратио сам се назад и прегледао NAB спецификацију, и то верзију "NAB audio recording and reproducing standards for disk recording and reproducing" датирану фебруар 1964, која специфично каже (преносим без превода):

  1. 1.05 Turntable Speed (RPM) - It shall be standard that the mean speed of the recording turntable be either 33-95 or 45 RPM ± 0.1%, and the mean speed of the reproducing turntable be either 33-95 or 45 RPM ± 0.3%;
  2. 1.20 Wow and Flutter Factor (Reproducing) - It shall be standard that the average (*) deviation from the mean speed of the reproducing turntable when reproducing shall not exceed 0.1% of the mean speed.

(*) Овде постаје интересантно. Просек је дефиниран, у фуснотама, као "карактеристику мерног склопа уместо укупног периода обзервације". Вратићемо се на ову ствар мало касније (**).

Модерни грамофони често иду и изнад 0.1%, док старији (нарочито кварцно контролирани грамофони) су се хвалили вредностима од 0.05% (вредности за Technics SL-Q2 су <0.012%).

Како овде меримо само wow компоненту (flutter је сасвим друга прича), рецимо да бих био задовољан вредностима мањим од 0.1%.

Резултати

Након 5 минута ротације, вредност за брзину 33.(3) окретаја у минути је 0.006%.

GfjwB0A.jpg

Боље од очекивања за ~17 пута (17x).

Након 5 минута ротације, вредност за брзину 45.0 окретаја у минути је 0.005%.

AcWwyOO.jpg

Боље од очекивања за ~20 пута (20x).

Како су ово просеци након пар стотина ротација, а на просеке утичу екстреми, подједнако важно је видети колика су отступања. Не бих да неко помисли како је ово ултра кратак временски сегмент - методологија би била, у најмањој руци, непотпуна.

Ово је поларни плот варијација брзине током 40 пуних ротација, укупно 160 мерних тачака, за сваку брзину посебно.

CFBsWmV.png

Нисам сигуран да може боље са овим погоном.

(**) Пар речи око просека, да не би опет прекршио обећања. Фини људи из NAB-а су били веома јасни у спецификацију просека. Због тога, имплементација ове функционалности узима у вид само задња 16 мерења (4 пуних ротација). Због тога, постоји могућност да бројка варира током репродукције, али оно што је сигурно е да ће показати најближу вредност параметара на тај специфичан регион плоче.

Иначе, скоро сва функционалност за прерачун W&F је постојала у коду, због мог релативно интензивног OCD-а, и детаљно сторнираних варијабли и процеса.

Мало кода није на одмети:

if (averageCompleted)
{
   float averageSum = 0; totalWF = 0; float SB = 33.3333;
   if (spinSpeed == 1) { SB = 45.0000; }
   for (int a = 0; a < averageTotal; a++)
   {
      averageSum += averageValues[a];
      totalWF += abs((averageValues[a] / SB) - 1);
   }
   currentRPM = averageSum / averageTotal;
   totalWF = totalWF / averageTotal * 100;
 }

Задња функционалност је сад пропраћена са детаљним упутством како (и шта) раде тастери.

Link do poruke
Podeli na ovim sajtovima

Kreiraj nalog ili se prijavi da daš komentar

Potrebno je da budeš član DiyAudio.rs-a da bi ostavio komentar

Kreiraj nalog

Prijavite se za novi nalog na DiyAudio.rs zajednici. Jednostavno je!

Registruj novi nalog

Prijavi se

Već imaš nalog? Prijavi se ovde

Prijavi se odmah
  • Članovi koji sada čitaju   0 članova

    Nema registrovanih članova koji gledaju ovu stranicu

×
×
  • Kreiraj novo...