Ryšys tarp dviejų kompiuterių per USB 2025.05.20 at 14:51

Kartais reikia tokio dalyko, sujungtu du kompiuteriu per USB. Arba bet kokius kitokius du prietaisus per USB, pavyzdžiui, kompiuterį ir kokių nors gudrių staklių valdymo bloką su USB jungtimi. Taigi, tiesioginio USB – USB ryšio nėra, nes tam reiktų rašyti specialias tvarkykles ir dar knistis su visokiais papildomais programavimo/komunikacijos reikalais. O daroma viskas paprasčiau – USB iš abiejų pusių paverčiamas RS-232, o tie jau komunikuoja tarpusavyje. Kompiuteriai puikiausiai moka dirbti su RS-232, tvarkyklės dažniausiai jau būna įdiegtos arba automatiškai įsidiegia, taigi, labai supaprastėja ryšys netgi tarp dviejų normalių kompiuterių. Taigi, techninė užduotis:

  • Reikalingas laidas / adapteris / sujungimas, kuriuo būtų galima sujungti du kompiuterius arba kitus įrenginius, kurie neturi specialių tvarkyklių, bet dirba per USB;
  • Jeigu reikia – maitinimas nuo USB jungties;
  • Tvarkyklės turi būti diegiamos automatiškai arba lengvai randamos Internete;
  • Turi būti paprastas naudoti;
  • Turi būti saugus naudoti.

Kol kas tiek, jeigu darbo eigoje atsiras naujų užduočių – papildysiu. Šitoje vietoje reikia prisiminti senovę, nes jau viskas yra išrastą, o tai kas nauja – gerai pamiršta sena. Šiuo atveju pamiršta – tai senoviškas kabelis, kuris vadinosi NULL-MODEM. Jo esmė – dviejų kompiuterių ar kitokių prietaisų sujungimas per gryną RS-232, sukryžminant (nors man, pagal prasmę, aiškesnis žodis – krosinant) TX ir RX laidus, tai yra, vieno prietaiso TX jungiasi į kito RX, o kito prietaiso TX jungiasi į to pirmojo RX. Va ir visas stebuklas, taip padarius ryšys tarp RS-232 prietaisų jau yra. Dabar tik reikia tą RS-232 paversti į USB abiejuose galuose. Ai, ir iš karto pasakau, kad nesigilinam į įtampų lygius, ar tai bus TTL ar tikras RS-232. Ir dar, kad suprastumėte – kompiuterio viduje RS-232 jungiamas į UART (Universal Asynchronous Receiver Transmitter), taigi galima iš karto imti USB-UART konverterį ir nekonvertuoti UART į RS-232. Daugiau papildomai aiškinti kuo skiriasi ir kada kas naudojama tingiu, bet turėkime galvoje, kad RS-232 ir UART įtampų lygiai skiriasi. Dabar reikia parinkti šiuolaikinį USB – UART konverterį. Tie dalykai nėra nei labai naujiena, nei labai sudėtingi, pilna prikepta visokio lygio USB – UART arba RS-232 kabeliukų. Tik iš patirties žinau, kad FTDI mikroschemos dirba geriausiai, plius žinomas gamintojas, todėl tvarkyklių ieškoti nereiks. Atsidarius FTDI Internetinį katalogą peržiūrėjau visų galimų kandidatų informaciją ir išsirinkau FT230XS-R mikroschemą. Šalia ir VCP (Virtual COM Port) tvarkyklės. Pagal parametrus – visko čia net per daug arba lygiai tiek, kiek reikia. Plius yra galimybė programuoti mikroschemą, konfigūruoti ją pagal save, bet svarbiausia, ji daro tai ką reikia, konvertuoja USB į UART ir atgal. Iš minusų – mikroschema „valgo” 3,3V, o iš USB išeina 5V. Nors mikroschema tą minusą pati ir sutvarko, tai net ir jo nebelieka. Žiūrim mikroschemos aprašymą:

Štai ir schema, kaip mikroschemą užmaitinti nuo USB prievado. Matome, kad mikroschema suvalgo 5V, o paskui pati konvertuoja juos į reikiamus 3,3V ir išleidžia juos į laisvę per 3V3OUT kontaktą. Bet maksimaliai 50 mA. Toliau skaitant mikroschemos aprašymą randame ir visą USB į RS-232 konverterio schemą:

Ką mes čia matome ? USB lizdas prijungtas prie FT230X, kuris USB duomenų srautą iš savo UART prievado su TTL įtampų lygiais perduoda į „RS232 LEVEL CONVERTER” mikroschemą, kuri savo ruožtu pagaminą tą tikrąjį RS-232. Principe, sujungus tokias pat dvi schemas NULL MODEM pavyzdžiu, tai yra 1 schemos TXDATA į 2 schemos RXDATA ir 2 schemos TXDATA į 1 schemos RXDATA jau būtų galimas ryšys. Taip pat sukryžminus galima būtų sujungti ir RTS/CTS, nors savo schemoje šitų dviejų hardwarinio duomenų perdavimo valdymo kontaktų nenaudosiu. Bet jau girdžiu skaitančių komentarus – pala pala, o tai kam dar TTL keisti į RS-232, jeigu galima sujungti du TTL ? Teisingai, tas RS232 LEVEL CONVERTER mūsų reikmėm visiškai nereikalingas, metam lauk ir schema dar labiau supaprastėja. Bet, galvoju, paliekam LED indikatorius TX ir RX perdavimui iš kontaktų CBUS1 ir CBUS2. CBUS kontaktų funkcijos konfigūruojamos programuojant mikroschemą, bet CBUS1 ir CBUS2 pagal nutylėjimą jau sukonfigūruoti TX ir RX indikatorių valdymui. Jau schemos bazė kaip ir yra, bet mes inžinieriai, pramąstom ar tikrai jau viskas. O tolimesnė minčių eiga tokia – o jeigu reiks prijungti laptopą, maitinamą nuo vidinės baterijos prie stacionaraus kompiuterio, arba kokį specifinį įrenginį, su savo maitinimo prie laptopo irgi su savu maitinimu… Ir kaip tada jausis ir bendraus mikroschemos, užmaitintos nuo skirtingų USB lizdų ? Galima būtų USB lizdų pliusus ir minusus sujungti… Gal ir galima, bet kai nežinome, ką galutinis vartotojas jungs prie mūsų konverterio/adapterio – būtų per daug drąsu tvirtinti, kad neatsiras koks nors įtampų lygių neatitikimas, koks nors „ground loop’as”, ar dar koks monas, dėl kurio gali supleškėti kuris nors iš sujungtų prietaisų. Įprastai, kai duomenų perdavimui sujungiami du prietaisai su nuosavu maitinimu, norisi, kad jie būtų galvaniškai izoliuoti, tai yra, neturėtų elektrinio ryšio. Kaip pavyzdys – du kompiuteriai sujungti tarpusavyje optiniu kabeliu, jokio elektrinio ryšio, o duomenys vis tiek perduodami. Mūsų atveju naudoti optinį kabelį yra prabanga, todėl pradžiai pažiūrėsiu, tarkim, Digio kataloge kokių yra variantų. Duomenų perdavime, t. y. ten, kur nereikia didelių galingumų, bet reikia didelio greičio, dažniausiai naudojami kondensatoriniai izoliatoriai. Pagal mūsų FT230X matome, kad sujungti galima būtų 4 kanalus (TX, RX, CTS ir RTS), todėl pasirenku 4 kanalų skaitmeninį izoliatorių, dirbantį mums tinkamame maitinimo įtampų diapazone Texas Instruments ISO7742FQDWRQ1. Supaprastinta vieno kanalo schema:

Veikimas, paprastai, toks – paduodamas skaitmeninis signalas pakeičiamas moduliuotu signalu, kuris praeina per kondensatorius, tuo pačiu nusifiltruoja nuolatinė dedamoji, tada signalas dekoduojamas atgal į skaitmeną ir išleidžiamas laukan. Paprasčiau suprasti tiesiog žiūrint į blokinę schemą:

O signalas atrodo va taip:

Ateinantis meandras pakeičiamas kažkokio dažnio moduliuoti signalu, kuris lengvai pereina per kondensatorius ir patenka į priimančią dalį, kuri signalą demoduliuoja ir pagamina teisingą signalą išėjime. Ir abu tie signalai yra teisingi savo maitinimų atžvilgiu. Izoliuojančios mikroschemos vidinė schema:

Turim du kanalus į vieną pusę ir du kanalus į kitą pusę, būtent tai, ko reikia. Toks dalykas padėtų ir jeigu reiktų, pavyzdžiui, bendrauti 5V ir 3.3V sistemoms, mikroschema ištransliuotų viską teisinguose įtampų lygiuose ir niekas nesudegtų. Šiaip mikroschemos naudojimas paprastas, tik yra niuansų su trasavimu ir PCB, bet viskas detaliai aprašyta mikroschemos aprašyme. Dabar viską, kas parašyta, plius mikroschemų aprašymus, plius šiek tiek teorijos apie TTL/UART/RS-232 sumetam į puodą, vadinamą galva, gerai suplakame ir gauname va tokia vat schemą:

Palikau ir savo užrašus anglų kalba. Čia dvi identiškos schemos dalys, konvertuojančios USB į TTL, o per vidurį mūsų skaitmeninis izoliatorius. Signalinius „laidus” paspalvinau, kad lengviau atsirinkti kas kur eina ir prijungta. Kai jau yra schema, reikia pasidaryti plokštę. Plokštei kažkokių rimtų reikalavimų nekėliau, neskaitant tų, kurių reikėjo teisingam mikroschemos veikimui, bet pasistengiau daryti plokštę kuo mažesnę ir siauresnę.

Vat tokia ir gavosi nedidelė plokštė, su komponentais. Abu USB tokio tipo, kad būtų galima lengvai prijungti prie dviejų USB prailgintuvų arba plokštę iš karto kišti į kompiuterio USB lizdą, o kitą galą su prailgintuvu į kitą prietaisą. Vienu žodžiu fantazijos reikalas, o ir pačius USB lizdus galima pakeisti į norimos formos, tik truputį pakeičiant PCB. O gyvai plokštelė atrodo va taip:

Surinkus reikia pabandyti kaip tas daiktas veikia. Tam galima pasinaudoti ir vienu kompiuteriu, kuris turi bent 2 USB lizdus. Prijungiau prie to paties kompiuterio per USB šakotuvą, prietaisą rado kaip COM4 ir COM5 prievadus, todėl atidariau terminalo emuliatorių Putty abiem prievadams ir pabandžiau parašyti tekstą. Mintis tokia, kad jeigu veikia, tai tekstas, t. y. duomenys, iš vieno terminalo lango bus perduoti į kitą terminalo langą ir atvirkščiai.

Čia tiems, kas mėgsta kalbėtis su savimi, labai patogu 😋. O adapteris tuo metu atrodo va taip:

LEDai mirksi, duomenys laksto, chm, tai turbūt užskaitom, kad veikia. Nors dar reiktų pabandyti tarp dviejų visai atskirų kompiuterių. Ir, kad nebūtų visai lengva, vienas kompiuteris bus mano darbinis Asus TUF Gaming A15 FA507NV su Windows 11 Home (jooo blyn, žiauriai prasileidau, kad ne PRO), o kitas laptopėlis su Windows 2000 Professional ! W11 aišku be klausimų pasigavo tvarkykles ir viskas su jais OK, o prijungus prie W2000PRO prasidėjo tvarkyklių diegimo vedlys. Lengvai susiradau tvarkykles FTDI puslapyje ir sušėriau vedliui, po to jam klausimų nebekilo. W2000PRO turi gimtąjį terminalą, tai pabandžiau su juo, bet ryšys buvo toks labiau vienpusis – iš senuko duomenys neateina, o į senuką iš Putty nueina. Tai dar parsiunčiau senesnę (0.61 berods) Putty versiją senukui ir viskas kuo puikiais veikia, abiem kryptimis duomenys vaikšto, tekstas pasirodo, tai bandymai baigti. Schemą ir plokšte dariau su EasyEDA, tai schemos ir plokštės failiukai šiai programai yra čia.

FT230X mikroschemos konfigūravimui naudojamas FT Prog įrankis, parsisiunčiamas iš FTDI puslapio. Nelabai turiu ką ten programuoti, bet prisijungti pabandysiu:

Kad bent kažką pakeisti, lendam į Hardware specific punktą, CBUS Signals:

Pabandymui C1 pasirenku Drive_1, turėtų tame išėjime visada būtų aukštas lygis. Iš tikrųjų, išjungus ir vėl prijungus adapterį, buvęs TX LEDas dabar šviečia pastoviai. Prie IO Pins > CBUS dar radau įdomų nustatymą:

Aprašyme lyg nemačiau, kad CBUS’ai mokėtų riboti srovę, bet gamyklinis nustatymas 4mA. O kam tada reikalingas LED rezistorius? Chm, o pabandom nustatyti 16 mA ir pažiūrėti, kas bus su tuo pastoviai šviečiančiu LED. Chm, nepasakyčiau, kad šviečia ryškiau. Tiesa kažkoks srovės ribojimas, matomai, visgi yra, nes prijungus prie USB sekundės daliai LED švystelna ryškiau, po to matyt apsiriboja srovė ir LED vėl tampa blankus. Bet yra visai įdomių galimybių nustatyti CBUS išvadų funkcijas:

Automobilinio grotuvo ekrano užtemdymas 2025.04.28 at 15:14

Labai trumpas, greitas projektukas, atsiradęs dėl paprasto poreikio. Mašinose be dienos šviesos lempų privaloma dienos metu važiuoti įjungus artimųjų šviesų lempas, todėl audio sistemos grotuvas galvoja, kad dabar naktis ir pritemdo savo displėjų. Saulėtą dieną jame beveik nieko ir nebesimato, plius įjungiamas naktinis režimas, pavyzdžiui, mygtukų apšvietimas. Tas ypač galioja pakeitus gamyklinė automobilio grotuvą į kitokį, pavyzdžiui, su Android OS ir papildomais funkcionalumais. Taigi, reikia prietaisiuko, kuris reaguotų į apšvietimą ir pagal tai paduotų signalą į atitinkamą grotuvo kontaktą. Turim tikslą, tik suformuluokime užduotį:

  • Prietaisas turi reaguoti į apšviestumą, pagal tai valdyti atitinkamą grotuvo kontaktą;
  • Maitinimas nuo 11 V iki 16 V;
  • Grotuvo valdymas turi būti universalus – nes nežinome visų įmanomų grotuvų variantų;
  • Apšviestumo jautrumas turi būti reguliuojamas;
  • Genialumas paprastume, tai gal nepradėkim programuoti mikrovaldiklių;
  • Prietaisas turi būti saugus naudoti.

Tiek kol kas užtenka, pradedame konstruoti schemą.

Ok, dabar kaip čia viskas padaryta ir veikia. Kaip visada, iš kairės į dešinę. Nedidelė keturių kontaktų jungtelė, maitinimo pliusas po degimo (KL15+), pastovus minusas (KL31), 12V išėjimas ir minuso išėjimas. Kodėl tiek daug ? Ogi universalumui, valdymas gali būti arba pliusiniu signalu arba minusu. Normalioje padėtyje šiuose išėjimuose nieko, laido galas kaba ore arba „float” 😁. Toliau saugumas, saugiklis F1, 1A turėtų būti per akis visose situacijose, tu pačiu ir pakankamai saugu. Įėjimo kondensatorius C1 – kodėl 1 uF ? Nes tokių daug turiu, principe gali būti ir kitoks. Truputį stabilizuoja įeinantį maitinimą, sugaudo trukdžius jei kokių yra. Toliau „aktyvusis elementas”, 1MΩ daugiasūkis potenciometras R2 ir fotorezistorius LDR1. Potenciometras daugiasūkis tikslesniam reguliavimui, o 1MΩ nes tokia maksimali varža leis prijungti praktiškai bet kurį fotorezistorių ir sureguliuoti teisingam veikimui. Šita schemos dalis veikia taip – kai šviesu, fotorezistoriaus varža maža, o potenciometras taip sureguliuotas, kad jo varža palyginus su fotorezistoriaus varža didelė, todėl ribiniu atveju schema tampa tokia:

Kai tamsu, fotorezistoriaus varža didelė, sakykim 100 kΩ, o potenciometro varža tampa palyginti maža:

Analizuoti tokias ribines padėtis lengviau, nors realiai ten nebus nei visai minusas, nei visai pliusas, nes bus tam tikros varžos tiek fotorezistoriuje, tiek ir potenciometre, todėl būtų geriau analizuoti šitą porą kaip varžinį daliklį, bet užtai taip paprasčiau suprasti kodėl šita pora apskritai veikia. Taigi, pirmu atveju R3 gauna pseudo gryną minusą, antru atveju gauna pseudo pliusą. Pasikartosiu, turėkime galvoje, kad ten bus kažkokia tarpinė įtampos vertė, tarp 0V ir VCC, tik suveikimas atsitiks, kai ta įtampa bus aukščiau arba žemiau tam tikros slenkstinės vertės, kuri priklauso nuo tranzistoriaus. Toliau, R3 su Zenerio diodu, dar vadinamu stabilitronu, sudaro silpnasrovį maitinimo šaltinį. Jo reikia tam, kad tranzistoriaus Q1 bazės – nes bazės maksimalį įtampa VEBO = 10V. Tranzistoriaus aprašymas yra čia. O mašinoje tikrai bus daugiau, net iki 15V. Taigi, stabilitronas apriboja maksimalią įtampą. Kokia ji turi būti ? Aprašyme parašyta, kad VBEsat = 1,5V, tai yra tranzistorius pilnai atidarytas, kai įtampa tarp bazės ir emiterio yra 1,5V arba daugiau, bet ne daugiau 10V, nes bus pššš ir pasimatys tai, iš ko padaryta visa elektronika – dūmai. Dėl stabilumo, garantuoto tranzistoriaus atidarymo ir toli nuo pavojingos maksimalios įtampos imame pusę maksimalios įtampos vertės, tarkim 5V. Tiktų, principe, bet kas nuo 1,5V iki kokių 9V… Ok, ok, dar plius, kad turėjau 5V stabilitronų, tai pasirinkimas dar supaprastėjo. Turėdami tiek duomenų, galime pabandyti paskaičiuoti stabilitrono ir jo balastinio rezistoriaus parametrus. Išeitiniai duomenys skaičiavimui:

  • Maksimali įtampa – 15V
  • Minimali įtampa – 8V (nes mūsų R2-LDR1 daliklis gali duoti ir mažiau nei 12V, tai paimu tokią įtampą, gali būti ir kita, bet jeigu daliklio įtampa bus didesnė už 1,4V, stabilitronas nieko neveiks, o tranzistorius įsijungs)
  • Reikiama įtampa išėjime – 5V
  • Apkrovos srovė – čia toks sudėtingesnis parametras, bet iš tranzistoriaus aprašymo pikinė bazės rovė IBM = 100 mA, plius kažkiek srovės kondensatoriaus C2 krovimui, bet tiek srovės neduosim, duokime, tarkim trečdalį – Imax = 30 mA. Iz_min panašiai 10% nuo visos srovės, tai 0,003 A.
\[ I_{total} = I_{Zmin} + I_{L} \]
\[ I_{total} = 0,003 + 0,03 = 0,033 A\]
\[ R = \frac{U_{Supl} – U_{Z}}{I_{total}}\]
\[ R = \frac{15 – 5}{0,033}=303,03Ω\]

Paimkime, kad rezistorius bus 300 Ω.

\[ P_{R} = (U_{Supl} – U_{Z}) \cdot I_{total}\]
\[ P_{R} = (15 – 5) \cdot 0,033 = 0,33W = 330 mW\]

Rezistoriaus galingumas apie 330 mW.

\[ P_{D} = U_{Z} \cdot \left( I_{max} – I_{min} + I_{D} \right)\]
\[ P_{D} = 5 \cdot \left( 0,03 – 0,03 + 0,003 \right)=0,015W = 15 mW\]

Stabilitrono galingumo skaičiavimui Imax ir Imin imu vienodus, nors gal apkrovos srovė ir nebus visada vienoda ir stabili, bet turint tokį didelį atsargos koeficientą, manyčiau taip ganėtinai saugu. O skaičiavimas gerokai supaprastėja.

Toliau, rezistorius R4, ribojantis kondensatoriaus įsikrovimo greitį ir bazės srovę. Rezistoriaus skaičiavimas toks pusiau šamanizmas, su visokiom Betom ir panašiai, o bet tačiau, štai:

  • Valdymo įtampa Uctrl = 5V
  • Kolektoriaus maksimali srovė IC = 0,5A
  • Koeficientas β = 10000
  • Įtampos kritimas PN sandūroje Upnp_drop = 0,7V
  • Maksimali bazės srovė Ib_max = 100mA = 0,1A
\[I_{c} = \beta \cdot I_{b}\]

Iš čia:

\[I_{b} = \frac{I_{c}}{\beta} =\frac{0,5}{10000} = 0,00005A = 0,05 mA\]

Taigi, leidžiant per bazę bent 0,05 mA, kolektoriaus-emiterio srovė turėtų būti galima maksimali, pusė ampero.

\[U_{ctrl} = I \cdot R\]
\[R_{max} = \frac{U_{ctrl} – U_{p-n\_drop}}{I_{b}}\]
\[R_{max} = \frac{5 – 0,7}{0,00005}= 86000Ω = 86 kΩ\]

Turime, kad maksimali bazės rezistoriaus varža yra 86 kΩ, bet patikimam ir greitam tranzistoriaus atidarymui, galime didinti srovę, nes turime 20 mA limitą. Sumažinus varžą 20 kartų, srovė padidės 20 kartų, tai bus 1 mA. Turėtų pakakti tranzistoriaus atidarymui, kad jis dirbtų rakto režimu, o ne linijiniu. Būtų galima dar mažinti varžą, tarkim, sumažinus 200 kartų, iki 430Ω, srovė būtų 10 mA. Bet laimėjo 4700 Ω rezistorius, nes tokį turėjau po ranka, srovė turėtų būti apie 1 mA. Tas pats rezistorius dar ir stabdo kondensatorius C2 įsikrovimą. Kondensatorius pasikraus per laiką τ (Tau):

\[ \tau = R \cdot C\]
\[ \tau = 4700 \cdot 0,000001 = 0,0047s = 4,7 ms\]

Laikas super trumpas, kondensatorius pasikraus, tuomet rezistorius tiesiog ribos bazės srovę.

Toliau tranzistorius Q1, geras, smagus Darlingtonas mažame korpuse, atsidaro ir prijungia minusą prie relės K1 ir indikatoriaus LED1 su jo rezistoriumi R1. Relės srovė 9,1 mA, plius ~15 mA LEDukui, tranziukas tikrai išlaikys. Relės kontaktai laiko 1A srovę, todėl saugiklis F1 irgi 1A. relės kontaktų sujungimas toks, kad būtų toks kaip ir pseudo galvaninis atrišimas nuo prietaiso, nes relė perduoda grynai maitinimo pliusą arba maitinimo minusą, o ne, tarkim, minusą po tranzistoriaus. Taip išvengiame kokių nors dar nežinomų niuansų valdomo prietaiso schemoje.

Schemos vaizdelis 2D ir 3D:

EsayEDA failiukai (SCH ir PCB) yra čia.

Toliau veikimo bandymai ir šiek tiek matavimų.

Iš LED matosi, kad tranzistorius kažkiek dirba ir linijiniame režime, bet srovės mažos, trukmė nedidelė, tai bėdos su tuo nebus. Galima būtų pridėti Šmito trigerį, tuomet linijinio režimo nebebūtų.

Eigoje fotorezistorius pakeistas į PGM5506-MP – nes korpusas 5,5 mm, vietoje 12 mm.

M$ Windows 11 instaliavimas be prisijungimo 2025.04.02 at 07:39

Didžiausia nesąmonė iš MažaMinkščio – reikalauti Interneto ir MS paskyros instaliuojant Windows 11. Tai užsirašau, kaip apeiti šitą dalyką, kad nepasimirštų.

  1. Instaliuojant spaudžiam Shift + F10, atsidarys komandinė eilutė. Rašom oobe\bypassnro ir po restarto džiaugiamės.
  2. Instaliuojant spaudžiam Shift + F10, atsidarys komandinė eilutė. Rašom start ms-cxh:localonly ir dar labiau džiaugiamės.

Reaction to recent political events. 2025.03.04 at 08:31

I am not too much into politics, but then again, as a person with some quantity or brains and thinking capability, I think there should be a new word in dictionary, explaining the word „trumpism”.

Trumpizm (n.) – A behavior or ideology marked by acts of betrayal, hostility, and disgrace, often associated with self-interest, disregard for established norms, and divisive rhetoric. Characterized by a tendency to prioritize personal gain over loyalty, to treat allies and institutions with hostility, and to act in ways perceived as shameful or damaging to democratic values.

Uses:

Dont be such a trump.

What you did was really trumpish.

This time you’re really trumped.

Senoviški mokykliniai voltmetrai 2025.02.21 at 09:31

Ok, su tuo „senoviški” gal biškį perlenkiau, nes rusijoje manyčiau jie vis dar naudojami, pavadinimas Учебный-2. Gavau juos tokios būklės:

Sureguliavus nulius prijungiau prie laboratorinio maitinimo šaltinio veikimo bandymams.

Taigi, dar pora voltmetrų į kolekciją. Ne tai, kad naudočiau, bet pažaisti visai faina.

Electment Americanch LABTOOL-48 programatorius 2025.02.14 at 14:35

Gavau dovanų tokį senovišką programatorių (ačiū Daliau), gal net labiau tinkantį į Retro HW skyrelį. Nesakau, kad pulsiu kažką su juo programuoti, bet tokie elektronikos inžinerijos minties stebuklai dar galėtų pagyventi. Galbūt papuls kokia nors senovišką mikroschema, kurios „neįkas” mano Batronix’as. Taigi, pasianalizuokime, kas čia per žvėris. Gaila, bet programinės įrangos prie programatoriaus nėra. Pradėkim. Pradžiai – išvaizda.

Programatorius senukas, gyvenimo matęs ir, sprendžiant iš išblerbtos ZIF jungties – nemažai priprogramavęs. Ir nėra ko stebėtis, tokie programatoriai, manyčiau, apie 2000 metus ėjo. Sprendžiant pagal išvaizdą – čia eilinis vieno gamintojo kūrinys, į kurį teises gamintojas pardavė kelioms įmonėms, panašiai kaip su buvusiu remonte Manson maitinimo šaltiniu. Buvo ir įvairių modifikacijų ir pardavėjų, bet visi jie analogai – Dataman-48, Labtool-48, Chipmaster 6000 ir t.t. Ir atrodo jie taip pat, skiriasi tik logotipas:

O gamintojas, manyčiau, visų vienas – Advantech. Palaikomų mikroschemų sąrašas yra čia (bent jau jo 4.65 versija). Puslapyje Advantech labtool-48 programmer resources page (free.fr) radau dar ir daugiau informacijos apie Advantech (turbūt) analogą, reikės pabandyti prisijungti su duodama programa ir pažiūrėti, kas gausis. Ta Advantech įmonė, pasirodo, dar gyva – AEC.

Pažiūrėkime, kas tos dėžutės viduje.

Bendras vaizdas ir pora vaizdelių su didele rezoliucija. Panašu, kad čia matosi maitinimo šaltinio blokas ir viršutinė PCB, po ja yra dar viena.

ZIF lizdas pasodintas į savo atskirą lizdą ant plokštės, pats ZIF plokštės moduliukas atrodo toks „savadarbis”:

Nėra žalio lako, lydmetaliu aplydyti takeliai… Dvelkia tokiu oldskūlu. O bet tačiau – lizdas ant atskiros plokštelės yra gėris, dabar bus labai lengva ir patogu pakeisti išblerbtą lizdą nauju. Kadangi lizdo kokybė susijusi su geru kontaktu su programuojamų mikroschemų išvadais – parinksiu kokį nors kilmingą lizdą.

Šiek tiek abiejų PCB foto, kompresuotos, bet čia galima parsisiųsti nekompresuotų foto archyvą (pirma dalis, antra dalis, dalys išsiarchyvuoja atskirai). Matosi, kad pora mikroschemų pakeistos, viena analogiška, bet kitokiame korpuse, o kita su papildomais išvadiniais elementais – matyt buvo gedimas ir programatorius buvo remonte.

2025.01.24

Atvažiavo DIP lizdas, kuris pakeis originalų, bet prastos kokybės ir labai išblerbtą lizda:

48-6554-11 Aries Electronics | Connectors, Interconnects | DigiKey

Reiks prie progos perlituot ir tikiuosi viskas tiks, gal net ir veiks 🙃.

2025.01.27

Lizdas perlituotas, tuo pačiu dar ir nulakuota PCB, gražiai blizga ir nuo korozijos apsauga. Fotkėse dar su izoliacija, kad apsaugoti vietas kurių nereikia nulakuoti.

Tęsiame apžiūrą ir žvilgsnis užkliuvo už va šito:

Tie kondensatoriai tokie lyg papūsti, lyg ne, bet kam spėlioti, programatorių mes restauruojam savo malonumui, taigi pakeičiam. Štai kokie grybukai auga iš klaviatūros (reiks nevalgyt prie klaviatūros, matyt trupinių daug, jei jau grybai auga 😋).

Tie raudoni – tikri Nichicon, aliuminio polimeriniai kondensatoriai, su super žemu ESR ir atsparumu aukštesnei temperatūrai, ir MTBF 5000 valandų. Tie su juodais užrašais tikri Panasiai (Panasonic), irgi aliuminio polimeriai, žemo ESR ir MTBF 4000 valandų. Jie visi pakeis buvusius kondensatorius maitinimo bloke ir programatoriaus PCB. Po pakeitimo plokštės dar ir gražiai nulakuotos.

Maitinimo bloko PCB takelių pusėje atsirado du nauji papildomi keramikiniai kondensatoriai 10µF 50V, papildomam triukšmų slopinimui, stabilesniam maitinimui. Šiaip, principe, impulsiniuose maitinimo šaltiniuose mėgstu išėjimo kondensatorius šuntuoti keramika, sviestu košės nepagadinsi. Beje, maitinimo bloko markiruotė „ZH-12V5VA”.

Prieš viską sujungiant dar truputį patikrinsiu maitinimo bloką, kad nebūtų po to kokios staigmenos įjungus.

Įjungus maitinimo blokas veikia ir netgi ne visai prastai.

Čia 12V maitinimo oscilograma.

Čia tie patys 12V, tik AC dedamoji, kad matytųsi įtampos tolygumas ir, tuo pačiu impulsinio maitinimo šaltinio kokybė. Čia turime 244 mVp-p pulsacijas. Mano manymu, 1% nuo išėjimo įtampos pulsacijos yra labai gerai, iki 5% gerai. Čia turime 1,91 %, tai maitinimo šaltinis pakankamai gerai gamina 12V.

5V maitinimo įtampos oscilograma.

O čia be DC dedamosios. Pulsacijos 240 mVp-p, t. y. 4,48%. Neblogai, dar nėra 5%. Pabandžius užmesti porą keraminių kondensatorių ant išėjimo vaizdelis toks:

12V grandinėje pulsacijos pasikeitė, sumažėjo iki 188 mVp-p. Pagerėjimas, pulsacijos 1,49%.

5V grandinėje pulsacijos pasikeitė, sumažėjo iki 158 mVp-p. Pagerėjimas, pulsacijos 2,95%. Reiškia kondensatorius paliekam. Būtų galima dar „fine-tune’inti” panaudojant droseliukus, bet ir taip jau labai gerai su maitinimu. O be to, toliau maitinimai dar formuojami impulsiniu LT1172C ir tikrai linijiniu LM317T, ten pulsacijų nebeliks visai.

Ant maitinimo blogo yra papildomos nepanaudotos jungtys, pažymėtos „FAN” ir „LED”.

Kadangi jungtys nepanaudotos, prireikus, galima būtų panaudoti pagal paskirtį 😁.

Su LED viskas aišku – prie 5V su 510Ω rezistoriumi, dar priklauso nuo to koks LEDas, bet bus apie 4-6 mA, o vat su FAN schema truputį keistas reikalas. Rezistorius R15 yra oranžinis-baltas-oranžinis-auksinis, t. y. 39 kΩ, bet testeris sumatavo tik 2,329 kΩ, nors rezistorius neatrodo pasvilęs ar kaip nors pažeistas…

Pagrindinis maitinimo blokas atskiras, bet apatinėje programatoriaus dalies plokštėje yra dar keli įtampų stabilizatoriai, gaminantys reikiamas įtampas mikroschemų programavimui.

Iš kairės į dešinę, pirmi keturi L165 daugiakojai Pentawat V korpuse – operacinukai, turbūt naudojami kaip maitinimo šaltiniai. Toliau LM317T ir LT1172C.

Pastebėjau, kad prievadų jungčių tvirtinimai nepilnai prilituoti, tai pataisiau dar ir tą dalyką, užpildamas geru švininiu lydmetaliu:

Programatoriaus plokštėse pamačiau vieną tokią daugmaž programuojamą EPROM mikroschemą NM27C512Q, manyčiau joje turėtų būti programatoriaus programa. Pabandysiu ją nuskaityti, turimas Batronix BX48 Batego II programatorius ją kaip ir „valgo”. Suvalgė, todėl NM27C512Q120 turinys yra čia. Paanalizuokime, kas jame matosi. Pirmiausia, ką pastebėjau:

Programoje nurodyta, kad čia LabTool-48 prietaisas, programinės įrangos versija 2.20. Daugiau kažkokių rišlių žodžių neaptikau.

Internete, tiksliau čia – LabTool-48UXP Upgrade Kit radau, kad galimas koks tai atnaujinimas. Atnaujinimas aprašytas čia – Installation instruction of LabTool-48UXP Upgrade Kit. Pirmame puslapyje tokia truputį chinglish kalba parašyta:

CASE A. LT-48 ( Firmware Version 1.9 ) *(PS1) cann’t upgrade to LT-48UXP.
CASE B. LT-48 ( Firmware Version 2.0 and Above ) *(PS2) upgrade to LT-48UXP, please order Upgrade Kit.
CASE C. LT-48XP upgrade to LT-48UXP, please order Upgrade Kit.
PS1: No support 3.3V device, Upper PCB version is A3.0 or early version
PS2: Support 3.3V device, Upper PCB version is B1.0

Mano atveju, viršutinė PCB (upper PCB) yra B1.0, tai bus palaikomos 3,3V mikroschemos, versija PS2. Tai jeigu programinė įranga bus 2.0 (o yra, kaip matėme iš mikroschemos duomenų 2.20) arba naujesnės versijos, tuomet galioja variantas B (CASE B.) ir galima daryti atnaujinimą į LT-48UXP versiją. Šita versija prideda USB prisijungimo galimybę, Windows XP / Vista (tik x86) / Windows 7 (x86 ir x64) / Windows 8 (x86 ir x64) palaikymą ir galimybę dar labiau atnaujinti programinę įrangą. Apatinės programatoriaus plokštės versija A3.0, bet ji niekur kaip ir nepaminėta, tai gal nėra skirtumo kokia ji.

Daugiau kažko blogo programatoriuje nematau, todėl manau reikia surinkti viską į krūvą ir pabandyti, kaip tas programatorius veikia. Prieš surenkant pastebėjau, kad TO220(-5) korpusuose gyvenančios mikroschemos tiesiogiai prisuktos prie aliuminio radiatoriaus. Tas kaip ir viskas gerai L165 (jeigu maitinimas vienpolis) ir LT1172C, bet LM317T korpusas sujungtas su išėjimu, todėl prisukus jį tiesiai prie radiatoriaus, išėjimas sujungiamas su prietaiso mase.

LM317T
L165
LT1172C

Kadangi atsukdamas tikrai nepamečiau LM317T izoliatoriaus, manyčiau programatorius neveikė, nes įtampos stabilizatoriaus išėjimas pajungtas tiesiai į minusą. Visai tikėtina, kad mikroschema atlaikė tokį kankinimą, nes turi srovės ribojimą ir termoapsaugą, t. y. užtrumpinus išėjimą į minusą, srovė apsiribos iki 1,5A ir kaitins mikroschemą, bet sprogti neturėtų. Perkaitus mikroschemai ji iš viso atsijungtų. Bet šitą vietą reikės patikrinti papildomai.

LM317 tipinė jungimo schema

Pagal tipinė jungimo schemą, LM317 išėjimo įtampa nustatoma dviem rezistoriais. Matuojant R1 gaunu 1,0 Ω, o R2 čia yra kintamas, varžą R2 atstoja operacinukas LM393P, taip irgi galima. Matuojant LM317T išėjimą gaunu 29,13V. Išėjime ! Norint turėti tokią įtampą išėjime, reikia pašerti įėjimui bent porą voltų daugiau, nes LM317T moka tik pažeminti įtampą, bet nemoka jos aukštinti. O tą paaukštintą įtampą iš 12V į 30,77V gamina LT1172C. Po to jau LM317T, pagal operacinuko komandas, išduoda reikiamą įtampą. Panašu, kad įtampos yra, lyg ir teisingos, gal netgi ir veiks surinkus.

Pradėjau surinkinėti po truputį ir, prisukdamas aušinimo radiatoriuką pastebėjau va ką:

Ta LM317T nesiekia bendro radiatoriaus, o jame net nėra skylutės varžteliui. Kadangi LMkė kaba ore, tai jos išėjimas neprijungtas prie minuso, bet užtai aušinimas irgi toks prastokas. Ypač kai ji turės iš 30V padaryti 5V arba 3V, nes dirba linijiniame režime ir visa perteklinė įtampa garinama kaitinant mikroschemą arba radiatorių. Šitą vietą reikės patobulinti. Teko nusipirkti naują LM317T, nustebino, kad originali ST Microelectronics gamybos, bet metalinė korpuso/pado dalis yra žymiai plonesnė nei įprasta. Negi ant tiek juos жаба užspaudė, kad net ant to pado storio taupo..? Bet nauja LM317T su ilgesnėmis kojomis, todėl tikrai užteko ir jų išformavimui ir prilitavimui:

Savaime suprantama, LM317T gavo dovanų izoliuojantį paduką ir baltą plastikinį izoliatorių varžteliui. Kai ardžiau mačiau, kad kai kurie varžtai ar tvirtinimo elementai turi tokius kaip paranitinius izoliatorius/tarpines, tai pridėjau tokių prie visų tvirtinimo varžtų – nebūtina, bet atrodo gražiau, o prie radiatoriaus prisukamų mikroschemų varžteliai gavo mažyčius 3 mm graveriukus:

Štai ir viskas, programatorius truputį atnaujintas, šiek tiek patobulintas ir surinktas. Dabar reiktų prijungti prie kompiuterio ir pabandyti ar veikia. Tam reikės parsisiųsti specialią programą, kuri moka dirbti su šiuo programatoriumi.

Programa yra, bet DB25F – DB25M kabelio neturiu 😆 ir šiais laikais jau žiūriu vietoje nelabai kur gausi.

Garmin PIN kodo nulaužimas 2025.01.29 at 13:44

Kažkada labai seniai, realiai seniai, prieš kokia 10 metų, nusipirkau eBay Garmin navigaciją Nuvi 660 Euro. Net ir tuo metu Garmin, Mio ir kiti navigacijos prietaisai jau buvo išstumti navigacijų, esančių protinguose telefonuose, todėl pirkau pigiai. Pats prietaisas lyg ir veikiantis, bet pilnai įjungti nepavyko – uždėtas PIN kodas, be kurio prietaisas nieko nerodo, tik PIN kodo įvedimo meniu. O turėtų būti va toks vaizdelis:

Jau neprisimenu, ar kreipiausi į pardavėją, kad grąžintų pinigus, bet PINo tikrai negavau. Gal dėl to, kad navigaciją įsijungiau gerokai po visų eBay terminų (nes ir pats jau naudojau telefoninę navigaciją). Tuo metu buvau pradėjęs žaisti su Arduino, todėl sugalvojau pasidaryti hardware’inį bruteforcer’į. Kaip čia tas daiktas vadintųsi lietuviškai..? Mechaninis kodo spėliotojas arba parinkiklis, arba rinkiklis ? Turbūt. Su tuo PIN kodu viskas veikia taip – surenki 4 (gal) skaičiukus, Garmin’as pyptelna garsiuką ir parašo, kad kodas blogas. Alternatyvūs variantai, kuriuos pamenu iš anų laikų:

  • Laikyti Reset mygtuką 2 valandas 30 minučių, tas lyg ir pilnai perkrauna prietaisą į gamyklinius nustatymus. Gal, nebandžiau – lengvi keliai ne mums.
  • Susisiekti su gamintoju, pateikti pirkimo dokumentus ir gauti kažkokį atrakinimo būdą, PIN kodą ar kažką. Irgi ne variantas, nes pirkimo dokumentų neturiu.

Pats PINas gyvena iš išorės neprieinamoje atmintyje (per USB jungtį), ta atmintis nepriklausoma nuo maitinimo, todėl atjungus akumuliatorių neišsitrina. Greičiausiai galima būtų pasijungti atminties mikroschemą prie programatoriaus ir, nuskaičius duomenis, rasti/pakeisti PINą. Bet irgi, lengvi keliai ne mums 😋. Ir todėl pradėjau tokio mechaninio PIN rinkiklio projektą. Anuomet Internete mačiau tokį prietaisą, gal gremėzdišką, kuris mechaniškai rinko PIN kodą, spaudė OK ir su kažkokiu šviesos davikliu tikrino, ar ekrano šviesumas pasikeitė iš PIN kodo meniu aplinkos (tamsi) į žemėlapį, kuris yra šviesesnis. Toks būdas kaip ir tinkamas, kai žinai tą tašką, kuriame ekranas pasikeičia iš tamsaus į šviesų ir tik tuo atveju, jei PIN teisingas. Dar buvo kažkoks pusiau CNC aparatas, kuris mygtuko „spaudiklį” judindavo link reikiamo mygtuko, dar mačiau ir tokį, kur buvo prisijungia prie touchpad’o, ekrano prilietimus apdorojančios mikroschemos, ir paspaudimus šėrė kaip jau gatavus duomenis į procesorių.

Aš sugalvojau kitą būdą – spaudinėti ekraną mechaniškai, o PIN kodo teisingumą detektuoti pagal garsą. Reikalas tame, kad surinkus PIN kodą, prietaisas sugroja tam tikrą toną ar tonus. Tuo metu tikėjausi, kad blogo PIN kodo garsas skiriasi nuo gero PIN kodo garso. Kol kas dar nežinau kaip iš tikrųjų, bet su laiku paaiškės. Bet blogo PIN kodo garsą girdėjau ne vieną kartą, bandydamas rankutėmis surinkti populiariausius PIN (0000, 1234 ir t. t.). Taigi, pradėjau kurti schemą ir gavosi va tokia vat:

Kaip visada, paanalizuokime, kaip čia kas su ta schema. Blemba, dabar kai žiūriu į schemą – kiek visko daryčiau kitaip, geriau, patogiau, paprasčiau 🙂, taip, kaip sakoma, „gyveni ir mokaisi”. Paveiksliukas didinasi į naują kortelę (į naują tab’ą, jeigu lietuviškai).

Kairėje pusėje DC/DC konverteris, kurio pagrindas LMZ23605TZ/NOPB mikroschema, konverteris. Efektyvumas, prie man reikiamų srovių apie 90 % arba daugiau, išėjimo srovė gerokai per didelį, net 5A, bet pamenu, pasirinkau būtent tokį konverteriuką, nes norėjau išbandyti tą mikroschemą, kaip ji veikia, konfigūruojasi, valdoma ir t. t., tai, kad nešvaistyti papildomai resursų, parinkau ją kuriamam prietaisiukui. Visas maitinimo šaltinis surinktas su keliomis išorinėmis detalėmis – įėjimo kondensatorius C1, išėjimo kondensatorius C2, R1-R2 daliklis, išėjimo įtampai nustatyti. Papildomų mikroschemos funkcijų, pavyzdžiui, minkšto paleidimo, nenaudojau, tai nėra ir papildomų detalių. Visų komponentų skaičiavimas ar parinkimas gerai aprašytas mikroschemos aprašyme, tai labai nepasakosiu, tik išėjimo daliklio skaičiavimas 5V išėjimo įtampai (VO):

\[ V_O = 0,796\,\text{V} \times \left( 1 + \frac{R_{FBT}}{R_{FBB}} \right)\]
\[ 5V = 0,796\,\text{V} \times \left( 1 + \frac{R_{FBT}}{R_{FBB}} \right)\]
\[ \frac{5V}{0,796V} = 1 + \frac{R_{FBT}}{R_{FBB}} \]

Ir dar supaprastinam:

\[ \frac{R_{FBT}}{R_{FBB}} = \frac{5V}{0,796V} – 1 \]
\[ \frac{R_{FBT}}{R_{FBB}} = 6,2814 – 1 = 5,2814 \]

Taigi, rezistorių varžos santykis yra:

\[ \frac{R_{FBT}}{R_{FBB}} =5,2814 \]

Pasirenkam bet kurią varžą savo nuožiūra ir pagal gamintojo nustatytas varžos ribas, ir randame antrą varžą pagal formules:

\[ R_{FBT} = R_{FBB} \times 5,2814 \]
\[ R_{FBB} = \frac{R_{FBT}}{5,2814} \]

Jau nepamenu, kurį pasirinkau savo nuožiūra, bet tarkim RFBT paėmiau 5K62, tuomet:

\[ R_{FBB} = \frac{5620Ω}{5,2814} = 1 064,1117Ω \]

Artimiausias varžos nominalas – 1070 Ω. Dabar galima sudėlioti varžas į pirmąją formulę ir patikrinti kokią bus įtampa:

\[ V_O = 0,796\,\text{V} \times \left( 1 + \frac{5620Ω}{1070Ω} \right) = 4,9769 V\]

Beveik tiksliai 5V. Primenu, kad čia reikia naudoti precizinius rezistorius. Realiai mano Mastech MS8265 rodo 4,971V prie 8,4V ir 0,3A maitinimo. Tiek apie maitinimo dalį.

Šalia yra USB jungtis J2 Garmin’o krovimui, šeriam tiesiai tuos 5V ir tiek.

IC2 ir IC4 padeda mygtukams S1, S2, S3. Padeda tuo, kad atlieka debounce funkciją, taip sakant padaro mygtukų signalą gražų, su vienu įjungimu/išjungimu, antraip būtų matomas kontaktų „drebėjimas”, kai sujungimo metu kontaktas atsiranda ne iš karto, pradžioje mygtukas junginėjasi ir tik po keliu ar keliolikos mikrosekundžių stabilizuojasi.

Be debounce funkcijos procesoriukas fiksuotų kelis paspaudimus vietoje vieno, bet visą darbą padaro tam, skirta MAX6817 mikroschema.

Šalia matosi aktyvus pjezo-pypsiukas. Aktyvus – todėl jam užtenka paduoti maitinimą iš valdiklio, o ne kažkokį dažnį, kad išgirsti garsą. Jeigu nebūtų aktyvus – reiktų su valdikliu norimu dažniu junginėti išėjimą.

D1, R3 ir C3 skirti Reset grandinei ir programavimui. Kai viskas gerai, R3 laiko Reset kontaktą aukštame lygyje (pull-up), o įrašius naują programą į valdiklį jis, per C3 iš atitinkamo programavimo jungties kontakto, automatiškai perkraunamas. JP2 – trumpiklis, kad perjungti valdiklio kontaktus programavimui arba solenoidų valdymui.

Visko centre – AtMega328P valdiklis, šalia 16 Mhz kvarciukas.

Dešiniau nuo valdiklio visas būrys BSP76 smartFETų, tranzistoriukų ir jungtelės solenoidams.

Viršuje LCD displėjaus blokas, valdomas dviem laidais per 74LS164D registrą ir loginio IR mikroschemos NC7S08M5X. Apie tai rašiau seniai, 2015 metais, kai šios schemos dalies pagrindu pasidariau LCD skydą Arduinui – Arduino 2 laidų LCD skydas. Veikimas paprastas, šeriam reikiamus duomenis nuosekliai į 74LS164D, pasirenkam reikiamą bitą (1 arba 0) QC išėjime, pagal tai, ar siunčiama komanda ar duomenys, paskutinį bitą QH padarom loginiu 1, tuo pačiu duomenų kontaktą irgi padarom loginiu 1, tada IR elemento išėjimas irgi tampa loginiu 1, tuo pačiu loginis 1 atsiranda LCD displėjaus E kontakte, tuo sukomanduoja LCD displėjui nuskaityti duomenis iš duomenų šynos DB4-DB7 (naudojamas 4 bitų duomenų perdavimas).

Ir beliko schemos apačioje esantis garso apdorojimo blokas. Jo pagrindas – labai populiarus audio stiprintuvėlis LM386M ir 74LVC1G17DCK buferio. Audio signalas iš jungties, per DC blokuojantį kondensatorių C4 patenka į stiprintuvą. Jo paskirtis yra sustiprinti signalą, jeigu kartais Garmino signalas būtų per silpnas arba nebūtų galimybės pasigarsinti Garmino garsą. Būtent toks stiprintuvas pasirinktas nes atitinka jo maitinimo įtampa, 5V ir vienpolis, plius beveik nereikia išorinių elementų, nes vidinis stiprinimas jau sureguliuotas ties 20, bet prireikus, papildomo potenciometro pagalba galima reguliuoti nuo tų 20 iki 200. Principe panaudota schema iš aprašymo:

Tik truputį patobulinta, kad būtų galimybė keisti stiprinimą. Toliau seka dar vienas filtruojantis kondensatorius C6. Tuomet testavimo taškas TP1, skirtas prijungti oscilografą, pažiūrėti, koks signalas yra tarp stiprintuvo ir buferio. Tuomet buferis, dirbantis kaip Šmito trigeris. Šiek tiek iš Wikipedios:

Šmito trigeris – vieną analoginį įėjimą, vieną loginį (1/0) išėjimą ir dvi būsenas turinti schema, pasižyminti histereze. Šmito trigeris turi du įėjimo slenksčius. Esant įėjimo signalui žemiau pirmojo slenksčio, schema pereina į loginio nulio būsena ir lieka joje tol, kol signalas neviršija antrojo (aukštesnio) perjungimo į loginio vieneto būseną slenksčio. Loginio vieneto būsenoje schema lieka tol, kol įėjimo įtampa nenukrinta žemiau pirmojo (į nulinę būseną perjungiančio) slenksčio.

Jeigu paprastai, kai įtampa įėjime viršija, tarkim 1V trigerio išėjime yra loginis 1, kai įtampa žemiau 1V, išėjime loginis 0. Taip labai paprastai iš sinusoidės padarome meadnro formos signalą, plius dar su histereze. O meandro formos signalas visada bus arba 0V arba 5V, todėl jį labai lengva detektuoti ir apskaičiuoti dažnį su valdikliu – nebus jokių sinuso formos signalų, kur dar trukdžiai ir visi kiti blogi dalykai, galintys iškreipti dažnio matavimą. Mūsų atveju viskas atrodo va taip:

Panašiai 1 kHz sinusoidė įėjime (geltona linija) po stiprintuvo ir buferio tampa stabiliu meandru (mėlyna linija). Nebelieka ir neigiamo poliarumo įtampų, kas valdikliui būtų ankstyva mirtis dar nepradėjus kaip reikiant dirbti. Tačiau matosi kažkokie šuoliai persijungimų metu, juos būtų gerai irgi panaikinti, gal užtektų kokio nedidelio keraminio kondensatoriuko išėjime.

Štai ir visa schema. Paprasta kaip du kart du.

Antra klausimo pusė yra programa. Per tuos 10 metų vis prišokdavau kažką parašyti, tai dabar ten toks zooparkas, kad pats jau turiu pagalvoti apie ką ten rašiau 😁. Bet prisimenu, kad buvo tikslas kažkaip pasidaryti meniu. Tam sugalvojau naudoti meniu „flag’ą”, žymę, kuri keičiasi sulig kiekvienu meniu ir pagal ją atitinkamai valdomas tekstas ekrane ir funkcijos. Meniu struktūra:

  • Pagrindinis vaizdas, tiesiog parašyta
    PIN bruteforcer
    Menu – press UP
  • Paspaudus į viršų galima mygtukais aukštyn ir žemyn valdyti meniu:
  • Start cracking
    OK to start !
  • Crack from XXXX?
    Enter start PIN
  • Solenoid test
    OK to run test
  • Check sound frequency
    PIN BAD frequ.
  • Enter desired
    sound frequency?
  • Exit

Ties šita vieta pagalvojau, o gal perrašyti viską nuo nulio, tuo pačiu pasikartoti programavimą ir gal pavyks optimizuoti kodą, plius nebus toks kratinys.

2025.01.13

Perrašiau kodą, kažkiek paotimizavau, kažką palikau kaip buvo, kad nepersikrauti smegenų 🙂. Reikia susilipdyti bandymų stendą. Tiesiogine prasme susilipdyti. Tam reikia Garmin prietaiso ir medinių pagaliukų:

Tiks tiltas laikys visą PIN rinkiklį. Pagaliukai tarpusavyje suklijuoti ciano akrilatu (aka Super Glue), tiltas priklijuotas prie Garmin’o dvipuse lipnia juostele ir išcentruotas:

Kad šoninių skaičių nesimato – nieko tokio, toje vietoje paspaudus vis dar suveikia teisingas skaičius. Dar truputis dvipusės lipnios ant PIN rinkiklio ir klijuojam visą konstrukciją į krūvą:

Užklijavus patikrinam, ar lengvai paspaudžiami visi skaičiai, niekas nekliūna. Apie teisingą paspaudimą žinome pagal garsą.

Čia dar pirmoji softo versija, turinti dažnio įsiminimo funkciją, bet po to ją išmečiau kaip nepraktišką ir sunkiai pagaunamą. Dabar tiesiog galima pamatyti koks kada dažnis groja. paprastų mygtukų paspaudimai ~630 Hz, paspaudus OK sugroja ~630 Hz ir ~1600 Hz. Taip sužinome, kokio panašiai dažnio reikia ir, pasinaudojus atitinkamu meniu punktu įvedame rankiniu būdu. Įsimenamos dažnių reikšmės ±200 Hz, tai įvedus 1600 Hz dažnio paieškai naudos nuo 1400 Hz iki 1800 Hz.

Perrašius programą truputį pasikeitė meniu struktūra, naujoji:

  • Pagrindinis ekranas – PIN Bruteforcer / Menu – UP/DOWN
  • Start Cracking / OK to start !
  • Crack from XXXX? / Enter start PIN
  • Solenoid test / OK to run test
  • Check sound / frequency
  • Enter desired / sound frequency
  • EXIT

Veikimo logika tokia. Įjungus prietaisą reikia nustatyti detektuojamą dažnį. Net jeigu iš karto eiti į Start Cracking, vis tiek bus nukreipimas dažnio įvedimui:

Įvedus dažnį parodoma informacija apie detektuojamų dažnių ribas, pasirinkus Start Cracking tos ribos dar kartelį parodomos. Jeigu nežinomas dažnis, kurio reikia, tuomet pirma pasirenkame punktą „Check sound frequency” ir pasimatuojame koks ten dažnis (video aukščiau). Dabar tik įdėsiu kaip atrodo naujas meniu matavimui ir iš dažnių generatoriaus pašeriu apie 1500 Hz, dažnis pačiam generatoriuje plaukioja, tai parodymai irgi plaukioja iš paskos. Matavimo tikslumas gal nėra didelis, bet tokiai paskirčiai tikrai pakankamas.

Ir tuomet, kai jau turime suvestą dažnį, galima pradėti parinkinėti PIN kodą. Iš niuansų – dažnio matavimui galima pareguliuoti jo stiprumą daugiasūkiu paderinimo potenciometriuku, idealiausia matuoti signalą oscilografu TP1 ir TP2 taškuose, bet nebūtina.

Ar teisingai pataikyta į Garmino mygtukus patikrai ir tuo pačiu ar visi solenoidai veikia/nestringa/pasiekia ekraną galima įjungti solenoidų testavimo programėlę:

Bemaigydamas mygtukus pagalvojau, kad visai gal norėčiau turėti galimybę užtildyti pypsiką, nes labai daug pypsi, tai meniu papildytas „MUTE” funkcija. Tuo pačiu kaip ir pabaigiau PIN rinkimo procedūrą, nieko ten labai mandro – surenka PINą, 3 sekundes detektuoja dažnius, jeigu per tą laiką užfiksuoja nustatytą dažnį, kuris reiškia „PIN neteisingas” – palaukia šiek tiek, kol Garminas persijungs iš „PIN neteisingas” lango į PIN įvedimo langą ir renka sekantį kodą. Jeigu nustatyto dažnio neaptinka – parašo, kad PINas yra toks koks buvo suvestas.

Paskubėjau kuo greičiau sužinoti koks gi tas PIN kodas, todėl be didelių kodo optimizavimų ir papildomo funkcionalumo palikau atkodatorių/bruteforcerį maigyti Garminą, o Garminą pypsėti. Atėjau po kiek laiko ir matau, kad PIN kodas surastas – 0324. O bet tačiau – jis neteisingas. Nors mano prietaisas nesuklydo – garso, reiškiančio, kad PIN blogas iš tiesų nebuvo, nes, pasirodo, Garminas pakibo. Taip taip, ateinu, o jis ore kaba 😆. O jei rimtai, pakibo ties ekranu, kur rodoma informacija ką daryti, jeigu PIN blogas. Perkrovus vėl viskas įsijungė į PIN įvedimo ekraną. Bet tai blyyyyn, negi dabar vėl nuo 0000 reiks koduoti 😅? Nesąmonė, paėmiau ir parašiau trūkstamą programos dalį, kur galima įvesti nuo kurio PIN pradėti. Ties ta vieta irgi dar pasvarsčiau ar neperrašius man visko dar kartelį iš naujo, apsisprendžiant kaip geriau saugoti piną, masyve ar kaip paprastą skaičių. Bet kūrybinė krizė buvo praėjus, tai tik parašiau PIN įvedimo dalį, prakonvertuojant PIN kintamąjį, kad tiktų likusiai programai ir sušėriau Atmegai. Procesas užsisuko, nors protarpiais Garminas vis dar pakibdavo, bet po perkrovimo tereikėjo įvesti detektuojamą dažnį ir nuo kurio PIN važiuojam toliau, nesudėtinga. Ir po kiek laiko, jeigu kas patikės, kad sėkmingai pataikiau nufilmuoti būtent tada, kai tikrasis PINas atrastas:

Ir bandymas rankiniu būdu įvesti PINą 1948:

Gaunamas startinis konfigūravimo ekranas, kadangi buvo spaustas Reset mygtukas. Šiaip būtų įsijungęs neresetuotas Garminas, su buvusio vartotojo nustatymais, istorija ir t.t.

Štai ir viskas, baigėsi šita epopėja, užtrukusi 10 metų 😂. Dar iš įdomesnių niuansų – jeigu Garminą prijungti prie maitinimo šaltinio naudojant standartinį mini USB kabeliuką – jis persijungia į PC režimą ir rodo tik kompiuteriuką ekrane. Norint, kad taip nebūtų, reikia arba specialaus kabeliuko, arba standartiniam kabeliukui sujungti kartu 4 (ID) ir 5 (GND) kontaktus, paveiksliukas iš Interneto:

Programa neoptimizuota, kažkiek vis dar padrika, Eagle schema ir PCB berods teisingos, viskas yra čia.

Populiariausias gyvenvietės pavadinimas Lietuvoje ? 2024.11.08 at 16:36

Šiaip paieškojau, koks dažniausias pasitaikantis gyvenvietės pavadinimas Lietuvoje, pasirodo – Pakalniškės arba Pakalniškiai. Google Maps randa net 15:

HK1 MAX Android TV priedėlio remontas 2024.10.24 at 09:14

Taip, kiniečiai prikepė visokių tų TV priedėlių, kaip karštų bandelių mokykloje, net nesuprantu, kodėl tas pats modelis turi skirtingas specifikacijas. Į remontą papuolė HK1MAX, gamintojas „Made in China”. Ant prietaiso parašyta 4G RAM ir 32g ROM, Internete randu 4GB RAM 64GB ROM Android 10.0. Vienu žodžiu zooparkas. Bet šiandien ne apie tai. TV žiūrėtojas vietoje 5V maitinimo pašėrė 12V ir po to priedėlis nustojo veikti.

Ardymas nesudėtingas, tai nėra ką parašyti. Bet pajungus prie maitinimo šaltinio priedėlis valgo kažkiek ne logiškai daug amperų, maitinimo šaltinį apribojau ties 2A, ko turėtų tikrai užtekti normaliam veikimui, bet maitinimo šaltinis šoko į apsaugą, nes srovė viršijo 2A. Ardome.

Nebaisiai daug detalių, matomos RAM/ROM mikroschemos nevalgo 5V, taigi, viskas maitinasi per DC/DC konverterius. Gal ir geras ženklas, jeigu konverterio nepramušė – veiks. Kairėje foto matosi 4 didesni droseliukai, paprastai droseliukai būna DC/DC konverterio schemos dalis. Dešinėje pusėje yra tik vienas AMS1117, toks tradicinis pas kiniečius Texas Instruments LM1117 klonas. Jo maksimali įtampa 15V, taigi, 12V prijungimą jis turėjo išgyventi, o vat šalia droselių esantys AS20B5 pažymėtos mikroschemos (realiai MT3520B) greičiausiai neišgyveno, maksimali įtampa tik 6,5V.

Tipinė jungimo schema:

Visas mikroschemos aprašymas yra čia.

Tikrinam DC/DC konverterius – geras ženklas, įėjimas nepramuštas į išėjimą, atsiranda tikimybė, kad už konverterio mikroschemos išgyveno. Teks pakeisti ir pabandyti. Bėda tame, kad tos mikroschemos niekas iš patikimų tiekėjų neturi, teko užsakyti iš AliEkspress – o to labai nemėgstu, nes 90% mikroschemų iš ten – padirbtos arba iš viso neveikiančios.

Praėjo kiek laiko, mikroschemos atvažiavo ir buvo įlituotos. Stebuklas įvyko:

Išvada – 12V sudegino visas keturias mikroschemas, bet viskas, kas liko už jų išgyveno. kadangi testas sėkmingas, priedėlis veikia, tai šiek tiek diagnostinių duomenų:

Kitoje pusėje esantis AMS1117 gamina 1,837 V.

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 :).

Ventiliatoriai pakeisti, nors teko prie to padirbėti – visų pirma tvarkingas sulituoti ventiliatorių laidukus prie nukirptų senųjų ventiliatorių jungčių, užtraukiant termokembriką, po to dar pasirodė, kad ventiliatorių skylės varžtams per didelės, gerai, kad turiu ne mažą dėžę visokių kompiuterinių varžtelių, tame tarpe ir ventiliatorių tvirtinimo varžtų, tie puikiausiai tiko.

Laukiam lazerio spindulius vartančių varikliukų gavimo…

2024.12.03

Varikliukai gauti ir sumontuoti. Patys varikliukai tai tiko idealiai, bet niekada nebūna viskas lengva – dviejų varikliukų dantračiai trūkę, uždėjus teko įtvirtinti specialia, UV šviesoje kietėjančia derva. Laikosi tvirtai. Naujas varikliukas laisva eina vartoja apie 5 mA.

Naujasis varikliukas su klijuotu dantračiu kairėje, o dešinėje jau sumontuotas. Kadangi nauji varikliukai atvažiavo be jungčių, teko senąsias jungtis prilituoti prie laidų, viską užtraukti tinkamos spalvos termokembriku. Prietaisiukai patikrinti ir veikia kaip numatyta gamintojo. Apie remonto kainą nesakysiu, nes gaunasi daugiau nei nauji prietaisiukai 🙂.