24 bitový AD USB modul
AD24USB
Návod k použití
Obsah Obsah.............................................................................................................2 1. Úvod..........................................................................................................3 2. Technické parametry.................................................................................3 A/D převodník: .........................................................................................3 Zdroj proudu: ............................................................................................4 Digitální vstupy/výstupy: .........................................................................4 3. Instalace modulu........................................................................................4 3.1. Zapojení vst. konektoru CANON25 zásuvka.....................................4 3.2. Zapojení konektoru dig. IO DIL16.....................................................5 4. Popis činnosti modulu...............................................................................6 4.1. AD převod .........................................................................................6 4.2. Střídavá modulace vstupu..................................................................7 4.3. Režimy měření...................................................................................8 5. Programování modulu...............................................................................9 5.1. Instalace knihovny ovladače modulu.................................................9 5.2. Popis AD funkcí knihovny ad24usb.dll.............................................9 5.3. Popis DA funkcí knihovny ad24usb.dll ..........................................11 5.4. Popis dig IO funkcí knihovny ad24usb.dll ......................................12 5.5. Funkce pro komunikaci s více moduly AD24USB..........................12
-2-
1. Úvod AD24USB je USB měřicí modul, který obsahuje autonomním procesorem řízený AD převodník s vysokou rozlišovací schopností, který je galvanicky oddělen od obvodů počítače. AD převodník pracuje na principu modifikované metody vyrovnávání náboje používané u multimetrů vyšších tříd přesnosti. Integrační princip převodu a galvanické oddělení zajišťují vysokou odolnost vůči rušivým napětím, modul je ideální pro měření malých signálů např. z různých čidel. Vysoká přesnost AD24USB je dána využitím metody autokalibrace, modul je možno použít všude tam, kde jsou kladeny vysoké nároky na přesnost, linearitu a rozlišovací schopnost. modul svými parametry může nahradit až 6-ti dekádové multimetry při podstatně nižší ceně.
2. Technické parametry odběr z USB : bez proudového zdroje 250 mA, s proudovým zdrojem max. 400 mA A/D převodník: - 8 diferenciálních nebo 16 SE galvanicky oddělených vstupů - základní rozsah 0 až 10 V unipolárně nebo +- 5 V bipolárně, programově volitelné zesílení 1 až 128, (1,2,4,8,17,39,102,512 pro diferenciální verzi) - programovatelné rozlišení 18 až 24 bitů (16 bitů u AD16USB) - rychlost převodu 60 převodů/s při rozlišení 18 bitů, 3 převody/s - 24 bitů - chyba linearity typ.
0.0002%,
max.
0.0005% (max. 0.0025% pro
AD16USB) - šum menší než 0.0001% z rozsahu, popřípadě < 500 nV š-š (0.0016% AD16USB) -3-
- max. chyba 0.005% z údaje + 0.001% z rozsahu + 5 uV - max. chyba 0.008% z údaje + 0.002% z rozsahu + 5 uV pro AD16USB Zdroj proudu: - Rozsah 0 až 20 mA nebo 100 mA, po dohodě i jiný (možno i napětí) - Rozlišení 14 bitů - Šum < 5 ppm - Max. výst napětí 8 V Digitální vstupy/výstupy: - 4 digitálních výstupy TTL kompatibilní –
2 digitálních vstupy TTL kompatibilní
3. Instalace modulu Vzhledem k proudovému odběru modulu, který je větší než 100 mA, je nutno modul připojit přímo k počítači nebo k napájenému USB hubu. Po připojení modulu do USB portu počítače systém rozpozná nový hardware a vyžádá si instalaci ovladače. Ovladač je na dodaném CD v adresáři \driver.
Popis
instalace dalších programů a případné řešení potíží viz soubor readme na CD.
3.1. Zapojení vst. konektoru CANON25 zásuvka 1 – IOUT – DA výstup LO svorka 14 – IOUT – DA výstup Hi svorka 2 - +15V izol 15 - -15V izol 3,4 – izol GND 16 – čidlo teploty pro termočlánkovou svorkovnici 17 – Hi IN0 5 – Lo IN0 (IN8 pro SE verzi) 18 – Hi IN1 -4-
6 – Lo IN1 (IN9 pro SE verzi) 19 – Hi IN2 7 – Lo IN2 (IN10 pro SE verzi) 20 – Hi IN3 8 – Lo IN3 (IN11 pro SE verzi) 21 – Hi IN4 9 – Lo IN4 (IN12 pro SE verzi) 22 – Hi IN5 10 – Lo IN5 (IN13 pro SE verzi) 23 – Hi IN6 11 – Lo IN6 (IN14 pro SE verzi) 24 – Hi IN7 12 – Lo IN7 (IN15 pro SE verzi) 13,25 – izol GND Zapojení pro diferenciální verzi modulu:Měřené napětí se připojuje mezi svorky Lo a Hi zvoleného vstupu. Svorku Lo je nutno spojit s plovoucí zemí -svorky 3,4,13,25 (Kromě výjimečných případů jako např. měření tenzometrů, odporových čidel teploty, HALL čidel apod.). Zapojení pro SE verze: Měřené napětí se připojuje mezi zvolený vstup a plovoucí zem pin 3,4,13,25. Tuto plovoucí zem je možno dle potřeby uzemnit. Na svorky 3 a 15 je vyvedeno přes propojky izolované napájení +-12 V. Tímto napětím je možno napájet ev. další obvody. Povolený odběr je cca 10 mA. Pozor! Při zkratu těchto napájení přestane modul fungovat!
3.2. Zapojení konektoru dig. IO DIL16 1 – GND
2 – Napájení 5 V
3 – IN0
4 – IN1
5 – OUT0
6 – OUT1
7 – OUT2
8 – OUT3
9,10,11,12,13,14,15,16 Interní signály pro připojení expanzních desek - nesahat!
-5-
4. Popis činnosti modulu 4.1. AD převod Jádrem
modulu
je
integrační
AD
převodník
řízený
samostatným
mikroprocesorem. Volbou doby integrace je možno volit dobu převodu a dosažené rozlišení AD převodníku. Jednotlivé možnosti jsou v tab.1. Doba integrace [ms]
Doba převodu [ms]
5 20 80 320
6 (11) 21 (26) 81 (86) 321 (326) Tab.1.
Rozlišení bit
22 24 26 28
Celková doba převodu záleží i na způsobu komunikace s modulem. Pokud je převod řízen vnitřním časovačem, modul nemusí čekat na přenos dat po USB a reakci PC, pak je možno dosáhnout kratších časů. Pokud je každý převod spouštěn jednotlivě, pak se uplatní i doba přenosu po USB, doba reakce USB a PC a platí orientačně časy uvedené v závorce. Rozlišení uvedené v tabulce je pouze „hrubé“ rozlišení vlastního AD převodníku, využitelné rozlišení modulu je nižší a je dáno vlastním šumem modulu. Šum modulu v uVšš pro jednotlivá rozlišení a zesílení je v tab.2. Šum byl měřen pro unipolární rozsah a doba měření byla vždy 10 s. Tint zesílení 5 ms 20 ms 80 ms 320 ms
1 41 10.9 2.6 1.3
2 23 6.5 2.2 1.2
4 13 3.8 1.9 1.0
8 5 2.0 1.1 0.5
16 2.9 1.0 0.6 0.3
32 1.5 0.65 0.40 0.25
64 0.8 0.37 0.16 0.18
128 0.5 0.26 0.14 0.12
Tab. 2. Pozor! Vzhledem k náhodnému charakteru šumu a udávané mezivrcholové hodnotě je rozptyl hodnot i při opakovaném měření téhož modulu až 50%, pro nejnižší hodnoty až 100%!. Z tabulky je patrné, že pro malá zesílení je šum určen vlastním šumem AD převodníku, pro větší zesílení se šum příliš nemění a
-6-
je určen šumem vstupního zesilovače. Šum a ofset vst. části u diferenciální verze je možno výrazně redukovat pomocí střídavé modulace popsané dále. Výše uvedené údaje platí pro AD24USB, AD16USB má rozlišení 16 bitů bez ohledu na dobu integrace. Pro dosažení vysoké přesnosti je modul vybaven funkcí autokalibrace, při které se změří vlastní ofset a rozsah modulu. Je možno volit buď kalibraci jediného rozsahu nebo kalibraci všech rozsahů. Kalibrace jediného rozsahu trvá 3 doby převodu, kalibrace všech rozsahů trvá 9 dob převodu. Před měřením na kterémkoliv rozsahu je nutno kartu se zadaným rozlišením nejprve okalibrovat! Pokud měříme na jediném rozsahu, postačí kalibrace tohoto rozsahu, jinak je vhodnější použití kalibrace všech rozsahů. Autokalibraci je vhodné opakovat i v průběhu delších měření s periodou cca desítky sec. Pro kratší měření, u kterých je prioritou co nejnižší šum je naopak vhodnější provést autokalibraci pouze před startem měření.
4.2. Střídavá modulace vstupu U verze modulu s diferenciálními vstupy lze výrazně snížit ofset i šum karty na nejmenších rozsazích pomocí střídavé modulace vstupu. Tato modulace pracuje následovně: Nejprve je pro daný vstup změřeno napětí přímo a poté s prohozenými vstupy a obě napětí jsou od sebe odečtena a vydělena dvěma. Tento postup je opakován se zadaným počtem opakování.
Výsledkem je
výrazná redukce ofsetu a nízkofrekvenčního šumu typu 1/f. Doporučená doba integrace pro jeden převod je 20 ms pro potlačení rušení 50 Hz a jeho násobků, počet opakování záleží na požadované výsledné periodě měření. Výsledný šum klesá s odmocninou z počtu měření, takže např. pro čtyřnásobné zvýšení počtu měření klesne šum 2 x. Tento velmi účinný princip eliminace ofsetu, šumu a parazitních termoelektrických napětí je dále vylepšen možností střídavé modulace budicího napětí nebo proudu při použití různých čidel jako např. tenzometrického můstku -7-
nebo odporových čidel teploty, HALL snímačů apod. Díky modulaci přímo budicího napětí jsou eliminována i parazitní termoelektrická napětí generovaná i na přívodech k čidlu. Oba režimy modulace zajišťuje firmware modulu, uživatel pouze zvolí typ modulace a počet opakování.
4.3. Režimy měření modul může pracovat ve dvou režimech: jednorázovém a periodickém. Jednorázový režim je jednodušší – při každém zavolání funkce Adconv s příslušnými parametry se provede jeden odměr a funkce vrátí přímo hodnotu změřeného napětí. Pokud byla aktivována střídavá modulace, je proveden určený počet měření a vrácen celkový výsledek. Tento režim je vhodný pro většinu úloh, kdy nezáleží na naprosto přesném časování okamžiku převodu. Mezi volání funkce Adconv je možno vkládat i kalibrace převodníku. Periodický režim je složitější, po nastavení parametrů převodu je modul spouštěn vlastním časovačem s nastavenou periodou měření. Tento režim je vhodný pro krátkodobější měření – desítky až stovky sec, u kterých je nutno přesněji definovat okamžik převodu a nevadí nemožnost autokalibrace v průběhu měření. Díky tomu, že naměřená data jsou předávána na pozadí i v průběhu měření neuplatní se latence USB ani doba zpracování dat v PC a dosažitelná vzorkovací perioda je vyšší než u jednorázového měření.
-8-
5. Programování modulu 5.1. Instalace knihovny ovladače modulu Instalace knihovny je velmi jednoduchá a spočívá v nakopírování knihovny ad24usb.dll do pracovního adresáře aplikace. Příklady použití viz dodané demo programy na CD. Všechny funkce jsou vytvořeny s volací konvencí stdcall a jsou volatelné z Delphi, C,C++, VB, LabView.
5.2. Popis AD funkcí knihovny ad24usb.dll function InitAD:integer tato funkce inicializuje driver a modul, vrací 1 pokud je úspěšná, hodnota 0 znamená chybu komunikace s USB částí, -1 chybu komunikace s procesorem modulu. Je nutno ji volat před jakoukoliv další prací s modulem. procedure SetRange(typr:integer) tato procedura nastavuje unipolární nebo bipolární rozsah vstupu modulu, vstupní rozsah musí být nastaven před zavoláním funkce calibration! typr=0 – znamená unipolární rozsah, 1 – bipolární. procedure SetChop(typchop,pocvz:integer) tato procedura aktivuje střídavou modulaci („chopper“) pro odstranění vst. ofsetu a driftu u diferenciální verze karty, princip viz. Kap 4.2. Parametr typchop
určuje typ modulace – 0 – vypnuto, 1 – modulace vstupu, 2 -
modulace výstupu. Modulace výstupu je možná pouze s příslušným hardware pro buzení čidla! Parametr pocvz určuje počet vzorků použitých pro výpočet, musí to být sudé číslo, zároveň určuje celkovou dobu převodu. Celková doba převodu je dána součinem doby jednoho převodu (typicky 21 ms) a počtu vzorků použitých pro modulaci. Pokud je aktivována střídavá modulace, pak -9-
funkce Adconv provede celkem pocvz převodů a vrátí celkový výsledek. Při aktivaci modulace je vhodné používat dobu integrace 20 ms (resol = 1). Vzhledem k principu modulace je nutno vždy nastavit bipolární rozsah! procedure calibration(typ,range,resol:integer); tato procedura zkalibruje jeden nebo všechny rozsahy s daným rozlišením. Kalibraci je nutno volat až po proceduře SetRange
a případné aktivaci
střídavé modulace. Má tyto parametry: typ – 0 – jeden rozsah – používá se pokud měříme na jediném rozsahu, 1 – všechny rozsahy – trvá cca 3 x déle, pokud měříme na různých kanálech s různými rozsahy. range – pokud je typ = 0, pak určuje, který rozsah je kalibrován, 0 .. 7 - 0 – zesílení 1, rozsah +-5 V bip nebo 0-10 V unip...7 – zesílení 128 tj rozsah +38mV nebo 0-76 mV pro SE verze, u diferenciální verze jsou zesílení 1,2,4,8,17,39,102,512. resol
- rozlišení 0 až 3 nastavuje dobu integrace 5,20,80,320 ms a
odpovídající rozlišení cca 22 až 28 bitů (16 bitů pro AD16USB). function Adconv(resol,range,chan:integer): double tato funkce vrací napětí ve V na vstupu chan – 0 až 7 (0 až 15 pro SE verze), parametry resol,range viz procedura calibration. Příslušný rozsah a rozlišení musí být předem zkalibrováno voláním procedury calibration! Funkce pro periodický režim: procedure ProgEn(chan,resol: integer);stdcall; export; Tato procedura určuje počet měřených kanálů a jejich rozlišení, po jejím zavolání následuje příslušný počet volání ProgCh. Má parametry chan, resol, jejich hodnoty viz výše. -10-
procedure ProgCh(chan,range: integer);stdcall; export; Tato procedura nastaví pro každý aktivovaný kanál příslušné zesílení, význam parametrů viz výše. procedure Timer(burst:byte;time:word); Tato procedura nastaví periodu měření, tato doba musí být delší než součet dob převodu všech aktivních kanálů. Parametry: burst – vždy 1 – jednotlivé kanály jsou měřeny ihned po sobě, time – perioda měření v ms, max 65000. procedure StartAD; Tato procedura spustí převod se zadanými parametry. procedure StopAD; Tato procedura ukončí převod. function GetSample(range:integer):double; Tato funkce vrací naměřenou hodnotu napětí ve V.
5.3. Popis DA funkcí knihovny ad24usb.dll function GetDACresolution:integer; Tato funkce vrací rozlišení použitého DA převodníku – 14 nebo 16 bitů function GetCurrentRange:integer; Tato funkce vrací použitý proudový rozsah 20 nebo 100 mA
-11-
procedure DAC(hodnota:word);stdcall; export; Tato procedura zapíše na DA výstup danou hodnotu, pro 14 bitů max 16000, pro 16 bitů max 64000.
5.4. Popis dig IO funkcí knihovny ad24usb.dll procedure DigOut(value:byte); Tato procedura zapíše na dig. výstup danou hodnotu. function DigIn:byte; Tato funkce přečte hodnotu z číslicového portu.
5.5. Funkce pro komunikaci s více moduly AD24USB function InitUSB:integer; Tato funkce vrací počet připojených AD24USB modulů. function InitSelectedAD(num:integer):integer; Touto funkcí se inicializuje zvolený modul, pokud je inicializace úspěšná, vrací 1. procedure ReadSerialUSB(adnum:integer;SerialNo:pointer); Tato procedura načte USB sériová čísla jednotlivých AD modulů. Použití: Nejprve pomocí funkce InitUSB zjistíme počet připojených modulů, pak pomocí procedury ReadSerialUSB zjistíme ser. čísla jednotlivých modulů a posloupnost
-12-
jejich přiřazení a poté s příslušným indexem inicializujeme zvolený modul pomocí funkce InitSelectedAD. Příklad: var SerialNo:array[0..7,0..15] of char; SerialNop:array[0..7] of pchar; ModuleNo:integer; //cislo modulu TotUSBmodules:integer; //pocet modulu TotUSBmodules := initUSB; for i:= 0 to 7 do serialnop[i] := @serialno[i]; //přiřazení pointerů for i:= 0 to TotUSBmodules-1 do ReadSerialUSB(i,serialNop[i]); //výběr čísla modulu podle ser. čísla res := InitSelectedAD(ModuleNo);
-13-