InSides Napisano Mart 24, 2018 Autor Share #45 Napisano Mart 24, 2018 17 hours ago, guja011 said: mada opet nije jasno kad već tastuješ samo ka masi, što nisi turio obične diskretne fetiće? Не бих знао како. Видео сам ово: http://www.instructables.com/id/ArduinoMicrocontroller-MOSFET/ И ово: http://bildr.org/2012/03/rfp30n06le-arduino/ Ценио бих показну вежбу. 17 hours ago, vladd said: Koliko vidim, kako je povezano, tebi arduino preko 4066 kratkospaja(ima otpornost stotinak oma) tastere, preko control pinova multipleksera. Cemu sluzi prespajanje tastera koji sluze za prespajanje? Ako to je rad tastera ukljucenje prema masi(a nema na semi) 4066 mozes zameniti sa ULN2003. Ne razumem vezu tastera i 4066... Екстерни контролер који користим је генератор синусних сигнала за погон мотора. Генерира варијабилну фрекфенцију - фрекфентна вредност се контролира физичким тастерима (Up, Down, StandBy и 33/45). Мој код имплементира затворену петљу тако што контролира фрекфентну вредност симулирајући "кликове" тих тастера. Ти тастери на шеми екстерног контролера преспајају пинове његовог микроконтролера ка маси. На слици које сам ја поставио, само сам нацртао екстерне тастере које Ардуино "клика" - па разумем да није баш најјасније. У основи, треба ми начин да логички "кликам" те тастере са Ардуина, и да је основно стање увек "отворено" осим када их кликам - чак и када напајање није присутно. До сада сам пуно пута користио 4066, али никада у оваквој комбинацији где ми ствара проблеме. Link to comment Podeli na ovim sajtovima More sharing options...
vladd Napisano Mart 24, 2018 Share #46 Napisano Mart 24, 2018 Nejasna je bila paralelna veza tastera i 4066..posto rade isti posao na eksternom kontroleru, sada je jasno. S obzirom da su tasteri jednim krajem na fiksnom potencijalu, mozes koristiti, ili fetice, kao sto rece @guja011 ili ULN2003, ili neki iz te serije, zavisno kakav je upravljacki napon. Bez da ti smetaju izlazne zastite ili ponasanje 4066 bez napona. 4066 je prakticno pouzdaniji kao brzi prosledjivac signala, nego proizvodjac stanja. Ti u stvari zelis da izmerenu brzinu jednostavno implementiras u korekciju eksternog kontrolera...sto ubija smisao tastera za up-down, zadas arduinu zeljenu brzinu(sa jednim dva ili vise tastera), a on sam neka je odrzava. MAda je to verovatno sledeca faza. Tasteri i mikrokontroleri se slabo slazu zbog ponasanja mehanickih tastera i nestabilnog kontakta pri ukljucenju, sto se izbegava nacinom citanja statusa, ili pravljenjem "bounce free" tastera. Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano Mart 24, 2018 Autor Share #47 Napisano Mart 24, 2018 27 minutes ago, vladd said: Ti u stvari zelis da izmerenu brzinu jednostavno implementiras u korekciju eksternog kontrolera...sto ubija smisao tastera za up-down, zadas arduinu zeljenu brzinu(sa jednim dva ili vise tastera), a on sam neka je odrzava. MAda je to verovatno sledeca faza. Крајна фаза је потпуна елиминација екстерног контролера - разгледам разне DDS чипове које могу директно контролирати преко I2C протокола - тако да ми симулација тастера ни не треба. Циљ је имати само два физичка тастера - први за укључивање/искључивање, и други за пребацивање брзине 33/45. Ардуино би радио све. У основи, Ардуино и сада ради скоро све - само мора симулирати те тастере зато што екстерни контролер не дозвољава упад у микроконтролер. Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano Mart 24, 2018 Autor Share #48 Napisano Mart 24, 2018 Унапређење #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 Leonardo je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano April 7, 2018 Autor Share #49 Napisano April 7, 2018 On 3/23/2018 at 5:18 PM, guja011 said: imaš malecki previd , cenim da je desni deo slike u pitanju , curenje kroz zaštitnu diodu. kada je čip na napajanju dioda je u kontri pa ne curi. @guja011 имајући ово у виду, као и шему из прве поруке, дали мислиш да бих могао да решим "проблем" са неком мањом корекцијом на шеми? Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano April 7, 2018 Autor Share #50 Napisano April 7, 2018 Мали рефактор кода, одвојена рутина за стопирање ротације - лакше за оддржавање, бржа реакција на дисплеју. Код је, као и увек (b3ed158), овде: https://github.com/stojnev/dwr-controller Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano April 10, 2018 Autor Share #51 Napisano April 10, 2018 У GitHub repo-у, додао Gerber датотеке за две плочице: Плочице стигли из Кине (EasyEDA), проверено раде како су и замишљене. Код је, као и увек (f0e7ce1), овде: https://github.com/stojnev/dwr-controller Leonardo, Beli_Ninja and vladd je reagovao/la na ovo 3 Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano April 18, 2018 Autor Share #52 Napisano April 18, 2018 Унапређење #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 Leonardo je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano April 19, 2018 Autor Share #53 Napisano April 19, 2018 Проблем #2 Раније сам писао да сам имао проблеме са имплементацијом CD4066B: On 3/23/2018 at 2:16 PM, InSides said: Па онда би да ревидирам употребу CD4066B зато што не понаша се баш како пише у datasheet-у. Моја имплементација је радила, али мање него идеално. Нипошто за решење на дуже стазе. Решење Након дискусије, и предлогa који је @guja011 дао: On 3/23/2018 at 6:08 PM, guja011 said: mada opet nije jasno kad već tastuješ samo ka masi, što nisi turio obične diskretne fetiće? Заменио сам CD4066B за четири BC337 транзистора, у комплету са 1кО отпорницима на сваку од транзисторских база: Нема цурења, нема проблематичних понашања, ради како је оригинално замишљено. Редизајнирао плочицу, нови сет Гербера и breadboard слике на GitHub-у. Код је, као и увек (3d63b2a), овде: https://github.com/stojnev/dwr-controller Leonardo je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano Maj 8, 2018 Autor Share #54 Napisano Maj 8, 2018 Проблем #3 Мало сам читао спецификацију Ардуина, и схватио да ЕЕПРОМ има лимит снимања (writing cycles). Загарантован број циклуса је око 100,000 - што изгледа пуно - али имајући у виду како Ардуино снима податке у ЕЕПРОМ, и није баш. Када се на то дода податак да је код снимао у ЕЕПРОМ сваке секунде, добијемо ситуацију у коју ЕЕПРОМ је практично неупотребљив за мање од 30 сати писања. Решење Сва логика писања у ЕЕПРОМ се налази у процедури: void checkTimer() Пар корекција ради оптимизације, и сада имамо чак и прецизнији тајмер, који штеди ЕЕПРОМ. Код је, као и увек (73432a0), овде: https://github.com/stojnev/dwr-controller Link to comment Podeli na ovim sajtovima More sharing options...
vladd Napisano Maj 9, 2018 Share #55 Napisano Maj 9, 2018 http://forum.arduino.cc/index.php?topic=188319.0 https://arduino.stackexchange.com/questions/226/what-is-the-real-lifetime-of-eeprom https://arduino.stackexchange.com/questions/48872/extending-eeprom-life InSides je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano Jun 8, 2018 Autor Share #56 Napisano Jun 8, 2018 On 4/18/2018 at 4:39 PM, InSides said: Да заокружимо пројект овде - хвала @Leonardo за веома прецизну обраду горње плоче - даљинац је сада спакован: aaa zmaju!, Woland, Leonardo and 2 ostalih je reagovao/la na ovo 5 Link to comment Podeli na ovim sajtovima More sharing options...
Woland Napisano Jun 8, 2018 Share #57 Napisano Jun 8, 2018 abre, NATO je srećan što se ne usmerite na krstareće rakete, znanja bi se pronašlo, a i sklepali bi smo je nekako, pa bi ih izbacili iz biznisa InSides je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano Jun 8, 2018 Autor Share #58 Napisano Jun 8, 2018 1 minute ago, Woland said: abre, NATO je srećan što se ne usmerite na krstareće rakete, znanja bi se pronašlo, a i sklepali bi smo je nekako, pa bi ih izbacili iz biznisa Није важно дали ракете раде, добре би биле за параде. Woland je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
Woland Napisano Jun 8, 2018 Share #59 Napisano Jun 8, 2018 ma, radile bi, znam jednog sa foruma koji ume InSides je reagovao/la na ovo 1 Link to comment Podeli na ovim sajtovima More sharing options...
Leonardo Napisano Jun 8, 2018 Share #60 Napisano Jun 8, 2018 Neka njih sa raketlama. Mi se trudimo oko PEVALICA. Od njih zaplače samo onaj koga pesma pogodi u srce, ili tu negde. Woland, predragm, Beli_Ninja and 1 član je reagovao/la na ovo 4 Link to comment Podeli na ovim sajtovima More sharing options...
Zen Mod Napisano Jun 8, 2018 Share #61 Napisano Jun 8, 2018 2 minutes ago, Woland said: abre, NATO je srećan što se ne usmerite na krstareće rakete, znanja bi se pronašlo, a i sklepali bi smo je nekako, pa bi ih izbacili iz biznisa idi begaj imamo Srecka ovde , nemo te cuje , pokrene neki Open Source na tu temu ...... Link to comment Podeli na ovim sajtovima More sharing options...
Woland Napisano Jun 8, 2018 Share #62 Napisano Jun 8, 2018 1 minute ago, Leonardo said: Neka njih sa raketlama. Mi se trudimo oko PEVALICA mogu one i da pevaju.. Vagnera npr Link to comment Podeli na ovim sajtovima More sharing options...
Srecko Napisano Jun 8, 2018 Share #63 Napisano Jun 8, 2018 Posetim ja (u nekoj delegaciji) Dynamit Nobel Defence (pre godinu ipo). Ulaz u fabriku iz 19 veka, sa nekoliko šinskih koloseka. Fabrika projektovana kako ja zamišljam da ih je projektovao Albert Speer. Tehnologija, verovatno najbolja moguca (nisam video veliki broj takvih fabrika da bih bio siguran[emoji3]), doprinos sadašnjih generacija Nemaca. Centralno mesto u jednom od pogona zauzela sjajna mašina za tzv. 3D motanje specijalnih proizvoda od kompozitnih vlakana (kada im je “dokona” motaju za Mercedes[emoji3]). Generalni direktor (jedan od glavnih akcionara) se raspricao o njoj šta sve može i ne može, objašnjavajući koliko su dobar potez napravili nabavkom iste. Naravno da me je zagolicalo “ko li je napravi majku im j....”. Možete li zamisliti iznenađenje kada sam video da ju je projektovala i napravila jedna privatna firma iz Prilepa koju su oformili inženjeri koji su otišli iz bivšeg “11. Oktomvri” i sto je najcrnje koje lično jako dobro poznajem. InSides jako podseća: ozbiljnošću, pristupom i nadasve znanjem na te izuzetne inženjere. Toliko o nama nesposobnima i velikoj “tamnici naroda SFRJ Jugoslaviji” [emoji3]. vladd, Woland and Doktor je reagovao/la na ovo 3 Link to comment Podeli na ovim sajtovima More sharing options...
Zen Mod Napisano Jun 8, 2018 Share #64 Napisano Jun 8, 2018 Link to comment Podeli na ovim sajtovima More sharing options...
predragm Napisano Jun 8, 2018 Share #65 Napisano Jun 8, 2018 40 minutes ago, Srecko said: InSides jako podseća: ozbiljnošću, pristupom i nadasve znanjem na te izuzetne inženjere. E jes vala... samo gledam šta radi! Link to comment Podeli na ovim sajtovima More sharing options...
InSides Napisano Jun 8, 2018 Autor Share #66 Napisano Jun 8, 2018 5 hours ago, Srecko said: Možete li zamisliti iznenađenje kada sam video da ju je projektovala i napravila jedna privatna firma iz Prilepa koju su oformili inženjeri koji su otišli iz bivšeg “11. Oktomvri” i sto je najcrnje koje lično jako dobro poznajem. Samakoski je zaheban tip. Link to comment Podeli na ovim sajtovima More sharing options...
Preporučeni Komentari
Kreiraj nalog ili se prijavi da daš komentar
Potrebno je da budeš član DiyAudio.rs-a da bi ostavio komentar
Kreiraj nalog
Prijavite se za novi nalog na DiyAudio.rs zajednici. Jednostavno je!
Registruj novi nalogPrijavi se
Već imaš nalog? Prijavi se ovde
Prijavi se odmah