S Z Á M Í T Ó G É P - V E Z É R E LT P O T E N C I O S Z TÁT É P Í T É S E KÜLÖNLEGES ELEKTROKÉMIAI MÉRÉSEKHEZ vesztergom soma
Az Apáczai Csere János Doktoranduszi ösztöndíjhoz kapcsolódó záró beszámoló melléklete • A kutatás a TÁMOP 4.2.4.A/1-11-1-2012-0001 azonosító számú Nemzeti Kiválóság Program − Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és muködtetése ˝ országos program címu˝ kiemelt projekt keretében zajlott. A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósult meg. Budapest, 2014. február 20.
Vesztergom Soma: Számítógép-vezérelt potenciosztát építése különleges elektrokémiai mérésekhez, Az Apáczai Csere János Doktoranduszi ösztöndíjhoz kapcsolódó záró beszámoló melléklete, © 2014. február 20. A muben ˝ bemutatott fejlesztések az Eötvös Loránd Tudományegyetem Természettudományi Karán, a Kémiai Intézet Elektrokémiai és Elektroanalitikai Laboratóriumában történtek. A szerz˝o hálás köszönettel tartozik Tihanyi Attilának, a Pázmány Péter Katolikus Egyetem Elektronikus Mér˝olaboratóriuma vezet˝ojének, akinek önzetlen segítsége nélkül e fejlesztések nem valósulhattak volna meg. A kutatás a TÁMOP 4.2.4.A/1-11-1-2012-0001 azonosító számú Nemzeti Kiválóság Program − Hazai hallgatói, illetve kutatói személyi támogatást biztosító rendszer kidolgozása és muködtetése ˝ országos program címu˝ kiemelt projekt keretében zajlott. A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósult meg.
TA R TA L O M J E G Y Z É K
1. bevezetés 7 1.1. Az elektrokémiai mérések jellege 7 1.1.1. A potenciosztát 7 1.1.2. Az elektrokémiai mérések módszerei 1.2. Célkituzések ˝ 12
8
2. az analóg szabályozókörök és a tápegység 15 2.1. A tápegység muködése ˝ 15 2.1.1. Érintés- és túlfeszültségvédelem 15 2.1.2. A hálózati feszültség transzformálása 16 2.1.3. Az egyenirányítás 16 2.1.4. Feszültségstabilizáció 17 2.2. Az analóg szabályozás muködése ˝ 18 2.2.1. Az elektródpotenciál mérése 19 2.2.2. Az áram mérése 19 2.2.3. A véger˝osít˝o 19 2.2.4. A cellaparaméterek szabályozása, a potenciosztatikus vagy galvanosztatikus muködés ˝ megvalósítása 22 2.3. A potenciosztát fejlesztése közben felmerült nehézségek 22 3. a digitális vezérlés 25 3.1. A megvalósítás eszközei 25 3.1.1. A központi muveletvégz˝ ˝ o egység 25 3.1.2. A muszer ˝ és a számítógép közötti kommunikáció megvalósítása 27 3.2. Az A/D és a D/A konverzió eszközei, és kezelésük a mikrokontrolleren 28 3.3. A vezérlés programszintu˝ muködése: ˝ a firmware kialakítása 30 3.3.1. Kapcsolási feladatok ellátása és a status bitek kezelése 32 3.3.2. A muszer ˝ számítógéphez illesztése 33 4. szoftveres fejlesztések 35 4.1. „Végfelhasználói szoftverek” 35 4.1.1. Vezérl˝ojelek definiálása matematikai formulák alapján 35 4.2. Saját potenciosztátunk szoftveres kezelése 37 4.2.1. A vezérlés megoldása 37 4.2.2. A mért adatok fogadása 39 5. függelék
41
3
„Ezek a kétértelmuségek, ˝ redundanciák és hiányosságok azokra a jelenségekre emlékeztetnek, amelyeket Dr. Franz Kuhn egy bizonyos kínai enciklopédiában – A jóravaló ismeretek égi gyujteménye ˝ a címe – mutat ki. Amaz o˝ si feljegyzések szerint ugyanis az állatok lehetnek a) a Császár állatai, b) balzsamozottak, c) idomítottak, d) malacok, e) szirének, f) mesebeliek, g) kóbor kutyák, h) olyanok, amelyek ebben az osztályozásban szerepelnek, i) o˝ rülten rázkódók, j) megszámlálhatatlanok, k) olyanok, akiket a legfinomabb tevesz˝or ecsettel festettek, `) másfajták, m) olyanok, akik távolról légynek tunnek.” ˝ Jorge Luis Borges: A John Wilkins-féle analitikus nyelv (Scholz László fordítása)
1
BEVEZETÉS
1.1
az elektrokémiai mérések jellege
Elektrokémiának nevezzük a kémia azon területét, amely az elektromos áram (tágabb értelemben véve: az elektromos tér) és a kémiai kölcsönhatások kapcsolatát vizsgálja. Ez a tudomány kutatja az olyan fontos témákat, mint a vezet˝o polimerek, a nagy élettartamú akkumulátorok, a tüzel˝oanyagcellák el˝oállítása, stb. Az elektrokémia területét sokféleképpen feloszthatjuk, itt azonban a csoportosításnak csak egyetlen lehet˝oségét említjük, amennyiben a bockrisi1 tematizációt követve megkülönböztetjük az elektrokémián belül az iónika és az elektródika területét. Míg az el˝obbi az ionokat tartalmazó homogén fázisok (pl. elektrolitoldatok) viselkedését írja le, addig az utóbbi olyan fázishatárokat vizsgál, amelyek egy els˝ofajú (elektron- vagy félvezet˝o) és egy másodfajú (ionos) vezet˝o fázist választanak el.2 Annak köszönhet˝oen, hogy a vezetés mechanizmusa az elektródot alkotó fázisokban más és más, az elektromos potenciál az elektródfelületen (makroszkopikus szempontból nem folytonos módon) megváltozhat. Bár a két fázis közötti potenciálkülönbség közvetlenül nem mérhet˝o, az elektródpotenciált – egy másik, „egyensúlyban lév˝o”, így stabil potenciálúnak tekintett, ún. referenciaelektróddal szemben – megmérhetjük. Ehhez a két elektródot úgy kell kialakítanunk, hogy ionvezet˝o fázisaik vagy megegyezzenek, vagy egymással legalábbis érintkezzenek: ekkor az elektronvezet˝o fázisok között, lehet˝oség szerint azonos fémes hozzávezetés alkalmazásával, már végezhetünk feszültségmérést. Az így kapott (legalább két elektródból álló) rendszert szokás elektrokémiai cellának vagy galváncellának nevezni. Egy cellán – és az azt alkotó elektródokon – akár spontán módon (mint a szárazelemekben, akkumulátorokban, zsebtelepekben), akár küls˝o kényszer hatására (mint az elektrolizáló kádakban) áram folyhat át; ilyenkor az elektródfelületeken valamilyen fizikai-kémiai folyamat megy végbe. A fentebb említett két mennyiség, áram és elektródpotenciál között kapcsolat van. Mivel az elektród potenciáljának változtatásával az elektródon zajló reakciókat befolyásolni lehet,3 valamint az elektródon folyó áram éppen az ott zajló folyamat sebességér˝ol árulkodik (ha az áram nagy, a folyamat gyors, míg ha kicsi, akkor lassú), érthet˝o, hogy ezen összefüggések tanulmányozása az elektrokémikusok számára igen fontos. Az olyan méréseknek, amelyek segítségével ez összefüggések a leginkább feltárhatók, els˝odleges eszköze a potenciosztát. 1.1.1
A potenciosztát
A potenciosztát olyan muszer, ˝ amely lehet˝ové teszi a vizsgálat tárgyát képez˝o elektród (az ún. munkaelektród) egy másik, ún. referenciaelektróddal szemben értelmezett potenciáljának beállítását, és az ehhez szükséges áram mérését. Az elektródpotenciál beállítása csak akkor történhet többé-kevésbé pontosan, ha az alkalmazott referenciaelektród potenciálja stabil, ugyanis csak ebben az esetben lehetünk biztosak afel˝ol, hogy a mért feszültség értékének
7
1 J.
O’M. Bockris neves elektrokémikus.
2 Azon
legalább kétfázisú rendszereket, melyek pontosan egy olyan fázishatárt tartalmaznak, amelyen a vezetés a szövegben említett módon megváltozik, a fizikai kémiában elektródnak szokás nevezni.
3 Gondoljunk
például arra, hogy nagy feszültséggel – általában – gyorsabban végezhet˝o elektrolízis, mint kisebb feszültséggel stb.
8
4 Ohmikus
potenciálesés: az áram átfolyásának köszönhet˝oen az oldatellenálláson fellép˝o feszültségtag.
bevezetés
esetleges megváltozása valóban a munkaelektród potenciálváltozásából, és nem a referenciaelektród potenciáljának ingadozásából ered. A referenciaelektród stabilitásának az is a feltétele, hogy azon áram nem, vagy csak igen csekély mértékben folyhat át. A munkaelektród potenciáljának ellen˝orzött megváltoztatása tehát a legtöbb esetben csak úgy valósítható meg, ha alkalmazunk egy harmadik, ún. segédelektródot is: a potenciosztát ekkor a segédelektród-munkaelektród ágon éppen annyi áramot képes átfolyatni, hogy a munkaelektród és a referenciaelektród között a kívánt potenciálkülönbség jelenjen meg. Az így kapott elektrokémiai cellát, melyben tehát három elektród, egy referencia-, egy segéd- és egy munkaelektród foglal helyet, standard háromelektródos cellának nevezzük, és összeállítását az 1. ábrával szemléltetjük. Az 1. ábrán látható cella két térb˝ol tev˝odik össze: ezek egyike az R referenciaelektródot tartalmazó, ún. referenciatér, a másik az M munkaelektródot (a vizsgált elektródot), valamint az S segédelektródot tartalmazó, ún. munkaelektródtér. A két azonos összetételu˝ elektrolitoldatot tartalmazó tér között egy kapillárissá vékonyított cs˝o – az L, ún. Luggin-kapilláris – teremt kapcsolatot. A kapilláris vége a segéd- és a munkaelektród között folyó áram útjában helyezkedik el, a munkaelektród felületéhez megfelel˝oen közel ahhoz, hogy az ohmikus potenciálesést4 csökkentse. Az elektródfémek huzalok segítségével egy potenciosztáthoz kapcsolhatók, amely szabályozó egység lehet˝ové teszi, hogy a munkaelektród és a referenciaelektród között állandó (vagy az igények szerint változó) potenciált állítsunk be, s mérjük az ehhez szükséges – a segéd- és a munkaelektród között áthajtott – áram er˝osségét. A potenciosztáttal az általunk a munka- és a referenciaelektród között beállítani kívánt feszültség értéket (UPR ) közöljük a megfelel˝o bemeneten: ezt megtehetjük például egy függvénygenerátor vagy egy D/A konverterr˝ol kapott analóg jel alkalmazásával. A potenciosztát méri a munka- és a referenciaelektród között fellép˝o tényleges U feszültséget (vagyis az elektródpotenciált, amit az elektrokémiában gyakran E-vel jelölünk), majd a d muveleti ˝ er˝osít˝o képezi ezek különbségét, és az így kapott hibajelet feler˝osíti. Ezek után a potenciosztát éppen annyi I áramot hajt át a munka- és a segédelektród között, hogy e különbség zérus értéku˝ legyen, vagyis a munkaelektródot éppen olyan mértékben polarizálja, hogy az U feszültségérték megfeleljen az általunk megkívánt UPR értéknek. Az ehhez szükséges áram er˝osségét a muszer ˝ kijelzi: a mért áram (és a tényleges feszültség) értékét mutatóról vagy XY-rekorderr˝ol leolvashatjuk, esetleg A/D konverterek alkalmazásával digitalizálhatjuk. 1.1.2
5A
helyettesít˝o kapcsolás a következ˝o „kémiai szemléletet” adja vissza: Egy elektrolitoldattal érintkezik egy fém. A fém/oldat határfelületen egyrészt végbemehet egy (gátolt) töltésátlépés, másrészt kialakulhat egy elektromos kett˝osréteg (ezt szemlélteti a párhuzamosan kapcsolt Rct ellenállás és Cdl kapacitás). A kapcsolásba beépítettünk még egy Rsol tagot is, amely az oldat ellenállását hivatott jelképezni.
Az elektrokémiai mérések módszerei
A fentiekben bemutatott kialakítás különféle kísérleti módszerek használatára adhat alkalmat, a továbbiakban erre kívánunk példát adni. Egy gondolatkísérlet erejéig képzeljünk el egy olyan elektrokémiai rendszert, amely a 2. ábrán látható kapcsolással „helyettesíthet˝o”.5 Egy ilyen cellában a munkaelektródnak a referenciaelektródhoz képest mért potenciálja változtatható: ehhez valamennyi áramot kell a munka- és a (jelen, egyszerusített ˝ esetben a referencia-elektróddal ekvipotenciális) segédelektród között átfolyatnunk. Ha létezne egy olyan „ideális függvénygenerátorunk”, amelynek kimenetein a terhelést˝ol függetlenül mindig a kívánt feszültség jelenne meg, akkor potenciosztát használata nélkül is megoldhat-
1.1 az elektrokémiai mérések jellege
1. ábra. Standard háromelektródos cella, és a hozzákapcsolt potenciosztát elvi vázlata.
2. ábra. Elektrokémiai cella er˝osen egyszerusített ˝ analóg áramköri modellje (ún. „helyettesít˝o kapcsolása”). Jelölések: Rsol oldatellenállás, Rct töltésátlépési ellenállás, Cdl kett˝osrétegkapacitás.
9
10
bevezetés
nánk mindezt (ld. a 2. ábrát). Egyenes (ún. ramp) jellel történ˝o vezérlést feltételezve könnyen megállapíthatnánk, hogy ha a kapcsolásba épített Rsol tag kicsi, akkor az áram-feszültség karakterisztika I=
U dU + Cdl · Rct dt
(1)
alakú lenne: vagyis azt látnánk, hogy az áram a feszültség függvényében −1 Rct meredekségu˝ egyenes, Cdl · ddUt eltolással (a tengelymetszet el˝ojele a polarizáció irányától függ). Természetesen, ha a helyzet az el˝obbit˝ol kissé eltér˝o, és egyrészt az Rsol ellenállást nem hanyagoljuk el, másrészt nem egyenes, hanem háromszögjelperturbációt alkalmazunk, az áram-feszültség karakterisztika egy kicsivel bonyolultabb lesz, de az I vs. E görbék alakja a fentebb vázoltak alapján még mindig érthet˝o. Háromszögjel perturbációra vonatkozó szimulációs eredményeket közlünk a 3. ábrán: ehhez hozzáfuzzük, ˝ hogy a kondenzátor áttölt˝odésének, stb. leírásához a rendszert leíró differenciálegyenletek megoldása lenne szükséges háromszögjel perturbálófüggvény esetére, amelyet részint, mert a levezetés hosszadalmas, részint, mert számunkra sok információt ennek ellenére nem nyújt, most mell˝oztünk. Annak, hogy most a háromszögjel-perturbációval foglalkoztunk, egyszeru˝ oka van: ilyen méréseket ugyanis az elektrokémikusok is gyakran végeznek, és a mérést ciklikus voltammetriának (röviden CV-nek) nevezik. A CV módszerével sok értékes adat nyerhet˝o a vizsgált rendszerr˝ol: egy CV-r˝ol leolvashatók mind az elektromos kett˝osréteg bizonyos tulajdonságai (els˝osorban annak kapacitása), mind pedig olyan információk, hogy az elektródon mely potenciálokon milyen reakciók játszódnak le, stb. Mindezt a 4. ábrán szemléltetjük, amely valós kémiai rendszereken mért ciklikus voltammogramokat mutat be. A 4.a. ábrán bemutatott voltammogramot egy jellemz˝oen inert kémiai rendszeren mértük, amelyen töltésátlépéssel járó folyamatok nemigen figyelhet˝ok meg. Kis jóindulattal azt mondhatjuk, a rendszer jól leírható még a 2. ábra szerinti egyszeru˝ helyettesít˝o kapcsolással is, ha abban Rct értékét nagynak választjuk (vö. a 4.a. ábrát a 3. ábrával). A 4.b. ábrán látható görbe már érdekesebb, azt helyenként csúcsok és völgyek megjelenése díszíti, amelyek különböz˝o elektrokémiai folyamatokhoz rendelhet˝ok: tájékoztató jelleggel ezeket az ábrán meg is jelöltük, de a ciklikus voltammetriás mérések ennél b˝ovebb értelmezési lehet˝oségeivel itt nem foglalkozunk. Mindenképpen megemlítjük ugyanakkor, hogy az elektrokémiai vizsgálatok eszköztárát nemcsak a ciklikus voltammetria jelenti, és a továbbiakban felsorolunk néhány egyéb, jellemz˝o módszert: a) gyakran az elektródpotenciált nem három-, hanem négyszögjelekkel vezérlik, és az áram ugrásszeru˝ (majd lecseng˝o) változásait követik; b) bizonyos mérések során az elektródpotenciált (vagy magát az áramot) különböz˝o frekvenciájú szinuszjelekkel perturbálják, és a rendszer frekvenciaválaszát vizsgálják; c) más esetekben a szinuszos perturbációt valamilyen lassan változó feszültségre szuperponálják, és az így kapott jelet használják az elektródpotenciál vezérlésére; d) megint más esetben nem az elektródpotenciált, hanem az elektródon átfolyó áramot szabályozzák (potenciosztát helyett galvanosztátot használva) valamilyen id˝oben változó (vagy éppen állandó) jelalak szerint; e) gyakran az alkalmazott vezérl˝ojel nem periodikus, hanem például egyenes vagy az id˝o négyzetével (esetleg négyzetgyökével) arányosan emelked˝o; f) bizonyos esetekben a vezérl˝ojel valamilyen periodikus függvények bonyolult kombinációja; g) olykor vezérl˝ojelként nem valamilyen függvényt, hanem mesterségesen el˝oállított (és majdnem fehér) zajt használnak. . .
1.1 az elektrokémiai mérések jellege
3. ábra. A 2. ábra helyettesít˝o kapcsolása alapján szimulált ciklikus voltammogramok, amelyek egyenes szakaszait az 1. egyenlet jó közelítéssel leírja. A meredekebb görbére Rct = 1 kΩ, a majdnem vízszintes tájolású (szaggatott) görbére Rct = 1 MΩ; nagy ellenállás esetén a görbe a vízszinteshez közelít. Egyéb paraméterek: Rsol = 100 Ω, Cdl = 5 µF, ddUt = 1 V/s.
4. ábra. N-butil-N-metilimidazólium-hexafluorofoszfát ionos folyadékba merül˝o Au(100) egykristályon kloridozott felületu˝ ezüst referenciaelektróddal szemben (a), illetve 0,5 mol/dm3 -es kénsavoldatba merül˝o aranyon telített kalomelelektróddal (SCE) szemben (b) mért ciklikus voltammogramok. Mindkét esetben ddUt = 50 mV/s.
11
12
6 Itt
visszautalunk a dolgozat mottójául választott Borges-idézetre.
bevezetés
Az elektrokémia kísérleti módszereinek további felsorolása fáradságos és értelmetlen vállalkozás lenne – a módszerek közötti egyértelmu˝ átfedések egyébként is lehetetlenné tennék a világos taxonómia felállítását.6 Az elektrokémiai mérések jellegével kapcsolatban elegend˝onek tunik ˝ tehát leszögeznünk annyit: e módszerek alapját az elektródpotenciál (vagy az áram) valamilyen gerjesztése jelenti, a vizsgált rendszerrel kapcsolatos információkhoz pedig a rendszer e perturbációra adott válaszának mérésével juthatunk hozzá. E kijelentés tükrében fogalmazzuk meg a pályamunka célkituzéseit. ˝ 1.2
7 Ez
a megoldás kevésbé elterjedt, mint a munkaelektród leföldelése, de lehet˝oséget ad több munkaelektród egymástól független szabályozására is, így az elkészült rendszer többek között forgó gyur ˝ us ˝ korongelektródos mérésekhez is alkalmazható lesz (számos, a fejlesztés közben született publikációm foglalkozik ezzel a témával).
8 RISC: reduced instruction set computer, csökkentett utasításkészletu˝ számítógép.
˝ célkit uzések
Megfelelve annak az elvárásnak, hogy az általunk megépített muszer ˝ a lehet˝o legáltalánosabb célú elektrokémiai felhasználásra legyen alkalmas, olyan eszközt terveztünk, amely egyrészt képes a munkaelektród potenciálját (vagy az azon átfolyó áramot) gyakorlatilag tetsz˝oleges – matematikai formulák segítségével leírható – jel alapján szabályozni, másrészt eközben az elektródpotenciált és az áramot nagy sebességgel mintavételezni. Ezen túlmen˝o további célunk az volt, hogy eszközünk több példányának együttes használatával ne csak egy, hanem – adott esetben – több munkaelektród potenciosztatikus vagy galvanosztatikus kontrollja is megvalósítható (egyazon referencia- és segédelektród alkalmazásával). Ennek megfelel˝oen olyan analóg szabályozókört terveztünk, amely az elektrokémiai cella segédelektródját helyezi virtuális földre.7 Az analóg szabályozókör muködését ˝ részletesen a 2. fejezetben mutatjuk be. A felsorolt célok viszonylagos összetettségénél fogva olyan muszer ˝ megépítésére volt szükség, amely önálló muveletvégz˝ ˝ o és digitális szabályozóegységgel rendelkezik. Az általunk követett koncepció értelmében sem a kimen˝o jelek el˝oállítása, sem pedig a mért jelek analízise nem lett azonban a muszer ˝ feladata: a muveletvégz˝ ˝ o egységet csupán néhány egyszerubb ˝ vezérlési feladatra (méréshatárváltás, stb.), illetve a számítógép és a muszer ˝ közötti, nagy sebességu˝ adatforgalom lebonyolítására használtuk. A rendszer lényegi muködését ˝ az 5. ábra segítségével szemléltetjük, illetve a következ˝okben foglaljuk össze: — egy számítógépen futó (a LabVIEW fejleszt˝oi környezetben írt) szoftverben el˝oállítjuk a (muködést˝ ˝ ol függ˝oen galvanosztatikus vagy potenciosztatikus kontroll megvalósításához használt) vezérl˝ojel értékeit egy bizonyos, a felhasználó által definiált formula alapján; — ezen értékeket nagy sebességu˝ USB-kapcsolaton közöljük a muszerrel, ˝ amelyben egy mikrokontroller fogadja az adatokat, és azokat (id˝ozített módon) egy D/A konverter segítségével analóg jel formájában el˝oállítja (ezzel megadva az UPR jelet, ld. az 1. ábrát); — a muszer ˝ analóg szabályozóköre elvégzi a vezérl˝ojelnek megfelel˝o szabályzást; — a mért áram- és elektródpotenciál értékeket kétcsatornás A/D-konverter segítségével monitorozza, és ezeket USB-n a számítógépnek továbbítja. Megjegyezzük, hogy egy potenciosztát ilyen architektúra alapján történ˝o megépítése újdonságnak mondható; a potenciosztát gyártók általában más megfontolásokat szoktak alkalmazni (például, hogy a vezérl˝ojelet a muszer ˝ maga állítja el˝o). Mivel azonban a RISC-ek8 programozása nehézkes, egy ilyen megoldás alkalmazása – ugyan el˝onyei kétségkívül megmutatkoznak
˝ 1.2 célkit uzések
5. ábra. Az általunk követett koncepció sematikus ábrázolása.
például a PC és az eszköz közötti adatforgalom csökkenésében – gyakran sok korlátozást von maga után: többek között lehetetlenné teszi például azt is, hogy a kémiai rendszert tetsz˝oleges jellel perturbáljuk (ilyen jel el˝oállítása ugyanis a RISC-en igen bonyolult feladat lenne). Az elkészült muszerben ˝ alkalmazott digitális vezérlési megoldásokat a dolgozat 3. fejezetében mutatjuk be, az eszköz szoftveres automatizálásáról pedig a 4. fejezetben írunk részletesen. A beszámoló függelékében (egy ismert elektrokémiai rendszeren végzett demonstrációs mérés közben) képekben mutatjuk be a rendszer muködését. ˝
13
2
A Z A N A L Ó G S Z A B Á LY O Z Ó K Ö R Ö K É S A TÁ P E G Y S É G
Az analóg szabályozókörök tervezését és megépítését Tihanyi Attilával (PPKE) közösen végeztük. A tápáramkör muködésének ˝ dokumentációja Kovács Noémi (ELTE) gondos munkáját dicséri.
2.1
˝ a tápegység m uködése
A berendezés muködéséhez ˝ szükséges energiát a tápegység biztosítja. Potenciosztátunk 230 V-os, ∼ 50 Hz frekvenciájú hálózati váltófeszültségr˝ol üzemel, ám annak alkatrészei egyenáramról muködnek: ˝ a jól muköd˝ ˝ o tápegység kialakítása tehát a fejlesztés fontos kérdése volt. A muveleti ˝ er˝osít˝ok alkalmazásához ±15 V feszültségre volt szükségünk, de egyes digitális áramkörök muködtetéséhez ˝ 5 V-os, illetve 3, 3 V-os egyenfeszültségeket is használtunk. Ezen különböz˝o abszolút értéku˝ – stabilizált – egyenfeszültségek el˝oállítását végzi a tápegység, amelynek kapcsolási rajza a 6. ábrán látható. A tápegység részei: — a hálózati transzformátor, amely a hálózati feszültséget az egyenirányító számára szükséges értékre alakítja; — az egyenirányító, amely egy ún. szuretlen ˝ egyenfeszültséget állít el˝o; — a szur˝ ˝ o áramkör, amely csökkenti az egyenirányított feszültség ingadozásait és kiszuri ˝ a váltakozó áramú összetev˝oket; — valamint a stabilizátor, melynek feladata a kimeneti feszültség stabilizálása. A muszer ˝ megépítése során kétféle követelménynek is igyekeztünk megfelelni: egyrészt a muveleti ˝ er˝osít˝ok táplálásához – a pontos mérés érdekében – rendkívül stabil ±15 V-os tápfeszültséget kellett el˝oállítanunk (ezt ún. lineáris stabilizátor alkalmazásával értük el); másrészt a digitális áramkörök muködtetését ˝ igyekeztük kis fogyasztással (kapcsolóüzemu˝ stabilizátor alkalmazásával) megoldani.1 2.1.1
Érintés- és túlfeszültségvédelem
A berendezés védelmének érdekében a hálózati transzformátor elé beépítettünk egy 250 V-os varisztort (z12 ), amely a rövid id˝otartamú, nagy feszültségek (pl. villámáramok) kiszurésére ˝ alkalmas: amennyiben a varisztor két lábán es˝o feszültség egy bizonyos érték (250 V) fölötti, az alkatrészen áram folyik át; egyébként a varisztor ellenállása végtelennek tekinthet˝o. A kisebb tüskék, zajok kiküszöbölésére a varisztor után elhelyezett fojtótekercs (tr2), valamint az ábrán c1-gyel jelölt, 1 µF-os kondenzátor szolgál. A kondenzátorral párhuzamosan kapcsolt ellenállásra (r1) a kondenzátor folyamatos tölt˝odése miatt van szükség, a hálózati feszültség megszüntetését követ˝oen ezen ellenállás biztosítja a felhalmozódott töltésmennyiség levezetését: ezzel elkerülhet˝o az áramütés veszélye. r1 értékét kell˝oen nagynak (1 MΩ) választottuk ahhoz, hogy annak jelenléte ne jelentsen számottev˝o
15
1A
kapcsolóüzemu˝ táp hatásfoka nagyobb, mint a kilép˝o- és belép˝o oldal közötti teljesítménykülönbséget termikus energia formájában eldisszipáló lineáris tápoké. Ugyanakkor a kapcsolóüzemu˝ feszültségstabilizálás nem tökéletes, a tápvonalakon jelen vannak a kapcsolási frekvenciával azonos frekvenciájú és felharmonikus összetev˝ok is. Míg ez digitális jelszintek esetén nem jelent zavaró hatást, addig az analóg mér˝ojeleket igencsak megzavarhatja. 2 Az
alkatrészekre a 6. ábrán is látható jelülésekkel hivatkozunk.
16
az analóg szabályozókörök és a tápegység
TR2 74311 TR1 BVUI39x 2x15V
D2 1N4005 D4 1N4005
C1 CX2 100nF
D3 1N4005
Z1 270V~
R1 1M
CONN2
D1 1N4005
IC4 7815
C13 4700u 25V
C15 220u 16V
C17 100n
C14 4700u 25V
C16 220u 16V
C18 100n
IC5 7915 IC7 TS2576
CONN1
C24 100n
C23 330u
R23 1,2K
D5 ES1J
C22 100n
R24 3,9K
L1 330uH C21 220u 25V
IC8 TS2576
C28 100n
C26 330u
R25 1,2K
D6 ES1J
C25 100n
R26 2,0k
L2 330uH C27 220u 25V
6. ábra. A tápegység kapcsolási rajza.
terhelést (rajta csak kis áram folyjék). Ez ∼ 1 s-os id˝oállandót eredményez, amely érintésvédelmi szempontból megfelel˝o.
2.1.2
A hálózati feszültség transzformálása
A4
Hálózati transzformátorként egy bvui39 típusú, két 15 V-os kimenettel rendelkez˝o transzformátort (tr1) használtunk. Ez egy közönséges feszültségtranszformátor, amely induktívan csatolt, különböz˝o menetszámú tekercsei segítségével a hálózati 230 V-ot 15 V-os – a hálózat frekvenciájának megfelel˝oen váltakozó – feszültséggé alakítja.
2.1.3
Az egyenirányítás
Az AC/DC átalakítás kétutas egyenirányító (ún. Graetz-híd) alkalmazásával történt. A kétutas egyenirányító a bemeneti szinuszos váltakozó feszültség mindkét félperiódusát hasznosítja, így az egyutas típusúaknál kevésbé „hullámos” egyenfeszültséget állít el˝o. A Graetz-kapcsolás kialakításához a d1–d4 jelu˝ diódákat használtuk fel. Az egyenirányítás hatását a 7. ábrával szemléltetjük: a 7.a ábra a váltófeszültségu, ˝ a 7.b ábra az egyenirányított jelet mutatja. Amint az a 7.b ábrán jól látható, a Graetz-híd kimenetén kapott egyenirányított jel még nem állandó értéku, ˝ mivel nemkívánatos váltakozó összetev˝ot (ún. búgófeszültséget) is tartalmaz. A búgófeszültség nagymértéku˝ csökkentését pufferkondenzátorok (c13, c14, c17, c27) alkalmazásával oldottuk meg. A pufferkondenzátor egy, az egyenirányító kimenetével párhuzamosan kapcsolt nagy kapacitású elektrolit kondenzátor, alkalmazásának hatását kétutas egyenirányítás esetén a 7.c ábra szemlélteti: a kimeneti feszültség hullámalakja a kondenzátor töltési és kisülési folyamatainak eredménye. (Az ábrán is látható, hogy minél nagyobb a kondenzátor kapacitása, a szurés ˝ annál hatékonyabb.)
˝ 2.1 a tápegység m uködése
7. ábra. Graetz-híddal történ˝o egyenirányítás: (a) váltófeszültségu˝ jel; (b) szur˝ ˝ okondenzátor nélkül egyenirányított jel; (c) két különböz˝o kapacitású pufferkondenzátor beiktatásával kapott egyenfeszültségu˝ jelszint.
.
2.1.4
Feszültségstabilizáció
A különböz˝o abszolút értéku˝ feszültségek el˝oállítása és stabilizálása az egyenirányítást követ˝oen történik, mint azt korábban már említettük, kétféleképpen: egyrészt lineáris, másrészt kapcsolóüzemu˝ megoldást alkalmazva. kapcsolóüzem u˝ feszültségstabilizálás A transzformátor által el˝oállított, majd a Graetz-híd által egyenirányított 15 V-os feszültségb˝ol kapcsolóüzemben állítjuk el˝o az 5 V-os és a 3, 3 V-os egyenfeszültségeket. A kapcsolóüzemu˝ tápegység nagy el˝onye, hogy átmeneti energiatároló eszközökön keresztül valósítja meg a feszültség módosítását, ami minimális energiaveszteséggel jár, így ez a megoldás jó hatásfokkal üzemeltethet˝o. Hátránya viszont, hogy muködtetése ˝ nagy rádiófrekvenciás zavart okoz: a kimeneti feszültségben jelen vannak a kapcsolási frekvenciával azonos frekvenciájú és felharmonikus összetev˝ok is, tehát a kapott jel igen zajos. Ez azonban nem okoz gondot abban az esetben, ha a kapcsolóüzemmel el˝oállított feszültséget – mint esetünkben – csak digitális áramkörök táplálására használjuk fel. A kapcsolóüzemu˝ stabilizátorok felépítés szempontjából három f˝o részre oszthatók: egy teljesítménykapcsolóból, egy szur˝ ˝ ob˝ol (LC rezg˝okörb˝ol) és egy vezérl˝oegységb˝ol állnak. Számunkra a stabilizálás megvalósításához lm2576 típusú feszültségszabályozó integrált áramkörök (ic7 és ic8 a 6. ábrán) nyújtanak segítséget. A 8. ábrán látható egy kapcsoló üzemu˝ stabilizátor tömbvázlata, a pirossal jelölt rész az lm2576 típusú feszültségszabályozó IC-n belül található. A teljesítménykapcsoló az alkalmazott IC esetén egy tranzisztor, a bels˝o oszcillátor (furészgenerátor) ˝ állandó frekvenciája 52 kHz. Az LC szur˝ ˝ o feladata, hogy elektromos energiát tároljon, amíg a teljesítménykapcsoló zár, és a tárolt energiát leadja az r1 ellenállásnak, mialatt a teljesítménykapcsoló nyit. A kapcsoló üzemu˝
17
18
az analóg szabályozókörök és a tápegység
+
1
Teljesítménykapcsoló
2
Szűrő L
Vezérlőegység +
Iki
C R1 Ube
– Komparátor
4
Uki
ε
R1
+ Fűrészgenerátor
Különbségképző és szabályozóerősítő
Uref
R2
3,5
8. ábra. Kapcsolóüzemu˝ tápegység tömbvázlata. A pirossal jelölt részek az lm2576 típusú feszültségszabályozó IC-n belül találhatók. Szintén piros színnel számoztuk meg az IC lábait, ezek: 1.) bemen˝o feszültség; 2.) kimen˝o feszültség; 3.) földelés; 4.) visszacsatolás; 5.) az IC kapcsolólába (az IC akkor muködik, ˝ ha ez, mint az ábrán is, szintén földelt).
.
stabilizátor legfontosabb része a vezérl˝oegység, melynek feladata a teljesítménykapcsoló vezérlése (kapcsolójel el˝oállítása). Ezt két modul, a referenciafeszültséggel ellátott különbségképz˝o szabályozóer˝osít˝o és az impulzusszélesség-modulátor végzi. A bekapcsolás idejét a különbségképz˝o által feler˝osített hibajel és a furészgenerátor ˝ jelének összehasonlításával adja meg a komparátor. lineáris feszültségstabilizálás Szemben a digitális áramkörökkel, az analóg muveleti ˝ er˝osít˝ok tápellátását – a zaj minimalizálása érdekében – nem kapcsolóüzemu, ˝ hanem lineáris feszültségstabilizálással végeztük. Ehhez az l7815 (ic4) és l7915 (ic5) típusú pozitív, illetve negatív feszültségstabilizátorokat használtuk fel. Ezek soros átereszt˝o elemet (tranzisztort) tartalmazó integrált áramkörök. Bennük a tranzisztor nyitását az el˝oállítani kívánt és a tényleges kimeneti feszültségszint közötti különbség szabja meg, az IC-k a visszacsatolás megvalósításához beépített referencia feszültségforrással rendelkeznek. A lineáris feszültségstabilizátorok hatásfoka igen alacsony az átereszt˝o elem viszonylag nagy disszipációs teljesítménye miatt: a kimen˝o és bemen˝o oldal közötti teljesítménykülönbség h˝ové alakul. A tápegység hutésér˝ ˝ ol ezért nagy h˝okapacitású és felületu˝ alumínium borda beépítésével gondoskodtunk. 2.2
3A
kissé szokatlannak tun˝ ˝ o, két kivezetéses megoldás lehet˝oséget teremt a két áramvezet˝o és két potenciálmér˝o elektród használatát igényl˝o konfigurációk megvalósítására is.
˝ az analóg szabályozás m uködése
Az analóg szabályozás muködését ˝ a 9. ábrán közölt blokkvázlattal és a 10. kapcsolási rajzzal mutatjuk be. A potenciosztátot négy vezeték segítségével kapcsoljuk az elektrokémiai cellához (amelyet az ábrán szintén feltüntettünk). Két kivezetés kapcsolódik a we jelu˝ munkaelektródra – ezek egyike az áramvezet˝o (we_power), a másik a potenciálérzékel˝o (we_sense) hozzávezetés3 –; illetve egy-egy kivezetés kapcsolódik a segéd- (ce) és a referenciaelektródra (re). Már itt felhívjuk a figyelmet arra, hogy mint az a kapcsolási rajzból is kitunik, ˝ az alkalmazott megoldás az elektrokémiai cella segédelektródját helyezi virtuális földpotenciálra. E koncepciónak köszönhet˝oen eszközeink
˝ 2.2 az analóg szabályozás m uködése
19
több példányát használva több munkaelektródos mérések is megvalósíthatók lesznek a jöv˝oben. 2.2.1
Az elektródpotenciál mérése
A munka- és a referenciaelektród potenciálkülönbségét az ic9 jelzésu˝ tokba ültetett, három darab opa4188 típ. muveleti ˝ er˝osít˝o felhasználásával megvalósított instrumentációs er˝osít˝ovel mérjük. Ennek kimenete (ic9 8-as lába) adja kés˝obb Vrefcell néven a szabályozókör visszacsatoló jelét, ha eszközünket potenciosztátként használjuk (t33 jelu˝ mérési pont). A feszültségmér˝o muszerer˝ ˝ osít˝o kimeneti feszültsége (±2 V-os mérend˝o elektródpotenciál-tartományt feltételezve) a kétszeres er˝osítés miatt a ±4 Vos tartományra esik. A jelet az ic9d muveleti ˝ er˝osít˝o segítségével, VREF értékének felhasználásával képezzük le az ltc1865acms típ. A/D konverterrel mintavételezhet˝o 0 – 4 V-os, unipoláris feszültségtartományra4 . 2.2.2
Az áram mérése
A munkaelektród we_power hozzávezetésén folyó áramot egy, az áramútba beiktatott mér˝oellenálláson es˝o feszültség mérésével határozzuk meg. Hasonlóan a potenciál mérésekor használt kapcsoláshoz, itt is instrumentációs er˝osít˝ot építettünk három muveleti ˝ er˝osít˝o felhasználásával; ezek az ic6 tokban találhatók. Az árammér˝o muszerer˝ ˝ osít˝o kimenetén (ic6 8-as lábán, t33 jelu˝ mér˝opont) megjelen˝o feszültséget alkalmazzuk (Irefcell néven) visszacsatolásra, ha eszközünket galvanosztát üzemmódban, a munkalektród áramának beállítására használjuk. Az instrumentációs er˝osít˝o kimenetén megjelen˝o feszültség arányos a munkaelektródon átfolyó árammal. Az arányossági tényez˝o értékét egyrészt a mér˝oellenállás értéke (1 Ω vagy 1 kΩ, függ˝oen az sw1 jelu, ˝ ve–5hmkvd típ. jelfogó állásától), másrészt az er˝osítés nagysága szabja meg (utóbbi az ic12 jelu, ˝ ad7510 típ. analóg kapcsoló segítségével állítha5 tó be). Az itt bemutatott megoldással a munkaelektródon folyó áram és az árammér˝o muszerer˝ ˝ osít˝o kimenetén megjelen˝o feszültség közötti arányossági tényez˝o értéke 2 µA/V és 2 A/V között határozható meg (dekádonkénti osztásban); a muszer ˝ (a legmagasabb méréshatár-állásnál) 400 mA mérhet˝o áramot képes a cellán átfolyatni. Az árammér˝o instrumentációs er˝osít˝o kimenetének a mért árammal arányos feszültségjelét – a feszültségmérésnél is használt megoldást követve – a 0 – 4 V-os, unipoláris feszültségtartományra transzformáljuk, amely az ltc1865acms típ. A/D konverterrel már mintavételezhet˝o. 2.2.3
A véger˝osít˝o
Mint az el˝oz˝o pontokból már kiderült, eszközünket úgy terveztük, hogy az képes legyen a munka- és a referencia-elektród között legalább ±2 V-os potenciálkülönbséget kialakítani, és e célra a cellán ∼ 400 mA áramot átfolyatni. Ehhez megfelel˝o vezérelt generátort (véger˝osít˝ot vagy végfokot) kellett építenünk. A feladatot sikerrel oldotta meg a kapcsolási rajzon is látható, négy tranzisztorral (t12–t15) megvalósított, szimmetrikus felépítésu˝ komplementer végfok, amely ±15 V-os kivezérlés mellett is képes legalább 500 mA áram leadására.
4 Az A/D- és a D/A-konverterek referenciafeszültsége éppen VREF = +4 V, amit az ábra jobb alsó részében elhelyezett feszültségosztóval az analóg 5 V-os tápfeszültségb˝ol állítunk el˝o.
5 Az
analóg kapcsolót és a relét a mikrokontroller közvetlen digitális vonalakkal vezérli.
RE
WE_SENSE
9. ábra. Az analóg szabályozóegység blokkvázlata.
CE
WE_POWER
20 az analóg szabályozókörök és a tápegység
6
4
C46 1u
7
V+
V-
-
3
2
C10 1u
2V-
V+ 3+
4
7
Out 6
7 Inv 6 Vout
1 Ref 8 Rfb
GND
Vref
C45 100p
IC10 TL071 DIP
C11 10u
PGND
GND
GND 10
Vdd
9
T14 BC817
T15 BC807
-15V
CLR
DIN
SCLK
CS
5
4
3
2
U2 LTC2641 MSOP
+5Va
R64 47
R63 1,2K
C44 100n
R61 1,2K
R17 100
R16 100
R15 100
R14 100
T9
T8
T7
PGND
PGND
T6
C40 100n
T13 BD241
T12 BD242
R43 1K 1% 2W
CE T26
T25
WE_SENSE
SW1 VE-5HMKVD
C41 100u 16V
C38 100u 16V
D9 1N4148
Áram PGND
IC12e AD7510 10 6
RE T28
WE_SENSE T27
SW2 VE-5HMKVD
R42 10K 1%
R44 1 1% 2W
5
4
9
Sel0
11
Sel1
13
Sel2
IC12c AD7510 14 IC12d AD7510 12
15
3
Sel3
16
R41 10K IC12b 1% AD7510
+15V
IC12a AD7510 1 Vss
+5V
R46 10K 1%
R45 10K 1%
On_Off
R54 100 1%
R53 1K 1%
R52 10K 1%
R51 200K 1%
-15V
6
5
IN-
IN+
6
5
3 IN+ V-
V+ 2 IN-
IN+ IN-
R28 100k 1%
OUT
11
OUT 1
7
IC9b OPA4188
R35 100K 1% 4 IC9a OPA4188 V+ 2 IN3 IN+ V-
7
OUT 1
IC6a OPA4188
R34 100K 1%
11
4
R27 100k 1%
OUT
IC6b OPA4188
R40 10K 1%
R38 10K 1%
R37 10K 1%
R33 10K 1%
R31 10K 1%
R30 10K 1%
C20 100u V11
C33 100u
10 IN+
V+ 9 IN-
4
B OUT 8
IC9c OPA4188
R39 10K 1%
R20 10k 1%
AGND
T33
AGND
C30 100n
Icell T32
Pot_Galv
C19 100n AGND
OUT 8
IC6c OPA4188
A 11
4
C29 100u
V-
10 IN+
V+ 9 IN-
R32 10K 1%
AGND T34 IRLML2502
On_Off
V-
12 IN+
V+ 13 IN-
V-
12 IN+
V+ 13 IN-
R19 10k 1%
R21 10k 1%
C12 1u 8 Vdd GND 2 D10 1N4148
11
4
11
4
AGND
C7 100n
OUT 14
IC9d OPA4188
OUT 14
IC6d OPA4188
R55 10k 1%
T30 IRLML2502 +15V IN GND
IC1 78L05
3
2
PGND
AGND
Ch1
Ch0
Ref
C43 10u
OUT
C8 100u
2 3 6 7A
8R
Vref
J2
J1
GND
Sel0
Sel1
Sel2
Sel3
Sel4
Sel5
Sel6
+5V
R13 22
SDO
SCK
SDI
Conv
AGND
7
8
6
1
AGND
+5Va
+5V
DGND 5
Vcc
9
C IC3 1
~4V
AGND 4
U1 LTC1865 MSOP
GND
10
T29 IRLML2502
T11
+5Va
-15V
+15V
R10 100
R9 100
R8 100
R7 100
GND
T17
T5
T16
T4
T3
T2
T1
T10
T18
T19
T20
T21
T22
T23
T31
T35
T24
A3
10. ábra. Az analóg szabályozóegység vázlatos kapcsolási rajza. Az ábra csak a muködés ˝ áttekintésére szolgál: egyes alkatrészek (különösen az ellenállások) nem a tényleges értékekkel szerepelnek.
+5Va
Out
IC11 OP177
Icell
Vrefcell
R18 10K 1%
R66 22K
R65 22K
R47 22K R48 22K
R49 1,2K R60 220 R62 220
D7 1N4148 D8 1N4148
R59 1,2K R58 100K
C39 100n
V+
+15V
4
+5V
V-
+
11
R50 22K
R57 1,2K R56 100K
C35 1u R29 10M 1%
R68 1,2K R67 100K C37 100n
R36 200K 1%
C36 100u
C31 100u
C6 100n
C32 100n
V+
Pot_Galv B
Vrefcell
4
SW3 VE-5HMKVD Vref
V-
+5V A
C34 100n
C42 100u R11 1,2k 1%
C9 100u
R12 2k 1%
11
D11 1N4148
˝ 2.2 az analóg szabályozás m uködése 21
22
az analóg szabályozókörök és a tápegység
2.2.4
A cellaparaméterek szabályozása, a potenciosztatikus vagy galvanosztatikus muködés ˝ megvalósítása
A szabályzás alapját az ltc2642aims típ. D/A-konverter és a közvetlenül hozzákapcsolt ic11 (op177 típ.) muveleti ˝ er˝osít˝o ±4 V-on értelmezett vezérl˝ojele adja. Ezt a jelet, amely ic11 6-os lábán jelenik meg, a potenciosztatikus vagy galvanosztatikus muködési ˝ módtól függ˝oen a celláról visszacsatolt Vrefcell vagy Irefcell jellel hasonlítjuk össze (ld. az ic10 jelu, ˝ tl071 típ. muveleti ˝ er˝osít˝ot): az összehasonlítás eredményeképpen kapott jelet használjuk az el˝oz˝o pontban már bemutatott véger˝osít˝o (vezérelhet˝o áramgenerátor) muködtetéséhez. ˝ A potenciosztatikus vagy galvanosztatikus szabályzás között az sw3 jelu, ˝ a mikrokontrollerr˝ol digitálisan vezérelhet˝o jelfogó kapcsolásával választhatunk, míg adott esetben (sw2 relé kikapcsolásával) arra is lehet˝oségünk nyílik, hogy szabályozást egyáltalán ne végezzünk – erre például akkor lehet szükség, ha az eszközt pusztán a nyitott áramköri feszültség mérésére kívánjuk használni. 2.3
6 Ld.
kés˝obb, a 3. és 4. fejezeteket it.
7A
D/A konverterre csak akkor küldünk adatot, ha annak kimeneti értékét mindenképpen változtatni kell, így elérhet˝o, hogy a digitális jelek által keltett zavarok az elkerülhetetlennél nagyobb mértékben ne befolyásolják a mérést – ld. kés˝obb, a digitális vezérlés kapcsán a 31. oldalon közölt 2. kódrészlettel kapcsolatban mondottakat. 8 Az A/D- és a D/A konvertereink felbontása 16 bites.
a potenciosztát fejlesztése közben felmerült nehézségek
A 10. ábrán bemutatott kapcsolási rajznak megfelel˝o potenciosztát széles (< 100 kHz) tartományon változtatható sebességu, ˝ a felhasználó által szabadon definiálható jelalakokkal történ˝o szabályozást, és ezzel párhuzamos mérést tesz lehet˝ové.6 A viszonylagosan nagy sávszélességre vonatkozó követelmények miatt az alkalmazott er˝osít˝o kapcsolások, illetve a változtatható visszacsatolás által megvalósított szabályozás átviteli amplitúdó- és fáziskarakterisztikáját pontosan kézben kell tartani. A kísérletek elején megvalósított rendszer a jelent˝os fáziseltérések miatt gerjedt. A gerjedési jelenség eleinte teljesen tönkretette a kimeneti jelalakot, de a megfelel˝o kompenzálás (tl071 visszacsatolásában alkalmazott c45 kondenzátor) beépítésével sikerült megoldani a problémát. Az A/D-konverter nagy felbontása miatt nagy mértékben csökkenteni kellett az analóg áramkörökben tapasztalható zavarok és zajok hatását is. Ezt a feladatot a nyomtatott áramkör gondosan tervezett elrendezésével, elválasztott analóg és digitális tápegységek kialakításával, valamint a D/Akonverter vezérlésekor az írási muveletek ˝ számának lehet˝oség szerinti minimalizálásával értük el.7 További gondot jelentett a nagy pontossági követelményb˝ol származó8 linearitási feladatok megoldása. A pontosság növelését a jelamplitúdókhoz viszonyított nagy tápfeszültség-tartomány választásával oldottuk meg, biztosítva ezzel, hogy a muveleti ˝ er˝osít˝ok linearitási tartományuk közepén, a „legpontosabb szakaszban” dolgozzanak. A szimmetrikus véger˝osít˝o linearitási hibáját a zárt visszacsatolókör nagy nyílthurkú er˝osítése hivatott kompenzálni. További kompenzációs lehet˝oséget építettünk a rendszerbe, amikor a potenciosztát kezel˝oprogramját úgy alakítottuk ki, hogy alkalmas legyen a teljes mér˝orendszer kalibrálására. A szoftverbe épített lehet˝oségek kihasználásával el lehet érni a megkövetelt mérési pontosságot. A több lépésb˝ol álló kalibrálási eljárás során az analóg szabályozó és digitalizáló rendszerben fellép˝o mérési bizonytalanságok kiegyenlítése történik meg: a kiegyenlítés során gondoskodni kell arról, hogy az ún. nullaponti hiba minimalizálva legyen. Ezt egyszeruen ˝ a referenciafeszültség mérési bemenetének rövidzárásával tudjuk megvalósítani, a kalib-
2.3 a potenciosztát fejlesztése közben felmerült nehézségek
ráció els˝o lépésében. A következ˝o feladat, hogy egy ismert bemeneti feszültség független referenciaértékét mérjük meg pozitív és negatív irányban, és ennek segítségével tudjuk korrigálni a feszültségmérés er˝osítésének alkatrészértékekt˝ol függ˝o eltérését. Az ilyen módon beállított feszültségmérést kihasználva, egy ismert, nagy pontosságú alkatrészekb˝ol felépített, ún. mu˝ cella alkalmazásával lehetséges az árammérés és a vezérl˝o feszültségek teljes kalibrálása.
23
3
A D I G I TÁ L I S V E Z É R L É S
A potenciosztát digitális vezérloegységének ˝ kialakítása még a támogatási ido˝ szak elott ˝ megkezdodött. ˝ Az itt bemutatott fejlesztések tehát – er˝osen átdolgozott, továbbfejlesztett formában ugyan –, de részben támaszkodnak a TaróczyTóth Zsigmond és Vinis Ádám Lajos szoftvertervezo˝ informatikus MSc hallgatók szakdolgozataiban (PPKE, 2012) is közölt eredményekre (mindkét munka Tihanyi Attila belso˝ témavezeto˝ és Vesztergom Soma külso˝ konzulens közremuködésével ˝ készült, a szakdolgozatok teljes szövege a pályázati dokumentációban megtalálható).
Az analóg szabályozókör muködésének ˝ 2. fejezetbeli ismertetését követ˝oen az Olvasó már bizonyos képet alkothatott arról, pontosan milyen szerep is jut a muszer ˝ digitális vezérl˝oköreinek. A 21. oldal 10. ábráján bemutattuk, hogy a – potenciosztatikus vagy galvanosztatikus – szabályozás megvalósításához szükséges vezérl˝ojelet egy D/A konverterrel, míg az elektródpotenciál és a munkaelektródon átfolyó áram jelének mintavételezését egy (kétcsatornás) A/D konverter felhasználásával oldjuk meg. Ezen eszközök kezelését (a D/A konverter értékének id˝ozített beállítását a számítógépr˝ol az eszközre küldött jelalak szerint, illet˝oleg az A/D konverter által szolgáltatott digitális mérési adatok kiolvasását és számítógépre továbbítását) egy, a muszerbe ˝ épített mikrovezérl˝o oldja meg, és ugyanez a mikrovezérl˝o felel az olyan feladatok ellátásáért is, mint az áram méréshatárának váltása, a galvanosztatikus/potenciosztatikus üzemmód közötti váltás, vagy a szabályozás ki- és bekapcsolása. 3.1 3.1.1
a megvalósítás eszközei
A központi muveletvégz˝ ˝ o egység
Úgy találtuk, a fent említett feladatok ellátására minden szempontból ideális választásnak tunik ˝ a Microchip Technology pic32mx795f512l mikrokontrollerének alkalmazása. A potenciosztát felépítéséhez olyan mikrokontrollert kerestünk ugyanis, amely: i.) beágyazható architekturális kialakítású; ii.) a nagy adatforgalom lebonyolításához is kell˝oen gyors muködés ˝ u; ˝ iii.) elegend˝o programtárat és RAM memóriát tartalmaz a vezérl˝ojelek és a mért adatok átmeneti tárolásához; iv.) integráltan tartalmazza az USB-kapcsolat kialakításának lehet˝oségét; v.) legalább két SPI vonal egyideju˝ kezelésére képes; vi.) elegend˝o számú digitális perifériával (porttal) rendelkezik kb. 10 digitális kapcsoló párhuzamos kezeléséhez; és végül vii.) lehet˝oleg C nyelven programozható. A pic32mx795f512l eszköz, mint azt az 1. táblázatban bemutatott paraméterei mutatják, e feltételeknek tökéletesen megfelel. A mikrokontrolleren futó firmware kifejlesztéséhez és a mikrokontroller muködésének ˝ teszteléséhez a Microchip Explorer 16 fejleszt˝opaneljét (ld. 11. ábra) és egy MPLAB ICD–3 típusú debuggert használtunk, az eszköz programozását a Microchip MPLAB Integrated Development Environment fejleszt˝oi környezetben, C nyelven végeztük. A 11. ábrán a pic32mx795f512l mikrokontroller látható az Explorer 16 fejleszt˝opanelbe ültetve.
25
26
a digitális vezérlés
Paraméter
Érték
Termékcsalád
PIC32MX7xx
Architektúra
32 bit
Órajel
80 MHz
Programmemória
512 kByte
RAM
128 kByte
Tápfeszültség
2,3 − 3,6 V
DMA csatornák
8 db
SPI vonalak
4 db
USB
v2.0 (host és OTG is)
Bels˝o A/D csatornák
16 db
Digitális id˝ozít˝ok
5 db (16 bit)
Komparátorok
2 db
Bels˝o oszcillátorok
8 MHz, 32 kHz
Digitális I/O vonalak
85 db
Lábak
100 db
1. táblázat. A mikrokontroller néhány fontosabb adata.
11. ábra. A mikrokontroller tesztelés alatt.
3.1 a megvalósítás eszközei
3.1.2
A muszer ˝ és a számítógép közötti kommunikáció megvalósítása
Egyéb lehet˝oségeket (PCI, PCIx, Ethernet) is figyelembe véve döntöttünk úgy, hogy a muszer ˝ számítógéphez kapcsolását USB-n keresztül oldjuk meg. Az USB egy széles körben elterjedt ipari szabvány, amely magában foglalja kábelek, csatlakozók és protokollok leírását. Ezek alapján különböz˝o elektronikai eszközök között egységes módon valósítható meg a kapcsolódás, a kommunikáció és az energiaellátás. Az USB megjelenésekor hatékonyan helyettesítette az addigi sokféle különböz˝o – adott esetben egymással inkompatibilis – soros és párhuzamos port megoldásokat. Eredetileg az USB 1.0 specifikációja 1, 5Mbit/s-ban határozta meg a kis sebességu˝ (low speed), illetve 12Mbit/s-ban a nagy sebességu˝ (full speed) adatátviteli sebességet. Az USB 2.0 nagyságrendbeli javulást hozott el˝odjéhez képest: míg a csatlakozók megmaradtak, a sávszélesség kapacitását tekintve 480Mbit/s-ban határozta meg a fels˝o korlátot (ez lett az ún. high speed). A jelenleg forgalomban lév˝o eszközökön már el˝ofordul az USB 3.0 szabvány is, amely még gyorsabb: 5Gbit/s átviteli sebességet kínál. Egy USB rendszer aszimmetrikus módon egy gazdából (host) és egy vagy több eszközb˝ol (device) épül fel, melyek a portokon keresztül csatlakoznak. A szabvány jó tulajdonsága, hogy osztható − ezt ún. USB hubok hajtják végre. Összesen 127 eszköz csatlakozhat egyetlen gazdához. Az USB-kommunikáció jellege logikai csatornákon, „csöveken” alapszik. Egy cs˝o jelenti a kapcsolatot a vezérl˝o gazda és az eszközön lév˝o egyik logikai entitás között, melyet végpontnak (endpoint) nevezünk. Mivel „cs˝o” és „végpont” egymásnak egyértelmuen ˝ megfeleltethet˝o, a két megnevezés gyakran ugyanazon fogalomra utal. Egy adatcsere típusát olyan különböz˝o paraméterek adják meg, mint a lefoglalt sávszélesség, az adatáramlás iránya vagy a négyféle végponttípus kiválasztása. A kommunikáció lehet vezérl˝o, kötegelt, egyideju˝ vagy megszakításos. Ezek közül a vezérl˝o (control) módú kommunikációt minden USB-eszköz (a miénk is) alapértelmezetten ismeri, mindig ezen a módon kommunikál gazda és eszköz közvetlenül a kapcsolat kiépítését követ˝oen; a végpontok más üzemmódba kapcsolása kés˝obb lehetséges. A mi eszközünk a nagy sebességu˝ adatátvitelt kötegelt (bulk) kommunikációval végzi. Ez ugyan a szintén nagy sávszélességen folyó egyideju˝ (isochronous) üzemmóddal szemben nem tesz lehet˝ové valós ideju˝ kommunikációt − ami kés˝obb gondos id˝ozítést és b˝o pufferelést tesz majd szükségessé − de legalább tartalmazza az adatátvitel integritásának beépített ellen˝orzését. Muszerünk ˝ egy kimeneti és egy bemeneti végpontot használ az USB-n keresztül történ˝o kommunikációhoz. A gyorsabb adatátvitel érdekében minden végpont a firmware-ben két, egyenként 64 byte méretu˝ pufferbe (páros és páratlan) vezet, amelyek az adatok eszközön történ˝o átmeneti tárolását szolgálják. Az USB-kommunikációs pufferek paritásos kezelése azért volt szükséges, hogy a jelgenerálás és mérés az USB-kommunikációval egy id˝oben legyen végrehajtható (a PC-r˝ol érkezett adatok kezelése úgy történik, hogy míg a páros puffer elemeit a D/A konverterekkel generáljuk, addig az USB a páratlan puffert tölti stb.). Az alkalmazott kommunikációs eljárás adatvesztéshez nem vezethet: torlódás kialakulásához azonban igen, amely a feladatok gondos id˝ozítését (timeout) igényli mind firmware-, mind szoftver-oldalon. Mint azt korábban már említettük, a pic32mx795f512l mikrokontroller külön illeszt˝oáramkör nélkül teszi lehet˝ové az USB gazdával (a PC-vel) történ˝o kommunikációt. A kommunikációs protokollt azonban a mikrokont-
27
28
a digitális vezérlés
roller firmware-ében kell megvalósítanunk, amihez a Microchip USB Framework könyvtárát használtuk, és a kód kialakítása során igyekeztünk a modularitást szem el˝ott tartani: vagyis úgy eljárni, hogy a framework kés˝obbi esetleges frissítéseit úgy végezhessük el, hogy emellett a saját kódjaink integritását is meg˝orizzük. A firmware muködését ˝ részletesebben kés˝obb, a 3.3. pontban tárgyaljuk (30. oldal. 3.2
1 SPI:
Serial Peripheral Interface.
az a/d és a d/a konverzió eszközei, és kezelésük a mikrokontrolleren
Az A/D és D/A konverterek (u1 és u2 jelöli o˝ ket a 21. oldal 10. ábráján) a készül˝o potenciosztát kulcselemei: az elektródpotenciál (vagy galvanosztatikus üzemmódban: az elektródáram) vezérl˝ojelét D/A-konverzió útján állítjuk el˝o, a rendszer válaszát (a kialakuló feszültséget és áramot) pedig kétcsatornás A/D konverterrel digitalizáljuk. A kísérletek sikere nagy mértékben függött a megfelel˝o konverterek kiválasztásától. Áttekintve az e területen vezet˝o gyártó Linear Technology termékpalettáját, igyekeztünk kell˝oen nagy felbontású, kis linearitási hibával rendelkez˝o, és nagy mintavételezési frekvenciát kínáló modelleket választani. Választásunk végül a ltc1865acms típusú A/D és az ltc2642aims típusú D/A konverterekre esett, ezek f˝obb paramétereit a 2−3. táblázatokban közöljük. Mint azt a 2. fejezetben már említettük, a konvertereket VDD = 5 V tápfeszültség mellett, VREF = 4 V referenciafeszültséggel használtuk. A kivezérlés mindkét konverter esetében a 0 és 4 V közötti feszültségtartományra esett, ami a feszültségszintek ±2 V-os eltolását tette szükségessé (a 2. fejezetben már részletezett módon), és amely – tekintettel az eszközök 16 bites felbontására – ∼ ±61 µV-os abszolút mérési, illetve jelbeállítási pontosságot tett lehet˝ové. Az A/D és a D/A konverterek mikrokontrolleres vezérlését SPI1 kapcsolat kiépítésével oldottuk meg. Az SPI nagy sebességu, ˝ órajel-vezérelt, teljes duplex, soros buszrendszer. A protokollt megvalósító eszközök ún. master/slave szerepek szerint kommunikálnak, melynek során a master eszköz kezdeményezi a kapcsolatot a slave-hez. Az SPI jellegzetessége, hogy egy master több slave eszközzel is kommunikálhat: ebben az esetben egy kiválasztó jel dönti el, mely eszköznek szól a master jeladása. A kommunikáció órajelének fázisa és polaritása szoftverrel választható, így különféle megoldású soros elemek is összekapcsolhatók az SPI rendszerrel: az órajel fázisát és polaritását a masteren úgy kell meghatározni, ahogyan azt a slave megkívánja. Egyszeru˝ használhatósága miatt az SPI méltán népszeru, ˝ ún. de facto szabvány. A buszrendszeren történ˝o kommunikáció négy jel használatával történik (ezek mindegyikét külön fizikai vonal szállítja). A négy jel a következ˝o: SCLK MOSI MISO SS
soros órajel (kimenet a masterr˝ol); Master Output, Slave Input (kimenet a masterr˝ol); Master Input, Slave Output (kimenet a slave-r˝ol); Slave Select (kiválasztó jel, kimenet a masterr˝ol).
Az SPI-n minden párbeszéd az órajel konfigurálásával kezd˝odik: a master az órajelet (SCLK) úgy állítja be, hogy az egyenl˝o vagy kisebb legyen, mint amit a slave eszköz támogat (több slave esetén a master a jelet a leglassabb eszközhöz igazítja). A jel frekvenciája rendszerint 1 és 70 MHz közé esik.
3.2 az a/d és a d/a konverzió eszközei, és kezelésük a mikrokontrolleren
Adat
Érték
Felbontás
16
Csatornák száma
2
Bemeneti jel
feszültség
Mintavételezési frekvencia
250kS/s
Tápfeszültség (VDD )
5V
Referencia-feszültség (VREF )
0−5 V
Bemeneti tartomány
±VREF differenciális 4,25 mW SPI MSOP−8
Analóg bemenet Teljesítmény Digitális kommunikáció Kiszerelés
2. táblázat. Az ltc1865acms A/D konverter néhány jellemz˝o adata.
Adat
Érték
Felbontás
16
Csatornák száma
1
Kimeneti jel
feszültség
Tápfeszültség (VDD )
2,7−5,5 V
Referencia-feszültség (VREF )
0 < VREF < VDD
Kimeneti tartomány
±VREF 1µs 1 lsb 0,5 lsb 3,60 mW SPI MS−10
Beállási id˝o Integrális nonlinearitás Differenciális nonlinearitás Teljesítmény Digitális kommunikáció Kiszerelés
3. táblázat. Az ltc2642aims D/A konverter néhány jellemz˝o adata.
29
30
a digitális vezérlés
Miután a master az órajelet konfigurálta, a megszólítani kívánt eszköz SS vonalán alacsonyra állítja a feszültséget. Ezzel elkezd˝odik a kommunikáció, melynek minden egyes lépésében a master küld egy bitet a MOSI vonalon, amit a slave kiolvas, illetve a slave is küld egy bitet a MISO vonalon, amit pedig a master olvas ki. A kommunikáció tehát szinkron módon zajlik. El˝ofordulhat persze olyan adatközlés is, amelyben nincs konkrét jelent˝osége mindegyik muveletnek, ˝ de ett˝ol függetlenül ilyen a protokoll általános mu˝ ködése. Természetesen egy párbeszéd több órajelciklusig is eltarthat. Ha már nincs több átküldend˝o adat, a master megállítja az órajelet, majd érvényteleníti a slave kiválasztását. Hogy független legyen az eszközök csatolásának megvalósítása, mindegyik külön kiválasztó vonallal rendelkezik. Azon slave eszközök a buszon, amelyek nem lettek aktiválva az említett SS vonalon, figyelmen kívül hagyják a többi vezetéken történ˝o eseményeket. Fontos megemlítenünk, hogy a master egyszerre csak egy slave eszközt választhat ki. Különleges esetekben az SPI-t megvalósító eszközök kiegészülhetnek egy megszakítási jellel is (ezek például túlmelegedés vagy id˝ozített riasztás jelzésére szolgálhatnak). Ezek az interruptok nem részei a protokoll specifikációjának, nincs konkrét vonatkozó szabály megvalósításukra. 3.3
2A
firmware forrásfájljai – a kódban elhelyezett commentekkel dokumentálva – megtalálhatók a mellékletek között.
˝ a vezérlés programszint u˝ m uködése: a firmware kialakítása
A mikrokontrolleren futó firmware els˝odleges feladata a számítógéppel való USB-kommunikáció lebonyolítása.2 A számítógépr˝ol érkez˝o adatokat a firmware két memóriapufferben fogadja, a D/A konverter értékeinek frissítése ezen pufferekb˝ol történik meg a firmware futását id˝ozítetten megszakító, timerre helyezett interruptok során. Ugyanezen megszakításon belül oldjuk meg az A/D konverter csatornáinak beolvasását is. A jelgenerálás és a mérés, illetve a PC-vel történ˝o adatcsere lebonyolítása paritásos rendszerben történik: az USB-kapcsolat kezelését az 1. kódrészlettel, az interruptok leírását a 2. kódrészlettel dokumentáljuk. Az 1. kódrészlet 3–21. sora mutatja be a PC-r˝ol küldött adatok fogadását. Látnivaló, hogy a megoldás – a paritás elve miatt – szimmetrikus: a 3–11. és a 12–20. sorokban gyakorlatilag ugyanaz történik, de más-más (az even, vagy az odd) pufferrel. Egy meghatározott puffer feltöltése (a számítógép küldte adatokkal) akkor indul, ha az interrupt végzett az adott puffer értékeinek lekezelésével (tehát, ha az USBSamplesRemaining változó elérte zérus értékét, ld. a 2. kódrészlet 8. sorában elhelyezett dekrementációt). Ilyenkor a ProcessIO() függvény áthelyezi az interrupt számára az USBoutSampleBuffer pointert a másik, még teli tömbre (ld. az 1. kódrészlet 6. és 15. sorát), majd – a következ˝o futási ciklusban – megindítja a kiürült tömb újbóli feltöltését a PC-r˝ol érkez˝o adatokkal (9. és 18. sor). Az itt részletezett megoldás hibamentesen muködik ˝ egészen addig, míg Timer2 id˝ ozítése kell˝oképpen lassú, és elegend˝o id˝ot hagy a pufferek USB-n keresztül történ˝o feltöltésére. A muszer ˝ szokásos használatánál (DC jellegu˝ mérésekhez) Timer2 frekvenciáját általában 20 kHz-esnek választjuk, ezen a frekvencián még b˝oségesen marad id˝otartalék (a frekvencia kb. háromnégyszeres növelése is megoldható). Amint az a megszakítást leíró 2. kódrészletb˝ol is kiderül, az interrupt rutin futási idejét igen er˝osen optimalizáltuk. A futás során el˝oször megadjuk az A/D átalakító számára az ADConvert() jelet (6. sor, a konverter ilyenkor
˝ 3.3 a vezérlés programszint u˝ m uködése: a firmware kialakítása
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
void ProcessIO(void){ if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) return; if(USBoutEvenNeedsServicingNext && !USBHandleBusy(USBoutEvenHandle) && USBoutSamplesRemaining == 0){ if(!USBoutCurrentBufferIsEven){ USBoutCurrentBufferIsEven = TRUE; USBoutSampleBuffer = (unsigned short int*) (0xA0000000|((BDT_ENTRY*)USBoutEvenHandle)->ADR); USBoutSamplesRemaining = (((BDT_ENTRY*)USBoutEvenHandle)->CNT) >> 1; } else { USBoutEvenHandle = USBTransferOnePacket(1, OUT_FROM_HOST,(BYTE*)&USBoutEvenBuffer,64); USBoutEvenNeedsServicingNext = FALSE; } }else if(!USBoutEvenNeedsServicingNext && !USBHandleBusy(USBoutOddHandle) && USBoutSamplesRemaining == 0){ if(USBoutCurrentBufferIsEven){ USBoutCurrentBufferIsEven = FALSE; USBoutSampleBuffer = (unsigned short int*) (0xA0000000|((BDT_ENTRY*)USBoutOddHandle)->ADR); USBoutSamplesRemaining = (((BDT_ENTRY*)USBoutOddHandle)->CNT) >> 1; } else { USBoutOddHandle = USBTransferOnePacket(1, OUT_FROM_HOST,(BYTE*)&USBoutOddBuffer,64); USBoutEvenNeedsServicingNext = TRUE; } } if(FloodFlag){ if (!USBinEvenNeedsServicingNext) USBinOddHandle = USBTransferOnePacket(2, IN_TO_HOST,(BYTE*)&USBinOddBuffer,64); else USBinEvenHandle = USBTransferOnePacket(2, IN_TO_HOST,(BYTE*)&USBinEvenBuffer,64); FloodFlag = FALSE; USBinEvenNeedsServicingNext = !USBinEvenNeedsServicingNext; } }
1. kódrészlet. Az USB-s adatforgalom kezelését leíró ProcessIO() függvény C nyelvu˝ kódja.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
void __ISR(8, ipl4) _Timer2Handler(void){ static WORD value; static BYTE NumberOfMeasData = 0; static BOOL ADChanSel; mT2ClearIntFlag(); ADConvert(); if (USBoutSamplesRemaining > 0){ USBoutSamplesRemaining--; value = *USBoutSampleBuffer++; if(value == COMSW){ CommandMode = !CommandMode; wait(18); } else if (CommandMode){ SetStatus(value); wait(18); } else{ if((LazyDA&&value!=DA_old)){ TalkToDA(); SPI2BUF = value; DA_old = value; while(SPI2STATbits.SPIBUSY); DoneWithDA(); } else{ wait(18); } } } else wait(18); ADTalk(); if(ADChanSel) SPI1BUF = 0x8000; else SPI1BUF = 0xC000; while (!SPI1STATbits.SPIRBF); value = SPI1BUF; if(!CommandMode) { if(USBinEvenNeedsServicingNext && !USBHandleBusy(USBinEvenHandle)) { USBinEvenBuffer[NumberOfMeasData++] = value; USBinEvenBuffer[NumberOfMeasData++] = GetStatus(); ADChanSel = !ADChanSel; } else if(!USBinEvenNeedsServicingNext && !USBHandleBusy(USBinOddHandle)){ USBinOddBuffer[NumberOfMeasData++] = value; USBinOddBuffer[NumberOfMeasData++] = GetStatus(); ADChanSel = !ADChanSel; } if (NumberOfMeasData >= 32){ NumberOfMeasData = 0; FloodFlag = TRUE; } } }
2. kódrészlet. A megszakításvezérlés C nyelvu˝ kódja. Érdemes itt megfigyelni a 17. sorban látható feltételvizsgálatot, amelyre korábban, a 2.3. pontban már utaltunk – ez a feltétel biztosítja, hogy a D/A-konverter kimeneti értékét csak változás esetén írjuk felül, elkerülve ezzel a szükségtelen írási muveleteket. ˝
31
32
a digitális vezérlés
mintavételez), majd – a mintavételezés üres idejét kihasználva – lekezeljük a D/A konverter értékének frissítését (esetleg egyéb feladatok elvégzését is). Csak ezt követ˝oen, a mintavételezésre mindig kell˝o id˝ot hagyva, indul az A/D-konverter adott csatornájának SPI-n történ˝o kiolvasása. A 2. kódrészlet elárulja, hogy az interrupt rutin egyes futásai során mindig más A/D csatornát olvasunk ki (hol a feszültséget, hol pedig az áramot). Ennek következtében eszközünk mintavételezési frekvenciája mindig fele lesz a jelgenerálási frekvencia (Timer2 frekvencia) értékének. Az összetartozó áram/feszültség értékpárok kialakítását nem a mikrokontrolleren futó firmware, hanem a számítógép szoftvere végzi majd el (az egyik csatorna kétpontos interpolációval történ˝o újramintavételezésével). Az A/D konverterr˝ol származó értékek számítógépre küldése (hasonlóan az adatfogadáshoz) kett˝os, paritásos rendszerben történik (ld. az 1. kódrészlet 22–29. és a 2. kódrészlet 34–48. sorait).
3.3.1
Kapcsolási feladatok ellátása és a status bitek kezelése
A fentiek során igyekeztünk rövid és lényegre tör˝o módon bemutatni a bulk üzemmódú USB-s adatforgalom és a D/A, illetve az A/D konverterek, valamint a mikrokontroller közötti adatátvitel összehangolását. Nem részleteztük ugyanakkor, miként oldottunk meg olyan vezérlési feladatokat, mint az analóg szabályozókörben elhelyezett digitális kapcsolóelemek (relék és analóg kapcsoló, ld. 21. oldal, 10. ábra) kezelése. E feladatok megvalósítása egy ún. kétállapotú gép kialakításával történt. Potenciosztátunk, mint azt az 1. kódrészlet kapcsán már említettük, a számítógépr˝ol érkezett adatok alapján állítja be a D/A konverter értékeit. Ez azonban nem minden esetben van így; az eszköz – muködésének ˝ egy különleges állapotában – a számítógépr˝ol érkezett adatokat nem a D/A konverter értékének frissítésére fogja felhasználni, hanem ez adatok alapján bizonyos digitális lábkimenetek értékeit állítja majd be (ezzel egy relé vagy kapcsoló állását megváltoztatva). A „normális üzemmód” és a „vezérl˝o üzem” (CommandMode, ld. a 2. kódrészletet) közötti váltást úgy oldjuk meg, hogy egy különleges jelentéssel bíró számot (amelyet a kódrészletben COMSW-vel jelölünk, értéke általában 0×FFFF) küldünk az eszköznek. Ilyenkor az eszköz muködést ˝ vált (11. sor), és a kés˝obbiekben érkez˝o számértékeket – ahelyett, hogy azokat a D/A konverterre továbbküldené –, a vezérl˝oszervek beállítására fogja használni (14. sor, SetStatus() függvényhívás, ld. a 3. kódrészletet is). A rendszermuködés ˝ visszaállítása „normális üzemmódba” – a szükségesnek ítélt beállítások elvégzését követ˝oen – a COMSW parancs újbóli küldésével érhet˝o el.
1 2 3 4 5 6 7 8
static WORD GetStatus() { return (WORD) LATA; } static WORD SetStatus(WORD NewStatus) { LATA = (BYTE) NewStatus; return NewStatus; }
3. kódrészlet. A relék, kapcsolók állását meghatározó SetStatus(), illetve az aktuális állást kiolvasó GetStatus() függvényeket leíró, egyszeru˝ kódok. Látható, az „állapotkezelés” egyszeruen ˝ egy digitális port (LATA) írását/olvasását jelenti.
˝ 3.3 a vezérlés programszint u˝ m uködése: a firmware kialakítása
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
33
ROM USB_DEVICE_DESCRIPTOR device_dsc= { 0x12, // Size of this descriptor in bytes USB_DESCRIPTOR_DEVICE, // DEVICE descriptor type 0x0200, // USB Spec Release Number in BCD format 0x00, // Class Code 0x00, // Subclass code 0x00, // Protocol code _ _ _ USB EP0 BUFF SIZE, // Max packet size for EP0, see usb_config.h 0x04D8, // Vendor ID: 0x04D8 is Microchip’s Vendor ID 0x0052, // Product ID: 0x0052 0x0000, // Device release number in BCD format 0x01, // Manufacturer string index 0x02, // Product string index 0x00, // Device serial number string index 0x01 // Number of possible configurations }; //... ROM struct{BYTE bLength;BYTE bDscType;WORD string[31];}sd002={ sizeof(sd002),USB_DESCRIPTOR_STRING, {’S’,’e’,’p’,’i’,’a’,’S’,’T’,’A’,’T’}}; //...
4. kódrészlet. A muködés ˝ szempontjából fontos részletek az usb_device_descriptors.c (eszközleíró) forrásfájlból.
A rendszer – értelemszeruen ˝ – a különböz˝o digitális vezérl˝oszervek állásait nemcsak meghatározni, de kiolvasni is képes (3. kódrészlet, GetStatus() függvény). Ezek, a muszer ˝ muködését ˝ az adott pillanatban jellemz˝o paraméterek minden méréskor bekerülnek a számítógépre küldött adatok közé (hiszen ezek alapján történhet többek között az áram-méréshatár megállapítása stb.: ld. a 2. kódrészlet 37. és 41. sorát). 3.3.2
A muszer ˝ számítógéphez illesztése
A muszer ˝ számítógéphez illesztését egy eszközleíró fájl firmware-be építésével oldottuk meg, majd a National Instruments VISA Driver Development Wizardjának használatával készítettünk hozzá illeszt˝oprogramot.3 Az illeszt˝oprogram telepítése után az eszköz (egyedi osztálykóddal, névvel, stb.) szerepel az operációs rendszer eszközkezel˝ojében, és – mint azt a következ˝o fejezetben látni fogjuk – számítógépes vezérlése egyszeruen ˝ kivitelezhet˝o a VISA4 Write és Read függvényeinek alkalmazásával. A jelenleg SepiaSTAT fantázianévre hallgató potenciosztát firmware-beli eszközleíró fájljából vett részleteket mutat a 4. kódrészlet.
3 Az
illeszt˝oprogram része az e beszámolóhoz mellékelt kódnak.
4 VISA: Virtual Instrument Software Architecture.
4
SZOFTVERES FEJLESZTÉSEK
Az eszközt kiszolgáló szoftver fejlesztésében, illetve a dokumentáció elkészítésében nagy segítséget jelentett Kovács Noémi kémia BSc szakos hallgató munkája (ELTE).
Saját építésu˝ potenciosztátunk automatizált muködését ˝ biztosítandó, ahhoz saját szoftvert is fejlesztettünk. Ez a LabVIEW fejleszt˝oi környezetben készült, platformfüggetlen alkalmazás, amely tehát nemcsak Windows, de MacOS és Linux rendszereken is futtatható. Tekintve, hogy a szoftveres fejlesztések a hardverépítés munkálataival párhuzamosan haladnak, az alkalmazást úgy alakítottuk ki, hogy az – ha éppen nem a saját hardver automatizálását végzi – egyéb eszközök (a National Instruments adatgyujt˝ ˝ o kártyáinak) használatával „küls˝o” potenciosztátok vezérlésére is alkalmas legyen. A potenciosztát építését folyamatos szoftveres fejlesztések kísérték tehát: ennek eredményeképpen a pályázat támogatási id˝oszakában már létrejött több, saját tervezésu˝ elektrokémiai mér˝oprogramunk. Ezek a „végfelhasználói szoftverek” már folyamatos üzemben muködnek ˝ több laboratóriumban is, és általuk kémiai eredmények, közlemények is születtek (ld. a támogatási id˝oszak publikációit). 4.1
„végfelhasználói szoftverek”
E programok nagy része – rendszerint valamilyen küls˝o hardvereszköz, „adatgyujt˝ ˝ o kártya”, illetve kereskedelmi forgalomban hozzáférhet˝o potenciosztátok használatával – még a hardveres modul (a saját fejlesztésu˝ potenciosztát) nélkül is használható. Mér˝oprogramjaink újdonsága abban rejlik, hogy a programozás során alapvet˝oen más stratégiát követtünk, mint ami az ilyen típusú alkalmazások fejlesztése során egyébként szokásos. Ahelyett ugyanis, hogy ún. „mérési technikákat” integráltunk volna a programba (itt visszautalunk a Bevezetésben, a 10. oldalon mondottakra), gyakorlatilag szabad kezet adtunk a felhasználónak az elektródpotenciálokat vezérl˝o jelek definiálásában – e témába az alábbiakban rövid betekintést is adunk. 4.1.1
Vezérl˝ojelek definiálása matematikai formulák alapján
A „szabad vezérelhet˝oség” megvalósítására legtöbb szoftverünk tartalmaz egy ún. formula interpreter-t, melynek segítségével kényelmes matematikai szintaxis alapján definiálhatjuk az elektródokat vezérl˝o függvényeket (illetve ilyen függvények sorozatát). Egy jellemz˝o szoftveres kezel˝ofelületet (grafikus interfészt) mutat a 12. ábra: az ezen látható kis ablak szolgál a vezérl˝ojelek megadására. Amint azt az ábra mutatja, a szoftver használatával az elektródpotenciál vezérl˝ojelét szöveges beviteli mez˝ok segítségével határozhatjuk meg. Itt olyan stringeket közölhetünk a programmal, amelynek értelmezése számunkra egyszeru˝ és világos, például „E = 0.2 + 0.05 × t”, vagy éppen „E = 0.005 × Sin[t]”, stb.; ugyanakkor a vezérlés módjának ilyen módon tör-
35
36
szoftveres fejlesztések
12. ábra. Egy saját tervezésu˝ szoftverem jellemz˝o felhasználói felülete.
tén˝o megvalósítása programozástechnikai szempontból nem triviális. A feladat megoldására gyakorlatilag saját scriptnyelvet kellett készítenünk, amely a függvényeket definiáló stringeket értelmezni képes, és azokból el˝oállítja a megfelel˝o számokat. (Az e számoknak megfelel˝o feszültségértékeket használjuk a potenciosztát D/A-konverterének vezérlésére.) A program a formulák értelmezését alulról felfelé építkez˝o szintaxiselemzéssel végzi el. Ennek során i.) reguláris kifejezések segítségével megkeresi a formulákban található leghosszabb olyan szakaszt, amely további egységekre nem bontható (vagyis: zárójelet már nem tartalmaz); ii.) ezt lexikai értelmezésnek veti alá (megállapítja, hogy benne milyen számok (pl. 0.2), változók (pl. t) és operátorok (pl. +) fordulnak el˝o), majd az operátor-precedenciát figyelembe véve meghatározza az adott szakasznak megfelel˝o értéket; iii.) ha a zárójel el˝ott valamilyen függvénykifejezés állt (pl. Sin), akkor kiszámolja a függvény értékét; iv.) a kapott értékkel az ily módon feloldott zárójelet (vagy függvénykifejezést) helyettesíti, és az értelmezést az i.) ponttól folytatja egészen addig, míg a kifejezés egyetlenegy számmá nem zsugorodik. Mindezzel természetesen csak elvi muködését ˝ tudjuk bemutatni saját formula interpreterünknek, amely a mér˝orendszer egyik kulcsfontosságú eleme: a feladat kódszintu˝ implementációját itt nincs módunk részletezni. Annyit azonban megjegyzünk, hogy programunk a függvényértelmezést igen gyorsan tudja végrehajtani, és egy közepesen bonyolult formulával egy közepesen gyors számítógépen másodpercenként kb. tíz-százezres nagyságrendben tudunk a D/A-konverterek számára el˝oállítandó feszültségértékeket készíteni – az itt bemutatott felhasználói front-end tehát „képes lépést tartani” potenciosztátunk nagy sebességével.
4.2 saját potenciosztátunk szoftveres kezelése
13. ábra. Az analóg függvénygenerátorok muködését ˝ utánzó szoftveres modul, amely a formula interpreter mellett szintén használható a vezérl˝ojelek el˝oállítására.
Megjegyezzük továbbá, hogy a szoftver olyan felhasználói, akik inkább kedvelik a konvencionális megoldásokat mint a formula interpreter alkalmazását, a vezérl˝ojelek definiálására természetesen egyéb lehet˝oségeket is használhatnak (13. ábra). 4.2
saját potenciosztátunk szoftveres kezelése
A saját fejlesztésu˝ potenciosztát a LabVIEW fejleszt˝oi környezet számára teljességgel elérhet˝o, és automatizálása e grafikus programnyelven belül, a National Instruments hardverkezelési megoldásainak (VISA) használatával könnyen megoldható volt. A potenciosztát így bármelyik létez˝o (fentebb bemutatott) szoftveremhez hozzákapcsolható. Természetesen az eszköz fejlesztéséhez szükség volt egy – részben különálló – szoftveres modul kidolgozására is; err˝ol a függelékben láthatunk még képeket. Itt a potenciosztát vezérlésének szoftveres megoldását tekintjük át, az 5. kódrészlet segítségével, amely a potenciosztát kezelését megvalósító magciklust ábrázolja. A kódrészlet jól megmutatja, hogy a fejlesztés során igen er˝osen kihasználtuk a LabVIEW programnyelv két feltun˝ ˝ oen el˝onyös tulajdonságát: a párhuzamos programozás és a pipelining technika alkalmazásának lehet˝oségét. A párhuzamosítás lehet˝oségét a vezérlési és mérési feladatok teljes szétválasztásával aknáztuk ki. A kód két ciklust tartalmaz, amelyek egymással egyid˝oben futnak; mindkét ciklusban megtalálható egy-egy VISA függvény (a vezérlési ciklusban ez értelemszeruen ˝ a VISA Write, a mérési ciklusban pedig a VISA Read függvény). E függvények a kódrészletben is látható módon, string típusú adatokat cserélnek az eszközzel. 4.2.1
A vezérlés megoldása
A vezérlés els˝o lépése a vezérl˝ojelek értékeinek legenerálása, amely a szoftveres generátor objektumok (formulaértelmez˝o, ld. 12. ábra, vagy függvénygenerátor, ld. 13. ábra) Generate eljáráshívásával történik. Az így kapott, kett˝os pontosságú lebeg˝opontos számokból álló tömböt (amely az ábrán éppen 20000 elemb˝ol áll), a programban a (polinomiális) kalibrációt figyelembe véve, short int típusúvá konvertáljuk. A tömböt – ha szükséges – további parancsértékekkel b˝ovítjük (vö. 32. oldal), majd egy byte swap muveletnek ˝
37
szoftveres fejlesztések 38
5. kódrészlet. A potenciosztát kezelését végz˝o kernel grafikus kódja (LabVIEW).
4.2 saját potenciosztátunk szoftveres kezelése
39
6. kódrészlet. Az analóg függvénygenerátorok muködését ˝ utánzó szoftveres modul, amely a formula interpreter mellett szintén használható a vezérl˝ojelek el˝oállítására.
vetjük alá1 , végül (string típussá konvertálva) egy, a ciklus szélén elhelyezett shift registerbe vezetjük. A shift register alkalmazása a pipelining technika része; ennek értelmében a legenerált adatok közvetlenül nem, csak a ciklus következ˝o lépésében kerülnek az eszközre (a VISA Write függvény használatával), amikor az eszközre írás és a jelgenerálás következ˝o lépése – két, egyaránt költséges muvelet ˝ –, párhuzamosan fut majd. E megoldás segíti az id˝otúllépések elkerülését. 4.2.2
A mért adatok fogadása
A pipelining technika a mért adatok fogadása során is alkalmazásra került, bár itt – természetszeruleg ˝ – „fordított sorrendben”: a ciklus i-edik lépésében történik az adatok beolvasása az eszközr˝ol, és ezt követi az adatok feldolgozása (mindig az (i + 1)-edik lépésben). Az adatfeldolgozást a ProcessRaw.vi nevu˝ függvény végzi, amely mu˝ ködése során (6. kódrészlet) a string típusú adatokat unsigned short int tömbökké konvertálja, az adatfolyamot felosztja csatornákra és status értékekre (vö. a 31. ábra 2. kódrészletével), majd a kalibrációnak megfelel˝o számításokat, illetve átlagolási muveleteket ˝ végez. Az így el˝oálló new data tömb tartalmazza az adott mérési ciklusban a potenciosztátról érkezett mérési eredményeket: ezeket az 5. kódrészlet alján látható módon fuzzük ˝ hozzá a korábbi eredményeket tartalmazó tömbhöz, illet˝oleg fájlban is tároljuk.
1 Figyeljük
meg az 1. kódrészletben (31. oldal), hogy az USB-s átvitel byte-onként történik, míg az A/D és a D/A konverterek short int típusú adatokat kommunikálnak: innen a byte swap muvelet ˝ szükségessége.
5
FÜGGELÉK
A beszámoló függelékében néhány, a rendszerr˝ol készült képpel dokumentáljuk a fejlesztés jelenlegi állását és az eszköz muködését. ˝
14. ábra. Tesztmérés saját építésu˝ potenciosztátunkkal: az USB-n a számítógéphez kapcsolt eszközt kénsavoldatba merül˝o arany elektródon végzett méréshez használjuk. A mért jelek a szoftveres kezel˝ofelületen látszanak, a vezérl˝o háromszög-jelalakot az oszcilloszkópon mérjük.
41
42
függelék
15. ábra. A mér˝oprogram f˝oablaka muködés ˝ közben (két különböz˝o nézet).
függelék
16. ábra. A táp- és szabályozó áramkör a digitális vezérl˝okörök nélkül, szétszerelve.
43