Arduino tamsi tema 2019.07.19 at 10:12

Prisiminiau, kad senokai buvau įsijungęs Arduino IDE. Įsijungiau, pasiūlė atsinaujinti. Ką padarysi, atnaujinau… Bet atnaujinant išsitrynė rankiniu būdu įmontuota tamsi tema, man kažkaip ir gražesnė, ir programint patogiau. Atrodo va taip:

O parsisiųsti galima iš čia:

https://github.com/jeffThompson/DarkArduinoTheme

Peugeot 206, paskutinis remontas 2019.07.05 at 11:20

Bet apie viską paeiliui. Visų pirma, keista, kad jau labai seniai rašiau, atrodo tų darbų pilna ir būtų ką, bet laiko trūksta ir mintys nesidėlioja… Tai dabar toks nedidelis remontą aprašantis straipsnelis, kuris, manau, turėtų vadintis „Peugeot 206 – prapūstos purkštuko tarpinės keitimas“.

Iš pavadinimo ir taip jau aišku, kas per gedimas (gan standartinis ir populiarus pas dyzelinius variklius) – slėgis iš cilindro, per varinę tarpinę tarp purkštuko ir galvos/bloko pabėga laukan, kartu nešdamasis ir karšo dyzelinio kuro dulkes laukan. Angliškai tas dalykas vadinasi Diesel Injector Black Death. Nieko ten labai jau Death’iško, o vat Black’o, priklausomai nuo liko, gali būti labai daug. Vienintelis negerumas galintis atsirasti dėl prapūtimo – jeigu prapučiama tarp tarpinės ir bloko, gali išdegti bloko lygus paviršius, tapti duobėtas ar gruoblėtas, po to jau jis nebesandarins netgi įdėjus naują tarpinę. Jeigu prapučiamą tarp tarpinės ir purkštuko – žymiai mažiau bėdos, purkštuką, blogiausiu atveju, galima dėti ir naują ar naudotą, bet sveiką. Tai va, toks dalykas atsitiko ir Pežukui, aišku, sumažėjo trauką, atsirado papildomas šnypštimo garsas, o salone kaip reikiant smirdėjo svylančiu dyzeliu. Sugalvojau, kad reikia sutvarkyti tą bėda, nes Pežukas tapo per mažas ir buvo priimtas sprendimas jį parduoti.

Ardymas nesudėtingas, ypač pasinaudojant Peugeot Service Box ir SEDRE pagalba (Peugeot servisinės programos su remonto aprašymais). Nusiėmus oro kolektorių atsiveria va toks vaizdelis:

Nors ir atrodo viskas purvina, iš tikrųjų taip nėra. Ten, kur oro kolektorius jungiasi su velenėlio laikikliu vis dar nenuvalyti tarpinės likučiais, ten kur velenėlis – tepalas, kuris ten ir turi būti. O blogietis pirmasis purkštukas yra pats kairiausias, ir dar tuo juoduliu išdirbęs kaimyną, todėl gali atrodyti, kad prapūsti du purkštukai:

Visų pirma, kol neišmontuoti purkštukai – juodulio valymo darbai. Tam reikės šepetėlių, kantrybės ir Wurth Carb Cleaner’io (5861113500). Tas chemikalas puikiai tirpina juodulį, po to nesunkiai nusivalo.

Nuvalius galima išmontuoti purkštuką, irgi nebaisiai sudėtingas darbas – atsukti vieną varžtą, pasidžiaugti, kad purkštukas lengvai išsitraukė (kartais gali būti prikepęs, tada reiktų specialių įrankių ištraukimui arba kviestis meistriuką į pagalbą, apie 50 Eur kainuotų ištraukimas). Ištraukus purkštuką galima rinktis iš dviejų variantų – dėti visiškai naują arba restauruoti senąjį. Naujas ~250-300 Eur, restauravimas ~80 Eur. Beje, prieš montuojant purkštuką būtina užmesti akį į skylę, paprastai ten reiks išvalyti prikepusį dyzelinį kurą, o tuo pačiu ir įsitikinti, kad tarpinės guolis nepažeistas ir sandarins gerai. Jeigu būtų pažeidimas yra du variantai – restauruoti paviršių nufrezuojant kol nebebus pažeidimo ir dėti atitinkamai storesnę tarpinę (nes purkštukas negali būti giliau net per milimetrą) arba nerestauruojant, tiesiog pieš montavimą patepti aukštos temperatūros sandarinimo silikono (kai kas vadina raudonu silikonu). Nors man pasisekė ir paviršius nebuvo pažeistas, aš visgi rinkčiausi restauravimą.

Nuvalius apnašas, tarpinės likučius ir kitus nešvarumus vaizdelis tampa gerokai malonesnis akiai, bet pastebėjau ir kitą blogumą – ant velenėlio kumštelių matomas didelis išdirbimas, metalo nusidėvėjimas. O tai, savo ruožtu, stipriai įtakoja vožtuvų atidarymo ir uždarymo laikus, dėl ko gali sumažėti trauka, pablogėti išmetamųjų dujų parametrai ir atsitikti kiti negerumai.

Čia labiausiai pažeistas kumštelis, nuzulintas metalas, toliau netgi matomas ištrupėjimas… Kiti pažeisti irgi, todėl tokį velenėlį jau reikia keisti. Daiktas tikrai ne pigus, o ir Peugeot atstovybės detalių tiekimas pjauna buku peiliu per nervus, bet po ilgo laukimo velenėlis visgi atvažiavo.

Velenėlio pakeitimui reikia nusiimti jo laikiklį, nesudėtinga, bet daug varžtų ir reikia nuimti skirstymo diržą. Čia svarbu, kad nepabėgtų velenėlio ir alkūninio veleno padėtis, nes jie turi būti būtent tokie kokie turi būti, kitu atveju pasekmės gali būti nuo variklio neveikimo iki vožtuvų sulankstymo ir po to jau neveikimo + brangaus remonto. Velenėlio ir alkūninio škyvus labai patogu įtvirtinti atitinkamo diametro grąžtais, tam yra specialios skylės. Tai ir viskas, nuėmus diržą, atsukus laikiklį visą konstrukciją galima neštis ant stalo permontavimui. O vaizdas lieka toks:

Čia jau viskas nuvalyta ir sumontuotas naujas purkštukas su nauja varine tarpine. Tuo pačiu patikrinti ir karomislai, žodis atėjęs ir rusiško „коромысла“. Čia tos svirtelės, kurias spaudo velenėlio kumšteliai, kad atidarytų vožtuvus, šiuo atveju jie yra 8, nusiima paprastai, nes čia jų niekas nebelaiko. Kadangi nusidėvėjimo nėra – palikti laukti velenėlio.

O velenėlio laikiklis, atsukus dar saują varžtų, skyla į dvi dalis, tarp kurių ir įspraustas velenėlis.

Būtina patikrinti abiejų pusių velenėlio guolius, tas vietas, kur laikiklis laiko velenėlį (indėklų čia nėra, taigi, visas išdirbimas atitenka pačiam laikikliui). Bet paviršiai gražūs, nusidėvėjimo nėra, taigi lieka tik viską gražiai nuvalyti.

Truputis „prieš ir po“:

Ir kita pusė, „prieš“ nebeišliko:

Valymas plastikiniu šepečiu ir tuo pačiu Carb Cleaner’iu. Beje, jokių tarpinių čia originaliai nėra, viskas sandarinama silikonu/skysta tarpine/ir kiti pavadinimai, priklausomai nuo servYzo ar žmogaus. Žinoma, naudoju geriausia, Victor Reinz gamybos.

Naujasis velenėlis jau įmontuotas į laikiklį, šalia liūdi ir senasis, jam tai paskutinė diena ant stalo, toliau tik metalo laužas…

Dar bendras vaizdas prieš uždedant:

Nuotraukos apačioje matosi, kad turbinos šiluminė izoliacija tokia… aptrupėjus, ar kaip čia, vienu žodžiu, lupam ją lauk ir keičiam nauja, nes tokios naudoti jau nebegalima. Ir vėl, originalios dalys važiuoja laaabai ilgai. O kol važiuoja tęsiam surinkimą. Taigi, uždėjus velenėlio laikiklį reiktų uždėti diržą ir būtų viskas, bet pagalvojau – o kada aš dar čia prikišiu nagus, gal geriau dėti ir naują diržą. Nu… Gerai. Bet jei jau bus naujas diržas tai reiktų ir naujo įtempėjo jam. O kad jau naujas įtempėjas tai reikia ir visus guoliukus pakeist, tuo pačiu diržu dar sukasi ir vandens siurblys, kur antifryzą varinėja, nu tai ir tą ta pačia proga reik pakeist. Reiškia jamam visą komplektą (gerai, kad yra rinkinys su visom reikiamom dalim) ir keičiam. Bet – skirstymo diržas yra po generatoriaus/kondicionieriaus diržu, norint pakeisti skirstymo diržą pirmiau reikia nuimti generatoriaus diržą. Irgi nesudėtinga, nuėmiau, bet vėl pagalvojau „o kada dar aš čia prieisiu jį pakeist, keičiam, kad jau nuiminėju“. Ir vėl prasidėjo ta pati muzika – jei jau keičiam diržą, tai reikia keisti ir įtempėją, jei jau įtempėją… Ну и понеслось… Gerai, kad ir generatoriaus diržo keitimui yra pilnas rinkinys, su viskuo kas priklauso. O kai jau viskas pakeista – atvažiavo ir dar daugiau dalių ;).

Galima tęsti surinkimą. Pakeitus turbinos šiluminę izoliaciją galima baigti surinkimą uždaryti kapotą. Bet taip darytų gal koks dėdė Vasia iš trečio garažo, o aš dar apčiupinėjau visus prieinamus laidus. Ir gerai, nes:

Radau pratrintų laidų, juos, žinoma, užizoliavau, kai kuriuos, dar nepratrintus laidus papildomai apvyniojau tam skirta medžiagine izoliacija. Laidų paieškos ir surinkimo eigos vaizdeliai:

Kaip gi be atitinkamų lipdukų !!!

Ir besikrapštydamas apie radiatorių (nes reikėjo išimti, kad pakeisti turbinos šiluminę izoliaciją) pastebėjau, kad užstrigęs radiatoriaus ventiliatorius. Šiaip ne taip išmontavau, čia truputį sunkiau, nes siaura vieta ir rankoj turi būti kokie 4-5 sąnariai, o ne viena alkūnė ir riešas. Išėmus paaiškėjo kaltininkas – ventiliatoriaus varikliuko korpusas vienoje vietoje parūdijo, rūdys išsipūtė, pakėlė magnetus, o tie įsirėmė į rotorių, nu ir tam jau nebebuvo kur dingt, teko nebesisukt. Dar šalia ventiliatoriaus pamačiau kokią tai dėžutę ir sugalvojau, kad man visai smalsu pamatyt, kas viduje.

Būūū… Žalėsiai. Vienas laidas visai nutrūkęs. Gerai, kad įkišau nosį, reiks ir čia sutvarkyt. Ir draugas ventiliatorius:

O laidus prasiardžiau, visus sukorodavusius ar pajuodusius po izoliacija nukirpau. Bet dabar pritrūko jų ilgio, tai reikia primontuoti naujus galiukus. Žinoma, visi sujungimai lituojami ir užtraukiami termokembriku su klijais.

Bejunginėjant laidus, pamačiau, kad yra dar vienas blogis – ventiliatriaus variklio srovę ribojantis rezistorius ir sukorodavęs, ir termoapsauga suveikus, taigi, nebeveikia ir pats rezistorius. Šita detalė buvo pas tiekėją, tai iš karto gavau naują:

Darbo vieta ir kur viskas surinkta, suvyniota ir beveik paruošta sudėti atgal (trūksta vienos jungties):

Ventiliatoriaus bandymai patvirtino teisingą veikimą visais režimais, dabar jau galima uždaryti kapotą ir laikyti, kad prapūsto purkštuko remontas baigtas.

O kodėl paskutinis ? Nes po remonto praėjo technikinę ir mūsų Pežukas perleistas kitam savininkui…

ELM 327 Bluetooth diagnostikos adapteris 2019.02.22 at 15:09

Šiandien gavau štai šitą diagnostikos adapterį iš AliExpress:

https://www.aliexpress.com/snapshot/0.html?orderId=97546412976059&productId=32848984226

Pagal aprašymą:

Mini Elm327 Bluetooth OBD2 V2.1 OBD 2 Car Diagnostic-Tool Scanner Elm327 OBDII Adapter Auto Diagnostic Tool Car code Reader

Kažkaip netikėjau, kad porą eurų kainuojantis žaisliukas iš tikrųjų bus V2.1 versijos, parašiau pardavėjui ir tas užtikrino, kad tikrai V2.1, taigi, užsisakiau. Kol laukiau mintyse jau kūriau tekstą, kurį dėsiu į disputą dėl pinigų grąžinimo, tipo nepalaiko tas žaislas deklaruojamos versijos, įsivaizdavau kaip pardavėjas verks ir pėdins kažkur toli smulkiais žingsneliais. Ir ką, dabar mintyse atsiprašiau 😀

Detalių žymėjimas schemose 2019.01.22 at 07:11

Kažkada prisireikė pasižiūrėti, kaip žymisi kažkokia detalė schemoje, tai radau visą sąrašą:

https://en.wikipedia.org/wiki/Reference_designator

Designator Component type
A Separable assembly or sub-assembly (e.g. printed circuit assembly)
AT Attenuator or isolator
BR Bridge rectifier
BT Battery
C Capacitor
CN Capacitor network
D Diode (including LED, TVS, thyristor, Zener)
DL Delay line
DS Display
F Fuse
FB Ferrite bead
FD Fiducial
FL Filter
G Generator or oscillator
GN General network
H Hardware, e.g., screws, nuts, washers
HY Circulator or directional coupler
J Jack (least-movable connector of a connector pair) | Jack connector (connector may have „male“ pin contacts and/or „female“ socket contacts)
JP Jumper (Link)
K Relay or contactor
L Inductor or coil or ferrite bead
LS Loudspeaker or buzzer
M Motor
MK Microphone
MP Mechanical part (including screws and fasteners)
P Plug (most-movable connector of a connector pair) | Plug connector (connector may have „male“ pin contacts and/or „female“ socket contacts)
PS Power supply
Q Transistor (all types)
R Resistor
RN Resistor network
RT Thermistor
RV Varistor / Variable resistor
S Switch (all types, including push-buttons)
T Transformer
TC Thermocouple
TP Test point
TUN Tuner
U Integrated circuit (IC)
V Vacuum tube
VR Voltage regulator (voltage reference) / Variable resistor (potentiometer or rheostat)
X Socket connector for another item not P or J, paired with the letter symbol for that item (XV for vacuum tube socket, XF for fuse holder, XA for printed circuit assembly connector, XU for integrated circuit connector, XDS for light socket, etc.)
XTAL Crystal
Y Crystal or oscillator
Z Zener diode

Elektronika ir dūmai 2018.10.31 at 08:40

Visa elektronika padaryta iš dūmų. Kai dūmai išeina – elektronika nebeveikia.

© o.eletronics

Ni/MH baterijų kroviklis 2018.09.12 at 15:13

Tenka dirbti su prietaisais, kuriuose gyvena Ni/MH baterija, sudaryti iš 3 AAA celių. Kadangi prietaisai kartais pabūna kurį laiką neremontuojami ar nenaudojami – baterijos išsikrauna. Sumasčiau, kad reiktų pasidaryti kokį nedidelį Ni/MH kroviklį, kad būtų galima krauti baterijas ne prietaisuose ir truputį didesne srove. Tam pasirinkau Linear Technology mikroschemą LTC4060. Mažas korpusas, ganėtinai protinga – turėtų būti geras žaislas. Bet kaip visada, dariau vyriškai, t.y. pirma darom, po to kai niekas neveikia skaitom manualą. Bet apie viską paeiliui. Pradėsim nuo schemos.

Ir apie detales, tikiuosi nepamiršiu paminėti ką reikia pakeisti norint, kad schema dirbtų geriau, arba tiesiog dirbtų. Apie detales, iš kairės į dešinę. Pirma detalė ir pirma klaida – mažytė mikro USB jungtis. Klaida, nes, darant vyriškai pagalvojau, kad 5V maitinimo schemai užtenka ir parinkau jungtį, į kurią galima įkišti telefono/planšetės kroviklį. Pasirodo, minimalus maitinimas yra toks:

1 celei 4,5V
2 celėms 4,5V
3 cėlėms 7V
4 cėlėms  8,7V

Iš čia išvada – jeigu krauti 1 ar 2 celes, galima naudoti ir mikro USB jungtį. Toliau 1 μF įėjimo kondensatorius, nėra ką apie jį daug kalbėti, R1 ir LED1 – krovimo indikacija, priklijavau raudoną LEDą. R2 ir R3 – nustato krovimo srovę. RN1 – pulldown rezistorių matrica. SW2 – mikrojungikliai, šį kartą schema dovanų gavo kilmingus Wurth Electronic jungikliukus. IC1 – mūsų darbinis arklys, LTC4060. R9 ir LED2 – maitinimo indikatorius. Gėris tame, kad jį valdo pati LTC mikroschema. 10K rezistorius gal kiek didokas, LEDas silpnai šviečia, bet man taip geriau – neerzina. T1 – galinis tranzistorius, kurį junginėjant ir vykdomas krovimas. Kaista, netikša, kaip turi būti, o pas mane nenumatytas aušinimas. Tęsiant schemos tobulinimą – vienas iš punktų kuriuos reikės taisyti. C3 – išėjimo kondensatorius, o toliau tik speciali jungtelė.

Apie mikrojungiklius. Pirmasis užtrumpina R2 rezistorių, kuris yra lygiagrečiai sujungtas su R3, taigi, kai jungiklis išjungtas bendra rezistorių varža nustato vienokią krovimo srovę, o kai R2 užtrumpintas lieka tik R3 varža ir atitinkamai keičiasi krovimo srovė. Čia iš karto pasakysiu, kad 1A ir 0,5A yra daugokai, ypač mano atveju – kaista T1. Pakeisiu rezistorius, kad būtų mažesnės srovės (tarkim, per pusę), galbūt padės sumažinti kaitimą. Antras jungiklis parenka baterijos chemiją – NiMH arba NiCd. Čia kaip ir toliau – viskas paprasta, du loginiai lygiai kuriuos mikroschema supranta kaip dvi atitinkamas reikšmes, GND ir maitinimo įtampa. Panaudojau „timptelėjimą žemyn“ (pulldown), kad būtų galima naudoti ON-OFF tipo mygtukus. Pauzės mygtukas sustabdo krovimą, automatinis pakrovimas baterijos įtampas nukritus iki 1,3V valdomas 4 mygtuku. Du sekantys mygtukai, SEL0ir SEL1, nustato baterijos celių skaičių. Ir paskutinis mygtukas tiesiog išjungia mikroschemą. Viskas paprasta, elementaru ir aišku. Jungiam prie 5V telefono kroviklio, tikiuosi sprogimo. Ar bent jau dūmų. Bet nieko. Ta prasme iš viso nieko, net maitinimo LEDas nedega. Susinervuoju, ieškau klaidos, murmu burtažodžius, bet niekas nepadeda. Ties šita viena radau, kad 3 celėm reikia bent 7V, o mano kroviklis duoda tik 5V, kurie ateina, pamato kas per situacija ir stovi kamputyje nervingai rūkydami. Ech, jungiu prie laboratorinio maitinimo šaltinio, užvirinu maksimalią 10V įtampą – ir oba ! Maitinimo LEDas žiba, o krovimo LEDas kartkartėm blankiai mirktelna. Nu, bent šiokia tokia gyvybė. Bet o kodėl blankiai mirktelna ? Mikroskopuoju krovimo LEDo rezistorių. Ach tu netikša, jis vietoj 560R turi truputį daugiau varžos. Kokį 1000 kartų daugiau – 560K. Natūralu, kad LEDas blankus. Susirandu Lemonos maišiuką su atkirptais rezistoriais, ir – ten jie visi 560K. O ant maišiuko parašyta 560R. Sumurmu dar kelis burtažodžius Lemonos adresu. Pasiėmiau 1K5 reziką ir prišoviau prie PCB. Bet vistiek, rezikas nepaaiškina LEDo blyksėjimo. Čia jau mano kasiakas – maiteko srovės ribojimas nusuktas ant minimumo, tai schema pabando imti daugiau srovės ir atsijungia. Blykst, ir vėl iš naujo. Atsukau daugiau – viskas sužibo kaip Kalėdinė eglutė. Vis dar nesprogo, ir dūmų nėra… Tik kaista transzistorius – reiks pataisyti srovės ribas, o tranzistoriui užklijavau Rasberio PI aušintuvėlį, mėtėsi stalčiuj be darbo.

PCB vaizdas (neišpaišytas padengimas variu):

Ir keletas foto:


Nekreipkit dėmesio į rezistorių matricą, netyčia ją kitoje pusėje prilitavau, gerai dar kad 1 pino vieta teisinga. Dar šiek tiek matavimų. Maitinimo šaltiniui rodant 7,6V ir 0,45A baterija gauna 4,39V ir 0,5A. Gaunasi apie 65 % efektyvumas, nors maitinimo šaltinis nelabai tiksliai matuoja įtampą ir srovę, vis tiek – ne kažką…

Eagle failai ir panaudotos bibliotekos yra čia. Įspėju – netaisyta !

Atnaujintas Texas Power Management Guide 2018.08.14 at 07:34

Šiandien atėjo naujas katalogėlis, naudinga informacija :).

Aukštos įtampos maitinimo šaltinis – pakeliui link Nixie Clock kūrimo 2018.08.03 at 15:21

Kol dar vyksta dujinio išlydžio indikatorinių lempų (Nixie) laikrodžio visos schemos kūrimas (sakyčiau ir tas jau beveik baigtas) sumasčiau, kad reikia pagaminti ir išbandyti nedidelę schemos dalį – lempų maitinimo šaltinį. Jo darbas – iš 12V padaryti apie 170V, kurių reikia lempos veikimui. Schemą stengiausi daryti kuo mažesnę, turint galvoje, kad ant PCB gyvens ir 170VDC – padidinti atstumai tarp takelių (dėl pramušimo). PCB gaminta pas JLCPCB, nereklamuoju, nes naudojuosi ir Seeed’u, bet ir šitie neblogai padarė. DC/DC bloko schema yra tokia:

Kaip visada, apie elementus iš kairės į dešinę. Maitinimo prijungimo kontaktinė kaladėlė, pagal projekto užduotį maitinimas 5-12VDC, praplėstos ribos nuo 3VDC iki 40VDC. MC34063AD – 1,5A DC/DC konverteris – schemos pagrindas. Kondensatorius C2 nustato generatoriaus dažnį. Droselis L1 – jame kaupiama energija, kaip ir visuose DC/DC keitikliuose. D1, Q3 ir R3 turėtų paspartinti Q4 tranzistoriaus atsidarymą/uždarymą. Q4 žinoma yra aktyvusis schemos elementas, raktas :). Viskas veikia tradiciškai – kai Q4 atidaromas srovė teka per L1 ir Q4, energija kaupiama droselio magnetiniame lauke, tuo metu srovė neteka per D2, apkrova maitinama iš kondensatoriaus C5. Kai Q4 uždaromas L1 priešinasi srovės kitimui iš karto apkeisdama elektromagnetinio lauko poliarumą, todėl induktyvumo įtampa prisideda prie maitinimo šaltinio įtampos. Šita padidinta įtampa dabar teka per L1 ir D2, pakraudama C5 iš kurio vėl maitinama galutinė apkrova. Ir ciklas kartojasi iš naujo. Paprasta. Skaičiavimai schemai nesudėtingi, yra MC34063AD mikroschemos aprašyme. Pagal skaičiavimus droselis turi būti 52,272 uH 1,410 A, artimiausias 53 uH 1,87 A, PE-53831SNL. Pagal skaičiavimus išėjimo kondensatorius turi būti 2,872 uF, ne mažiau 200V įtampos, artimiausias CKG57NX7T2E335M500JJ, 3.3 µF, ± 20%, 250 V. Pagal skaičiavimus Ct kondensatorius turi būti 382,98 pF,  rtimiausias 390 pF. So tokiais parametrais grįžtamąjį ryšį galima reguliuoti tiek, kad išėjime turėtume nuo 18,3V iki 188,75 V. Kad reguliavimo potenciometras daugiasūkis tai turbūt ir taip aišku.

PCB gavosi nediduke, 34×22 mm.

O gyvai atrodo taip:

Toliau veikimo bandymas. Tuščia eiga sureguliuojam 170V, tas pavyko nesunkiai. Prijungiam vieną indikatoriaus segmentą (iš pradžių jungiau 3, po to 8 – daugiau šviečiančio ploto).

Vienas skaičius 8 prie 12V įėjimo valgo 0,2A, t.y. 2,48W:

Toliau bandymai.

  1. Veikimas prie minimalios įtampos. Prie 5V – neveikia, minimali įtampa yra 5,6V, mažiau – indikatorius nebešviečia. Galim užskaityt, ne tiek daug skiriasi nuo projektinės, tuo labiau, kad pasukiojus potenciometrą gal dar išpeštume veikimą prie mažesnių įtampų.
  2. Įtampos stabilumas:

Štai, prie tos pačios apkrovos stabilumas geras, reiškia turėtų veikt.

Šiandien sergu, tai sumasčiau padaryti efektyvumo bandymus. Matavimas „žemoje“ pusėje:

0,235 A ir 12,188 V = 2,86418 W

Matavimas „aukštoje“ pusėje:

11,98 mA ir 169,8 V = 2,034204 W

Naudingumo koeficientas 2,034204/2,86418 = 0,710. Taigi, padauginus iš 100 %, gautume NVK 71%. Galėtų būti daugiau.

Čia visi reikiami failai, LBR, SCH, BRD ir netgi Gerberiai.

Lempa su judesio davikliu Luxa 102-150/500W 2018.04.25 at 12:44

Ėt, turbūt dauguma tokį dalyką turinčių žmonių anksčiau ar vėliau (greičiausiai anksčiau) susiduria su bėda – nustoja veikti lempos judesio daviklis. Taip atsitiko ir su mano dviem lempomis Luxa 102-150/500W. Aprašymas yra čia. Iš pradžių pradėjo veikti keistai – mirksėti kokių 1-3 Hz dažnių, suveikinėti kai nereikia ir panašiai. Galų gale visai nebeįsijungė. Ką padarysi, reikia ardyti ir tikrinti, kas gliūčina. Ardymo neaprašinėsiu, nes kiekvienai lempai jis gali būti skirtingas, o vat schemos – daugiau mažiau vienodos. Ypač maitinimo dalis. Taip taip, būtent maitinimas nusprogo. Ten toks piguvinis, bet labai dažnai (beveik visada) naudojamas kondensatorinis maitinimo šaltinis. Pajungus elektrą jis duoda tik varganus 6V, vietoje 24V, todėl visa elektronika kaip ir veikia, ji už 5V stabilizatoriaus, bet 24V relė jau nebesudirba. Vat ir gedimas. Schema labai tipinė ir nesudėtinga:

Visos dalys labai elementarios ir pigios, todėl šita schema naudojama visur (net ir kilmingesniuose prietaisuose), kur užtenka keliolikos miliamperų maitinimo srovės. Daug srovės toks maitinimo šaltinis negali duoti. Pagrindinė detalė čia yra kondensatorius CX1. Bet apie viską paeiliui, kaip visada, iš kairės į dešinę. Rezistorius R1 skirtas apriboti srovę, tuo pačiu prisideda prie kondensatoriaus reaktyvinės varžos (Rbendra=R1+Xc). Rezistorius R2 skirtas tam, kad iškrauti kondensatorių CX1, kai prietaisas išjungiamas. Kondensatorius CX1 yra X2 tipo, 047 μF, 275V, būtent jis ir apriboja įtampą iki reikiamos (senas geltonas, pilkas naujas). 

Bet įtampa čia vis dar kintama, todėl toliau eina elementarus diodinis tiltelis (D1-D4). D6 ir D8 yra du 12V nuosekliai sujungti stabilitronai, jie stabilizuoja įtampą ties 24V. Už jų, papildomam išlyginimui skirtas kondensatorius (teisingiau gal būtų buvę kondensatorių dėti tarp tiltelio ir stabilitronų, bet elektriškai tai tas pats). Originaliai buvo 220 μF 25V kondensatorius, bet pakeičiau jį į 220 μF 35V, nes schemos darbinė įtampa 24V, labai jau arti kondensatoriaus maksimalios įtampos. Arba pataupė, arba, kas labiau tikėtina, taip užprogramavo dar vieną senatvinį gedimą, tyčia… Vis tik įtampa truputį pakils – kondensatorius su laiku jos neatlaikys ir sprogs. Didesnės darbinės įtampos kondensatorius turėtų dirbti be didesnių problemų.

Tiek apie teoriją, Internete yra labai gerų techdokų su parinkimo skaičiavimu, tai dabar apie tai nepasakosiu. Gal kada nors bus atskiras straipsnelis „Kondensatorinių maitinimo šaltinių projektavimas“.

O šituo atveju kaltininkas vietoje deklaruojamų 0,47 μF teturėjo 0,14 μF, dėl to ir įtampa pakito. Kodėl pasikeitė talpa – nežinau, senatvė, karštis, darbo režimai – viskas gali būti. Įmontavus naują X2 tipo (būtent tokio reikia) schema atsigavo ir viskas vėl veikia.

ĮSPĖJIMAS ! Schemos didžiausias minusas – nėra jokio atrišimo nuo aukštos įtampos, tam tikromis sąlygomis schema gali stipriai nupurtyti arba nužudyti. Matavimus rekomenduoju daryti jungiant per skiriamąjį transformatorių.

MAX6955 – galingas LED draiveris su galybe funkcijų 2018.03.26 at 14:37

Čia toks pažintinį darbelį susigalvojau, galima sakyti už bausmę ir kad nauda būtų. Istorija nutiko 2017.07.25 22:50 Lietuvos laiku. Tokai ir istorija – truputį viršijau greitį, tai gavau baudą su teisių atėmimu. Nu ten ne daug – 53 km virš leistino buvo. Taigi, kadangi tapau teroristu, sugalvojau, kad reiktų man laikrodžio, kuris rodytų kiek laiko dar būsiu teroristų sąraše. Toliau jau būtų galima galvoti – ar tik sekundes skaičiuoti, ar kažkaip kitaip išdėlioti informaciją. Pavyzdžiui, metuose yra 31536000 sekundės, tai 8 simboliai. Bet jeigu, tarkim, norėčiau parašyti datą, kada baigiasi bausmė, tai būtų [2018.07.25_22:50:00] 15~16 simbolių (žiūrint kaip pavyks su skirtukais – taškais ir tarpu susitvarkyti). Chm, o valdyti šešiolika 7 segmentų indikatorių jau yra iššūkis. Čia mums į pagalbą skuba „Maxim Integrated“ kūrinys – MAX6955 mikroschema. Tikrai daug funkcijų ir tokio dvilypo – patogiai nepatogaus valdymo ir konstrukcijos. Patogumas tame – kad ji daug darbo padaro pati, nuimdama apkrovą nuo procesoriaus. O nepatogumas sudėtingume (vien Čarlipleksingas ko vertas), gerai nors, kad aprašymas toks pusė velnio. Taigi, pakeliui į laikmačio (nes čia realiai ne laikrodis) sukūrimą, susiveikiau MAX6955 bandymų plokštę:

Ant jos gyvena dvi MAX6955 mikroschemos, valdančios 16 indikatorių po 14 segmentų. Sujungimas paprastas, standartinis I²C ir maitinimas (5V). Kad būtų greičiau pasikūriau viską ant Arduino UNO, ten visai patogi Wire biblioteka, padaranti pusę darbo. Internete radau ir biblioteką MAX6955 valdymui, bet ja naudotis nenoriu, kad išsiaiškinti kaip valdyti MAX6955 iš bet kokio procesoriuko. Pradėjau nuo paprastų dalykų – pasijungiau bandymų plokštę prie senuko PC, per LPT jungtį. Maxim’as turi demo programėlę, kuri valdo MAX6955.

Geras dalykas, kad apačioje rašo, ką siunčia į MAXus. Taigi, pradėjau aiškintis, kaip tas dalykas daromas. Viskas lyg ir aišku – siunčiam konfigūracinius duomenis, po to galima varyti duomenis ekraniukui. Čia porą dienų keikiausi, nes vyko nerealūs ir neįmanomi dalykai, greičiausiai dėl ateivių, rusų arba amerikonų įtakos – nu neveikė niekas. Niekaip. Prijungus prie PC – veikia, prijungus prie Arduino – ne. Galų gale sumasčiau pažiūrėti, kas man čia meluoja ir pasikabinau ocsilografą prie SCL ir SDA, kai duomenis siunčia PC. Gerai, kad pavyko nusilaužti MSO2072A dekodavimo licenzijas, tai mačiau iškoduotus duomenis. Pasirodo, PC rašo duomenis į 0xCA ir 0xC0 adresus (pirma ir antra mikroschema), o oscilografas rodo, kad rašo į 0x65 ir 0x60 adresus. CHA ! Va kur šuo pakastas. Netikėlis. Kad jį kur. Pakeičiau adresus programoje ir viskas pradėjo veikti. Beje, aprašyme irgi duoti 0xCA ir 0xC0… Toliau ir nebesigilinau kodėl čia tokia nesąmonė. Įdomu, su skaitymo adresais irgi tas pats ? Bet užtai dabar buvo galima mankštinti MAX6955 visom pozomis. Kad būtų lengviau – trumpas komandų sąrašas „для чайников“:

 

// Komnandos struktūra (adresas, funkcija, reikšmė)
// Funkcija: Dekodavimas                                                  -- 0x01
/* Reikšmės: Nėra dekodavimo (simboliai 7-0)                              -- 0x00
             HEX dekodavimas: simboliui 0, be dekodavimo: simboliai 7-1   -- 0x01
             HEX dekodavimas: simboliui 2-0, be dekodavimo: simboliai 7-3 -- 0x07
             HEX dekodavimas: simboliams 7-0                              -- 0xFF
*/
// Funkcija: Globalus šviesumas                                           -- 0x02
/* Reikšmės: Minimalus šviesumas                                          -- 0x00
             Maksimalus šviesumas                                         -- 0x0E
             Tarpinės reikšmės kas 0x01
*/
// Funkcija: Skanavimo limitas                                            -- 0x03 (kiek simbolių turi dirbti)
/* Reikšmės: Rodyti 0, 1, 2 simbolius                                     -- 0x02
             Rodyti 0, 1, 2, 3 simbolius                                  -- 0x03
             Rodyti 0, 1, 2, 3, 4 simbolius                               -- 0x04
             Rodyti 0, 1, 2, 3, 4, 5 simbolius                            -- 0x05
             Rodyti 0, 1, 2, 3, 4, 5, 6 simbolius                         -- 0x06
             Rodyti 0, 1, 2, 3, 4, 5, 6, 7 simbolius                      -- 0x07
*/
// Funkcija: Konfigūracija                                                -- 0x04
/* Reikšmės: Viskas išjungta                                              -- 0x80
             Konfigūracijos sumuojasi prie 0x80
             Išjungta                                                     -- 0x00
             Įjungta                                                      -- 0x01
             Lėtas mirksėjimas                                            -- 0x00
             Greitas Mirksėjimas                                          -- 0x04
             Miksėjimas išjungtas                                         -- 0x00
             Mirksėjimas įjungtas                                         -- 0x08
             Mirksėjimo skaitliukas nereaguoja                            -- 0x00
             Mirksėjimo skailiukas perkraunamas 2wire ack signalu         -- 0x10
             Simboliai P0 ir P1 neliečiami                                -- 0x00
             Simboliai P0 ir P1 ištrinami                                 -- 0x??
             Skaičių šviesumas - globalus nustatymas                      -- 0x00
             Skaičių šviesumas - individualus kiekvienam simboliui        -- 0x40
*/
// Funkcija: Displėjaus testas                                            -- 0x07
/* Reikšmės: Normalus veikimas                                            -- 0x00
             Displėjaus testas                                            -- 0x01
*/
// Funkcija: Simbolių tipas                                               -- 0x0C
/* Reikšmės: 14 segmentų simboliai                                        -- 0xFF
             16 arba 7 segmentų simboliai                                 -- 0x00
*/

Čia ne visa konfigūracija, bet pakankama, kad pradėti dirbti. Toliau duomenys (segmentai kaip pirmoje foto, numeracija iš kairės į dešinę):

// Duomenų rašymo struktūra (adresas, segmento ID, reikšmė)
/*
   Segmento ID:
   1 -- 0x20
   2 -- 0x21
   3 -- 0x22
   4 -- 0x23
   5 -- 0x24
   6 -- 0x25
   7 -- 0x26
   8 -- 0x27

   Taškas -- prie ASCII simbolio HEX reikšmės pridėti 0x80, prie DEC reiktų pridėti 128
*/

Štai ir viskas. Šitą žinant jau galima siųsti konfigūraciją į MAX6955 (užtenka vieną kartą, kol yra maitinimas – atsimins).

 

  Wire.beginTransmission(ID_MAX1_write);                                  // Inicializuojama pirma mikroschema
  Wire.write (0x01);                                                      // Dekodavimas visiems simboliams
  Wire.write (0xFF);                                                      // Dekodavimas visiems simboliams
  Wire.endTransmission();

  Wire.beginTransmission(ID_MAX1_write);                                  // Inicializuojama pirma mikroschema
  Wire.write (0x02);                                                      // Globalus šviesumas 0 lygio iš 16
  Wire.write (0x16);                                                      // Globalus šviesumas 0 lygio iš 16
  Wire.endTransmission();

  Wire.beginTransmission(ID_MAX1_write);                                  // Inicializuojama pirma mikroschema
  Wire.write (0x03);                                                      // Visi simboliai aktyvūs
  Wire.write (0x07);                                                      // Visi simboliai aktyvūs
  Wire.endTransmission();

  Wire.beginTransmission(ID_MAX1_write);                                  // Inicializuojama pirma mikroschema
  Wire.write (0x04);                                                      // Funkcijų rinkinys
  Wire.write (0x81);                                                      // Funkcijų rinkinys
  Wire.endTransmission();

  Wire.beginTransmission(ID_MAX1_write);                                  // Inicializuojama pirma mikroschema
  Wire.write (0x07);                                                      // Displėjaus testas įjungtas
  Wire.write (0x00);                                                      // Displėjaus testas įjungtas
  Wire.endTransmission();

  Wire.beginTransmission(ID_MAX1_write);                                  // Inicializuojama pirma mikroschema
  Wire.write (0x0C);                                                      // 14 elementų segmentai
  Wire.write (0xFF);                                                      // 14 elementų segmentai
  Wire.endTransmission();

Po to belieka tik nuspręsti ką noriu rodyti. Laikmatį programuoti kol kas patingėjau, bus vėliau, bet vaizdelis yra:

Gėris tame, kad mikroschema „moka“ beveik visus simbolius, tereikia nusiųsti teisingą kodą arba parašyti ASCII simbolius klaviatūra (čia 14 segmentų indikatoriams):

Ok, toliau vieną iš patogių funkcijų – segmento adreso automatinis padidinimas. Dėl to, jeigu nereikia kontroliuoti kiekvieno segmento atskirai, galima rašymą daryti taip:

  Wire.beginTransmission(ID_MAX1_write);                                  // Rašom į pirmą MAX6955
  Wire.write(0x20);                                                       // Pirmo segmento adresas
  Wire.write(0x00);                                                       // Į pirmą segmentą rašo 0
  Wire.write(0x01);                                                       // Į antrą segmentą rašo 1
  Wire.write(0x02);                                                       // ir t.t.
  Wire.write(0x03);                                                       //
  Wire.write(0x04);                                                       //
  Wire.write(0x05);                                                       //
  Wire.write(0x06);                                                       //
  Wire.write(0x07);                                                       // Į 8 sekmentą rašo 7
  Wire.endTransmission();

Patogiau 🙂