Monthly Archives: December 2008

LVDS duomenų perdavimas per UTP LAN kabelį

Pradėjau paišyti PCB skirta pajungti mano RGB matrica(s) prie kitų įrenginių ir nusprendžiau, prieš darant eksperimentus kiek paeksperimentuoti. Tada pačiupau senesnę savadarbę plokštę su Altera Cyclone 1 minimaliu čipuku su 100 kojų. Gerai, kad neskaičiau datasheeto, nes vėliau išskaičiau, kad 100 kojų pirmasis ciklonas nepalaiko pilnaverčio LVDS… Bet kažkas gavosi. Apie LVDS subtilybes nieko nežinojau, todėl teko pradėti nuo nulio. Ir dar viena bėda, kad reikia konstruoti du prietaisus- siustuvą ir imtuvą. Ir neaišku kurioje vietoje yra klaidos 🙂

Iš pradžių bandžiau daryti be PLL, nes jų trūkumas šioks toks… O štai vizardai kai užsispyre neleidžia naudoti mažų greičių. Iš pradžių bandžiau 100 megabitų greitį, bet gavosi tik su 200 megabitų.

Pats primityviausias siustuvas. Tikrai jo PCB nepritaikyta LVDS signalų siuntinėjimui. Toliau eina apie 2 metrai mėlyno, lanksčio UTP lan kabelio…
LVDS per UTP LAN kabeli

O čia paprasta iliustracija. Paleidžiam abu “aparatus” ir ištraukiu ir vėl ikišu LAN kištuką:

LVDS per UTP LAN kabeli
LVDS per UTP LAN kabeli
LVDS per UTP LAN kabeli

… ir kai atsigauna vaizdas, tada galiu ramiai per JTAG keisti “siuntėjo” RAM turinį ir duomenys puikiausiai persiduoda per tą kabelį.

LVDS per UTP LAN kabeli
(apačioje vaizdas iškraipytas todėl, kad pas siuntėją mažai atminties)

O šita sinchronizacijos bėda kol kas man nesuprantama.

Truputi techninės informacijos: Siuntėjas Cyclone EP1C3, taktinis dažnis 25MHz, toks pats dažnis ir persiunčiamas per vieną LVDS porą (3V). Siuntėjo viduje stovi dviejų kanalų x8 serializeris. Gautusi kaip ir 16 duomenų bitų. Tačiau aš duomenim naudoju tik 8 bitus, o likusius aštuonis naudoju tik adreso sinchronizacijai- paprasčiausiai siunčiu RESET signalą.
Imtuvas pasiima 25MHz taktinį signalą, susimaitina į savo PLL ir priima duomenis.

Ir šiaip šitas “negeras” rodymas kažkaip susijes su bitų seka. Nes transliuojant B/W ($00 ir $FF) vaizdą “kokybė” žymiai dažniau būna gera ir taškeliai visada užsidega savo vietoje.

Video kai kaišiojamas UTP kištukas:

Jau radau vieną klaidą mano naujojoje PCB. Tiesa, ji nėra esminė.

Reguliuojamas maitblokis (flyback)

Užduotis: padaryti reguliuojama stabilizuota maitinimo šaltinį, kuris būtų ekonomiškas, mažiukas, lengvai atkartojamas, saugus katastrofos metu, nebijotu trumpujų jungimų.
Priešistorė: man reikėjo padaryti maitblokį savo laboratoriniui maitblokiui (workbench power suply). Kaip pagrindinį šaltinį aš panaudojau pramoninį impulsinį maitblokį (kad ir ATX), todėl “kitokios” įtampos turi būti gaminamos papildomom priemonėm- impulsiniu stabilizatoriu. Kodėl impulsinis- todėl, kad nereikia didelių radiatorių.

Kaip pagrindą panaudojau National Semiconductors LM2585-ADJ mikroschemą. Ją radau kažkokiam prietaise. Tai kiek primityvokas ir senoviškas impulsinis stabilizatorius. Jo vidinis raktas gali junginėti iki 3A srovę ir max 65V impulsus. Mikroschemą galima maitinti nuo 4V iki 40V. Kuo daugiau maitinimo įtampos, tuo daugiau amperų bus galima išspausti. Svarbu atkreipti į tuos 65V.

Tipinė schema:
Flyback Regulator

Jei maitinsim prietaisą nuo 5V ir nekelsim įtampos, raudonai pažymėtų detalių galime ir nemontuoti.
Trafukas suvyniotas ant žiedo, kuri radau kažkokiam ATX maitblokyje. Jei svarbu jo spalva sviesiai salotinė, išorinis diametras 25mm. Jei kartosit schemą, nenaudokit labai mažiukų žiedelių- juose kaupiama energija ir geriau tas žiedas neužsisotintu. Pirminės apvijos (tiesa, suvyniojau dvigubu laidu, transformacijos koeficientas 1:1) apie 60uH. Jei išėjimo įtampa apie 5V tiks 47uH, o jei dar mažiau, induktyvumas kogero tiks dar mažesnis. Atkreipkit dėmesį į apvijų pradžių pajungimą.
Cin talpa 3x470uF+10uF keramika, Cout- 1000uF+10uF keramika+kažkiek tantalas. Išėjimo diodas S10S40 (40V, 5+5A, panaudojau tik vieną puselę. Beja jei rasit kur parašyta, kad 10A, tai čia reklaminis triukas, čia rašomas viso prietaiso suminis amperažas). Diodo įtampa kiek mažoka – peak reverse RMS tik 28V, bijau bus pykšt. Reikės įdėti ką nors geresnio.

Flyback Regulator
Mikroschema su nedideliu radiatorium. Trafukas priklijuotas prie PCB plokštės su termo klijais (nesugalvokit tvirtinti su varžtu iš geležies!)
Flyback Regulator
Tas didelis diodas tai “iškroviklis” 5KP58 (15000W Transient Voltage Suppression, TVS). Jei įtampa ant šio diodo viršija 58V jis atsidaro ir nukrauna energijos perteklių. Tai viena iš detalių pažymėtu raudonai. Kita, raudonai pažymėta detalė, tai paprasčiausias 3A šotki diodas- jis suvalgo neigiamus impulsus. Šios detalės apsaugos nuo mikroschemos mirties.
Baltas rezistorius išeinantis iš paveikslėlio tai tik apkrova testavimo metu. Eksperimento metu išėjimo įtampa kito nuo 1.23V iki kokių 25V (daugiau nekėliau, nes mano apkrovos rezistorius labai kaito ir smirdėjo). Trimeriukas laikinai pritvirtintas prie PCB (geltona detalė), vėliau ekranuotu trumpu laideliu bus išvestas į išore.

Saugumas: datasheetas sako, kad tokia schema nebijo trumpųjų jungimų (nebandžiau), o jei staiga mikroschema sprogs- transformatorius pilnai izoliuoja apkrovą nuo pirminio energijos šaltinio. Kitos topologijos schemos nėra saugios- turėjau bėda su viena schema, kai reguliavimo tranzas nuo karščio susitrumpino ir viskas kas buvo prieš reguliavimą pateko į prijungtą daikčiuką. Buvo daug dumų… 🙂

Recycle Rating: 100%!- visos detalės second hand.

Mygtukai analoginiam įėjime

Viskas prasidėjo nuo to, kad asmuo kodiniu vardu “Miltukų Meistras” sudaužė vieną Kinietišką prietaisiuką, o aš ji norėjau dar panagrinėti… Čia aišku nepalyginamas dalykas su žmogaus kodiniu vardu “Taupytis” poelgiu, kai norėdamas pažiūrėti kokios spalvos stiklas, jis atsipjovė su kampiniu šlifuokliu plazminio teliko ekrano gabalą… Dar veikiančio teliko…

O dabar esmė- daugelyje prietaisu yra grupės mygtukų. Dažnai mygtukai būna ir megėjiškuose prietaisuose su mikrokontroleriais (MCU). Tam tikslui naudojamos vertingos mikroprocesoriuko kojos. Jei grupė mygtukų, jie jungiami į matricą ir naudojamas dinaminis klavietūros skanavimas. Tuo tarpu, kieme jau 21 amžius ir daugelis MCU turi analoginius įėjimus. Ir daugelyje pramoninių prietaisų (magnetolos, CD grotuvai, radiojos, MP3 grotuvėliai, LCD monitoriai, elektroniniai laikrodžiai) jau seniai naudoja analoginį mygtukų valdyma. Minėtas sudaužytas prietaisas turėjo štai tokį mygtukų pajungimą:


(čia realaus prietaiso schema. Kodėl parinkti tokie rezistoriai aš nežinau)

Kaip matome, šeši mygtukai pajungti prie vienos MCU kojos. Šiaip prietaisiukas turi 3 analoginius valdymo įėjimus. 3 duomenų laidais pajungta 16 mygtukų. Naudojant grynai skaitmeninį pajungimą reikėtu žymiai daugiau MCU laidelių ir daryti ganėtinai sudėtingą ir resursų naudojantį algoritmą.

Pabandom suvesti skaitmeninio ir analoginio valdymo pliusus ir minusus (šios konkrečios schemos):

Analoginis valdymas:
(+) vienas MCU laidas
(+) lengva pajungti kiek toliau išneštą klavietūrą (rezistorius lengva prilituoti prie mygtukų)
(+) lengvas softas- analoginis signalas gali generuoti pertraukimą arba galima viena komandą nuskaityti klavietūros būklę.
(+)nėra kontaktų “kibirkščiavimo”
(-) reikia ADC
(-) reikia skirtingų rezistorių 🙂
(-) negalima daryti akordų (tiesa galima panaudoti binarinį kodavima su 2^n kodavimu)
(-) reikalingas Vref (tiesa jis gi pas MCU būna)
(-) galbūt jautrus trukdžiams? Ar blogiems mygtukams?

Skaitmeninis valdymas:
(+) yprastas
(+) daug softo
(+) galima akordai (nevisada)
(-) reikia daugiau MCU kojyčių
(-) reikia kovoti su kontaktų drebėjimu
(-) daug laidų iki klavietūros
(-) softas ėda daug MCU laiko, jei reikia dinaminio skanavimo

Malonu būtų išgirsti mintis ir komentarus.

Kondensatorių ESR ir jo matavimas

Vis plačiau šiuolaikinėje technikoje naudojant impulsines schemas, padažnėjo aparatūros gedimų dėl prastos kokybės kondensatorių. Tai kad ir jau seniau aprašyti kompiuterių maitblokių kondikų išsiputimas- tačiau tai jau fatališkas gedimo rezultatas. Jei kondikai būtų pagaminti tvirčiau, o elektrolitas ne toks terliojantis, tai kompiuterio pagrindinė plokštė neveiks, o išoriška apžiūra neduos rezultatų. Beja, tai dažnai ir atsitinka. Kartais remontuojant pakeičiami tie kondikai, viskas aplinkui sveika, o įrenginys nestabiliai ar blogai veikia. Kas gi kaltas? Ogi kondensatorių vidinė varža (ESR – equivalent series resistance).

Va, realaus kondensatorio ekvivalentė schema su idealiom detalėm:

ESR
Tipinis kondensatorius susideda iš pačios talpos C1, parazitinio induktyvumo L1 (kad ir kojelių ilgis ir vidiniai sujungimai) ir dviejų parazitinių varžų R1 ir R2. Kuo induktyvumas L1 ir varža R1 mažesni, o varža R2 didesnė, tuo geresnis kondikas. R2 varžą, dar vadinama nuotekio varžą, galima išmatuoti su paprastu testerių. Tuo tarpu, L1 (varža X1) ir R1 labai sunku išmatuoti su paprastom priemonėm. Tam reikalui naudojamas kintamos srovės ometras. Matavimo dažnis imamas toks, kad C1 neturėtų įtakos matavimui. Kaip ir standartas, naudojamas 100 kHz dažnis.

Nutariau per savaitgalį pasidaryti tokį matuoklį. Internetas pilnas įvairiausių schemų. Pradėjau daryti vieną gana sudėtingą variantą, bet dėl padoraus galvanometro trūkumo ir kažkokių nesklandumų su detektorium atidėjau į šalį. Kiek pasinagrinėjęs internetą, pasiskaičiau keletą straipsnių apie prietaisų principus. Nutariau daryti kaip savo kitą variantą.

ESR matuoklis

Čia labai egzotiška detalė panaudota ir šiaip prietaisas neturi didelio stabilumo, todėl schema nepublikuosiu. Manau, pasidarysiu geresnį variantą. Tačiau šis prietaisiukas tiks kaip iliustracija. Prietaiso veikimas labai paprastas- su CMOS mikroschema ir ta stikline “lempute” (ten 100kHz kvarcas) padarytas generatorius. Šis generatorius valdo galingą mosfetą. Mosfetas, savo ruožtu, duodą 100kHz į nedidelio transformatoriaus pirminę apviją. Trafuko antrinė apvija per detektorinį diodą pajungta prie indikatoriaus. Testuojami kondensatoriai jungiami prie pirminės apvijos ir ją šuntuoja. Jei kondiko varža didelė tai trafas netrugdomai dirba. Jei kondikas geras, jis šuntuoja trafą ir antrinėje nėra įtampos.
Va, keletas eksperimentų. Reikėtų sugraduoti indikatorių naudojant mažas varžas, bet čia tik eksperimentai su gana netobulu prietaisu… Beja, ant prietaiso “čiuptuvų” labai menka įtampa ir kondikus galima tikrinti neišlitavūs iš schemos…

ESR matavimas
Pirma eilutė: prietaiso “kalibravimas”- begalybė ir nulis omu.
Antra eilutė: geri kondensatoriai A ir B.
Trečia eilutė: itartinas kondikas C ir tikrai blogas kondikas D.
(visi kondikai >400μF elektrolitai, naudoti, išimti iš įvairios aparatūros. Visų talpos matuojant su “talpomačių” daugmaž atitinka markiruotę ant korpuso).

Detalių kojų žingsnių skaičiavimas

Jau kelis kartus padariau grubią klaidą skaičiuodamas detalių kojų žingsnį. Kad daugiau tai nepasikartotų ir kiti nepakartotų šių klaidų, rašau šią žinutę…

Labai daug elektroninių detalių turį daug kojyčių išdėstytu eilėmis. Norint padaryti PCB ar dar kam nors dažnai reikia sužinoti koks visdėlto atstumas tarp kojų. Galima pamatuotį tą atstuma su kokiu matuokliu, bet kad ir mažiausia paklaida, naudojant daugiau kojų, sukelia neatitaisomą suminę paklaidą. Tai aktualu ir konvertuojant metrinius ir colinius dydžius- pvz. DIP/DIL korpusu kojyčių atstumas metrinėje sistemoje dažnai laikomas 2.5mm (tai rodos ir būdavo rusiškoje dokumentacijoje). Deja montuojant dideles mikroschemas galinės kojytės jau nelenda į skylutes. Kodėl? Ogi todėl, kad DIP/DIL mikroschemos yra colinės (dar vadinamas “imperinės skaičiavimo sistemos”) ir atstumas tarp kojyčių yra 2.54mm (2.54000808 jei tiksliau).
Dar viena problema- metrinės mikroschemos. Kokios problemos? Kaip jos kyla? Ogi todėl, kad printeriai savo rezoliucija skaičiuoja coliais, tiksliau- taškai į colį (DPI- dots per inch).

zingsnis

Žingsnis skaičiuojamas taip- pasiimam detalę su kiek galima daugiau kojų. Išmatuojam atstumą tarp galinių kojų centrų.

Žingsnis=atstumas/(kojų_kiekis-1)

(svarbiausias momentas tai tas “minus vienas”)

Pavyzdukai iš paveiksliuko:

1. Žalia detalė. 10 kojų. Atstumas: 31.5mm. Žingsnis=3.5mm.
2. DIL korpuso ROM čipas: 16 kojų. Atstumas: 38mm. Žingsnis=2.5333… mm. Tikslus atstumas 2.54mm. Matyt netiksliai pamatavau, turėjo gautis 38.1mm, Tačiau liniuotė neturi 1/10 padalų.
3. PLCC korpusas, EPM7064SLC44 CPLD: 11 kojų. Atstumas: ~12.6mm. Žingsnis=1.26mm. Pagal dokumentaciją: 50mils t.y. 50/1000 colio=50*25.4/1000=1.27mm. Kiek trumpoka mikroschema, kad su paprasta liniuote pamatuoti.

Nu ir paprasti koeficientai:

1″ (colis) = 2.54 cm = 25.4mm.
1 mils = 0.001″ colio.
1′ (pėda) = 30.48 cm.
1′ (pėda) = 12″ (colių).

Dirbtuvės

Persikėlėm iš to nelemto smirdančio pusrusio į Petrašiūnų rajono civilinės saugos viršininko kabinetą. Senasis savininkas per revoliuciją tepė slides, patalpos prastovėjo tuščios, o dabar įsikraustė blogo autorius. Nuo civilinės saugos viršininko liko visa dokumentacija, sieninė spinta su knygom, keletas vimpelų su tarybine simbolika ir keletas anspaudų… 🙂

Dabar dirbtuvės atrodo maždaug taip:

Dirbtuves
Mano stalas- spec užsakymas 180cm ilgio, 120 pločio (jei teisingai atsimenu, pamenu, kad baldininkai stebėjosi kam reikalingas tokio dydžio stalas.). Keletas senų kompiuterių, monitorių, stacionarus prailgintuvas kuris jau užpildytas ir šiaip visoks šlamštas…

Toliau bus daugiau nuotraukų, todėl spauskit šią nuorodą: Continue reading →