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 Srecko u Turntable Tachometer / Controller   
    Na “komsijskom” forumu je otvorena tema o novodizajniranoj ručici gramofona koju je neko (autor, njegov marketing ....ko zna već) odmah proglasio jednom od najboljih na svetu.
    Kao neko sa visedecenijskim iskustvom u R&D rekao bih da je sve u vezi sa tim primer kako ne treba da funkcioniše R&D.
    Ovo sam rekao samo zbog toga da još jednom pohvalim ne samo ovo Vaše tehničko rešenje o kome pišete već ceo pristup R&D koji se izuzetno dobro već naslućuje (u Vašem slučaju radi se o Vašem viđenju gramofona sa svim kompromisima u koje ste Vašom voljom ili zbog eksternih faktora već ušli ili ćete ući); a koga se ne bi postideli ni oni iz najbogatijih država i njihovih najboljih kompanija.
    Impresioniran sam.
    Želim Vam svu sreću (trebaće Vam) da projekat dovedete do kraja na najbolji mogući način i da ga materijalizujete i “naplatite”.



    Srećko
  2. Love
    InSides got a reaction from Woland in Turntable Tachometer / Controller   
    Хвала на поддршци свима.
    Конструкција је ужасно једноставна. Хтео сам да цртам плочицу, али стварно нема потребе када је довољан само мини протоборд за ућвршчивање Ардуина. Библиотека за дисплеј је универзална, тако да се може лако променити дисплеј. Ако неко жели да склопи овакво нешто, а није вичан програмирању, цимајте ме за промене кода.
    И кад смо код тога, већ имамо неколико промена у коду:
    https://github.com/stojnev/dwr-controller
    Додао flag који се зове tachometerOnly. Када се овај flag означи као "true" код прескаче све рутине у вези екстерне контроле погона. Значи, када је идеја да систем ради само као тахометар, све што треба да се уради је следеће: boolean tachometerOnly = true; Проширио лиценцу. Код је лиценциран под условима MIT лиценце, па додао назив лиценци под чијих услова су лиценциране библиотеке које код користи. Следећи корак - унапређивање прецизности мерења. Али пре имплементације, мало времена се да посветити рачуници шта се добија а шта се губи тим кораком. Stay tuned.
  3. Love
    InSides je reagovao/la na Woland u Kazalište Pozorište Gledališče Teatar   
    24.02.2018. Narodno Pozorište Toša Jovanović Zrenjanin - Zrenjanin, tekst - Igor Štiks, režija Boris Liješević 
    Bertold Breht, Ernesto (je živ) Gevara, Ludvig Fojerbah, KSM (Korumpirani Srpski Ministar), Dijego Armando Maradona, Karl Marks, TRA (Trans Rodna Aktivistkinja), Astor Pijacola, TST (Tipični Srpski Tajkun), Izabela Peron, Crveni General, PSI & OST (Prosečan Srpski Izdajnik i Običan Srpski Telohranitelj) i GRAD (Petrov? ma daj ).. sve je to (i još po nešto i po malo) moguće ako tekst piše Igor Štiks (Elijahova Stolica itd), a režira Boris Liješević (Hotel Slobodan Promet, Pijani itd), a na sceni odigra mlad ansambl Zrenjaninskog pozorišta..
    Zrenjanin je angažovana predstava, koja se bavi iscrtavanjem mračne stvarnosti u nekada velikom industrijskom gradu.. u njoj su radnici (klasno neosvešteni), osim borbom za opstanak, više zabavljeni kladionicom nego eventualnim sindikalnim organizovanjem.. groteskno zvuče (nikad potrebnije) izrečene (i otpevane) parole iz doba socijalizma - Fabrike Radnicima! i mahanje crvenom zastavom sa haube Stojadina.. i, nekako nadrealno.. mlađi publikum, naravno ne zna nastavak Marksove jedanaeste teze o Fojerbahu, ona nije izrečena u celosti, već se Štiks zadržao na "tumačenju sveta", ne stvarajući iluziju o tome da se, a to nije lako, "radi o tome da se on izmeni".. bahatost, brutalnost i licemerje koje lagodno praktikuju KSM, TST, PSI i OST na sceni (a i van nje ), ne ostavljaju mesta iluziji da će se do promene sveta stići lako.. ali, niko nam ne može zabraniti da odmah, i sa punim pravom tražimo restituciju društvene svojine

    Liješevićeva režija je tečna, vešto je ukomponovao odlične songove (odavno na sceni nisam čuo bolje originalne songove), sa povremenim tumačenjem preskočenih događaja sa ivice pozornice, u najboljoj tradiciji Bertolda Brehta.. muziku je potpisala Jelena Popržan - minimalistički, samo glas i viola (na momente liči na violončelo), i to je učinila znalački, sa visokim osećajem za tekst i sa svojih nekoliko songova u mali džep spakovala celokupan opus Isidore Žebeljan sa njenim protežeom Draškom Draškom Adžićem, koji su danas neprikosnoveni (sic) u svetu muzike za pozorište.. msm Jelena Popržan:
    do Zrenjanina se stiže lako, na pola je puta između Novog Sada i Beograda, ali onako, malo u šreh na ulasku u salu vas pozdrave srdačno, sa mekim č - dobro veče, dobro nam došli.. po neko dobije i ono - ko, nam ide, koo nam idee (bokte materin) a ta sala, u zgradi pozorišta, je najstarije pozorište u Srbiji, na istom je mestu od 1839.. i Begej je tamo di je bio, al' meščini nekako pregrađen, il' možda tripujem ima tamo i finih kafana u blizini: dvared makiJato, dvared kuvano vino i dvared ulaznice - 1100 dinara najnovijih, malo više nego garaža u Beogradu
     
     
     
  4. Like
    InSides got a reaction from sir Oliver in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  5. Love
    InSides got a reaction from mrcelavi in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  6. Love
    InSides je reagovao/la na vladd u Turntable Tachometer / Controller   
    Ja sam vec pohvalio genijalnu ideju, ali je vredna pohvale svaki put. Dobiti merenje punog kruga na svakoj cetvrtini kruga..sto resava probleme preciznosti pozicioniranja i rada senzora.
    Proizvojacima brzina jeste vazna ali u proglasenoj meri, realno se ofrlje i pausalno odnose prema njoj, posto drugi problemi daleko prebacuju problem brzine. I to se nadoknadjuje marketingom  .
    PA su onda daske sa malim motorcetom, najbolji gramofoni na svetu  
    Elem, veci problem je promasena osa busenja rupe na ploci, koju je NAK1000 prividno (ne)resio pomeranjem diska, ali neresiva je promena distance rupe u odnosu na brazde  na ploci. Pa je brzina rotacije izgubila na vaznosti.
     
    I naravno da je srednja brzina vazna, ali su vazne i amplitude variranja, sto se ozbiljno predupredilo ovakvim dizajnom.
    Jos jednom pohvala, za genijalan pristup problemu.
  7. Love
    InSides je reagovao/la na Leonardo u Turntable Tachometer / Controller   
    Odlično rešenje, čestitam. 
     
  8. Love
    InSides je reagovao/la na Woland u Turntable Tachometer / Controller   
    tobre momče Makedonče  
  9. Love
    InSides je reagovao/la na Srecko u Turntable Tachometer / Controller   
    Briljantno!


    Sent from my iPhone using Tapatalk
  10. Love
    InSides got a reaction from Beli in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  11. Love
    InSides got a reaction from Kuja in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  12. Love
    InSides got a reaction from NIXIE in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  13. Love
    InSides got a reaction from vladd in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  14. Love
    InSides got a reaction from Leonardo in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  15. Love
    InSides got a reaction from ninja in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  16. Like
    InSides got a reaction from Woland in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  17. Love
    InSides got a reaction from shonne in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  18. Love
    InSides got a reaction from vukashin in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  19. Love
    InSides got a reaction from prophet in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  20. Love
    InSides got a reaction from Aleks in Turntable Tachometer / Controller   
    Увод
    Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу pitch-а, а веома мали број њих развија и/или имплементира склопове за тековно мерење исте. Уместо тога, користе се технике контроле обртаја код мотора и мерење истих, прерачун ротација преко мерење повратних струја итд. Шта ли се онда дешава на самом тањиру?
    Такође је било прича да грамофонска игла при контакту са плочама има утицај на константну брзину, а да не помињем растезање каиша и промене у температури. Како сам решио да развијам свој грамофон (*), морам сам да проверим ове хипотезе, да се не би базирао на приче које нису поткрепљене јасним доказима.
    (*) Рецимо да је стабилна просечна брзина ротација један (поред доста других) од кључних услова при развоју грамофона.
    Услови
    Поставио сам следеће услове:
    Безконтактни сензор (hall effect, IR, laser); Висока прецизност (рецимо микросекунде); Вањски дисплеј (OLED, LCD, ePaper); Логирање мерења за debugging и даљи развој погона за грамофон; Израда од релативно доступних компоненти; Могућност имплементација на било којем грамофону (**). (**) Локација монтирања сензора и окидача зависи од зазора између доње стране тањира и базе.
    Компоненте
    Скоро све компоненте се могу локално наручити, осим дисплеја. Било која комбинација од оних које сам навео врши посао. На крају, избор је пао на следеће:
    Arduino Nano (овде); Keyes KY-003 Hall Effect Sensor Breakout (овде); 0.91" OLED екран са I2C протоколом (рецимо овде); Неколико магнета (6mm x 3mm је добра величина); (***) CD4066B прекидач; (***) Стандардни тастери. (***) Нису потребни за тахометар, већ за други део пројекта, а то је PI/PID контрола вањског контролера за погон грамофона. TBD.
    Принцип
    Свако окидање сензора снима број микросекунди прошле од иницијализације микроконтролера.
    И онда:
    Брзина ротације је разлика између нове и старе вредности, изразене у ротацијама у минути; Сензор је један, и је фиксне локације; Окидач(и) сензора могу да буду од један до онолико колико их физички стане на тањиру; Када је више од једног окидача по ротацији, брзина ротације се рачуна за сваки окидач понаособ, а не као разлику између окидача. (****) (****) Сваки сензор има време окидања. У случају hall effect сензора, време окидања зависи од снаге магнетног поља које презентују магнети који раде као окидачи. Чак и да имам услове да поставим магнете са апсолутном прецизношћу, не могу да гарантујем да сви магнети имају магнетно поље исте јачине. Због тога, код који сам развио рачуна сваки магнет као да је једини окидач у систему, и упоређује га са самим себе. Овај приступ гарантује виш ступањ прецизности, и умањује утицај прецизности постављања окидача - све док се окидачи поставе на исто растојање од центра како би окинули сензор.
    Повезивање

    (*****) За тахометар, без вањске контроле погона, све што је лево од Ардуина се може уклонити.
    Окидачи
    Окидачи се могу поставити на доњу страну тањира, или на сам обод тањира ако нема места за испод.
    Код мене, то сам овако урадио:

    Програмирање
    Сав код (као и идуће промене) је доступан овде:
    https://github.com/stojnev/dwr-controller
    Код је релативно једноставан, а сви оперативни параметри се могу штимати преко вредности променљива:
    int countMessageDisplaySpins = 1; int waitingCycle = 0; long stoppingTime = 2500000; // Indicates (1) the number of rotations a display message is active before being replaced with RPM, (2) represents intermediary counter and (3) determines the amount of microseconds elapsed after which the platter is considered stopped. int triggerNumber = 4; // Indicates the number of sensor triggers per rotation. int correctionSpin = 4; int correctionSpinShort = 2; long correctionSpinCount = 0; int correctionMovement = 5; // Indicates (1) number of rotations to wait for applying correction with small corrections, (2) number of rotations to wait for applying correction with large corrections, (3) temporary spin count and (4) maximum amount of steps to correct per cycle. float correctionQ = 0.01; // Indicates the difference quotient from standard speed to activate automatic correction. float derivedQ = 0.01; // Indicates the correction in RPM derived from a single 0.01Hz step (single "click"). Код је дизајниран да очекује промене у систему, па тако "препознаје" стање система. То је важно за имплементацију у постојеће системе, где тахометар није контролер брзине и/или стања.
    Радња
    И на крају, како то ради:
    Будућност
    Тек смо почели. У плану је бар следеће:
    Имплементација Timer2_Counter библиотеке за повећање прецизности система; Рутине за приказ разних просека; Аутоматскo штимање PI/PID параметара; Рутине за чување укупног времена свирања (не само ротација).
  21. Love
    InSides je reagovao/la na vladd u Čime se zanimam... (ovih dana )   
    Sta da kazem nego sjajno!
    Umesto da uvedes nove greske, postojecu si smanjio...  
  22. Love
    InSides got a reaction from skrstic in Čime se zanimam... (ovih dana )   
    Ево како ради:
    Сав код (и сваки идући update) се налази овде:
    https://github.com/stojnev/dwr-controller
    Имам доста идеја за побољшања, али ово ради и морам да негде пресечем да мало слушам музику, а не бројим ротације.
  23. Love
    InSides got a reaction from D i g i t a L in Čime se zanimam... (ovih dana )   
    Ево како ради:
    Сав код (и сваки идући update) се налази овде:
    https://github.com/stojnev/dwr-controller
    Имам доста идеја за побољшања, али ово ради и морам да негде пресечем да мало слушам музику, а не бројим ротације.
  24. Love
    InSides got a reaction from Aleks in Čime se zanimam... (ovih dana )   
    Ево како ради:
    Сав код (и сваки идући update) се налази овде:
    https://github.com/stojnev/dwr-controller
    Имам доста идеја за побољшања, али ово ради и морам да негде пресечем да мало слушам музику, а не бројим ротације.
  25. Love
    InSides got a reaction from vladd in Čime se zanimam... (ovih dana )   
    Свакако. Мада, ја не мерим време између два магнета, него сваки магнет засебно, у једном ротационом циклусу. Такав приступ је прилично индиферентан на растојање помеђу магнетима, све док су сви магнети на истом растојању од центра - па зато је шема. Повећао сам број магнета да би корекција била бржа.
    И још, користим FALLING interrupt-a, уместо RISING или CHANGE зато што су резултати тако, у овом склопу, прецизнији.
    Кад објавим код, биће, чини ми се, јасније.
×
×
  • Kreiraj novo...