Jump to content

InSides

Član
  • Broj sadržaja

    962
  • Na DiyAudio.rs od

  • Poslednja poseta

  • Broj dana (pobeda)

    21

Sve objavljeno od InSides

  1. ОК, један од мојих пријатеља је дистрибутер Panasonic TV-a локално. Одмах га зовем да то истражи.
  2. Нисам баш сигуран да постоји стандардни USB оптички драјв који се може путем USB-а повезати и да "свира" MPEG-2 / MPEG-4 директно на TV-у. Логично би било да, ако меморија (USB flash, HDD) ради на TV-у, да би то морало радити са оптичким драјвом, али то није увек случај - мора се упамтити да USB домаћин (у овој случају TV) мора да контролира playback драјва (play/pause/stop/eject). Неки старији драјвови имају дугметиће на предњој плочи, али нисам то одавно видео на новијим. Ево овде нека листа анализираних драјвова: https://thewirecutter.com/reviews/the-best-external-blu-ray-drive/ ...у сваком случају, постоје драјвови који су произведени да раде само са неким TV-има. Рецимо, Samsung је продаваа драјвове које раде само са неким моделима њихових TV-a. Можда је бољи приступ анализирати модел TV-а који имате па да се онда тражи решење.
  3. Imao sam par takvih terminala, i odgovara mi velicina i orijentacija za prostor gde bi ih koristio. Mogao bih direktno i lemiti - ali terminali su zgodniji za rastavljanje ako ikad ima potrebe... ...a znajuci sebe, bice potrebe.
  4. Ovo je bas jeftino. Samo mi nije jasno dali mogu da kombiniram dva komada 3-pin i jedan 2-pin da dobijem 8-pin. Da nije zid izmedju blokova predebeli da bi se mogli polemiti neposredno jedan do drugog?
  5. Hvala svima. Probao sam da narucim preko Farnell-a, ali ne zele unapred da mi preracunaju troskove transporta. Malo mi glupo (OK, veoma mi glupo) da dam detalje kartice pre kalkulacija poreza i transporta. Zamolio bih da se ukljucim u neku Farnell narudzbinu, ako neko ovde resi da to skoro radi - ukupno bi sve ovo bilo oko 15 GBP.
  6. Mislio sam da je samo u Makedoniji problem za nabaviti.
  7. Ne znam kako se ovo zove lokalno, ali to je ovo: https://www.mouser.com/ProductDetail/TE-Connectivity/282834-8?qs=A%2bip%2bNCYi6OmCuLnrGmJlA%3d%3d Treba bi nekoliko komada (7-8) sa 8 pozicija, i par komada sa 3 pozicije. Dimenzije su vazne, narocito pitch (0.1" / 2.54mm). Mouser je opcija, ali da vidimo dali prvo ima nesto lokalno.
  8. Промоција је наводно сутра, али као знам људе који знају људе - како то беше?
  9. Ако имаш Arduino Nano, SDA = A4, SCK = A5. Ево breadboard сличице: Ако користиш нешто друго осим Nano-а, пиши шта је и видећу дали су пинови различити. Начин на који ја користим u8g2 библиотеку не тражи да се пинови упишу у код.
  10. Да питам овде, да не би отварао посебну тему за једно питање. Елем, дали неко има идеју да ли (и куда ако да) се може купити Keith Jarrett - The Koln Concert у Београду? Нова копија, не коришћена. Треба ми нова копија за поклон - шта ћеш.
  11. Биће, у посебној теми. Мотор je BLDC, погон је 3 фазни синусни генератор + појачало у D класи.
  12. Хоћу, хвала. Му Метал можда је мало проблем, бар за одмах, али бакар је лакше наћи локално. Хтео бих да догурам код до највеће могуће (али ипак практичне) границе, зато што бих га онда користио за унапређивање свог погона. Али проблем је ипак калибрација - чак и скупљи без контактни тахометри имају резолуцију од тек 0.01 у распону 1-100 ротација у минути. Размишљао сам о корићењу комплета ласер/сензор од оптичких (ласерских) компјутерских мишева, као овај овде: ADNS-9800 Laser Motion Sensor Ово би требало дати већу прецизност, али компликује код и искључује друге важније функције, тако да за сада остајем на комбинацији hall effect / магнет.
  13. Унапређење #2 Рутине за приказ разних просека. Позадина Раније сам писао око прецизности мерења, тачније како сам имплементирао покушај за увећавање те прецизности уз помоћ више од једног окидача. Такође, утврдио сам да лимит прецизности није у интерним функцијама Ардуина, већ око процеса на превод аналогног сигнала у дигитални (тачније брзина окидања сензора која може да зависи и од сензора, и од окидача). Комбинација ових узрока скоро увек даје резултате кои флуктуирају, чак и са веома (*) стабилним погоном. (*) Не бих рекао најстабилнији погон, зато што нисам имао могућности тестирати са погоном који је стабилнији од мог, а сигуран сам да постоји. Како изгледа примерак од, рецимо, 8 окидања сензора: RPM (true) 33.3339 33.3325 33.3291 33.3313 33.3316 33.3336 33.3344 33.3341 Флуктуација почиње у трећој децимали, у 7 од 8 приказаних случаја. То би требало да буде довољно, али да видимо дали може боље за приказ. Код Сва логика око калкулација просека се налази у процедури: showRPM(); А регулира се уз помоћ пар променљива: boolean averageCalc = true; const int averageTotal = 16; Прва променљива утврђује да ли се калкулација просека уопште врши. Друга променљива утврђује колико од задњих вредности улази у просек. Процедура је релативно једноставна: При сваком окидању, тренутна вредност се додаје пољу averageValues; Показивач averageCount се повећа за вредност 1; Након првих averageTotal циклуса, averageCount се ресетује, а просек се почиње калкулирати - увек од задњих averageTotal вредности; У случају промене брзине (33.3 према 45 и обратно) све просечне вредности се ресетирају, и почињу се калкулирати тек након 2 * averageTotal циклуса. (**) (**) Разлог иза овог приступа је намера да се избегне приказ "застарелих" вредности просека и тиме добити утисак погрешне брзине. Свакако, просеци се изједначују након пар циклуса, али овако је приказ линеарнији. Резултати Кад се ова функција примени на вредности које сам раније поставио, добија се ово: PRM (true) RPM (average) 33.3339 33.3346 33.3325 33.3348 33.3291 33.3346 33.3313 33.3346 33.3316 33.3346 33.3336 33.3347 33.3344 33.3347 33.3341 33.3346 Наизглед није пуно, али је излаз пуно линеарнији, и чини ми се, пријатнији за око и умањење аудиофилске нервозе. Закључак За моје потребе, веома корисно. Чини ми се да би било користи од више штимања, али основна функционалност је ту. Код је, као и увек (c2efaba4), овде: https://github.com/stojnev/dwr-controller
  14. Унапређење #1 Имплементација Timer2_Counter библиотеке за повећање прецизности система. Позадина Код који сам објавио се базира на коришћењу micros() функције (референца овде), која враћа укупни број микросекунда протеклих након иницијализације Ардуина. Код 16MHz Ардуина (као Нано које сам користио за развој) ова функција има резолуцију од 4 микросекунди. То је ограничење стандардних Ардуино поставки. Постоји начин да се та резолуција повећа, али то изискује реиницијализацију интерних Atmega тајмера, које повлачи губитак других функција. Један приступ је имплементација екстерне библиотеке Timer2_Counter која повећава резолуцију на 0.5 микросекудни. Губитак функционалности је, рецимо, занемарљив, али је библиотека лиценцирана под услове GPL-а, што повлачи нову шему лиценцирања целог пројекта. Рачунице Креирао сам малу debug рутину која на свако окидање, штампа следеће: Број протеклих микросекунди при задњем окидању тог окидача, по стандардној функцији; Број протеклих микросекунду при претпосљедњем окидању тог окидача, по стандардној функцији; Прерачунати RPM, по стандардној фукцији; RPM након израмњивања, по стандардној фукцији; Број протеклих микросекунди при задњем окидању тог окидача, по функцији више резолуције; Број протеклих микросекунду при претпосљедњем окидању тог окидача, по функцији више резолуције; Прерачунати RPM, по функцији више резолуције; RPM након израмњивања, по функцији више резолуције; и, Процентуална разлика између вредности функција. Након стотинак циклуса, резултат изгледа овако (поставио сам само пет линија да не би порука била предугачка): Ticks N1 Ticks O1 Calculated1 RPM1 Ticks N2 Ticks O2 Calculated2 RPM2 Difference 3675316 1875240 33.33192599 33.33 3675318 1875238 33.33185192 33.33 0.000222% 4126036 2325948 33.33170378 33.33 4126038 2325946 33.33162972 33.33 0.000222% 4576116 2776136 33.33370371 33.33 4576118 2776134 33.33362963 33.33 0.000222% 5024092 3223924 33.33022251 33.33 5024094 3223922 33.33014845 33.33 0.000222% 5475392 3675316 33.33192599 33.33 5475394 3675314 33.33185192 33.33 0.000222% Разлика је 0.000222%, константно. Ово, по мени, показује: Да је drift минималан, или малтене непостојећи (разлика је константно иста); и, Да је разлика у прецизности тако мала да се манифестује тек у четвртој децимали, и то за вредност 1 (0.0001). Закључак Не вреди имплементирати, за овај склоп, библиотеку која повећава резолуцију micros() функције. Бонус Када сам референцирао micros() функцију на почетку поруке, потсетио сам се да се излазна вредност ресетира на 0 након ~71 минута (функција враћа unsigned long вредност). Преглед раније верзије кода је показао да се овај overflow у коду не третира нарочито добро и може да узрокује прекид фунционалности тахометра. Корегирано у задњој верзији (1640d1f), свакако: https://github.com/stojnev/dwr-controller
  15. То је сасвим тачно. Назовимо објаве ових пројеката мој (дапаче, веома скроман) начин да вратим назад друштву које ме подигло у ово што јесам. Научио сам пуно на овоме форуму, мени логично да вратим када могу. Хвала на поддршци - то ми веома значи. Али, ако икада и решим да радим нешто комерцијално, лепо би било имати историју прошлог релевантног рада - а не само ознаку формалног образовања које је можда и ирелевантно (једна од струка ми је и општа медицина - за чудо). Ако се опет навратим на тему о оној ручици на другоме форуму, хтео бих да избегнем баш ситуацију о које сам постављао питања - да имам одговоре, у најмањој руци: Зашто сам донео одлуке о конструкцији које јесам (теорија, пракса, испитивања); Како сам донео исте те одлуке (рачунице, експерименти, докази); Зашто су #1 и #2 релевантни за конструкцију. Не замерите за оваква писања - можда сам понекад и превише формалан и пратим строгу (за мене) писану структуру, али и то је последица болних академских истраживања.
  16. Хвала. Идеја је да свака од компоненти грамофонског "система" се претстави у посебној теми, када је готово (или бар приближно готова). Ово укључује, у најмању руку: Тахометар / контролер; База; Погон; Ручица; Сталак. Можда ће потрајати док се све не заврши како би ја хтео, али до тада објављујем оно што мислим да је зрело за екстерну употребу. Интересантна та прича око наплате - у теми коју отворим око грамофонске базе причао би мало о опклади која је индиректно почела цео овај пројекат. Без разлике на то, чврсто сам убеђен да нико од произвођача / конструктора не губи ништа своје својине када је дели са светом. Ето видиш.
  17. Хвала на поддршци свима. Конструкција је ужасно једноставна. Хтео сам да цртам плочицу, али стварно нема потребе када је довољан само мини протоборд за ућвршчивање Ардуина. Библиотека за дисплеј је универзална, тако да се може лако променити дисплеј. Ако неко жели да склопи овакво нешто, а није вичан програмирању, цимајте ме за промене кода. И кад смо код тога, већ имамо неколико промена у коду: https://github.com/stojnev/dwr-controller Додао flag који се зове tachometerOnly. Када се овај flag означи као "true" код прескаче све рутине у вези екстерне контроле погона. Значи, када је идеја да систем ради само као тахометар, све што треба да се уради је следеће: boolean tachometerOnly = true; Проширио лиценцу. Код је лиценциран под условима MIT лиценце, па додао назив лиценци под чијих услова су лиценциране библиотеке које код користи. Следећи корак - унапређивање прецизности мерења. Али пре имплементације, мало времена се да посветити рачуници шта се добија а шта се губи тим кораком. Stay tuned.
  18. Увод Никад ми није било јасно како скоро сви произвођачи грамофона тврде да је константна брзина окретања грамофона кључна за контролу 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. Ево како ради: Сав код (и сваки идући update) се налази овде: https://github.com/stojnev/dwr-controller Имам доста идеја за побољшања, али ово ради и морам да негде пресечем да мало слушам музику, а не бројим ротације.
  20. Свакако. Мада, ја не мерим време између два магнета, него сваки магнет засебно, у једном ротационом циклусу. Такав приступ је прилично индиферентан на растојање помеђу магнетима, све док су сви магнети на истом растојању од центра - па зато је шема. Повећао сам број магнета да би корекција била бржа. И још, користим FALLING interrupt-a, уместо RISING или CHANGE зато што су резултати тако, у овом склопу, прецизнији. Кад објавим код, биће, чини ми се, јасније.
  21. Завршио PI контролу за мотор. Али пре тога, мало припрема. Хтео сам учетворостручити учесталост окидања сензора - па то изискује мало прецизнији метод постављања магнета. Након пар минута у CAD-у, и кратка посета принтеру: Отвори су пречника 6мм, што је тачно ISO стандард за перфорације у класерима - потпуно ми одговара зато што су магнети које користим димензија 6мм х 3мм: И кад се шема отстрани: Тањир на грамофону, па да видимо како то ради:
  22. Ако се икада заврши, свакако.
×
×
  • Kreiraj novo...