Jump to content

InSides

Član
  • Broj sadržaja

    962
  • Na DiyAudio.rs od

  • Poslednja poseta

  • Broj dana (pobeda)

    21

Reputacija aktivnosti

  1. Love
    InSides je reagovao/la na Woland u Novopridosle skalamerije   
    SME M2-12R + još jedan shell - klasika u novom izdanju.. za Lenca ili Garrarda 401



  2. Love
    InSides got a reaction from paja959 in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  3. Love
    InSides got a reaction from Woland in Novopridosle skalamerije   
    Добро бре људи, коју су ово је**ну магију Данци спаковали у овај SPU? И зашто ме нисте раније натерали да ово узмем?
  4. Love
    InSides got a reaction from ninja in Novopridosle skalamerije   
    Добро бре људи, коју су ово је**ну магију Данци спаковали у овај SPU? И зашто ме нисте раније натерали да ово узмем?
  5. Love
    InSides je reagovao/la na ninja u Novopridosle skalamerije   
    Ma ne valja to ništa
     
    Kod Wolanda mi se Royal u 2 sekunde više svidio na jednom kanalu nego LP-S 
  6. Love
    InSides got a reaction from Aleks in Novopridosle skalamerije   
    Добро бре људи, коју су ово је**ну магију Данци спаковали у овај SPU? И зашто ме нисте раније натерали да ово узмем?
  7. Love
    InSides got a reaction from Doktor in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  8. Love
    InSides got a reaction from vladd in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  9. Love
    InSides got a reaction from D i g i t a L in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  10. Love
    InSides got a reaction from ZZZ in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  11. Love
    InSides got a reaction from Leonardo in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  12. Love
    InSides got a reaction from ninja in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  13. Love
    InSides got a reaction from neskor in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  14. Love
    InSides got a reaction from mrcelavi in Novopridosle skalamerije   
    Нисам ни баш матори, мало мање Јапанац, али ето...

  15. Love
    InSides got a reaction from Leonardo in Turntable Tachometer / Controller   
    Проблем #2
    Раније сам писао да сам имао проблеме са имплементацијом CD4066B:
    Моја имплементација је радила, али мање него идеално. Нипошто за решење на дуже стазе.
    Решење
    Након дискусије, и предлогa који је @guja011 дао:
    Заменио сам CD4066B за четири BC337 транзистора, у комплету са 1кО отпорницима на сваку од транзисторских база:

    Нема цурења, нема проблематичних понашања, ради како је оригинално замишљено.
    Редизајнирао плочицу, нови сет Гербера и breadboard слике на GitHub-у.
    Код је, као и увек (3d63b2a), овде:
    https://github.com/stojnev/dwr-controller
  16. Love
    InSides got a reaction from Leonardo in Turntable Tachometer / Controller   
    Унапређење #4
    Рутине за чување укупног времена свирања.
    Позадина
    Како већ погон користи флексибилну (читај програмабилну) контролу, једна од задњих опција које сам хтео имплементирати је снимање укупног времена свирања. Ово је, бар за мене, прилично корисна функција за праћење старости звучнице.
    Ова могућност би морала укључити бар следећe:
    Снимање укупног времена ротације; Приказ тог времена у формат који се лако чита (нарочито на минијатурном дисплеју); и, Брисање (ресетирање) укупног времена. Приступ
    Типично, Ардуино ресетира све параметре (променљиве) при сваком искључивању. На срећу, Nano има ЕЕПРОМ (non-volatile) величине једног (1) килобајта, што би требало бити довољно за ову фукнционалност.
    Имплементација је прилично једноставна:
    При сваког извршења главне петље, упоређује се број тикова (ticks) са ранијом вредности; Кад разлика тикова надмаши 1 секунду, у ЕЕПРОМ се упише нова вредност; Кад се напуни слот ЕЕПРОМ-а, показивач се повећа. Код
    Сва логика око снимања се налази унутар процедури checkTimer():
    void checkTimer() { if (timerCurrentMicros == 0 && timerPreviousMicros == 0) { timerCurrentMicros = micros(); timerPreviousMicros = timerCurrentMicros; } else { timerCurrentMicros = micros(); } int timerSeconds = (int) ((timerCurrentMicros - timerPreviousMicros) / 1000000); if (timerSeconds > 0) { for (int e = 0; e < timerSlots; e++) { byte valueX = EEPROM.read(e); timerX[e] = (int) valueX; } timerPreviousMicros = timerCurrentMicros; int changeX = timerSeconds; for (int e = 0; e < 4; e++) { timerX[e] += changeX; if (timerX[e] > 255) { changeX = timerX[e] - 255; timerX[e] = changeX; changeX = 1; } else { changeX = 0; } EEPROM.write(e, timerX[e]); } } } А регулира се уз помоћ пар променљива:
    unsigned long timerCurrentMicros = 0, timerPreviousMicros = 0; const int timerSlots = 4; int timerX[timerSlots]; const int timerMessageWait = 5000; long timerMessage = 0; boolean timerShown = false; Калкулација укупног времена је у процедури calculateRunTime():
    void calculateRuntime(int & calcX1, int & calcX2) { long runtimeX = 0; for (int e = 0; e < timerSlots; e++) { int tempX = (int) EEPROM.read(e); if (tempX > 0) { runtimeX += tempX * pow(255, e); } } calcX2 = (runtimeX / 60) % 60; calcX1 = (int) (runtimeX / 3600); } Ресетирање тајмера (ЕЕПРОМ-а) је у процедури clearTimer():
    void clearTimer() { if (activeSpin || !timerShown) { return; } writeToDisplay(5); for (int e = 0; e <= timerSlots; e++) { EEPROM.write(e, 0); } } Рад
    За приступ тајмеру, тахометар мора да буде у stand-by стању:
    Дужи притисак на дугме за промену брзине показује укупно време; Након 5 секунди дисплеј се враћа на stand-by мод; Дужи притисак на дугме за укључивања ротације док је дисплеј у моду првог корака (показано укупно време) ресетира тајмер. Приказ показује укупан број сати и минута, због ограничења простора на дисплеју:

    Закључак
    Ово је задње планирано унапређење. Будуће промене су планиране једино у склопу оддржавања.
    Код је, као и увек (4f0184d), овде:
    https://github.com/stojnev/dwr-controller
  17. Love
    InSides je reagovao/la na ZZZ u Čime se zanimam... (ovih dana )   
    Probna verzija 32bit DSD diskretnog konvertera dual-balansirani. Uspelo, posle kracih resavanja problema u hodu. Jako sam zadovoljan cak i bez odgovarajuceg izlaza i dodatnih neophodnih sklopova na izlazu. Vrlo dobro radi, bolje od novijih PCM modela dacova sa DSD opcijom. 4 plocice hard wire - katastrofa. Kljucne reci strpljenje i koncentracija...
    +
    Uspelo mi je i da pokrenem i diskretni I2S. Isto 32bita. Mnogo problema, ali isplatilo se. Radi na svim sampling rejtovima, prirodno, muzikalno, neverovatno.
    Sve se pogoni klasicnim USB I2S/DSD posle koga sledi izolacija svih signala.
    Fotke samo za stereo balansirani DSD modul. I2S drugi put


  18. Love
    InSides got a reaction from Leonardo in Turntable Tachometer / Controller   
    У GitHub repo-у, додао Gerber датотеке за две плочице:

    Плочице стигли из Кине (EasyEDA), проверено раде како су и замишљене.
    Код је, као и увек (f0e7ce1), овде:
    https://github.com/stojnev/dwr-controller
  19. Love
    InSides got a reaction from Beli_Ninja in Turntable Tachometer / Controller   
    У GitHub repo-у, додао Gerber датотеке за две плочице:

    Плочице стигли из Кине (EasyEDA), проверено раде како су и замишљене.
    Код је, као и увек (f0e7ce1), овде:
    https://github.com/stojnev/dwr-controller
  20. Love
    InSides got a reaction from vladd in Turntable Tachometer / Controller   
    У GitHub repo-у, додао Gerber датотеке за две плочице:

    Плочице стигли из Кине (EasyEDA), проверено раде како су и замишљене.
    Код је, као и увек (f0e7ce1), овде:
    https://github.com/stojnev/dwr-controller
  21. Love
    InSides got a reaction from Dual in Čime se zanimam... (ovih dana )   
    Корекција азимута on-the-fly. (*)
    (*) Плоча се не окреће како бих могао снимити јасни видео. Свакако, одвртео сам механизам баш насилнички, али шта ћеш - једна рука држи камеру а друга оперира механизам.
  22. Love
    InSides got a reaction from prophet in Čime se zanimam... (ovih dana )   
    Корекција азимута on-the-fly. (*)
    (*) Плоча се не окреће како бих могао снимити јасни видео. Свакако, одвртео сам механизам баш насилнички, али шта ћеш - једна рука држи камеру а друга оперира механизам.
  23. Love
    InSides got a reaction from Woland in Čime se zanimam... (ovih dana )   
    Корекција азимута on-the-fly. (*)
    (*) Плоча се не окреће како бих могао снимити јасни видео. Свакако, одвртео сам механизам баш насилнички, али шта ћеш - једна рука држи камеру а друга оперира механизам.
  24. Love
    InSides got a reaction from Beli_Ninja in Čime se zanimam... (ovih dana )   
    Корекција азимута on-the-fly. (*)
    (*) Плоча се не окреће како бих могао снимити јасни видео. Свакако, одвртео сам механизам баш насилнички, али шта ћеш - једна рука држи камеру а друга оперира механизам.
  25. Love
    InSides got a reaction from Leonardo in Turntable Tachometer / Controller   
    Унапређење #3
    Аутоматско штимање PI/PID параметара.
    Позадина
    Примарна функција тахометра је увек била да буде основа за констуирање бољег погона за грамофон. Закључио сам да се то (боље, стабилније) може постићи једино имплементацијом затворене петље - зато што погон каишом је подложан drift-у, т.ј. флуктуацији (*) без оглед на степен стабилности који пружа идеални мотор, идеални лежај, идеални каиш (а ништа од ових није идеално).
    (*) Бар три параметара коју имају утицај овде су (1) вањска температура собе, (2) комплијанса и затезање каиша, (3) унутрашња температура мотора и лежаја.
    Екстерни контролер који користим је синусни генератор који генерира три фазе и има распон од 1Hz до 80Hz, са најмањим кораком од 0.01Hz. Имајући то у виду, ограничење са којим радим је (1) прецизност контролера и (2) немогућност да Ардуино прочита тренутну вредност фрекфенције.
    Компромис
    Ардуино "клика" тастере на екстерном контролеру и тако мења фрекфенцију синусоиде. Једина непозната вредност је "величина промене" коју један "клик" Ардуина ефектуира.
    Та вредност се води у променљивој derivedQ:
    float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Што би значило да један "клик" Ардуина, који означује промену од 0.01Hz у фрекфенцији, једнако је промени од 0.01 ротацију у минути на стране грамофонског тањира. Ова вредност је била, благо речено одокативна (**) да би код прорадио.
    (**) Одокативно је можда строго. Вредност је резултат мерења, споредби и прерачуна - па узета средња вредност.
    Како се подвижни систем мења у зависности екстерних параметара, логично је да којефицијент промене (derivedQ) би требало да флуктуира да би увећао прецизност целог склопа.
    Решење
    Код већ укључује доста услова за имплементацију аутоматске калкулације овог параметра. Калкулација се почиње радити тек након регулација прође пар циклуса.
    Приступ се онда своди на прерачун разлике броја ротације пре и након корекције, као и броја корака који су довели до те корекције.
    derivedQ = abs(currentRPM - fixRPM) / fixSteps; Код
    Сва логика око калкулација просека се налази унутар процедури showRPM():
    if (fixSteps > 1) { derivedQ = abs(currentRPM - fixRPM) / fixSteps; if (derivedQ > setQ) { derivedQ = setQ; } fixSteps = 0; fixRPM = 0; } А регулира се уз помоћ пар променљива:
    float fixRPM = 0, fixSteps = 0; // Variables for programmatic calculation of derivedQ. const float setQ = 0.01; Прве две променљиве садрже (1) стару вредност ротација и (2) број корака у том циклусу корекције. Константа setQ служи за имплементацију максималне вредности којефицијента. (***)
    (***) Грешка у калкулацији, или вањски узроци могу да доведе до енормно (за овај систем) велике вредности којефицијента. Имплементација ове константе се осигурава да прерачунати којефицијент никад не пређе задану вредност.
    Процедура је релативно једноставна:
    Активира се само ако се уради корекција, и ако та корекција укључује бар 2 корака; При активацији, fixRPM добија тренутну вредност ротација, а fixSteps тренутну вредност калкулираних корака (stepsX); Након истека времена хлађења (correctionSpinCount) калкулира се нови којефицијент (разлика између старе и нове вредност ротација се дели бројем корака); fixRPM и fixSteps се ресетирају како би били спремни за нову корекцију (ако до те корекције дође); У случају промене брзине (33.3 према 45 и обратно) све вредности се ресетирају, и почињу се калкулирати тек након истека времена хлађења. Такође сам допунио рутину за дебагирање да сада штампа (1) тренутну вредност ротације, (2) просечну вредност ротације, (3) тренутну вредност којефицијента корекције и (4) број слота у пољу за просеке (од 1 до averageTotal):
    if (debugSerial) { Serial.print(currentX, 4); Serial.print(" "); Serial.print(currentRPM, 4); Serial.print(" "); Serial.print(derivedQ, 4); Serial.print(" "); Serial.print(averageCount); Serial.println(); }  
    Резултати
    Циљ је био увећавање прецизности регулације, т.ј. финија регулација:
    RPM (true) RPM (average) derivedQ averageSlot 33.1941 33.1722 0.0100 9 33.1943 33.1746 0.0100 10 33.1984 33.1774 0.0100 11 33.1962 33.1799 0.0077 12 33.2046 33.1829 0.0077 13 33.2162 33.1864 0.0077 14 33.2255 33.1905 0.0077 15 33.2304 33.1952 0.0077 0 33.2343 33.1999 0.0077 1 33.2340 33.2041 0.0077 2 33.2361 33.2079 0.0077 3 33.2322 33.2110 0.0077 4 33.2328 33.2136 0.0077 5 33.2364 33.2160 0.0077 6 33.2395 33.2186 0.0087 7 33.2428 33.2217 0.0087 8 33.2520 33.2254 0.0087 9 Кључна је вредност derivedQ, као и брзина промене.
    У овом примерку, derivedQ је добила прецизнију вредност од константе, а тиме и прецизнију регулацију. Број окидања игра велику улогу и брзини промене - тачно 12 окидања, односно укупно 3 пуне ротације тањира, било је довољно за две пуне калкулације derivedQ параметра.
    Закључак
    Циљ постигнут, сада се погон може користити са било којој комбинацији каиша и каишница без претходних мерења за фиксне параметре.  
    Код је, као и увек (108755f), овде:
    https://github.com/stojnev/dwr-controller
     
×
×
  • Kreiraj novo...