c3. Přizpůsobování logických úrovní v digitálních obvodech
c3. Přizpůsobování logických úrovní v digitálních obvodech 1 Zadání 1. Zrealizujte interface (dle zadání UART nebo I2C) mezi mikroprocesorovým systémem napájeným 3,3 V a 5 V pomocí: a. Tranzistorů a odporů, zapojených jako zesilovač a odporový dělič b. Galvanického oddělení pomocí optočlenů c. Obousměrným posouvačem úrovní vytvořeným pomocí MOS tranzistorů 2. Změřte převodní charakteristiku schmittova klopného obvodu 74HCT14
2 Teoretický úvod Schmittův klopný obvod Slouží na tvarování průběhu impulsů. Ze vstupního napětí libovolného průběhu vytvoří dvojúrovňový signál, a to tak, že po překročení určité horní hraniční hodnoty vstupního napětí VIN2 obvod přepne výstupní napětí na horní úroveň VOUT2, na které zůstane, dokud se nepřekročí dolní hraniční hodnota VIN1 vstupního napětí a obvod přepne výstupní napětí na dolní úroveň VOUT1. Tuto dolní úroveň výstupního napětí bude obvod držet, dokud nedojde k překročení horní hraniční hodnoty vstupního napětí VIN2. Tento proces se neustále opakuje.
Vout Vin
Vin
Vout
Obr. 1: Vnitřní zapojení schmittova klopného obvodu v technologii TTL a v technologii CMOS
Existence různých rozhodovacích úrovní napětí (horní a dolní hraniční hodnota vstupního napětí) pro přechod mezi dvěma stabilními stavy (z horní úrovně výstupního napětí na dolní a naopak) způsobuje vznik hystereze. Tato vlastnost umožňuje jeho použití jako tvarovače signálů s malou strmostí hran. Obousměrný posouvač úrovní I2C S jediným tranzistorem MOS-FET můžeme realizovat obousměrný posouvač úrovní, který nám umožní navzájem propojit různě napájené systémy, v našem případě 5 V a 3.3 V zařízení na jedné sběrnici. Posouvač také umožňuje izolovat část sběrnice, ve které jsou připojená zařízení vypnuta, a tím umožňuje normální operaci části, která je stále napájena.
1
c3. Přizpůsobování logických úrovní v digitálních obvodech
VDD R1
R2
SCK
SDA
3,3V Zařízení 5V Tolerantní
5V Zařízení
5V Zařízení
Obr. 2: Zapojení sběrnice I2C a různých zařízení
Současné výrobní technologie integrovaných obvodů limitují maximální velikost napájecího napětí, díky velmi malým velikostem jednotlivých prvků IO. Se zmenšujícím se napájecím napětím se zároveň snižují logické úrovně vstupních a výstupních signálů logických obvodů. Proto je nutné přizpůsobit logické úrovně systému pracujícími s nižším napájecím napětím, než dnes často používaných 5 V. Pro obousměrně komunikující systémy po jednom vodiči (jako např. sběrnice I2C) musí být posouvač úrovní (level shifter) náležitě koncipován. K takovéto realizaci stačí jeden vhodný MOS-FET tranzistor pro každou datovou linku sběrnice (v případě I2C jsou linky 2), bez nutnosti přivádět řídicí signál určující směr komunikace. Další důležitou vlastností tohoto zapojení je ochrana části s nižším napájecím napětím proti napěťovým špičkám z druhé části až do velikosti, kdy dojte k průrazu tranzistoru. Princip činnosti Při správné funkci posouvače jsou předpokládány tyto 3 stavy, ve kterých sběrnice pracuje:
Stav 1: Žádné zařízení nepřistupuje na sběrnici (aktivní úroveň signálů SDL a SCL je log. 0), část sběrnice s nižším napětím je připojena na napájení 3.3 V přes zvedací (pull-up) rezistory. Vstupy NMOS tranzistoru gate a source jsou připojeny na napájecí napětí 3,3 V, potom tedy napětí Vgs je nižší než napětí prahové Vth a tranzistor je uzavřen. To umožňuje druhé části sběrnice připojení přes zvedací (pull-up) rezistory na vyšší napájecí napětí 5 V. Tím je na obou částech úroveň log.1 i při rozdílných napěťových úrovních. Stav 2: Zařízení napájené z 3,3 V připojí vodič sběrnice na aktivní úroveň log. 0. Vstup source tranzistoru bude také na úrovni log. 0, ale napětí na hradle tranzistoru zůstává na 3,3 V. Napětí Vgs je potom větší jak prahové napětí Vth a tranzistor začíná být vodivý. Nyní je i část 5 V systému připojena na úroveň log. 0 z 3,3 V systému přes otevřený tranzistor NMOS. Obě části systému se tedy nacházejí na úrovni log. 0. Stav 3: Zařízení v 5 V části systému připojí vodič sběrnice na úroveň log. 0. přes vstup drain – substrát NMOS tranzistoru je 3,3 V část připojena k úrovni log. 0 z 5 V části systému. Poté i napětí Vgs bude větší jak prahové napětí Vth a tranzistor NMOS začne být vodivý a tedy obě části systému jsou na úrovní log. 0. Požadavky na NMOS tranzistor Nejdůležitější požadavky na tranzistor typu NMOS, který je použit v obousměrném posouvači úrovní pro systémy na sběrnici I2C (s napěťovými úrovněmi max. 6 V a min. 2,7 V), jsou uvedeny níže. Typ: N-kanál MOS-FET. Prahové napětí: Vth min. 0,1 V max. 2 V Odpor v sepnutém stavu: RDS(on) max. 100 Ohm @ ID= 3 mA, VGS= 2,5 V Vstupní kapacita: Ciss max. 100 pF @ VDS= 1V, VGS = 0V
2
c3. Přizpůsobování logických úrovní v digitálních obvodech
Čas spínání: ton toff max. 50 ns. Proud tranzistorem: ID 10 mA nebo více. Hodnoty zvedacích rezistorů nejsou jednoznačně stanoveny, protože závisí na hodnotách napájecích napětí, délce a kapacitní zátěži datových vodičů sběrnice a požadavku na náběžné a sestupné hrany. Tranzistory uvedené v tabulce jsou vhodné typy k použití v posouvači úrovní, typ BSN10 nebo BSN20 jsou levné a dostupné, jejich vlastnosti vyhovují aplikaci posouvače z 3,3 na 5 V. TYP BSN10 BSN20 BSS83 BSS88
Vth Min. 0.4V max. 1.8V Min. 0.4V max. 1.8V Min. 0.1V max. 2.0V Min. 0.4V max. 1.2V
RDS(on) 25 Ohm (typ) 25 Ohm (typ) 70 Ohm (typ) 15 Ohm
Ciss 15 pF 15 pF 1.5 pF (typ) 50 pF (typ)
Pouzdro TO-92 SOT23 SOT143 TO-92
Rozhraní UART Asynchronní sériová komunikace je definovaná standardem pro přenos dat. Pořadí přenosu datových bitů je od nejméně významného bitu (LSB) po bit nejvýznamnější (MSB). Počet datových bitů je volitelný, obvykle se používá 8 bitů, lze se také setkat se 7 nebo 9 bity. Logický stav „0“/„1“ přenášených dat je reprezentován pomocí dvou možných úrovní napětí 0 a VDD (dle napájení aplikace). Základní tři vodiče rozhraní jsou pro příjem RxD, pro vysílání TxD a společná zem GND. Asynchronní komunikace I když komunikující zařízení znají rychlost, jakou se data přenášejí, musí přijímač začít přijímat ve správný okamžik, tedy musí proběhnout synchronizace. V případě synchronní komunikace souběžně s datovým vodičem existuje i synchronizační vodič, na kterém vysílač oznamuje přijímači „teď jsem poslal data“, viz LPT a signál STROBE. Naopak u asynchronní komunikace se synchronizační vodič nepoužívá, pouze vysílač pošle definovaná data po datovém vodiči, po jejichž přijetí se přijímač sesynchronizuje. V případě RS232 každé sekvenci datových bitů předchází jeden start bit, kterým se logická hodnota na lince přepne z původně klidového stavu do stavu opačného. Po datových bitech následuje paritní bit a za ním jeden nebo více stop bitů, během kterých je linka opět v klidovém stavu. Je tak možné pro komunikaci použít méně vodičů na úkor určitého snížení rychlosti způsobeného synchronizací. K podobné synchronizaci dochází i u ethernetu, kde na začátku každého rámce vyšle vysílač několik bajtů, ve kterých se střídají bity 0 a 1. RS232 Nadstavbou nad rozhraním UART je rozhraní RS232. Tato rozhraní se velmi často používají pro komunikaci s PC, i když jsou v dnešní době nahrazována rozhraním USB. V průmyslu se standardně využívá modifikace rozhraní RS232, a to především standardy RS-422 a RS-485. Tyto standardy jsou velice rozšířeny, a pro své specifické rysy tomu tak bude i nadále. Na rozdíl od komplexnějšího USB, standard RS-232 pouze definuje, jak přenést určitou sekvenci bitů a nezabývá se už vyššími vrstvami komunikace. V referenčním modelu ISO/OSI tak představuje pouze fyzickou vrstvu. Logický stav „0“/„1“ přenášených dat je reprezentován pomocí dvou možných úrovní napětí, které jsou bipolární a dle zařízení mohou nabývat hodnot ±5 V, ±10 V, ±12 V nebo ±15 V. Nejčastěji je používána varianta při které logické hodnotě 1 odpovídá napětí -12 V a logické hodnotě 0 pak +12 V. Standard RS-232, resp. jeho poslední varianta RS-232C z roku 1969 (také sériový port nebo sériová linka), se používá jako komunikační rozhraní osobních počítačů a další elektroniky. RS-232 umožňuje propojení a vzájemnou sériovou komunikaci dvou zařízení, tzn., že jednotlivé bity přenášených dat jsou vysílány postupně za sebou (v sérii) po jediném vodiči podobně jako u síťové technologie Ethernet nebo rozhraní USB.
3
c3. Přizpůsobování logických úrovní v digitálních obvodech
3 Měřicí přípravek Přípravek obsahuje 2 nezávislé systémy s mikrokontrolérem, které jsou napájeny 3,3 V a 5 V s oddělenými vodiči GND (potenciál 0 V). Jedná se o malou vývojovou desku s mikrokontrolérem PIC16F690. Výstupem každého systému jsou 2 sběrnice, UART (signály RX, TX) a I2C (signály SDA, SCL). Při stisku tlačítka dojte ke změření napětí na pinu RA2 pomocí integrovaného AD převodníku a odeslání informace po dané sběrnici do druhé části systému, kde se daná informace zobrazí na LED diodách. UART
St
0
1
2
3
4
5
6
7
8
P
Sp
IDLE
Sp
I2C START
ADRESA+R/W
A
DATA
A
STOP
Struktura datových rámců u protokolu UART a I2C(St – start bit, Sp – stop bit, P – paritní bit) Přípravek je napájen ze stabilizovaného zdroje 6 – 12 V. Na přípravku dojde ke stabilizaci napětí na 3,3 V nebo 5 V. K signalizaci přítomnosti napájecího napětí slouží LED diody. Tato napájecí napětí jsou rozvedena již k jednotlivým částem přípravku. Dále přípravek obsahuje čtyři samostatné části, určené pro měření uvedených v jednotlivých bodech pracovního postupu. 1. Schittův klopný obvod (SCHMITTUV KO) Podle katalogového listu obvodu zjistěte význam jednotlivých vývodů pouzdra. Napájecí vývody jsou již zapojeny na napájení 5 V. Pro zjištění úrovní, při kterých dochází k překlápění obvodu, zapojte obvod dle obrázku 5. Na vstup připojte zdroj stejnosměrného napětí, napětí měňte v rozsahu 0 až 5 V a 5 V až 0 V s krokem 100 mV. Výsledkem tohoto měření bude graf hysterezní křivky, ze které odečtěte požadované údaje. Vyvedeny jsou pouze piny pouzdra 1-6 a 8-13. Napájecí piny jsou již zapojeny na 5 V. 2. Posouvač úrovní (PO) Zrealizujte posouvač úrovní dle uvedeného schématu na obrázku 7. Pořadí jednotlivých vývodů tranzistoru si vyhledejte v katalogovém listu dané součástky. Proveďte zkoušku přenosu informace z jednoho systému do druhého po sběrnici I2C. Pomoci osciloskopu zaznamenejte průběh signálu v obou částech posouvače. Porovnejte vliv různých zvedacích (pull-up) rezistorů (10k, 1k). 3. Galvanické oddělení pomocí optočlenů (OPTOČLENY) V obvodu jsou použity optočleny 4N35. Jejich vnitřní zapojení a význam jednotlivých vývodů naleznete v katalogovém listu. Zrealizujte rozhraní sběrnice UART, které je galvanicky oddělené. Proud protékající diodou naleznete v katalogovém listu a dle něj vypočtěte předřadné odpory.
4
c3. Přizpůsobování logických úrovní v digitálních obvodech
4. Odporový dělič a oddělení pomocí tranzistoru (TRANZISTOR a ODPOROVY DELIC) Pro nejjednodušší implementaci rozhraní, z 5 V systému do 3,3 V, je použit odporový dělič, jehož hodnoty je nutné vypočítat a zvolit vhodnou kombinaci z odporů na dané části přípravku. Pro realizaci komunikace v opačném směru je zapojen do obvodu tranzistor. Vzhledem k tomu, že takto zapojený tranzistor pracuje, jako invertují zesilovač, je vhodné využít vlastnosti EUSART obvodu mikrokontloréru a invertovat výstupní informaci, pro správnou funkci datového přenosu. Vypočítejte hodnoty rezistorů pro nastavení vhodného pracovního bodu tranzistoru a zapojení opět ověřte na komunikaci přes sběrnici UART. 5. Rozložení prvků na měřícím přípravku
3,3V SYSTÉM
Výstupy napájení a sběrnic (RX TX SDA SCK)
Tranzistor Galvanické oddělení pomocí optočlenů 2x 4N35 a potřebné rezistory
Posouvač úrovní 2x BS108 + pull up rezistory 10k a 100k Vývody tranzistoru: S-G-D
Odporový dělič
BC546 Vývody: C-B-E
Odpory pro nastavení pracovního bodu tranzistoru
Výstupy napájení a sběrnic (RX TX SDA SCK)
Schimttův klopný obvod
5V SYSTÉM
5
c3. Přizpůsobování logických úrovní v digitálních obvodech
Pracovní postup 1. Nejdříve naprogramujte vysílací a přijímací modul pro sběrnici UART s využitím již hotového programu (uart_tx_pos.hex nebo uart_tx_neg.hex a uart_rx.hex). Zavřete všechny otevřené projekty v MPLABu a připojte programátor. Přes menu File->Import nahrajte HEX soubor. Poté ho příslušným tlačítkem na liště nahrajte do mikrokontroléru.
Nahrajte soubor uart_tx_pos.hex do mikrokontroléru, který bude sloužit jako vysílač Nahrajte soubor uart_rx.hex do mikrokontroléru, který bude sloužit jako přijímač Zapněte napájení z programátoru ICD2i. Připojte zdroj 9 V do programátoru a v menu Programmer->Settings->Power zaškrněte políčko. Naprogramované moduly spojte přímo do sebe a ověřte správnou funkci Po ověření vypněte v menu napájení z programátoru
2. Zrealizujte galvanické oddělení pomocí optočlenů, které zapojte podle obrázku, ze kterého použijte pouze jeden optočlen (jednosměrná komunikace). Zapojení ověřte pomocí testovacího přenosu mezi systémy po sběrnici UART. V zapojení je výstupní část optočlenu zapojena jako invertující tranzistorový zesilovač. Proto je nutné invertovat výstupní data z vysílače a tedy použít zdrojový soubor uart_tx_neg.hex. 3,3V
5V
R4
RxD
TxD R1 uC1 3,3V
GND_3,3V
uC2 5V
GND_5V
Vypočítejte nejdříve předřadný odpor pro diodu. Proud diodou bude 10 mA. Vypočtěte zatěžovací odpor tranzistoru R4. Proud kolektorem bude 1mA. Hodnoty vypočtené zaznamenejte do výsledků měření a vyberte k ním vhodné hodnoty z řady Zapojení ověřte a poté upravte zapojení a hodnoty odporů pro zapojení, kdy bude vysílač napájen 5 V a přijímač 3,3 V
3. Při realizaci odporového děliče a tranzistorového zesilovače propojte oba systémy následujícím způsobem: Pro přenos informace využijte sběrnici UART.
Vypočítejte nejdříve oporový dělič. Proud děličem volte přibližně 1mA Vypočítejte zatěžovací odpor pro tranzistor R2. Proud kolektorem bude 1mA. Odpor v bázi tranzistoru volte 1,5 kΩ Pro přenos signálu z 5 V do 3,3 V využijte soubor pro vysílač uart_tx_pos.hex Pro opačný směr uart_tx_neg.hex.
6
c3. Přizpůsobování logických úrovní v digitálních obvodech
3,3V
5V
R2
RxD uC1 3,3V
RxD R1
TxD
TxD
uC2 5V
R3
R4
GND
4. Zapojte posouvač s tranzistorem BS108. Zapojení ověřte zapojením posouvače úrovní mezi testovací systémy 3,3 a 5 V a proveďte zkoušku přenosu informace z jednoho systému do druhého po sběrnici I2C.
Zapojte posouvač dle obrázku. Do přípravků nahrajte soubory i2c_master.hex a i2c_slave.hex. Hodnotu rezistorů RP zvolte nejdříve 1 kΩ, které jsou implementovány na připravku s mikrokontrolérem. Odpory jsou připojeny pomocí propojek přímo na linky SDA a SCK sběrnice Připojte osciloskop na linky SCK na straně 3,3 i 5 V části a průběhy zakreslete. Změřte napěťové úrovně signálů. Poté připojte osciloskop na SCK a SDA v 5 V systému a zakreslete Nyní zapojte rezistory RP s hodnotou 10 kΩ, které jsou na propojovací desce a zobrazte průběhy signálů SCK a SDA na osciloskopu. Nyní zapojte rezistory RP s hodnotou 100 kΩ, které jsou na propojovací desce a zobrazte průběhy signálů SCK a SDA na osciloskopu Popište do závěru průběhy signálů s různými hodnotami odporů RP 5V
3,3V
Rp
uC1 5V
Rp
Rp
Rp
SCK
SCK
SDA
SDA
uC2 3,3V
GND
5.
Zapojte obvod pro měření převodní charakteristiky obvodu 74HCT14 podle obrázku. Na vstup jednoho hradla obvodu připojte generátor, na jeho výstup osciloskop. Napájecí piny jsou již zapojeny na zdroj 5 V na propojovací desce.
7
c3. Přizpůsobování logických úrovní v digitálních obvodech
Zapojte generátor a nastavte frekvenci na 1 kHz, Napětí špička-špička na 5 V a ofset na 2,5 V Pozn:Pozor na impedanční přizpůsobeni generátorů 33220A – z tohoto důvodu je nutné nastavit pro dosažení požadovaných hodnot Vpp = 2,5 V, Ofset = 1,25 V. Osciloskop připojte k výstupu obvodu a také ke generátoru Na osciloskopu odečtěte přepínací napětí a šířku hystereze. Výsledky zapište do protokolu. Vyhledejte katalogový list a hodnoty porovnejte 74HCT14
1kHz 5 Vpp 2,5 Voff
Osciloskop
Programová obsluha Program pro mikrokontrolér má následující funkci: Při stisku tlačítka dojde k odeslání osmibitové informace, získané z AD převodníku, přes daný komunikační protokol. Na zdrojovém mikrokontroléru dojde ke zpracování získané informace a zobrazení pouze čtyř nejvýznamnějších bitů na cílové aplikaci.
Vysílací část UART Vysílací část, kterou reprezentuje vysílací zařízení, získá osmibitovou hodnotu z AD převodníku, zapojeném na pin RA2 a tuto hodnotu odešle na přijímací. Pro ověření použijte již přeložený program ve formátu HEX. Dle použitého zapojení je nutné invertovat výstupní hodnoty, proto máte přiloženy dva různé HEX soubory. Přijímací část UART Přijímací část zobrazí horní 4 bity přijaté informace na LED diodách. Takto docílíme vizuální interpretace hodnoty z AD převodníku vysílacího zařízení. Opět použijte již hotový program ve formátu HEX. Vysílací část I2C Vysílací část, kterou reprezentuje zařízení MASTER sběrnice, získá osmibitovou hodnotu z AD převodníku, zapojeném na pin RA2 a tuto hodnotu odešle na zařízení SLAVE s přednastavenou adresou. Pro ověření použijte již přeložený program ve formátu HEX. Přijímací část I2C Přijímací část obsahuje pouze jedeno zařízení SLAVE, kde jeden zobrazí horní 4 bity přijaté informace na LED diodách. Takto docílíme vizuální interpretace hodnoty z AD převodníku zařízení MASTER. Opět použijte již hotový program ve formátu HEX. Výpočty Pro výpočet hodnot rezistorů pro odporový dělič použijte následující vzorec: 𝑈𝑜𝑢𝑡 =
𝑅4 ∙𝑈 𝑅3 + 𝑅4 𝑖𝑛
8
c3. Přizpůsobování logických úrovní v digitálních obvodech
Protokol
jméno:
skupina:
I2C – průběh SCK
SCK 5V čas SCK 3,3V čas I2C – jeden datový rámec
SDA 5V čas SDA 3,3V čas
9
Vypočtené hodnoty rezistorů
Tabulka: Funkce Galvanické oddělení 3,3 -> 5 V Galvanické oddělení 5 -> 3,3 V Odporový dělič Tranzistorový zesilovač Posouvač úrovní
Ověřeno
Vypočtené hodnoty rezistorů Odporový dělič: Vypočtená hodnota
Použitá hodnota z jmenovité řady
R3 = R4 = Pracovní bod tranzistoru: Vypočtená hodnota
Použitá hodnota z jmenovité řady
R1 = R2 = Optočleny – vstup 3,3 V: Vypočtená hodnota
Použitá hodnota z jmenovité řady
R1 = R4 = Optočleny – vstup 5 V: Vypočtená hodnota R1 = R4 = Schmittův klopný obvod Přepínací napětí při změně vstupního L→H: Přepínací napětí při změně vstupního H→L: Hystereze: Katalogové hodnoty:
Závěr:
Použitá hodnota z jmenovité řady
10