Lazerinė technika 2024.09.22 at 15:38

Ne baisia sudėtingas remontas, bet kad jau prašė pažiūrėti… Kalba eina apie tokius pigučius lazerinius projektorius😀

Nei jis čia labai galingas, nei kažkuo geras, projektoriuoja visokius taškus ir tiek. Pradžiai kaip visada, diagnostika. Neveikia. Nu tai negi atsiųs remontui veikiantį… Teks ardyti, gerai, kad nesudėtinga. Va jau ir krūvelė pabertų:

Taip, iš viso keturi aparačiukai. Gedimas pas visus vienodas, nuo perdėto jėgos panaudojimo jungiant maitinimo šaltinį – nulaužtos visos jungtys. Betikrinant radau dar ir vieną trijų padėčių jungiklį stringantį. Išėmus matosi, kad jis toks lyg padegęs, lyg kaitęs… Visos blogos detalės išmontuotos:

Prasideda „lengvoji” dalis – surasti kuo juos pakeisti. Paieška užtruko kokia 15 minučių, bet rezultatas:

Lizdas: PJ-013D Same Sky (Formerly CUI Devices) | Connectors, Interconnects | DigiKey

Jungiklis: EG2301B E-Switch | Switches | DigiKey

Pabumbėsiu… Maitinimo šaltinis 5V 1,5A, kiek tas aparatas „valgo” dar nežinau, bet tas jungiklis atlaiko tik kokius 200 mA, t. y. 7,5 karto mažiau. Ar nebus čia to kaitimo priežastis, kai per jungiklį prasibėgo didesnė srovė nei galima ? Reiks pamatuoti sroves, gal koks varikliukas pastrigęs ir dėl to vartoja didesnė srovę, ir degina jungiklį.

Patys aparačiukai padaryti labai kreivai šleivai, tokia Kinija, kad matyt pačio nuošaliausio Kinijos kaimo rūsyje gaminti…

Trumpai apie tai, kas viduje.

Du lazeriniai spinduoliai, po vienu prispaustas pavalkėlis, nežinau, ar kad kreiviau būtų ar atsitiktinai 😋. Abu lazeriai šviečia į pusiau veidrodinį stikliuką, kuris turėtų viršuje esančio lazerio spindulį atspindėti 90° kampu ir tiesiai praleisti dešinėje esančio lazerio spindulį. Pabandome.

Taip, viršutinis lazeris raudonas, atsispindi reikiamu kampu ir išlenda per balto plastiko konstrukciją. Ji su varikliuku, matomai ten dar kokį veidrodį sukioja, kad spindulys judėtų. Dešinys lazeris tuomet turėtų būti žalias, bet prijungus maitinimą neveikia, tai kol kas ne žalias 😁.

Dar keletas foto su montažinėmis plokštėmis:

LM317T, matomai surinktas įtampos stabilizatorius, reiks pamatuoti kiek Voltų gamina. Raudonu laidu padarytas trumpiklis, nuo jam yra vieta ant PCB… Toliau visokia smulkmė, DBL358V operacinukas, turbūt prie mikrofono grandinės, keletas 2SD882 tranzistorių, NE555 taimeriukas, laiko impulsų generavimui.

Remontuojam.

Aparačiukai nenumeruoti, bet tarkim pirmasis pasitaikęs po ranka – maitinimo lizdas pakeistas, jungiam. Ok, toks įspūdis, kad šalia namo kyla Eurofighter’is pilnu forsažu. Burzgia aušinimo ventiliatorius, reiks pakeisti. Laikinai atjungia ir bandom toliau. Lazeriai šviečia, o vat varikliukas, vartantis poliarizuotą stikliuką – ne. Pajungiam varikliuką prie maitinimo šaltinio, prie 5V šiaip ne taip, labai nenoriai, pradėjo suktis – viskas aišku, sunkiai sukasi, valgo daugiau srovės, srovė degina jungiklį ir gal dar kažką pakeliui, nes jungiklis tai veikia. Greita diagnostika, tiesiog atsekant takelius, kaltininkas rastas ir pašalintas. Raskite 1 skirtumą 😋

Taip taip, 10 Ω rezistorius negyvas, matomai neatlaikė srovės. O gal čia tas pats aparačiukas, kuriam ir jungiklis neatlaikė. Vienu žodžiu teks pakeisti rezistorių. Ir tas sunkiai besisukantis varikliukas:

Paprastas šepetėlinis variklis, apie guolius čia nėra kalbos. Bet užsakiau naujus ir laukiam gavimo :).

Pjovimo diskų galandinimo staklių automatikos bloko remontas 2024.07.25 at 11:33

Toks skubus remontukas pasitaikė, gavau „SCE904AN-002-01 Pacific Scientific High Performance Digital Servo Drive” valdymo bloką, kuris, taip supratau, valdo pjovimo diskų galandinimo stakles. Daiktas brangus (eBay apie 2000€), o ir darbai stovi, kalnai negaląstų diskų, todėl reikėjo skubaus remonto. Atidėjau visus projektukus į šalį, ir porą dienų, arba labiau naktų praleidau su šituo bloku. Pradžiai, kaip ir visada, teko pasiaiškinti schemotechniką, nes tam, kad sutaisyti bet kokį daiktą, būtina žinoti kaip jis turi veikti. Gedimas – neįsijungia, po to beliko tik diagnostika. Pradžiai teko išardyti bloką:

Priekinė panelė su 7 segmentų LED indikatoriumi, maitinimų ir komunikacinėmis jungtimis, gale – masyvus radiatorius.

Atidarius va toks va vaizdelis. Kairėje – jėginė dalis ir impulsinis maitinimo šaltinis, dešinėje – valdymo schemos. Pačią diagnostiką suskirsčiau į tris etapus – jėginės dalies diagnostika, valdymo grandinės diagnostika ir likusios schemos diagnostika. Kodėl taip ? Nes labiausiai tikėtina, kad nusprogo jėginė dalis, kuri dalyvauja didelių srovių komutavime, jei ne ji, tuomet labai tikėtina, kad nusprogo valdymas (neseniai žaibavo, tai gal, pavyzdžiui, nužaibavo kokį prociuką).

Jėginė dalis sudaryta, principe, iš vienos detalės, IGBT modulio Semikron SKM40GD123D:

Modulio struktūra:

Nieko labai blatno, šeši IGBT tranzistoriai viename dideliame korpuse. Pliusas, kad visi gerai aušinsis ir bus vienodos temperatūros ir greičiausiai vienodų parametrų, jeigu daryti tuo pačiu procesu. Šalia dar gyvena du trifaziai lygintuviniai tilteliai VS-36MT140:

Modulių sandara standartinė:

Tikrinam…

Čia visi jėginiai elementai geri, IGBT modulis, tilteliai, dideli raudoni kondensatoriai, filtravimo dalis – pareiname prie valdymo schemos tikrinimo.

Pradžiai bandome tikrinti mikroschemų maitinimo grandines. Trumpo jungimo nėra, viskas kaip ir gerai, reikštų, kad galima padaryti diagnostinį maitinimo įvedimą ir pažiūrėti iš kur rūks dūmai. Ant plokštės patogiai matosi 5 VDC stabilizatorius:

Štai jis, kairiame apatiniame kampe, prisuktas prie radiatoriaus, šalia ir jo kondensatorius. Čia standartinis LM7805, 5 V stabilizatorius. Pasitikrinam aplink jį, viskas gražu, trumpo nėra, bandome jungti. Stabilizatoriaus įėjimui paduodam 7V, minusą prie stabilizatoriaus minuso, ir jo išėjime turime gražius 5 V. Bet valdymo plokštė vis tiek neveikia. Net nėra tų gražių 5 Voltų ant mikroschemų maitinimo išvadų. Nu va, nusiminiau aš, net susinervinau truputį, galvoju takelis kur nors bus trūkęs, o plokštė turbūt trisluoksnė, nebeatkasiu kur trūko. Bet vis tiek pradėjau tikrinti. Tikrinu tikrinu, nu kas per monai, mikroschemų maitinimas tikrai ne iš to stabilizatoriaus važiuoja, pasirodo iš to šleifo, platau ir siauresnio, kuris matosi foto kairėje pusėje. O tai kad tada tas 5 V stabilizatorius ? Nežinau, bet imamės plano B – paduodu maitinimą į bet kurios patogios mikroschemos maitinimo išvadus. Kiek Voltų ? Pasižiūrėjau keleto mikroschemų aprašymus, vienos valgo nuo 3 V iki 5,5 V, kitos grynai 5 V, taigi, tiek ir paduodam. Ir – stebuklas, displėjus atsigavo, rodo kažkokius kodus ir skaičius. Reiškia procesoriukas protauja, gerai. Bet vis dar nėra maitinimo. Kadangi jis ateina per šleifą iš jėgos plokštės pusės, grįžtame prie jos. Jėginėje plokštėje gyvena tas impulsinis maitinimo šaltinis:

Pasitikrinu ar nėra trumpo (su mintim, kad jeigu nėra, bus sąlyginai saugu jungti į 230 VAC), kai kuriuos komponentus (nes matosi kaitimo žymių), prasiskambinu AC takelius iki pat pagrindinės mikroschemos UC3845A. UC3845A ir UC3845B versijų aprašymai visai pravertė. Mikroschemos blokinė schema:

Ir tipinė jungimo schema:

Ir gedimas buvo būtent šito maitinimo šaltinio schemoje, bet kadangi remontas buvo komercinis, nesu tikras, kad galiu apie jį papasakoti. Bet diagnostikai reikėjo ocsilografo ir testerio, o gedimo priežastis – karštis. Remontas pavyko, o pats blokas padarytas kokybiškai, plokštė gera, elementinė bazė irgi patiko, nustebino, kad net visi varžteliai su prabangiom graverinėm/pleištinėm/rifliuotom poveržlėm:

Nuotolinis valdymas, tęsinys – posūkiai, siųstuvas 2024.07.16 at 09:15

Tęsiam projektuką, kurio pradžia susijusi su straipsneliais:

HT12E – HT12D bandymų plokštė – nuotolinio valdymo pradžia

HT12E enkoderio duomenų srauto savybių tyrimas

HT12E enkoderio emuliatorius

Jau po truputį galima papsakoti apie viso šito reikalo tikslą – reikia be laidų valdyti posūkius, taip taip, mašinos posūkius. Kas per mašina ir kodėl reikia – vėliau, kad būtų intrigėlė 😁. Ir pagaliau pabaigta finalinė siųstuvo versija, išbandyta ir pasitvirtinom teisingą veikimą. Paskutine tapo trečioji versija, taigi, pabandykime paanalizuoti klaidų ir tobulinimo kelią.

Pati pirmoji, V1.0 versija, įkūnijanti pačią idėją. O idėja tokia – prie H1 prijungiama posūkių valdymo rankenėlė, kuri iš 2 kontakto permetą pliusą į 1 arba 3, priklausomai nuo to, į kurią pusę paspausta. R1 ir R3 – pull-down rezistoriai, kad valdikliukas Attiny85 neprisigaudytų trukdžių. Toliau visą „protingą” darbą daro valdikliukas. Pagal tai, į kurį kontaktą (PB1 ar PB2) ateina signalas, valdiklis suformuoja atitinkamą baitų paketą ir supučia jį iš PB3 kontakto į siųstuvo TXM433LR antrą kontaktą (duomenų įėjimas), o siųstuvas viską ištransliuoja per ANT-433-USP anteną. Prieš tai nepamirštame nustatyti loginį 1 PB4 kontakte ir tuo pačiu siųstuvo PDN kontakte, kad siųstuvas „prabustų”. Tas padaryta elektros energijos taupymo sumetimais, kad bent jau siųstuvas neveiktų visą laiką, o tik tada, kai reikia parodyti posūkio signalą, nes maitinimas nuo CR2450 3V baterijos, iš kurios galima tikėtis tik 600 mAh. Viršutinė schemos dalis, U4 su C1 ir C2 – aukštinantis DC/DC mikrokonverteris XCL101C301ER-G, sugebantis iš 0,7-5,5 V įėjimo padaryti stabilią nustatytą įtampą, nuo 1,8 V iki 5.0 V (±2.0%) su 0,1 V žingsniu. Maksimali srovė 100 mA, mums tikrai užtenka. Kam jo reikia ? Ogi tam, kad baterijai išsikraunant, schema vis dar gautų skaniai ir sočiai valgyti 🙂. Pabandžiau, veikia stabiliai iki 0,8 V, taigi, baterijoje esančią energiją išnaudos kuo pilniausiai. Toliau jungiklis H2 ir baterija U3 (nežinau, kodėl būtent U). J1 trumpiklis arba 0 Ω rezistorius skirtas atjungti likusią schemos dalį, kol vyksta Attiny85 programavimas per CN1 jungtį, nes programatorius šeria 5 V, o siųstuvas valgo maksimum 3,6 V. Schema, sakyčiau griozdiška, bet kažkaip veikia, toliau bandome optimizuoti. Skirtingai nuo visų elektronikos gamintojų, man žodis „optimizuoti” nereiškia „atpiginti”, todėl antroji schemos versija gavosi tokia:

Pagrindiniai komponentai liko tokie patys, todėl kalbėsime tik apie pasikeitimus. Pirmas dalykas – schema perbraižyta plačiau, lengviau suprasti, kas čia prie ko prijungta ir kodėl. Perprojektuota maitinimo šaltinio veikimo logika, kas leido pašalinti mechaninį įjungimo tumbleriuką. Mintis tokia – baterijos pliusas, kaip ir ankščiau, ateina į posūkių rankenėlės kontaktus ir daugiau nieko neužmaitina. Įjungus posūkį, pliusas nubėga į trijų diodų mikroschemą ir patenka į tranzistoriaus Q1 užtūrą, tranzistorius atsidaro ir prijungia minusą prie visos schemos. Kam trys diodai ? Čia toks, vadinamas, loginis ARBA elementas. Loginis ARBA – tai kai bent viename įėjime yra loginis 1, išėjime irgi yra loginis 1. Taigi, kai maitinimas ateina nuo kurio nors posūkio (į kairę arba į dešinę), jis per savo diodą užmaitina tranzistorių, pasileidžia visa schema, tada valdikliukas iš PB4 paduoda pliusą, kad laikyti tranzistorių atidarytą tiek, kiek jam reikia. O kiek reikia ? Čia mintis tokia – kad posūkis mirksėtų, valdiklis/siųstuvas turi periodiškai siųsti įjungimo ir išjungimo komandas, jeigu siuntimas išjungiamas, tarkim, po komandos uždegti posūkio indikatorių, tuomet jis ir lieka degti, nes nebelieka komandos jį išjungti. Todėl atjungus posūkių rankenėlę pats valdikliukas dar palaiko schemą veikiančią, kad spėtų pabaigti siųsti išjungimo komandą ir tada jau PB4 nustatomas į loginį 0 ir viskas atsijungia iki sekančio posūkių rankenėlės įjungimo. Truputį pakoreguota ir Attiny programa, kad veiktų pagal naująją schemą. Toliau smulkmenos – pridėti trumpikliai SJ2 ir SJ3, skirti tam pačiam reikalui, programavimo metu atjungti likusią schemos dalį. Pamiršau – pirmoje versijoje J2, o antroje SJ1 naudojami DC/DC apėjimui, užtrumpinus maitinimas eina tiesiogiai iš baterijos ir DC/DC keitiklis nedalyvauja parade. Bandymu metu maitinimo schema veikė keistai, matyt atjunginėti minusą tuo trazistoriumi nebuvo gera mintis, gal koks „ground loop’as” gaunasi, gal dar kažkas, bet DC/DC keitikliui nepatiko taip veikti, todėl pradėta projektuoti trečioji schemos versija.

Ir vėl, pagrindinė mintis liko ta pati – mažinti nereikalingų komponentų kiekį, mažinti elektros suvartojimą, viską optimizuoti. Čia pagrindinis pasikeitimas yra maitinimo grandinėje. Paanalizuokime. Baterijos U2 pliusas sujungtas su posūkių rankenėle ir mikroschema U5 (TCK106AF), čia toks „protingas” tranzistorius, arba skaitmeninis jungiklis arba… Vienu žodžiu padavus jam pliusą jis pats teisingai sujungia savo Vin su Vout ir užmaitina prie Vout prijungtą schemos dalį. Taigi, kol posūkių rankenėlė atjungta, niekas neveikia, nėra jokio srovės vartojimo – energetinio taupumo tikslas pasiektas, nes energija naudojama tik tada, kai reikia rodyti posūkį. Sujungus rankenėlę, pliusas nubėga pas vieną iš trijų diodų (tas pats loginis ARBA), pasileidžia DC/DC keitiklis ir užmaitina visą schemą (valdikliuką ir siųstuvą). Valdikliukas įsijungia, įmeta loginį 1 į PB4, tuo paleisdamas tą U5 jungiklį, pasitikrina kuris posūkis įjungtas (kontaktai PB1 arba PB2) ir atitinkamus duomenis supučią siųstuvui. Kai posūkis atjungiamas, valdiklis vis dar laiko PB4 išėjime aukštą lygį, kad veiktų jungiklis U5, per kurį maitinimas patenka į vieną iš diodų, tada į DC/DC keitiklį ir visa schema veikia, kol valdiklis išsiunčia paskutines komandas, o tada nustato loginį 0 į PB4, tuo išjungdamas jungiklį U5. Kadangi tuo metu tai būna vienintelis dalykas, laikantis schemą įjungtą – viskas išsijungia iki sekančio posūkio įjungimo. Šitoje vietoje dvejojau, nes posūkių rankenėlė perduoda tiesioginę baterijos įtampą ir kaip ji keisis baterijai išsikraunant ? Maitinimas po DC/DC vis dar būtų 3V, bet baterija tuo matu jau gal bus tik 2V. Čia teko paknisti Attiny85 aprašymą, ir radau tokį dalyką:

\[ U_{AukštasLygis}\geqslant0,6*U_{Maitinimo}\geqslant0,6*3 \geqslant 1,8V\]
\[ U_{ŽemasLygis}\leqslant0,3*U_{Maitinimo}\leqslant0,3*3 \leqslant 0,9V\]

Taigi, įtampos nuo 1,8 V ir daugiau bus tikrai fiksuojamos kaip loginis 1, įtampos žemiau 0,9 V bus tikrai fiksuojamos kaip loginis 0. Taigi, baterija gali išsikrauti net iki 1,8 V, vis tiek schema veiks teisingai, man tokie įtampų lygiai priimtini 🙂.

Schema ir montažinė plokštė braižyta EasyEDA programoje. Kodėl ? Paprastoms schemoms man ji visai patiko. Yra visokių niuansų ar nesklandumų, bet ne kritiški, todėl šalia Autodesk Eagle (gaila, kad ne Cadsoft) naudoju ir EasyEDA.

Plokštė daryta pagal posūkių rankenėlę, kad tilptų viduje. Keletas 3D vaizdelių:

Ir jau pagaminta plokštė:

Reiks dar įkelti EasyEDA projekto failiukus ir valdiklio programą.

O toliau – pabaigti ir aprašyti imtuvo projektą (prototipas irgi jau pagamintas ir išbandytas). Paskutinei, trečiajai, schemos versijai, dar įmanoma padaryti šiokį toki atpiginimą – kadangi per Attiny85 IO kontaktus gali tekėti 40 mA srovė, galima išmesti U5 ir valdyti viską vietoje jo, PB4 tikrai išveš tokias sroves – visa schema, siuntimo metu, vartoja 4,9 mA, t. y. ~8 kartus mažiau. Tam tereikia PB4 prijungti tiesiogiai prie D1 diodų 4 kontakto.

Elektrinės efektyvumas 2024.05.16 at 15:54

Kažkurią dieną, po lietaus ir esant gan vėsiam orui, gaminamos elektros pikas buvo 9820 W. Visai neblogai, turint galvoje, kad sumontuotų panelių maksimali galia – 9890 W, vos ne 100% naudingumas. Sekantis etapas – instaliacinės dėžės keitimas, „smart meter’io” pajungimas.

2024.07.04

Ir truputis realesnės statistikos.

Abiem atvejais graži saulėta diena, panelės karštos, todėl našumas kažkiek pakritęs, bet momentinis generavimas 7,68 kW, per dieną prigeneruoja 65 kWh. Tai realus naudingumas 7680/9890*100 = 77,65 %.

Saeco kavos aparato remontas 2024.03.19 at 11:09

Tiksliai nežinau koks to kavos aparato modelis, nes gavau tik valdymo plokštę su akivaizdžiais degimo požymiais ir svilėsio kvapu:

Kol kas neaišku nei kas sudegė nei kodėl. Svarbiau – kodėl. Šalia DRV8841 mikroschema, kurios išvadai prijungti prie matomos 6 kontaktų jungties, sveikų kondensatoriukų ir svilėsių. Tas DRV8841 – variklio/variklių valdiklis su dviem H tiltais. Iš to darome išvadą, kad prie jungties jungiamas kažkoks varikliukas. Funkcinė schema elementariai paprasta:

O vat norint atsakyti į klausimą kodėl – pradžioje reiktų susirinkti įtariamuosius:

  • Kaltas variklis/varikliai – gal užsikirto, gal apvijos padegę ir viskas užsitrumpino…
  • Kaltas DRV8841, gal užtūrų valdymas H tilto tranzistoriams kažką prasileido ir atidarė porą tranzistorių vienu metu – štai jums ir trumpas jungimas.
  • Didžiausias svilėsis – tantalinis kondensatorius. Jie tokie iš prigimties keistuoliai, gali pridaryti fokusų patys užsitrumpindami.

Kadangi pabandyti surinkti aparatą patikrinimui galimybės neturiu – darysim viską maksimaliai. Bet pradžioje valymas:

Vis tiek nelabai geras priėjimas, bet aiškinamės kokių detalių trūksta ir traukiam lauk tą jungtį, šiaip ar taip pasvilus:

Tuo pačiu „užtaisome” tą skylė plokštėje. Tam gerai tinka epoksidiniai dalykai arba lakas.

Toliau pasinaudojame DRV8841 aprašymu, jame sužymėti kondensatoriai ir jų talpos:

Sveikas liko kondensatorius tas, kuris prijungtas prie CP1 ir CP2 išvadų (C269), VCP kondensatorius (C27) padegęs, šalia jo buvo du kondensatoriai, tantalinis (100 µF) ir keraminis (0,01 µF). Štai ir turime viską ko reikia.

Padegę takeliai „pariebinti” lydmetaliu, kondensatoriai sudėti. Tiesa tie du didesni po 0,01 µF, vienas kaip ir turi būti, o vietoje tantalinio dar vienas toks pat, pačio tantalinio dar nėra. Kodėl ? Todėl, kad taip sugalvojau 😋, bet jeigu rimtai – kaip ir sakiau tantaliniai kartais padaro fokusų, sugalvojau pakeisti jį elektrolitiniu kondensatoriumi, o vietoje tantalinio papildomas keraminis kondensatorius pagelbės ESR mažinimo klausimu. Taigi, su kondensatoriais klausimas kaip ir išspręstas, bet neaišku, ar ta DVR8841 veikia korektiškai, todėl, prieš klijuojant sąlyginai didelį elektrolitinį kondensatorių norėtųsi pakeisti tą mikroschemą. Lupam ir ją:

O aš ir galvoju, ko ji taip lyg sunkiau kaito, štai va jums ir prašom – po mikroschema aušinimo radiatorius, prilituojamas prie metalinio mikroschemos „pilvo”. Matyt ir kaista atitinkamai, gal temperatūra ir sukėlė gedimą. Ok, lituojam naują mikroschemą į vietą:

Dabar jau galima primontuoti ir elektrolitinį kondensatorių:

Toliau jungties eilė. Tos pasvilusios nebemontavau į vietą, „pareguliavo” donorinę plokštę su tokiomis jungtimis nuo kažkokio kito aparato, taigi, į vietą stoja nauja:

Kadangi kondensatorius truputį didesnis nei buvęs tantalinis, jam prilaikyti reikės lašelio termoklijų:

Štai ir rezultatas:

MS-DOS 6.22 2024.02.12 at 10:22

Ne visai retro HW, nes čia ne HW, o SW, bet ne daug kas gali būti labiau retro nei DOS’as. Aš ant jo užsiroviau mokykloje, nes lankiau informatikos būrelį pas mokytoją Svinkūną :). Tuomet dauguma mokyklos kompiuterių buvo sunkūs geležiniai monstrai su DOS operacine sistema ir Turbo Pascal kompiliatoriumi. Taigi, sugalvojau nerti į mokyklinį amžių stačia galva, gal bus minkšta ir galvos neprasiskelsiu 😃 – pabandysiu įdiegti MS-DOS 6.22. Pradžiai, tai kas tas DOS. Tingiu rašyti ir taip visiems geekams ir hakeriams mintinai žinomą informaciją, tai kopijuoju ir Wikipedijos.

MS-DOS (angl. Microsoft Disk Operating System) – Microsoft kompanijos kurta diskų operacinė sistema (DOS). Pirmoji versija išleista 1981 m., paskutinė – 2000 m.

Tai viena iš labiausiai 1980-1990 m. naudotų DOS šeimos operacinių sistemų. Ji buvo naudojama Intel 8086 ir analogiškus procesorius turinčiuose asmeniniuose kompiuteriuose. Šią operacinę sistemą vėliau pakeitė grafinę vartotojo sąsają (angl. GUI – graphical user interface) turinčios operacinės sistemos, daugiausiai įvairios Microsoft Windows operacinės sistemos versijos. Pradžioje ši operacinė sistema buvo žinoma kaip QDOS (angl. Quick and Dirty Operating System) arba 86-DOS.[1]

MS-DOS buvo naudojama suderinamuose su IBM PC kompiuteriuose, o IBM PC kompiuteriuose buvo naudojama pervardinta šios operacinės sistemos versija PC-DOS.

Pradžiai renkuosi, kuria gi DOS versiją instaliuoti:

Turint tokią Wikipedijos lentelę prieš akis labai lengva tą padaryti – paskutinis „tikras grynas” DOS yra 6.22 versija. MS-DOS galima parsisiųsti iš čia: WinWorld: MS-DOS 6.22 (winworldpc.com). Kadangi instaliuosiu DOS į virtualų PC, pasirinkau Microsoft MS-DOS 6.22 [Virtual PC VHD].

Sekantis, o gal labiau lygiagretus, arba net ankstesnis žingsnis – pasiruošti virtualų kompiuterį. Virtualus kompiuteris – tai programinis kompiuteris, kuris veikia realiame kompiuteryje su kokia nors operacine sistema. Taigi, fiziškai viskas sukasi tikrame serveryje, Windows Server 2012 R2 operacinėje. Jos Hyper-V dalis arba, vadinkim, technologija, skirta kurti ir valdyti virtualiems kompiuteriams. Hyper-V, tai Hyper-V Technology Overview | Microsoft Learn. Virtualaus kompiuterio sukūrimui naudojamas vedlys ir ten viskas paprasta, turbūt svarbiausia pasirinkti atminties kiekius. Pvz, DOSui visai nereikia terabaitinio disko ir 64 GB RAM. Abiem daviau po 512 MB, tai atminties daugiau negu reikia. Vedliui taip pat sušėriau ir DOS instaliacinį failą, ten vienas iš vedlio punktų… Konfigūracinis langas atrodo taip:

Taigi, kai jau turime virtualų PC, paleidžiame jį su Connect, po to Start (ieškokite per meniu). Kompiuteris įsijungė, pradėjo instaliuoti MS-DOS 6.22. Tai nėra sudėtinga, principe irgi viską padaro vedlys. Instaliacijai pasibaigus turi tą tradicinį juodą langą su mirksinčiu kursoriumi. Ir tai viskas, dabar jau galima naršyti po virutalų kompiuterio diską, kurti ar redaguoti failus, dar šį bei tą, bet ne tiek jau ir daug. Neįdomu. Pabandykime pakonfigūruoti DOSą. Tai daroma autoexec.bat ir config.sys failiukais, kurie sukuriami DOS instaliavimo metu. Rašome „edit autoexec.bat”, be kabučių žinoma, ir failas atidaromas redagavimui. Pradžiai surašiau tokius parametrus ir konfigūracijas:

Paanalizuokime, ką čia surašiau:

  • @ECHO OFF – išjungia tekto rašymą į langą
  • loadhigh C:\DOS\SMARTDRV.EXE – Smartdrive.exe užkraunam į aukštesnio lygio atmintį, lygis ne kokybėje ar kad atmintis kokia speciali, tiesiog sumeta programėles į atmintį virš 640KB ir iki 1MB. Smartdrive.exe – programėlė paspartinanti duomenų perdavimą, perkeldama dažnai naudojamus duomenis į RAM.
  • @ECHO SMARTDRV loaded to High Memory – @ECHO rašo mūsų norimą tekstą į langą, šiuo atveju SMARTDRV loaded to High Memory
  • loadhigh c:\apps\doskey.com -i – tas pats leadhigh, tik kitai programėlei. Ties šita vieta reiktų pažymėti, kad doskey.com failiukas ne standartinis iš DOS, o Enhanced Doskey.com iš Enhanced DOSKEY.com — with auto-completion Paul Houle. O pats Doskey.com prideda papildomo funkcionalumo DOSui.
  • PROMPT &p&g – komandinės eilutės išvaizda. Šiuo atveju atrodys va taip C:\DOS>, jeigu būsime DOS direktorijoje.
  • PATH – kartu su papkių adresais nustato kur DOSas turi ieškoti išorinių komandų.
  • Vėl parašome, kad PATH komanda sėkminga.
  • set DIRCMD=/o:gne – dažnai naudojamos DOS komandos DIR rezultato išvaizdos nustatymas. „g” – pradžiai rikiuojamos direktorijos, po to failai, „n” – abėcėlinis rikiavimas, „e” – rodoma failo priesaga.
  • Vėl parašome, kad parametras nustatytas.
  • set TEMP=C:\TEMP – ir taip aišku, nustatomas TEMP direktorijos adresas.
  • ir apie tai parašome su @ECHO.
  • C:\DOS\NET\DC.com – paleidžiame DC.com, paketinio siuntimo tvarkyklė, kurios pagalba bendrausime su kitais kompiuteriais tinkle ar Internete.
  • @ECHO: Tuščia eilutė, tiesiog įterpiu, kad gražiau atrodytų.

Apie DC.com truputį plačiau. Pradžioje dėjau Internete rastas tvarkykles:

Bet ką bedaryčiau, niekas neveikė, DOSas keikėsi ir rašė klaidas:

Kad ir ką bedariau, niekaip nepasileido tas reikalas, principe, dėl to, kad „nematė” virtualaus serverio tinklo kortos, o be jos ryšio nebus. Tweak’inau, šamaninau, paaukojau visą megabaitą BIOSo dievams, niekas nepadėjo. Tada truputį pakeičiau serverio konfigūraciją:

Pridėjau tą pažymėta „Legacy Network adapter” ir sumečiau patį elementariausią draiverį:

Pats elementariausias, tai TCP Packet Driver, nors yra ir Microsoft Network Client skirtas DOSui, bet jo kol kas nenaudosiu. O tas TCP Packet Driver toks bazinis draiveris, tinklo API DOSui, beveik mano bendraamžis, sukurtas 1983. Vienintelis parametras, kurį reikėjo nustatyti – pertraukimo numeris, nustačiau 0x60. Taigi, tinklo korta ir šioks toks ryšys jau įmanomas, tik dar nėra programos, kuri vykdytų kokią nors duomenų siuntimo funkciją. Tam einame čia mTCP TCP/IP applications for DOS PCs ir parsitempiame mTCP paketą. Jame yra viskas ko reikia:

Čia ir bus visos funkcijos, kurias MS-DOS galės daryti Internete/tinkle. Pirma komanda, kurią reikia paleisti – DHCP.EXE. Automatiškai pasigauna tinklą, per DHCP pasiima adresus, susikonfigūruoja, susirašo parametrus į nurodytą failiuką ir tiek. Konfigūravimo aprašymas labai geras, atskiram PDF faile mTCP User Documentation. Įkeliu ir į savo serverį, kad nedingtų, abu PDFai vienodi.

Kai užsikrauna MS-DOS, einame ten, kur guli DHCP.EXE, naudojame elementariausias DOS komandas, pavyzdžiui, mano atveju CD – Change Directory:

  • C:\> CD DOS – einam į DOS direktoriją
  • C:\DOS> CD NET – einam į NET direktoriją
  • C:\DOS\NET> CD MTCP – einam į MTCP direktoriją
  • C:\DOS\NET\MTCP>DHCP.EXE – paleidžiam DHCP.EXE

Ir ties šita vieta išmeta klaidos pranešimą, reikia nurodyti failiuką, į kurį turi surašyti nustatymus. Prieš DHCP.EXE paleidimą rašome komandą set MTCPCFG=[kelias_iki_konfigūracijų_failo]. Konfigūracinį faila galima dėti kur nori, todėl aš pasirinkau MTCP direktoriją ir failo pavadinimą „netcfg.cfg”:

set MTCPCFG=C:\DOS\NET\MTCP\netcfg.cfg, o po to DCHP.EXE ir turime:

Viskas suveikė. Tik LEASE_TIME per mažas, 600 sekundžių, tai 10 minučių. Šitą parametrą pasiėmė iš maršrutizatoriaus ir su netcfg.cfg failiuko konfigūravimo man šito parametro pakeisti nepavyko, nors yra tam skirta komanda. Pakeičiau maršrutizatoriuje. Taigi, dabar įjungus virtualų kompiuterį įsijungia MS-DOS, tada rašome komandą, nustatančią netcfg.cfg failiuko vietą, tada DHCP.EXE ir turime ryšį. Nepatogu kiekvieną kartą tą daryti rankiniu būdu, todėl surašome komandas į autoexec.bat, kad paleidimo metu viską padarytų automatiškai. Viskas kaip ir veikia, bet lange lieka visos tos konfigūracijų ataskaitos, taip sakant, prišiukšlintas ekranas. Noriu, kad prajus užkrovimui, pamačius visas tas ataskaitas, kad viskas OK, ekranas išsivalytų tarkim po 5 sekundžių. Ekrano išvalymo komanda „cls” – CLear Screen, kaip ir yra, bet va palaukti 5 sekundas DOSas nemoka, nėra tokios specialios komandos. Bet apeiname tą trūkumą su kitos, „choice” komandos pagalba. Viską surašome į autoexec.bat, jis dabar atrodo va taip:

  • C:\DOS\NET\DC.COM 0X60 – DC.COM paleidimas su 0x60 pertraukimo numeriu
  • set MTCPCFG=…… – konfigūracinio failiuko nustatytmas
  • Paleidžiame DHCP.EXE, jis surašo visą reikimą informaciją ekrane ir į netcfg.cfg
  • @ECHO: tuščia eilutė.
  • choice /N /C:. /T:.,5 – atrodo kosmiškai, bet realiai čia viskas paprasta. Komanda choice skirta įvesti vartotojo pasirinkimui, pavyzdžiui Yes/No, bet ji turi taimerį, po kurio gali automatiškai parinkti nustatytą pasirinkimą. Taigi, komanduojame choice, /N – opcija, nurodanti, kad nerodytų klausimų (antraip ekrane parašys ką nors tipo „pasirinkite” ar panašiai), /C:. – nurodomas standartinis pasirinkimas, t. y. paspaudus tašką „.” vykdys programą toliau, nelauks taimeryje nurodyto laiko, /T:.,5 – komanda, nurodanti, kad jeigu vartotojas nepadarys jokio pasirinkimo, po 5 sekundžių bus pasirinktas standartinis nustatymas, t.y. taškas. Ir turime tokį pseudo taimerį, kuris 5 sekundes lauks įvedimo, tekstas ekrane nesikeis, o po 5 sekundžių automatiškai įves tašką ir programa važiuos toliau. Tašką galima įvesti ir nelaukus 5 sekundžių.
  • cls – sekanti komanda po 5 sekundžių, išvalo ekraną, numeta kursorių į viršutinį kairį ekrano kampą.
  • Tame kampe parašome MS-DOS 6.22 ready.
  • Praleidžiame eilutę.
  • Ir čia jau mirksi įvedimo kursorius.

Taigi, MS-DOS su tinklo palaikymu paleistas. Bet daugumai turbūt vis dar atmintyje išlikęs dviejų mėlynų langų vaizdas, taip, tai Norton Commander programa, grafinis DOS apvalkalas. Jų buvo ir daugiau, netgi pirmieji Windows buvo tik gražūs DOS apvalkalai. Instaliuojame Norton Commander, tas daroma paprastai, vedlio pagalba, tai neaprašinėsiu. Po instaliavimo, komandinėje eilutėje parašius „nc” įsijungia Norton Commander:

Kol kas tiek žaidimų su MS-DOS.

Windows Sandbox konfigūravimas paprastai 2024.01.10 at 09:50

Dažnokai naudoju gimtąjį Windows Sandbox, dar dažniau užtenka standartinės konfigūracijos, bet Sandbox’ą galima susikonfigūruoti pagal savo poreikius. Radau visai gerą automatinio konfigūravimo įrankį, kurio didžiausias pliusas – jis online, nereikia nieko instaliuoti, tiesiog naršyklėje sužymime ko ir kaip reikia ir parsisiunčiame jau pagamintą paleidimo failiuką su nurodytomis konfigūracijomis.

Konfigūratorius – https://leestevetk.github.io/WSBEditor/WSBEditor-Latest.html

Programinės įrangos licenzijavimas 2023.12.21 at 08:37

Kažkada sugalvojau, kad visai norėčiau apsaugoti savo programėles nuo nelegalaus kopijavimo. Ne tam, kad daugiau pinigų ar kažko gauti, bet tiesiog šiaip, dėl tvarkos. Nu ir – nes galiu 😋. Taigi, tikslas – padaryti, kad programėlė veiktų tik tame kompiuteryje, kuriame aš noriu. Reiškia, kad programėlė turi žinoti kuriame kompiuteryje jai galima veikti, o kuriame negalima. Kaip ir paprasta, bet – o tai kaip programėlė tą sužinos ? Yra keletas variantų, bet jeigu, tarkime apsiribotumėme Windows operacine sistema, tada, mano galva, paprasčiausi yra du būdai – rištis prie procesoriaus ID arba MAC adreso. MACas dar kai kada gali būti keičiamas, procesoriaus ID jau taip paprastai nepakeisi. Jo net standartiniai Windows įrankiai nerodo, bent jau man nepavyko aptikti. Todėl rašome nedidelė programėlę su Visual Studio, kuri tą dalyką sužinos ir mums parodys. Tam reikia parašyti dvi paprastas programėles:

        private string Get_MAC_Id()
        {
            foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (nic.OperationalStatus == OperationalStatus.Up)
                {
                    PhysicalAddress mac = nic.GetPhysicalAddress();
                    currentMacAddress = BitConverter.ToString(mac.GetAddressBytes()).Replace("-", "");
                    break;
                }
            }
            return currentMacAddress;
        }

Šita programėlė suranda aktyvios tinklo kortos MAC adresą ir pagražina jį pagrindinei programai.

        private string GetProcessorId()
        {
            ManagementClass managClass = new ManagementClass("win32_processor");
            ManagementObjectCollection managCollec = managClass.GetInstances();

            foreach (ManagementObject managObj in managCollec)
            {
                cpuInfo = managObj.Properties["processorID"].Value.ToString();
                break;
            }
            return cpuInfo;
        }

O šita programėlė tą patį padaro su CPU ID. Po to belieka tik susidėti tuos duomenis ten, kur mums reikia, pavyzdžiui, į programėlės grafinę sąsają (va kaip lietuviškai parašiau 🙃):

Veikimas paprastas, paleidus programėlę ji iš karto prasuka informacijos surinkimą ir parodo jį atitinkamuose laukeliuose. Vienintelis mygtukas tik uždaro programėlę. Paveiksliuke jau matosi ir mano kompiuterio MAC ir CPU ID. O kodėl reikia dviejų dalykų ? Principe, užtektų ir vieno – CPU ID. Logika paprasta – kompiuteryje gali nebūti jokios tinklo kortos, taigi MAC ID nieko nesugeneruos, o procesorius, nori nenori, o visada bus, todėl galima rištis prie jo ID. Savo programėlėse aš tikrinsiu abu ID ir, jeigu bent vienas atitiks, tuomet programėlė veiks. Programėlėse patikra daroma taip:

        private int get_MAC_Id()
        {
            string predefinedMacAddress = "B07D64766C0E";
            

            foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (nic.OperationalStatus == OperationalStatus.Up)
                {
                    PhysicalAddress mac = nic.GetPhysicalAddress();
                    string currentMacAddress = BitConverter.ToString(mac.GetAddressBytes()).Replace("-", "");

                    if (currentMacAddress.Equals(predefinedMacAddress, StringComparison.OrdinalIgnoreCase))
                    {
                        mac_flag = 1;
                        break; // No need to continue checking if we found a match
                    }
                }
            }
            return mac_flag;
        }

        private int getProcessorId()
        {

            string predefinedcpuInfo = "BFEBFBFF000A0652";
            string cpuInfo = string.Empty;

            ManagementClass managClass = new ManagementClass("win32_processor");
            ManagementObjectCollection managCollec = managClass.GetInstances();

            foreach (ManagementObject managObj in managCollec)
            {
                cpuInfo = managObj.Properties["processorID"].Value.ToString();
                break;
            }
            if (cpuInfo.Equals(predefinedcpuInfo, StringComparison.OrdinalIgnoreCase))
            {
                CpuID_flag = 1;
            }
            return CpuID_flag;
        }

Į pagrindinę programą grąžinamos vėliavėlės (flag), jeigu CPU ID arba MAC ID atitinka programėlėje jau įrašytus – tuomet vėliavėlės bus 1. Tuos vienetus pagauna pagrindinė programa ir padaro paprastą patikrą.

Nepamirštam inicializuoti flag’us :

        int mac_flag = 0;
        int CpuID_flag = 0;
Tuomet kažkur kode, ten kur norime patikros:
            get_MAC_Id();
            getProcessorId();
            if (mac_flag == 1 || CpuID_flag == 1)
            {
                // Darome tą, ką reikia, jeigu ID atitinka. Loginis "arba" || leis veikti jeigu bent vienas flag'as = 1, jeigu naudoti loginį "ir" && tuomet leis veikti tik jeigu abu flag'ai bus vienetukai.
            }
            else
            {
                MessageBox.Show("Contact creator of this program.", "Error", MessageBoxButtons.OK);
            }

O čia Visual Studio failiukai, išeitinis kodas, sukompiliuotas exec’as.

Igničio elektros kainos piginimas 2023.12.05 at 08:59

Elektros kainos vis dar „mažėja” 😁. Jau rašiau apie Igničio kainas:

2023.05.03 — 0,263 €/kWh
2023.06.01 — 0,276 €/kWh

Šiandien gaunu laišką, kurio pagrindinė mintis:

Va čia tai kainos mažėjimas 🤤. Ir aišku, tame pat laiške daug pasiteisinimų, kad „čia ne mes kalti, o aplinka”:

Saulės elektrinė 2023.11.10 at 15:41

Šiandien tapau truputį „žalesnis” – įjungiau Saulės elektrinę:

Darbai pradėti 2023 balandžio mėnesį, pirmieji žingsniai – galios didinimas nuo buvusių 6 kW iki 10 kW, daryta per ESO savitarną, lygiagrečiai užregistruotas kompensacijos prašymas pas APVĄ. Toliau gaminančio vartotojo prijungimas, irgi per ESO savitarną. Per tą laiką APVA patvirtino kompensaciją, todėl pradėti realūs montavimo darbai – inverteris Huawei SUN2000-3-10KTL-M1 ir Hyundai HiE-S430-445HG(FB) Saulės panelės. Viskas sumontuota ir šiandien atėjo ESO pranešimas, kad elektros skaitliukas suprogramuotas matavimui į abi puses, todėl galima prijungti elektrinę. Voila 😁.