Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér Utazás, szabadidő és mindenféle érdekes dolog.

Nem adom fel!

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér Véleményem a világ dolgairól

A demokrácia

Sokszor hallgatom munka közben a nemzeti szócsövet, és több más releváns tartalmat, az elmúlt néhány évben kedvelt fordulatként sokszor elhangoznak a következő szavak az USA nemzetközi színtéren végzett tevékenységével kapcsolatban:

„Amerika demokrácia exportja…”

A héten, ahogy a neten turkáltam, egy Sztálin idézetre bukkantam, ami a fenti kijelentéssel összevetve egészen új kontextusba helyezi a dolgokat, segít megérteni mi és miért történik manapság az EU energiapiacán.

Először álljon itt az idézet saját fordításomban:

„Én mindig azt gondoltam hogy a demokrácia a nép hatalma, no de Roosevelt elvtárs világosan elmagyarázta nekem, hogy a demokrácia az amerikai nép hatalma.

Szóval, nincs új dolog a nap alatt.

Rövidesen ide is exportálják a demokráciát, és a jogállamot… hol is hallottam ezt a szót – jogállamiság – ? A csomag rövidesen megérkezik, mi pedig megfelelünk neki, befogadjuk, törvénnyé tesszük az ide exportált demokráciát. Milyen jó nekünk … hogy most csak törvényeket várnak tőlünk, nem mindenki ilyen szerencsés, nézzünk csak kicsit keletebbe.

Bár emlékszem, ’56-ról apám sokat mondta, hogy ide is majdnem exportálták a demokráciát – a SZER adásaiban Bell ezredes biztatta a felkelőket, hogy jövünk, segítünk, meg ezer csendőr jön hajón a Dunán, csak tartsunk ki.

Akkor a népnek elég volt néhány szó a rádióból és mindenki felült ennek – az ország pedig újra rommá lett.

Most a kor követelményeivel haladva ez a tehetségtelen ripacs a szomszédban és seggnyalói – köztük a leghangosabb talán kulabá nem éri be szavakkal, nekik fegyverek kellenek. Telekürtölték a világot kérnek, könyörögnek zsarolnak, lopnak és hazudnak. Mindezt azért, hogy hozzájuk is exportáljanak még több demokráciát. Meg is kapták, a fél ország már romokban.

Most fordulat állt be az eseményekben, és itt a következő vihar előtti csend. Talán megjön a józanabbik esze ursulának, ennek a szervilis banyának, és csatlósainak, hogy elgondolkodjanak:

Rendkívüli fegyverszünet, legyen ott a határ ahol most, ne haljanak tovább az emberek, a szomszéd ország maradéka legyen független és soha sem tagja semmilyen katonai tömbnek, és így tovább, ahogy kb. Minszkben megállapodtak már egyszer. És akkor vége lenne ennek az esztelen törzsi háborúnak itt a szomszédban, és az energiaárak is lejjebb kúsznának talán.

Sok minden tönkrement, de még nem tört össze minden: ez a világ még nem lapult ki festménnyé, hogy lyuk legyen az univerzumban, még van esélyünk. (Köszönet: Cixin Liu: A halál vége)

De ez sajnos vágyálom marad, mert a szomszédban már – velünk ellentétben – demokrácia van.

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér

Nixie csöves óra építés

Ebben a posztban egy retró készüléket építek egy megrendelőm részére. Az 1980-as években a Rádiótechnika című folyóiratban amit még apám rendszeresen megvásárolt többször láttam ilyen óra építésére hívó cikket, majd mostanában az interneten és egy tematikus csatornán futó „Hogyan készül” című filmben is többször belefutottam ebbe a témában. Amikor egy megrendelőm azzal keresett meg, hogy készítsek egy ilyen retró órát, akkor arra gondoltam, hogy ha már ilyen hype alakult ki e témában, énnálam is kapható lesz ez a termék. Tehát elvállaltam a projektet, és itt a blogomon követheti az olvasó, érdeklődő hogy hol tart az óra építése.

A kiindulási alapot egy a megrendelőm által netes forrásból kapott kapcsolási rajz adta, amit az adottságaimnak megfelelően átterveztem. Igy az eredetiben szereplő PIC helyett Atmel ATMEGA AVR-t terveztem. Továbbgondolva a kapcsolást, hogy könnyebb legyen az életem, egy I2C buszos órát terveztem a panelra, így ennek tápellátása az órától függetleníthető. Így nem fog elfelejteni , ha épp áramszünet van.

Az eredeti készülékhez képest 6 csöves kapcsolást terveztem két külön lemezre tervezve. Tettem ezt azért, mert ha a mikrokontrolleres panelt alkalmatlanság miatt változtatni/cserélni kell, akkor a NIXIE csöves felső panelt meg lehessen hagyni.

Az eredeti kapcsolásba nem nagyon bízom, de majd láthatjuk a posztban hogy miként fog működni. Magam részéről a DC 12-18 V feszültségű tápellátást és 0.5A maximális áramfelvételt engedélyező olvadóbetétes tápegység használatát választottam.

Nixie csöves óra alaplemez2
Nixie csöves óra alaplemez2

Nyomtatott áramköri lapot terveztem és a megrendelőm erről elkészítette az alaplemezeket. A felső alaplemezbe ültettem a kijelzőket, az alsó lemezbe az elektronikát és a multiplex áramkört.

Azt tervezem, hogy először a mikrokontrollerben megírom a nagyfeszültségű tápegység vezérlését, majd ha már az működik, elkészítem a kijelzők vezérlését.

A felső panelbe beforrasztottam először a csöveket alulról világító LED diódákat, ellenőriztem a működésüket, mert később nagyon nehéz cserélni a csövek lábazása miatt.

Nixie csövek (felső panel)
Nixie csövek (felső panel)

Ha már a kijelzők működnek, majd az óraáramkörrel kapcsolatos kommunkiációt írom meg. Hogy az fejlesztés során a program futásáról információkat szerezzek, egy soros port csatlakozót is terveztem az alaplemezre. Ezt majd a végső verzióban már nem fogom beültetni, csak a fejlesztés idejére van szükség erre.

Nixie csöves óra alaplemez
Nixie csöves óra alaplemez

Az óra alaplemezén először a tápegységet ültettem be. A tápegység felélesztése után a mikrokontrollert és a közvetlen közeli áramköröket ültettem be.

A programírást a soros port felélesztésével kezdem, majd utána a nagyfeszültséget előállító négyszögjel kiadását fogom elkészíteni.

Szerencsére korábbi munkáimból ezeket a kódrészleteket csak össze kell ollózzam. Ma addig jutottam el, hogy a mikrokontrollert égető készülék felismerte a panelben lévő kontrollert, valamint a nixie csöveket kitermeltem előző helyükről és beültettem a felső panelba. Ezt a panelt láthatják a borítóképen.

Folytatás következik holnap….

Folytatás #1:

A mai nap a mikrokontroller programjának megírását kezdtem el. Az alapvető rutinjait (soros portkezelés , két cirkuláris bufferrel (Rx/Tx) valamint az I2C busz kezelő rutinokat, és a Dallas 1 vezetékes periféria kezelő rutinokat)ollóztam össze más, korábbi kódokból, továbbá a program keretét készítettem el.

A munkámat azzal kezdtem, hogy a kapcsolási rajz alapján a mikrokontroller lábazását beírtam a kód elejébe, valamint egy timer irq-t csináltam a nagyfeszültség és a multiplexelt kijelző vezérlés működtetésére.

A nixie-csövek helyett a próbák idejére 200kOhmos ellenállást raktam a nagyfeszültségű tápegységre műterhelésnek, hogy egyrészt ne menjen tönkre a pufferkondenzátor, másrészt kikapcsolás után ne csapjon meg a kondenzátorban maradt töltés.

Az óra soros portját első próbálkozásra sikerült feléleszteni erről a PC soros portján megjelenő üzenet tanúskodott.

A nagyfeszültségű tápegység által előállított feszültséget a vezérlő jel kitöltési tényezőjének és frekvenciájának változtatásával 165V értékre állítottam be. Az IN-14 es nixie cső multiplexelt vezérléséhez a gyári ajánlott 1 kHz ismétlési frekvenciát valamint az egy cső működtetéséhez minimálisan ajánlott 70 mikroszekundumos időt alapul véve a működtetést 100 mikroszekundum időre állítottam be.

Nixie óra első beindulás.
Nixie óra első beindulás.

A készülék jelenlegi áramfelvétele 100mA 16V egyenáramú tápláláson. A nagyfeszültséget előállító tápegység kapcsolóeleme üzemszerűen alig langyosodik, hűtőfelület nélküli TO-220 as tokozású FET jól bírja a terhelést.

Sajnos az élesztés során a nixie meghajtó IC BCD dekóder hibáját észleltem, így nem tudtam ma tovább haladni.

A következő részben a BCD meghajtó és portvezérlés megírása után már a tényleges óraszoftver írása következik. Ekkor kell megírjam az óraállítást, és a hőmérséklet kijelzést is.

Folytatása következik…

Folytatás #2:

Hát semmi sem olyan egyszerű aminek látszik… Két napja amikor megpróbáltam megírni a BCD meghajtó és portvezérlő programot tudtam, hogy biztosan lesznek nehézségek. Első próbálkozásra össze vissza működtek a fénylő katódok, és véletlenül sem akart jó lenni a program.

Mérések következtek, majd rájöttem, hogy a katódokat kapcsoló K155ID1 áramkör hibás. Szerencsére a megrendelőm még aznap este hozott működő példányt, amit rögtön teszteltem is.

Beépítve változott a helyzet de még mindig nem működött az áramkör, össze vissza világítottak a számjegyek, és véletlenül sem úgy, ahogy azt a programom akarta. Mi lehet a baj? Töprengtem, majd az EPROM-égetőm tesztelő funkciójával dűlőre vittem a kérdést:

K155ID1 tesztvektor
K155ID1 tesztvektor

A tesztvektor értelmezése a következő: a lehetséges kimenetek (L,H,Z) a bemenetek (0,1) és tápfeszültség (V) és föld (G) jelekből álló kombinációkat kell készíteni amiket az égető ellenőriz. Minden karakter az illető sorszámú lábra kerül, a kimenetek állapotát pedig ellenőrzi az égető.

A kimenetek lehetnek logikai 0 (Low) logikai 1 (High) vagy nagy impedanciájú tri-state (Z) állapotú, ezeket ellenőrzi az égető. Az IC open kollektoros kimenetű így a nem aktív kimenetek Z (nagy impedanciájú) állapotban van.

Tesztvektor írtam és azzal igazoltam az IC helyes működését. Akkor mi lehet a baj? Az oszcilloszkópon láthatóan jó a vezérlés, a kimenetek viszont sok esetben össze – vissza aktívak maradnak.

Gondolkodóba estem és elraktam a problémát másnapra.

Másnap a programban találtam egy hibát, de sokkal nem lett jobb a kijelző. Azonban amikor csak 0 és 1 számjegyeket írtam ki megfigyeltem, hogy a multiplexelés sorrendjében a számjegy váltáskor látszik a hiba: amikor 3 darab 0 és három darab 1 karaktert raktam ki, a 0 után következő 1-es hátterében a 0-ás karakter még világított.

Ez a megfigyelés adta az ötletet, hogy a Nixie cső késleltetett kioltása okozhatja a jelenséget. Először is lelassítottam a multiplexelés váltási frekvenciáját annyira, hogy még éppen ne legyen vibrálás. Ez jelen készüléknél kb. 70 Hz-es ciklusoknak felel meg, vagyis másodpercenként a multiplexer 70-szer fordul körbe a kijelzőkön.

Ezután az egy csőre eső időszeletet 16 egyenlő részre osztottam, ez programozás technikailag könnyen megvalósíthatónak bizonyult.

Az utánvilágítási jelenség elkerülésére a következő kapcsolási eljárást implementáltam.

1., Az aktuális kijelzőn a 12. időszeletbe lépéskor kikapcsolom az anódfeszültséget.

2., A következő 0. időszelet kezdetén a multiplexerre kiadom a multiplexeren keresztül a kívánt katódot kiválasztó négybites adatot, majd bekapcsolom a következő cső anódfeszültségét.

3., megvárom a 12. időszeletet és innen kezdve ismétlem a tevékenységet, míg végig nem járom mind a 6 kijelzőt, kijelzőnként 16 időszelettel.

Nixie csövek próbája
Nixie csövek próbája

Az eredmény magáért beszél nagyon elégedett vagyok vele… valahogy megfogott a szépen parázsló számok varázsa.

Következő részben a csövek alatt világító ledek vezérlését írom meg, majd az órachip következik….

Folytatás #3:

A fejlesztés gyakorlatilag elkészült. Miután a kijelzők életre keltek, az AVR órajeléből a 16 bit szélességű időzítő áramkörrel (TIMER1) kiosztottam a pontos 1 Hz frekvenciát, majd ennek a timernek az IRQ-rutinjába írtam az idő növelését meg.

Ezután a hőmérő áramkört és a hozzá kapcsolódó rutinokat készítettem el. Egy Dallas DS1820 hőmérőt használok, a sorozatszám kiolvasása után a hőmérséklet adatokat olvasom ki és számítom át a kijelzőkre kiírható formátumba. A hőmérséklet kiírás egy gomb lenyomása után 5 másodpercig aktív, majd utána a kijelző visszavált óra üzemmódra.

A mikrokontrollerben az idő adatok binárisan vannak tárolva, ebből konverzió után kerülnek nibblénként kiírásra a kijelzőre.

Az óraállító program megírása után a LED világítás próbája következett:

Multiplex áramkör működés közben.
Multiplex áramkör működés közben.

Megfigyelhető az óra számláló egyes helyiértékű kijelzőjén az éppen kialvásban lévő számjegy. Azt érdemes tudni, hogy a csövek kialvásához szükséges idő annyi, hogy a multiplexelt kijelzők közül éppen a 4. kijelző (perc, egyes helyiértékű kijelzője az aktív, a következő lépés a tizes perc kijelzője lesz. Így mire újra sorra kerülnek a csövek, már éppen kialudtak, de nagyon kevés ideig maradnak sötéten, és így nem villognak zavaróan.

Az órára ezután egy 3.6V os 60mAh kapacitású akkumulátorral táplált PCF8563 típusú integrált órachip került beépítésre. Az óra ezzel a chippel jár szinkronban, és ez biztosítja, hogy áramszünet esetére is akár napokig ne „felejtse” el az időt.

Kész óra panel
Kész óra panel

A képen az elkészült és készre szerelt áramkörök láthatóak.

A készre szerelt alsó panel valamint a felső panel csövek nélkül megrendelhetőek, szerelten, összerakva, programmal feltöltve budapesti címemen megkapható, esetleg a csövek beforrasztásában is tudok segíteni.

A felélesztett felprogramozott készülék ára 50.000.- HUF (nixie csövek nélkül). Igény esetén -külön díj ellenében – kiegészíthető a terv Geiger-Müller számlálóval, vagy a szoftver timer funkciót is képes megvalósítani (látványos visszaszámlálás stb.)

Remélem érdekes volt a poszt, és ha kedvet kaptak ilyen óraépítéshez, keressen bátran, szívesen segítek!

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér

Geiger-Müller számláló javítás.

Nemrég megkerestek egy budapesti gimnáziumból, hogy javítsam meg a meghibásodott Geiger-Müller számlálót a fizika szertárból. Nagy várakozással néztem a feladat elébe, mert utoljára kb. 25 éve, gépészmérnöki tanulmányaim során kerültem ilyen készülék körébe a tanreaktori mérések során. Itt dr. Szondi Egon tanár úr volt a mérésvezető, aki szigorúságáról volt híres, nem türte a készületlen hallgatót a méréseken, és mindig volt „beugró” dolgozat, ami a készületlen vagy az utolsó pillanatban felkészülő hallgatóknak bizony sokszor kiugrónak sikerült.

A számlálót bekapcsolva a műhelyemben különösebb életjelet nem mutatott: néha vinnyogott, néha csak a verziószámot írta ki. Amikor vinnyogott, néhány másodperc idő eltelte után a vinnyogás hangja is megváltozott.

Ebből azonnal következtettem, hogy bizony a tápenergia ellátással biztosan gond van: bekapcsolás utáni áramfelvétel hatására az elem kapocsfeszültsége csökken majd a működéshez szükséges feszültséget sem képes szolgáltatni.

A telep ellenőrzése megerősítette a diagnózisomat: kiszedve az elem kapocsfeszültsége 9V volt, ami a felületes szemlélőt meg is nyugtatná, azonban a készülékben bekapcsolás után 2.4V-ig csökkent a feszültsége.

A telepet kicserélve azonban újabb hiba jött elő: a készülék beindult, majd megállt, máskor a bekapcsoláskor be sem indult, és a jelenséget véletlenszerűen adta.

Kijelző panel
Kijelző panel

A készüléket ezért kidobozoltam, majd alaposan szemügyre vettem a szerelt áramköri elemeket. A kijelző panel alatt a számláló mikrokontroller vezérlőjét találtam.

Mikrokontroller panel
Mikrokontroller panel

A mikrokontroller típusa NXP80C32 volt, ami nagy szerencse javíthatósági szempontból: a mikrokontroller nem tartalmaz belső eepromot, így a program teljesen hozzáférhető volt a mellette található EPROM-ban.

A panel hátsó oldala
A panel hátsó oldala

A panel szerelése meglehetősen kulturált volt, az áramkörök foglalatban voltak szerelve. Így az első lépésként az összes TTL IC működését az áramkör tesztelővel ellenőriztem, minden IC működőképes volt. A készülék EPROM tartalmát kimentettem.

Az átadáskor mint hibajelenség elmondták, hogy a GM cső feszültsége alacsony. Ezért megnéztem a cső feszültségét előállító áramköri részletet. Itt minden rendben volt, ezért újra a mikrokontroller felé fordult a figyelmem.

Ha egy mikrokontroller nem indul el mindig, akkor itt alapvető jelek hibáját tételezem fel először, majd a külső buszok meghibásodását (zárlat, szakadás) ellenőrzöm.

Az alapvető jelek, amiket vizsgáltam, a mikrokontroller táp és föld vezetéke, órajel vezetékei és RESET jele.

Az órajel és a tápellátás rendben volt, azonban a RESET lábon lévő tantálkondenzátor átvezetett, a RESET lábon a jel nem engedte a mikrokontrollert működni. A kondenzátort kicseréltem és a készülék innentől fogva kifogástalanul üzemelt.

A meghibásodott alkatrész.
A meghibásodott alkatrész.

Hátra volt még a Geiger – Müller számláló kipróbálása. Honnan szerezzek sugárzó mintát a műszer ellenőrzéséhez. Szerencsére a készülék dobozában furcsa szövethálót találtam, amiről azonnal tudtam mire való. Egy Auer – harisnyákat tartalmazó zacskót. Az Auer harisnya – mint az közismert – tórium nitráttal átitatott szövet, így sugárforrásnak is tekinthető.

Auer harisnya.
Auer harisnya.

Bekapcsoltam a műszert, majd néhány próbálkozás után a GM cső feszültségét maximálisra növeltem, így az érzékenysége a készüléknek is a legnagyobb volt. A beütések után kis csippanással jelzett a számláló így a háttérsugárzás rögtön megnyugtatott: a műszer működőképes. Ezután a mérőfejet az Auer harisnyához közelítettem, és a csipogás szaporább lett.

A készüléket összeszereltem, majd örömmel állapítottam meg, hogy a mai nap sem volt hiábavaló, hiszen abban a gimnáziumban majd biztosan lesznek diákok, akik figyelmét a készülék által jelzett láthatatlan részecskék a műszaki és nukleáris szakma felé irányítja.

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér

Hardvertől a szoftverig. Ahhoz, hogy programot írjak, sokszor magamnak kell megcsinálni azt amit kitaláltam.

Egy különleges fejlesztési munka során néha sokminden nem éppen programozói munkát is el kell végezzek, a prototípus gyártástól a különféle fejlesztésekkel járó kísérletezésekig. Ilyenkor a programozóból esztergályossá vagy tekercselővé vedlek át, és örömöm lelem a változatos munkában. Úgy vélem, ezzel a különlegességgel tudom a megrendelői igényeket a legjobban kiszolgálni. Egy ilyen különleges tekercs elkészítéséről szól ez a poszt.

Feladatom, hogy készítsek egy olyan tekercset, ami néhány-tíz párhuzamos vezetőből áll, hogy a szükséges réz keresztmetszet biztosítva legyen, valamint a működési frekvencián az áramkiszorulás jelensége miatt is megfelelően működjön.

Ezért a tekercs készítéséhez szükséges huzalokat egy pászmába fogva egy tároló tekercsdobra csévéltem fel. Ügyeltem arra, hogy a feltekerés során a huzalpászmát ne csavarjam saját tengelye körül, mert ezzel a tekercsem induktivitását befolyásolnám.

Huzal előkészítés és leszabás után.

A tekercselés előtt a tekercselemet rögzítő sablont készítettem, ami tekercssablonból (2 db), távtartóból és rögzítőelemből áll. A tekercselemet a védő szigetelés elkészítéséig a szétesés ellen gyorskötözővel biztosítom. A kivezetéseket warnisch vászon szigetelővel védett bekötéssel rögzítem a csatlakozó saruig. Ez némileg eltér a közönséges tekercselésnél megszokottaktól, ahol a kivezetés anyaga nem a tekercselő huzal. A működési frekvencián ez a kötés a teljes keresztmetszeten nem készíthető el, csak a vezetékpászma végén egy sarut forrasztok, ezzel kapcsolódok a teljesítmény elektronikához.

Tekercselő szerszám szétszerelve.
Tekercselő szerszám szétszerelve.

A huzalpászmára felhúzom a tekercselemeket összekötő középső szigetelést, majd a tekercs végét szigetelő csövet. A szerszámba bekészítek két gyorskötözőt, majd a huzalpászmát kézbe veszem és a csövet befűzöm a szerszámba, majd a kivezetéshez még kihúzok belőle kb 50 mm hosszúságú pászmát.

Tekercselés kezdete.
Tekercselés kezdete.

A harmadik gyorskötözőt csak előkészítem, ennek még későbbiekben szerepe lesz. Az első menet feltekerése után az előkészített gyorskötözőt is beteszem, végét azonban nem fűzöm keresztül a szerszám oldalán.

Végrögzítő kötés elhelyezése.
Végrögzítő kötés elhelyezése.

A végrögzítő gyorskötözőt a tekercselés irányában a kezdeti kivezetés elé teszem közvetlenül, majd feltekerem a pászmából a szükséges menetszámot.

A kivezetés ideiglenes rögzítése.
A kivezetés ideiglenes rögzítése.

Mint korábban írtam a harmadik kötözővel a szükséges menetszám után a tekercs kivezetését rögzítem, hogy amikor átlépek a második tekercselembe, a feltekert vezetékpászma ne pörögjön le.

Átlépés a második tekercselembe.
Átlépés a második tekercselembe.

A tekercselő szerszámba ekkor berakom a gyorskötözőket (eddig azért nem raktam be, mert akadályozott volna a munkában, majd megkezdem a második tekercselem szükséges menetszám feltekerését. Ekkor is ügyelek arra, hogy a tekercselő szerszámot tengelye körül forgatva végezzem a tekercselést, a pászma körbecsavarása nélkül, így a pászma sodratlan lesz.

Második tekercselem elkészítése.
Második tekercselem elkészítése.

A tekercs végére felhúzom a warnisch csövet, majd a tekercselő szerszámot összeszorító csavarkötést oldom. Először a másodjára készült tekercselemet tartó oldalt bontom le, és rögzítem a gyorskötözőkkel.

Tekercsvég rögzítés.
Tekercsvég rögzítés.

Rögzítés során ügyelek arra hogy a tekercselem alakja megtartsa a szerszám alakját. A gyorskötözők záróelemét a zárás előtt a tekercs külső éléhez fordítom, hogy később lecsippenthető legyen a tekercs sérülése nélkül.

Tekercselem összekötözve.
Tekercselem összekötözve.

Ezután kiveszem a rögzítő menetes szárat és a másik szerszámot záró oldalt is eltávolítom, majd a korábban befűzött két gyorskötözőt is zárom.

A másik tekercs ideiglenes rögzítése.
A másik tekercs ideiglenes rögzítése.

Miután mindkét tekercselemet a gyorskötözőkkel ideiglenesen rögzítettem, a tekercselő szerszámokat kiveszem a tekercsek belsejéből.

Szétszdés után.
Szétszdés után.

A szerszám nyitása után 25 mm széles 0.13 mm vastag üvegselyem szövettel elvégzem a tekercsek bandázsolását.

Bandázsolás közben.
Bandázsolás közben.

Mindkét tekercselemre 1500mm hosszú üvegselyem szalagot tekerek. Ahogy haladok a körbetekeréssel, a gyorskötözőket lecsippentem, vigyázva a tekercs sértetlenségére. A szalagot folyamatos feszítéssel húzom, és megszorítom a tekercs vezetőinek rögzítéséhez. A kivezetéseknél elvégzem a szalag kötését.

Elkészült a bandázs.
Elkészült a bandázs.

Amint mindkét tekercselem bandázsolását elvégeztem a ferrit fazékmagra illeszkedő csévetestet a tekercsbe teszem.

Csévetest behelyezése.
Csévetest behelyezése.

A csévetestekre szerelt tekercseket a későbbiek során Vilepox lakkak telítem, majd szárító kemencében fogom kiszárítani. Ezt a műveletet csak a tekercsvégekre szerelt saruk elkészítése után végzem el, mert a lakktól törékennyé válnak a kivezetések. Először azonban a prototípus ház elkészítését kell bevárni és méretre szabni a tekercs kivezetéseket.

Kész tekercs ferrit maggal.
Kész tekercs ferrit maggal.

Ez azonban már egy másik poszt lesz. Mert az igazi programozó mestert az sem riasztja vissza, ha egy teljesen ismeretlen mikrokontrollerre kell programot írni.

Ha tetszett, komment és észrevétel jöhet, rövidesen folytatódik a történet és kiderül mi is lesz ebből a csoda tekercsből!

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér

Siemens szervo motor ellenőrző mérése

Úgy hozta az élet, hogy munkám során egy CNC megmunkáló központ egyik tengelyének hajtását kellett ellenőriznem. A tengely végén egy 1FT5066-0af01-2-z típusjelölésű motor volt. Némi utánajárással megállapítottam, hogy ez a motor egy háromfázisú BLDC motor, a tengelyén egy szintén háromfázisú tachogenerátorral, ami az analóg szabályozott hajtás felé ad a fordulatszámmal arányos feszültségjelet, valamint egy rotor pozíció ecodert is tartalmaz. A tengely végén egy ROD426 típusú encoder ad jelet a CNC gép számítógépe számára.

Először megkerestem az interneten a motorhoz tartozó gyári szerviz manuált, ebben hamar megtaláltam a beállítás lépéseit és mérési eljárását. A géphez tartozó dokumentációban a motor csatlakoztató kábel bekötését is sikerült előtaláljam, mert a szerviz manuálban ennek a kábelnek a bekötésére is hivatkoznak.

A motor kapocstáblájának belső oldalán a motorról némi információt sikerült megtudjak:

Látható a bal felső részén jobbról bal felé a tengely fék, majd a hajtó főmotor, a tachhométer generátor és a rotor pzíció encoder „LG” jellel.

A csatlakozó kábelről rendelkezésre állt rajz:

A szerviz manuálban a mérésekről a következő leírást olvastam:

A motor tengelynek, a tachogenerátor forgórésznek és a rotor encodernek egymáshoz viszonyított szöghelyzetét nagyon pontosan minden szétszedés vagy javítás után be kell állítani illetve ellenőrizni. A mérendő jelek a a főmotor tekercseiben indukált feszültség, a tachogenerátor kapcsain megjelenő indukált feszültség és a rotor pozíció encoder kapcsain mérhető jel. A mérés idejére a motor tengelyét a hajtás felőli oldalról nézve az óramutató járásával megegyező irányba kell forgatni, majd a kívánt jeleket oszcilloszkóppal mérni és ellenőrizni. Először a főmotor indukált feszültsége és a rotor pozíció encoder egymáshoz viszonyított helyzetének ellenőrzésére szolgáló mérési eljárás:

Persze az élet soha nem olyan egyszerű, mint a dokumentáció. A mérés elvégzését lehetetlenné tette, hogy a rotor pozíció encoder jele bizony nem jött ki a megfelelő kivezetésen, sőt semmilyen más ponton sem. Összehasonlító mérést végeztem egy másik tengellyel is, és legnagyobb megdöbbenésemre a biztosan jól működő motorból sem jött rotor pozíció encoder jel! Nem volt mit tenni, a szabályozott hajtás oldaláról vizsgáltam tovább az encoder jelének problémáját, majd rájöttem, hogy az encoder jele csak akkor jelenik meg, ha azt tápenergiával látom el. A csatlakozó hajtásban a csatlakozó 6. lábához 12V tápfeszültség kapcsolódik egy soros 100 Ohm ellenálláson keresztül, aminek nyilvánvalóan az volt a célja, hogy bármilyen külső zárlat okán kialakuló áram semmiben se tegyen kárt.

Ennek az információnak a birtokában a 10. kivezetést a mérőföldre, a 6.kivezetést egy soros áramkorlátozó ellenállást bekötve +12V tápfeszültségre kapcsoltam. A kimeneteken azonban csak időnként megszűnő zajt mértem. Ekkor vált nyilvánvalóvá számomra, hogy a kimenet nyilvánvalóan open-collector típusú, így a mért kimenetre egy 10 kOhm felhúzó ellenállást kötöttem. Sajnos ez is kimaradt a dokumentációból, de ezután már el tudtam végezni a mérést.

A motor tengelyére spárgát tekertem, majd azt kézzel meghúztam. A motor kivezetésein (2. sugár) és a rotor pozíció encoder kimenetén (1. sugár) mért jelet az oszcilloszkóppal rögzítettem. Trigger az encoder jel lefutó éle volt.

Amint láttam hogy sikerült érdemi jelet rögzítenem nagyon megörültem, belenagyítottam és kiértékeltem a mérést az előirat szerint:

A kurzorokat az encoder jel éleire állítottam és ellenőríztem a forgórész indukált feszültségének nullátmenetével (2. tengely) Mivel precíz egyezét láttam a beállítás jónak bizonyult.

Az előírás szerint mind a hat esetet végigmértem, vagyis az encoder jelhez képest a főmotor tekercseinek indukált feszültségét (3 mérés) és a tachogenerátor tekercseinek indukált feszültségét (3 mérés) egymáshoz képesti fázishelyzetét ellenőriztem az előírás szerint.

Remélem másnak, aki hasonló témában keres az interneten releváns információt tudtam adni. Sajnos a dokumnetáció és a valóság eléggé messze voltak egymástól, de kis ügyességgel meg lehetett oldani a problémát!

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér

ATMEGA 644A – RS485 buszos adatgyűjtő áramkör

A következő posztban szeretnék bemutatni egy olyan témát, ami a műszaki praxis során sokszor előfordul, azonban számtalan apró buktatója van és általában az eredménytermék nem tudja azt, amit az alkotók és a megrendelők elvárnak tőle.

Az én gyakorlatomba is pont ilyen okból került be ez a feladat: Adott volt egy meglévő adatgyűjtő rendszer, ami maximum 30 eszközből néhány bitnyi információt gyűjtött, és képes volt néhány bitnyi adatot – működtető kimenetekként – eljuttatni az adatgyűjtés helyére.

A példaként beszállított alkalmazás több hibával, döcögősen üzemelt és a vizsgálatom után megszületett az újratervezést támogató döntés.

A tervezés során fél duplex kommunikációs protokoll mellett döntöttem, az igények kiszolgálására ez is elégségesnek bizonyult. Döntésem hátterében a duplex kommunikáció ellen a kétszeres hardver igény – és így kétszeres meghibásodási lehetőség – szólt.

A kommunikáció megvalósítására az áramhurkos RS485-ös összeköttetést tartottam a legalkalmasabbnak, mert alkalmas sodrott érpáros vezetéken akár 5MB/s átvitelt 100m+ távolságra is biztosítja.

Ennek tipikus topológiáját a következő ábra mutatja:

SN75176 tipikus alkalmazása
RS485 busz struktúra 32 kapcsolódó eszközhöz.

Az így összekapcsolt mikrokontrollerek (SLAVE-eszközök) egy buszon kapcsolódnak az adatgyűjtő számítógéppel soros porton kapcsolódó busz illesztést és vezérlést végző MASTER eszközhöz.

Ez gyárthatósági és praktikussági okokból azonos hardvert jelent különböző betöltött programokkal.

Az RS485 busz gyártói ajánlat szerinti PCB kialakítására egy példát találunk a gyártó adatlapjában, ami nem sok segítséget, éppen csak iránymutatást ad.

SN75176 tipikus PCB ajánlás

A lényeg azonban így is látható : rövid, vastag vezetékekkel kell az áramkört a busz vezetékhez kötni. A műszaki gyakorlatban sodrott érpáros kábeleket legolcsóbban CAT5E+minősítésű nyolceres „internet” kábelként lehet beszerezni. Ilyen kábeleket praktikusan RJ-45 csatlakozóval mutatkozott célszerűnek szerelni.

Az áramkör tervezésnek szinte egyik kulcsmozzanatához értünk: Az érsorrend kiválasztásnál úgy kell eljárjunk, hogy a kapható kábelek esetén az „A” és „B” vezetékek egy pászmába kerüljenek.

Bus kapcsolat RJ-45 csatlakozón keresztül

(a gyakorlat azt mutatja, ez nem mindíg és nem mindenkinek sikerül)

Jelen példánkban a 4 -5 vezetékek és 3 – 6 vezetékek egy pászmába esnek. A szokásos színjelölés mellett zöld – zöld/fehér és kék – kék/fehér erek. A párhuzamosítást redundancia miatt végzem. A próbagyártás és tesztelés során az összeköttetés minőségi paramétereit lényegesen javította az ilyen párhuzamosság.

Adatgyűjtő készülék PCB SMD beültetés előtt.
ATMEGA644A mikrokontrollerrel készült RS485 buszos adatgyűjtő készülék

A kép jobb oldalán látható a busz csatlakozó foglalata. Ide jó minőségű árnyékolt kivitelű aljzat kerül beültetésre, az áramköri lemezhez forrasztott árnyékolással. A vezetékek topológiáját úgy alakítottam ki, hogy az alkatrész oldalon a csatlakozót árnyékoló fém ne okozzon zárlatot a használat (mozgatás, során a fém ház súrlódhat az alatta lévő fóliával) során.

A két csatlakozó közt található a buszmeghajtó illesztő áramkör, csatlakozása rövid, vastag vezetékkel biztosított.

Félgyártmány forrasztási oldal
ATMEGA644A mikrokontrollerrel készült RS485 buszos adatgyűjtő készülék

Az illesztő áramkör két darab RJ-45 típusú csatlakozóval kapcsolódik a buszhoz: így a kábelek könnyen előre gyárthatóak csatlakoztatásuk gyors telepítést tesz lehetővé.

Az áramkör tervezésénél másik nagyon fontos probléma volt a cél rendszerek digitális földjeinek különböző potenciálja. Ezek elválasztását opto-csatolók biztosítják. A tápenergia ellátás egy közös vezetéken keresztül történik, egy kis kapcsolóüzemű tápegység használatával: így elérhető hogy a tápfeszültség esés a teljes vezetékhosszon alacsony legyen, és az energiaszállítás jó hatásfokon történjen.

Ez különösen fontos, amikor 32 áramkör (teljes kiépítés) kerül telepítésre. A tápfeszültség ilyenkor 20..32 V teljes áramfelvétel 200mA. Így a tápenergia kábelezésre tökéletesen megfelelt a közönséges flexibilis hangszóróvezeték erenként 0.5 négyzetmilliméter keresztmetszettel.

A megépített és néhány száz példányban már telepített készülék 20 MHz órafrekvencián stabil üzemet biztosít 250kbit/sec átviteli sebességen.

Sokakban felmerülhet a busz lezáratlanság kérdése. A busz lezárását praktikusan az utolsó áramkör üresen maradó RJ-45 csatlakozójába egy aljzatba krimpelt ellenállással lehet elvégezni. A tapasztalat azt mutatja, hogy ez szükségtelen.

A bus MASTER készülék paneljén a kommunikációs vonal potenciálját fél tápfeszültség közelébe az R29 és R28 ellenállásokkal lehet elvégezni. A tapasztalat azt mutatja, hogy kompatibilitási okokból ez szükségtelen sőt elkerülendő!

Kategóriák
Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér

A Z80 processzor diszkrét bája

Őskövület a feledés szemétdombjáról – mondhatnánk azonban több szempontból is rendkívüli figyelmet érdemlő mikroprocesszort, valamint a benne rejlő lehetőségek alkalmazását és ennek programvédelmi megfontolásait szeretném ebben a posztban bemutatni.

Ki ne szeretett volna már olyan hardveres programvédelmet készíteni, ami egyrészről hatósági eljárás céljából a programot rögzíti kiolvasható módon (eprom) ugyanakkor a konkurencia reverse-enginering próbálkozásai ellen megvédi azt?!

Erre kínál egy kiváló lehetőséget ez a processzor, és ennek használati technikáját szeretném röviden bemutatni itt. Ahhoz, hogy megértsük miként működik ez a védelmi megoldás, tekintsük át a processzor és a perifériák közti kommunikációt memória írás és olvasás tekintetében.

Processzor - busz kapcsolat
A processzor memória kapcsolat időbeni felosztása.

Az ábrán látható a Z80 processzor memória hozzáférés időzítése. Vegyük észre, hogy a processzor megkülönbözteti az utasítás lehívási ciklust a többi memória hozzáféréstől, ami lehetőséget biztosít az adat és programkód memória elválasztására. Ezzel a lehetőséggel azonban védelmi szempontból is tudunk élni, mégpedig pont úgy, hogy az adat és kód hozzáféréseket egy memóriában tároljuk lehetőleg jó alaposan összekeverve. Az utasítások és adatok alkalmasan összekevert mintája a program egyedi „ujjlenyomata” is lehet, és mivel a tárgykód változás esetén relokálódik, mert a fordításkor az utasítások számára foglalt hely változik, nagyon egyedi is lehet. Alkalmas fordítóprogrammal és makrók használatával a kódba ékelt adatok mennyisége a kód méretének néhány százalékos mértékét meghaladó méretben a visszafejtést nagyon megnehezíti.

Utasítás beolvasási ciklus
A processzor utasítás beolvasási ciklusa (M1)

A fenti ábrán a processzor utasítás lehívási ciklusa van ábrázolva, és pirossal kiemelve amikor a buszról utasítás byte-ot olvas a processzor. Ha egy utasítás több byte-ból áll, akkor a T1-T4 ciklusok ismétlődnek addig , míg a teljes utasítás beolvasásra nem kerül.

Amikor a processzor az utasítást végrehajtva memória műveletet végez – olvasási vagy írási esetleg R-M-W ciklust, akkor az alábbi diagram szerint történik a memória hozzáférés:

Processzor memória olvasási és írási ciklusa
A processzor – memória kapcsolat időbeni megvalósulása.

Ugyan a diagramon az M1 vonal nincs ábrázolva, de ezen ciklusok alatt logikai „H” szinten áll, azaz inaktív.

A programunk védelmére ez biztosítja a gyakorlatilag csak nagyon nehezen megfejthető megoldást.

Tekintsük az alábbi kódszakaszt és annak memóriába fordított gépi kódját!

példa a kódba ágyazott adathozzáférésre
kódba ágyazott adat

Vegyük észre, hogy a befordított tárgykódban a szubrutin hívó utasítás utáni két byte-ot a szubrutin ADATKÉNT olvassa fel a memóriából, a környező utasítás byte-okat viszont KÓDKÉNT! A különbséget a hardveres működés során a fentiekben ismertetett M1 vonal aktivitása jelzi.

A példában a veremtárban a stackpointer mögött egy lokális változót hozok létre, hivatkozás az (IX -2) mutatóval történik azt kinullázom, majd ötig elszámolok vele a példa kedvéért. A rutin végrehajtása után felszabadítom a veremtárban foglalt helyet. A foglalt hely mérete 2 byte, ennek komplemensét adom az SP regiszter aktuális értékéhez, ami tulajdonképpen a kivonást jelenti.

A programvédelem hardver alapja, hogy az adatbusz tartalmát a címbusztól függően összekeverem, ha kellően bonyolult a függvény, akkor ez már jól védi a memória tartalmát visszafejtés ellen, de azért néhány kreatív ötlettel visszafejthető. (lásd xx posztot, ezt még nem írtam meg, de tervben van) A hab a tortán csak ezután jön! A kódoló függvénybe vegyük bele az M1 vonal értékét például egy XOR kapun keresztül!

Amennyiben saját fordítóprogramunk van (én ezt használok) és azt úgy írtuk meg, hogy a program által generált objektum kód tartalmazza, hogy mely byte-ok utasítások és melyek adatok, akkor a tárgykód készítésekor (eprom tartalom előállítása) ezeket különféleképpen kódolva jutunk el a csaknem visszafejthetetlen kódig. A példában a kódoláson felül az adatként értelmezett byte-okat negálni kell.

Ezt azzal lehet elérni, hogy a példában bemutatott módon kreatív makrók alkalmazásával például egy érték paraméter szerinti rutin felhívást (c# switch – case struktúra) valósítunk meg:

switch-case példa

A példában a .db és .dw utasításokkal definiált byte-ok adatként kerülnek tárolásra, (még a cimkék is!) míg a többi kódként.

Ez a visszafejtésnél azért okoz nehézséget, mert a kódot soronként kell elemezni, hogy egy szubrutinhívás után adat vagy programkód következik, esetleg indirekt szubrutinhívással még jobban nehézzé tehető a helyzet. Ekkor annak, aki a kódot meg akarja fejteni a visszafordítás során el kell dönteni egy eprom adatról, hogy az adatként vagy kódként kerül feldolgozásra, mert ettől függ a processzor – memória közé beékelt kódoló logika működése. További nehézséget jelent a bemutatott példában az adatstruktúra értelmezése, ugyanis byte-os konstansok, word-os konstansok, és word hosszúságú szimbólumok értéke is kerülnek egymás után tárolásra. Ennek a struktúrának az értelmezése a felhívott szubrutin dolga, amit itt terjedelmi okok miatt nem mutatok be, de a működése könnyen érthető: az első .w konstans megmutatja hány ága van a switch szerkezetnek, utána byte-os konstansokkal felsorolásra kerülnek a különböző esetek, majd az illető esetekre és az ELSE ág lefordított tárgykódjára mutató szimbolikus címek értékei következnek.

Ez a processzor számára „in-situ” körülmények közt természetesen megy, az eredmény az M1 vonalon, de ez a kódolt eprom vizsgálatakor byte-onként nem áll rendelkezésre a kíváncsi tekintetek számára! 🙂

Nos, dióhéjban ennyit szeretnék elmondani erről, nem veséztem ki teljes mértékig a témát, különös tekintettel az interrupt ciklusok és az M1 vonal működésének összefüggésére, de úgy vélem bemutattam egy technikailag szofisztikált programvédelmi megoldást, ami megalapozza ennek a processzornak a XXI. században történő használatát.

Kategóriák
Egyebek, gépház, házirend stb. Maga az iparos. Történetek a múltból és a jelenből. Munkával kapcsolatos észrevételek, kérések, kérdések, egyelőre egy halomba, minden ami idefér Utazás, szabadidő és mindenféle érdekes dolog. Véleményem a világ dolgairól

Helló Világ!

Annak írok, aki itt jár. Ha tetszik ha nem, ennek a honlapnak a gazdája én vagyok. Nekem kell felelősséget viselni a törvények szerint.


Szabályok:
Az egészséges, építő, jobbító kritikát szívesen fogadom.


A kérdésekre, kérésekre, szívesen válaszolok, de ez a saját munkám terhére nem mehet.


Aki türelmetlen vagy zaklat, kitiltom.


Aki tiszteletlen azt kitiltom.

A számomra elfogadhatatlan, üzleti és/vagy magánérdekeimet sértő hozzászólásokat törlöm.

Ha valaki linkel engem, viszonossági alapon én is linkelem őt. Ez természetes, kedvenceimet a kedvencek menüben találhatják.


Ennyi.