OVLÁDÁNÍ PCF8591 POČÍTAČEM
Vágner Vlastimil
Pro potřebu odzkoušení správné funkce převodníku a testování napsaných programů pro ovládání sběrnice I2C využívám nepájivé kontaktní pole, zde je využito k testování programu pro ovládání PCF8591. Uvedené zapojení může sloužit pro vlastní pokusy v žádném případě si neklade za cíl konkurovat továrním testovacím zapojením a programům. Samotný převodník se připojuje na sériový port počítače PC nebo pomocí redukce USB/COM.
Stručný popis
PCF8591
Jde o obvod který obsahuje jak převodník A/D tak převodník D/A jeho rozlišovací schopnost je osm bitů, což dává přibližně rozlišení 20mA při referenčním napětí UREF 5V. Základní adresa obvodu je 72 a další adresy pomocí tří vyvedených adresních linek A0, A1, A2 umožňují adresovat dalších osm převodníků. Převodník má čtyři vstupy A/D a jeden výstup D/A, vstupy A/D mohou být naprogramovány jako každý vstup samostatně proti zemi tak i jako diferenční vstupy. Převodník sám může přepínat vstupy nebo může být programově nastaven určitý vstup(y), tato možnost a i možnost využít D/A převodník musí být do obvodu zapsána pomocí řídícího bajtu. Bity v řídící bajtu mají význam Bity 0 a 1určují aktivní vstupní kanál, Bit 2 spouští automatické přepínání vstupů aktivní v logické „1“, Bit 3 je vždy 0, Bity 4 a 5 určují zapojení vstupů : 00 - všechny vstupy proti zemi, 01 - tři diferenční vstupy proti vstupu Ain3, 10 - Ain0, Ain1 proti zemi, Ain2 – Ain3 jako diferenční vstupy, 11 – Ain0 – Ain1 a Ain2 – Ain3. Bit 6 – analogový výstup D/A aktivní v logické „1“. Bit 7 – vždy „0“. Podrobnější dokumentace včetně popisu signálů sběrnice I2C je v datasheetu k uvedenému IO, rozložení vývodů uvedeného IO je na obrázku č.02
Popis převodníku
Zapojení převodníku je na obrázku č.01 jde o upravené zapojení převodníku k ovládání PCF8574 kdy tento převodník bez uvedené úpravy na některých PC nefungoval plně to znamená že uvedený IO PCF8574 umožňoval pouze zápis do obvodu ale ne načítání vstupů z IO. Úprava se týká pouze doplnění rezistoru k již stávajícímu rezistoru 15K, tím vznikne paralelní zapojení a hodnota dvojice je 7K5 toto upravené zapojení převodníku již na uvedených PC s programy v uvedených článcích funguje. Převodník je napájen napětím 5V DC linky SDA, SCL jsou ovládány signály DTR, RTS které ovládá PC a data z IO jsou načítána na vstupu CTS. Výstup z PC RTS – SCL generuje taktovací signál a výstup DTR – SDA přenáší data do a z IO a současně jsou na vstupu SDA pomocí vstupu CTS programově čtena data z IO včetně signálu ACK který generuje obvod po přijmu osmi bitů. Přesný popis komunikace je zobrazen a popsán v datasheetu k PCF8591 včetně zápisu řídícího bajtu celkové zapojení převodníku a PCF8591 je na obrázku č.03. Pro test propojíme vývody IO AOUT(15) a Ain0(1).
Popis zkušebních
programů
Programy jsou uloženy v adresáři PROGAMY mají názvy ICTEST.EXE a PCF8591.EXE jsou zde i zdrojové programy pro možné úpravy i když dnes je ovládání uvedených IO PCF8574 (článek OVLÁDÁNÍ PCF8574 POČÁTAČEM na tomto webu) a PCF8591 pomocí PC hlavně programy pod OS Windows. Programy jsou psány v Turbo Pascalu a určeny pouze pro odzkoušení základní funkce PCF8591 tj. vyslání hodnoty pomocí D/A převodníku a její načtení na vstupu Ain0 A/D převodníku. Programy jdou spustit na PC pod OS DOS, Windows 95/98 na počítačích s OS Windows 2000, XP, NT, Windows 7 – startér. Pokud jsou tyto OS instalovány jako 32 – bitová v 64 – bitových verzích nefungují.
Program ICTEST.EXE po spuštění programu se zvolí sériový port kde je připojený převodník stiskem klávesy s číslicí „1“ volíme sériový port č.1, stiskem klávesy s číslicí „2“ volíme sériový port č.2 atd. Po volbě portu se na monitoru zobrazí nápis výstupní bajt zde zadáváme hodnotu od 1 do 255 NE VYŠŠÍ po jejím zadání stiskneme klávesu ENTER a na dalším řádku se zobrazí VSTUP = zde je hodnota která odpovídá převodu v A/D převodníku pokud nyní chceme provést přepočet na hodnotu napětí tuto hodnotu za nápisem VSTUP = dělíme hodnotou 255 a vynásobíme hodnotou 5. ((VSTUP / 255) * 5) = HODNOTA NAPĚTÍ kterou po zadání hodnoty provedl převodník D/A v PCF8591. Program ukončíme zadáním hodnoty „ 0 “ za výstupní bajt.
Program PCF8591.EXE : po spuštění programu se opět volí sériový port tento volíme stejně jako v programu ICTES.EXE. po volbě portu se na monitoru zobrazí výstupní bajt zde zadáváme hodnotu od 1 do 255 NE VYŠŠÍ, po zadání stiskneme klávesu ENTER a na monitoru se zobrazí ZADANÁ HODNOTA zde je námi zadaná hodnota a na dalším řádku se zobrazí hodnota napětí která odpovídá námi zadané hodnotě a jejím přepočtu v D/A převodníku a následném přepočtu v A/D převodníku. Současně na řádku VÝSTUPNÍ BAJT můžeme zadat další hodnotu a tato je po stisku klávesy ENTER opět vyslána do D/A převodníku dále zobrazena opět na řádku ZADANÁ HODNOTA a její hodnota v napětí dále zobrazena na dalším řádku. Program ukončíme zadáním hodnoty „ 0 “ za výstupní bajt.
Převodník připojený ke kontaktnímu nepájivému poli s PCf8591
Převodník připojený k PC se sériovým portem
Hotový převodník pro porovnání velikosti s tužkovou baterií
Spuštěný program ICTEST.EXE na PC příkazová řádka Windows XP
Spuštěný program PCF8591 Windows XP příkazová řádka
Zadaná hodnota 12 a odpovídající hodnota napětí
Testování programu na PC s Windows7 – startér příkazová řádka redukce USB/COM
Spuštěný program ICTEST Windows7 – startér příkazová řádka
Zadaná hodnota a odpovídající hodnota napětí windows7 – startér
Vágner Vlastimil