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 😁.

Dviračio akumuliatoriaus Samsung SDI-3610B remontas 2023.09.17 at 13:18

Šiandien pabandykime pasinagrinėti Samsung SDI-3610B akumuliatorių su gedimu.

Gedimas tame, kad jis neveikia, bet taip visiškai, nei išėjimas yra, nei diagnostiniai įkrovimo indikatoriai šviečia. Pirma mintis žinoma mirę celės, o gal tik išsibalansavę. Bet viltis durnių motina, negali mums čia ant tiek sektis, todėl pradžioje ardome. Pats akumuliatorius visai ne mažas, ir sveria padoriai:

Užmačiau tokio akumuliatoriaus kainą Amazon parduotuvėje, 300-400 €, visai neblogai taip.

Išardžius vaizdelis nenustebimo, kaip visada, krūva celių, BMSas (Battery Management System) su termistoriumi ir viskas. Šiaip pats BMSas gan bukokas, iš Samsungo gal tikėčiausi daugiau.

Abi BMSo pusės. Viršutinė pusė kairėje, atsukus ją nuo korpuso pasimato ir apatinė pusė (dešinėje). Trumpai apie tai, ką mes čia matome. Viršutinėje pusėje du lygiagretinti jėgos tranzistoriai STB140NF75, prijungiantys minusą, kai su baterija viskas gerai, šalia mažiukas tranzistoriukas IRFR540Z – krovimui. Per vidurį komunikacijos jungtis, bet normaliam darbui ji nenaudojama, todėl spėju, kad skirta tik užprogramuoti valdiklius gamybos metu. Galbūt ir diagnostikai, jeigu akumuliatorius patenka į autorizuotą Samsung servisą. Ir visa kita smulkmė, apie kurią kol kas neverta rašyti. Kitoje pusėje didelis juodas blynas OKI L5208, BMS valdiklis. Apie jį daug informacijos neradau, tik forumuose probėgšmais užsimenama, kad jį iš OKI nupirko forma Lapis, iš jos Rohm Semiconductor. Aprašymo neturiu, taigi – nepasidalinsiu… Ok, tada mažesnis juodas blyniukas Renesas R2J24020F020, valdiklis su 16 bitų R8C procesoriumi. Jis, principe, ir turėtų daryti visą darbą, bet, turbūt, jis neturi kur prisijungti 10S tipo baterijų, tarkim, gali prisijungti tik 4S, todėl L5208 atlieka visą darbą su 10S baterija ir raportuoja valdikliui. Pats mažisuias, SOIC-8 aštuonkojis, tai Maxim Integrated MAX5024LASA+ įtampos reguliatorius, valgantis net iki +65VDC ir gaminantis iš jų 3,3V. 5V arba 2,5-11V (su papildomais rezistoriais).

Apie pagrindinius elementus tiek, toliau klausimas kodėl jie neveikia. Matavimai parodė, kad visos celės yra pakrautos ir balansavimas teisingas, bet valdiklių įtampos vis tiek nėra. Bandome prisiknisti prie to MAX5024 reguliatoriaus, jis kaip ir turėtų gaminti reikiamą įtampą visiems valdikliams, logikai ir t.t.

Štai tas MAX reguliatorius, pažymėtas U3. Analizuojam veikimą – takelis, pažymėtas P+ gauna maitinimą per prilituotą laidą, kuris per srovę ribojantį rezistorių R167 (330R) patenką į MAX’o pirmą kontaktą. Ok, žiūrim aprašymą:

Pirmas kontaktas ir yra maitinimo įėjimas – matuojam ir matom čia 40 su trupučių Voltų. Tai maitinimas yra. Kažkaip spėčiau, kad tas OUR prie 8 kontakto turėtų būti maitinimo išėjimas, bet jo nėra. Čia matome tik 0,6V, o tiek yra akivaizdžiai per mažai visai gaujai alkanų mikroschemų. Taigi, maitinimas ateina, bet reguliatorius nieko nereguliuoja, todėl išėjime tokia įtampa. Trumpo išėjime nėra, jei ką, patikrinau 🙂. Nuo šitos vietos galima viską daryti vyriškai (viską su3,14sti, o paskui skaityti datašytą) arba iš karto paskaityti mikroschemos aprašymą. Taigi, pradžiai tipinė jungimo schema:

Ją pamačius kyla natūralus klausimas – o tai kokia ta išėjimo įtampa ? Matuojame varžas ir turime, kad R1=69,5K, o R2=21,38K. Skaičiuojam:

\[ V_{OUT} = V_{SET} ( 1+\frac{R1}{R2}) \]
\[ V_{OUT} = 1,248V ( 1+\frac{69,5K}{21,38K}) = 5,30V\]

Taigi, stabilizatorius turėtų gaminti apie 5V, apie – nes matavimas nėra tikslus, varžos irgi ne 1% tikslumo. Bet mums to užtenka, kad įsitikinti – 0,6V yra per mažai. Tai kodėl jis neveikia ? Galima būtų eiti bandymo keliu ir pakeisti stabilizatorių, tikintis, kad čia jis biškį pasprogo, bet tokio stabilizatoriaus po ranka nėra, o užsakinėti ir laukti užtruks, todėl ir vėl teks įjungti smegenis. Schemoje matome kontaktą, pažymėtą „EN”. Logika jau ne ne kužda, o grynai spardo į kepenis, kad čia įjungimo (ENable) kontaktas. Patikrinkime, kas jame gyvena. Visų prima vėl darome ne vyriškai – skaitome aprašymą. Taigi, mikroschema veikia, kai EN kontakte gyvena daugiau nei 2,4V, o daugiausia ten gali būti įėjimo įtampa ±0,3V, tai mūsų atveju panašiai 40V ±0,3V (šiaip dzin tie 0,3V krypavimai, kai matuojam net 40V). Matuojam – ir nieko nėra. Tai nėra ko stebėtis, kad MAXas neveikia, kai niekas jo nebaksnoja į šoną tai jis ir tinginiauja. OK, teks aiškintis, kas jam tą ENable signalą generuoja. Matuojam, dar biškį matuojam, žiūrim per lupą, pamurmam necenzūrinių burtažodžių, ir finale piešiam va tokią schemą:

Taigi, mūsų ENable signalo nėra, tuščia ir ant specialaus testavimo paduko TP15. O vat matuojant tranzistorių Q11 bazės įtampa 3,3 V, emiterio įtampa irgi 3,3 V. Kas per tranzistorius – neaišku, jokios markiruotės, todėl poliarumą tik spėjau pagal pajungimą. Taigi, jeigu bazės įtampa yra 3,3 V – tranzistorius uždarytas, todėl nėra ENable signalo. Kad tranzistorius atsidarytų, bazei reikia žemo lygio, 0 V. Kodėl jo nėra ? Žemą arba aukštą lygį tranzistoriaus bazei duoda U7 mikroschema. U7 – tai du loginiai NAND elementai viename korpuse:

O dabar matosi, kad reikai dar paanalizuoti schemą, todėl braižome ir matuojame:

Ir tuo pačiu iš schemos matosi, kad iš tų dviejų NAND loginių elementų yra suformuotas SR jungiklis (SR Latch arba SetReset Latch), kurio tipinė schema ir teisingumo lentelė yra tokia*:

Tokio tipo SR jungikliai valdomi žemu lygiu, t. y. didžiąją dalį laiko S ir R yra aukšto lygio, o prireikus atlikti Set arba Reset veiksmą į atitinkamą kontaktą paduodamas žemas lygis. Taigi, jeigu mūsų tranzistorius prijungtas prie Q̄, tuomet visi įtampų matavimai atitinka, ir, kad Q̄ būtų žemo lygio reikia paduoti žemą lygį į R įėjimą arba 2B kontaktą mikroschemoje. Tai kodėl kažkas to žemo lygio nepaduoda? Aiškinamės toliau.

Taigi, tranzistoriaus Q12 (SSM3K01F) atidarymas prijungia žemą lygį 2B įėjimui ir tuo turėtų padaryti žemą lygį Q̄ išėjime. Bet matyt niekas to tranzistoriaus neatidaro ir dėl to nevyksta baterijos įtampos paleidimas. Et, ok, važiuojam toliau, reikia išsiaiškinti, kad tą tranzistorių valdo, nes jis visgi geras – „rankiniu” būdu maktelėjus jo užtūrą į 3,36 V baterija pasileidžia ir išėjime turim 40 V. O valdo jį toks daugiakojis R2J240. Papildome schemą:

Tranzistorius valdomas iš mikroschemos U20 43 kontakto:

Štai ir priėjome liepto, t. y. schemos galą. Valdymas eina iš R2J240 valdiklio, o visa analoginė grandinė yra sveika. Aišku, turint valdiklio aprašymą ir programą (arba bent jau jos aprašymą), būtų galima galvoti, kas tam valdikliui netinka, kad jis nepaleidžia likusios grandinės dalies, o dabar neturiu kaip tikrinti ar išpildomos reikiamos sąlygos paleidimui, jei išpildomos tai blogas valdiklis, jei neišpildomos – kodėl ir ką padaryti, kad jos būtų išpildytos ir valdiklis paleistų likusią schemos dalį.

Taigi, galima būtų daryti išvadą, kad R2J240 valdiklis dėl tik jam vienam žinomų priežasčių užsiblokavo. Ar tai jau pabaiga ? O gal pabandom pažaisti su šitais kontakčiukais:

Ok, visgi užsisakiau tokį žaisliuką: CY3689 – Infineon Technologies. Programuojamas valdiklis, kurio pagalba galima gauti daug visokių komunikacinių galimybių, tame tarpe ir SMBus. Kai atvažiuos pabandysiu, gal pavyks nuresetuoti batareiką 🙂 .

Ličio jonų akumuliatorių remonto taisyklės at 12:28

Dirbdamas vis atrandu naujų taisyklių, kurių reiktų laikytis, remontuojant baterijas arba keičiant Ličio jonų elementus naujais. Bandysiu jas rašyti čia, kad pats ilgainiui nepamirščiau arba būtų kur pasižiūrėti.

  1. Ličio jonų elementus numontuojame / nulituojame nuo galinio pliusinio kontakto ir atjunginėjame paeiliui link galinio minuso kontakto. Sumontuojant / sulituojant elementus jungiame nuo galinio minusinio kontakto ir einame link galinio pliusinio kontakto.
  2. Akumuliatorių valdiklio „pažadinimas” iš budinčio režimo atliekamas trumpam sujungiant akumuliatoriaus paskutinės celės pliusą su baterijos išėjimo pliusiniu kontaktu.

Igničio elektros kainos pasiūlymas 2 2023.06.01 at 23:43

Po pirmojo laiško gavau dar ir antrą, tokį:

Oooooo! Va čia tai dosnus pasiūlymas 😀 !!! Cieli 0,276 €/kWh, vietoje buvusių 0,28 €/kWh. Paskaičiuokim, kas gi čia man susitaupo, imant, tarkim, tuos pačius 200 kWh/mėn.

\[ 200 kWh × 0,28 cnt/kWh=56€ \] \[ 200 kWh × 0,276 cnt/kWh=55,2€ \]

Tai net 0,8 € susitaupo, aštuoniasdešimt centų per mėnesį! Va, dabar tai jau jaučiuosi praturtėjęs iki negaliu. Pirksiu naują mašiną, jachtą, vasarnamį Ispanijoje!

Sarkazmas… Durnių laivas.

Igničio elektros kainos pasiūlymas 2023.05.03 at 14:04

Gavau čia tokį laiškelį iš Igničio…

Nu ir galvoju paskaičiuokim – vidutiniškai paskutinius kelis mėnesius (nes orai šalti ir t. t.) elektros suvartojimas buvo apie 200 kWh, esama kaina 0,28 cnt/kWh, tai:

\[ 200 kWh × 0,28 cnt/kWh=56€ \]

Su nauju pasiųlymu:

\[ 200 kWh × 0,263 cnt/kWh=52,6€ \]

Cieli trys eurai ir keturiasdešimt centų susitaupys !!! Keturiasdešimt ! Va čia tai pasiūlymas, iš karto nebesijaus recesijos ir infliacijos, galima bus atsileisti diržus ir gal net vasarą išvykti atostogų į Kiprą ! Va čia tai Igničio geraširdiškumas 😂, net skolingas jaučiuosi 🤣. Ir kas, kad kokią nors kietai suvaržytą sutartį reiks pasirašyti 2 metams.

Sarkazmas… Durnių laivas.

Rusiško mokyklinio ampermetro Э86 remontas at 09:21

Toks labai paprastas ir lengvas remontukas tiems atvejams, kai jau gamykliškai ampermetro neįmanoma nustatyti ties nuline padala. Pavyzdyje kairys ampermetras dabar arčiausiai nulinės padėties pagal reguliavimo rankenėlę, bet vis tiek rodo 1,5A (5A skalėje). Dešinys – rodo nulį teisingai.

Ardome, tam reikia atsukti 2 varžtelius po kontaktinėmis jungtimis, nuimti nedideli dangtelį. Po dangteliu kontaktinių jungčių varžtai, juos atsukus korpusas atsidaro. Tuomet reiktų atsukti dar du mažiukus vartelius, kad nuimti priekinę skardelę. Dabar jau matosi rodyklės ašis, spyruoklė, ritė ir magnetukas. Įsitikiname, kad rodyklė tiesi. Pastačius reguliavimo kilpą vertikaliai, atlenkiame kairėje esantį stačiakampį metalinį daikčiuką (pažymėtas raudonu kvardatu) tiek, kad pakiltų iš savo griovelio ir sukame jį taip, kad rodyklė atsistotų į nulinę padėtį.

Viskas. Surenkame atgal, reguliavimo rankenėlė vis dar reguliuoja rodyklės padėtį, viskas kaip ir veikia.

Kodėl taip atsitiko ? Visai nebūtinai ampermetras gavo per daug srovės, pamatavo įtampą vietoje srovės ir panašiai, tiesiog – rusiškas daiktas, darytas kirviu ir 13 raktu, o dar ir mokykloms, ne karinei pramonei, tai toks ir tikslumas, ir broko kiekis. Va būtų truputį kitu kampu tą griovelį prafrezavę ir viskas gerai būtų.