\chapter{Obvodové řešení}
V této kapitole bude popsáno obvodové řešení čtečky pro snímání magnetických čárových kódů

\section{Použitá rozhraní}
Čtečka bude informaci získanou z magnetického čárového kódu přenášet do \zk{zkPC} jako sérii simulovaných stisků kláves na \uv{virtuální klávesnici}. Čtečku bude možno propojit s \zk{zkPC} pomocí následujících rozhraní nebo sběrnic.
\begin{description}
	\item[PS/2]{Již existující fyzická klávesnice komunikuje s \zk{zkPC} pomocí rozhraní \zk{zkPS2}. Čtečka funguje jako prostředník (obr.~\ref{fig:design:intf:to-pc}a), který do komunikace přidává vlastní data, představující stisky kláves. Z pohledu \zk{zkPC} se spojení klávesnice--čtečka jeví jako jako jedna klávesnice.}
	\item[USB]{Čtečka je připojena k \zk{zkPC} přes \zk{zkUSB} (obr.~\ref{fig:design:intf:to-pc}b) a emuluje klávesnici odpovídající standardu \zk{zkHID}, na které jsou prováděny stisky kláves. Z pohledu operačního systému se situace jeví, jako by k \zk{zkPC} byla připojena další klávesnice.}
\end{description}

\vectorfig{img/to-pc}{1}{Komunikace zařízení s PC}{fig:design:intf:to-pc}

Dle standardu \zk{zkUSB} musí všechna zařízení podporovat úsporný režim (\en{suspend}) \cite[kap.~7.1.7.6]{usbif-usb2.0-usb-spec}, přičemž napájecí proud odebíraný z \zk{zkUSB} nesmí překročit \qty{2{,}5}{mA} \cite{usbif-usb2.0-ecn-suspend-current}.

\section{Rozdělení na moduly}
Čtečka magnetického čárového kódu je z důvodu jednoduššího návrhu rozdělena na více modulů. Ústředním modulem je \emph{rekonstrukční obvod}, který ostatní moduly sdružuje po stránce mechanické i elektrické (zajišťuje jejich propojení a napájení). Snímání je prováděno \emph{snímacím oscilátorem}, jehož signál je číslicově zpracován v \emph{modulu s mikrokontrolérem}.

Navržený snímací oscilátor bude moci být napájen stejným napájecím napětím (přibližně \qty{5}{V}), jakým je napájen rekonstrukční obvod. V případě použití oscilátoru popsaného v \cite[kap~7.1]{kadlcik-bbce} bude muset být použit \emph{zvyšující měnič}, neboť tento oscilátor vyžaduje napájecí napětí v rozsahu \qtyrange{7}{24}{V}.

\section{Práce s odchylkami hodnot součástek}
Pokud odchylka parametrů obvodu může způsobit výrazné narušení funkce zařízení (např. limitaci signálu) nebo nesplnění standardů, budou při návrhu uvažovány odchylky hodnot součástek (způsobené výrobní tolerancí a teplotní závislostí). Syntéza obvodu (návrh) bude provedena přibližně, zatímco při analýze (pro kontrolu parametrů) budou určeny možné extrémní hodnoty parametrů (způsobené nejméně příznivou kombinací odchylek). Budou rozlišovány jmenovité (značené dolním indexem \uv{nom}), typické (\uv{typ}), minimální (\uv{min}) a maximální (\uv{max}) hodnoty.

Nejméně příznivá kombinace hodnot součástek bude uvažována proto, neboť nejsou známy příslušné hustoty rozdělení pravděpodobnosti ani korelace parametrů mezi jednotlivými součástkami.

Pokud odchylka parametrů (v rozumných mezích) obvodu nenaruší funkci zařízení, při výpočtu nebudou odchylky hodnot součástek uvažovány ani jejich nevýrazné parazitní vlastnosti.

Výrobní tolerance použitých \zk{zkSMD} rezistorů je $5\%$, tj. $\absdeltamax{\text{R}1\%,\text{p}} = 0{,}05$. Teplotní součinitel odporu je $\alpha_\text{R} = \qty{\sci{100}{-6}}{K^{-1}}$.

Bude uvažován teplotní rozsah od $\vartheta_\text{min} = \qtyC{-20}$ do $\vartheta = \qtyC{80}$. Nejvyšší rozdíl od standardní teploty $\vartheta_0 = \qtyC{25}$ je
\begin{align}
	|\Delta\vartheta|_\text{max} = \max\left\{|\vartheta_\text{min} - \vartheta_0|, |\vartheta_\text{max} - \vartheta_0|\right\} = \qtyC{55}.
\end{align}

Maximální relativní odchylka $\absdeltamax{\text{R}}$ je určena nejméně příznivým složením výrobního (značeného dolní indexem \uv{p}) a teplotního (dolní index \uv{$\vartheta$}) rozptylu,
\begin{align}
	\absdeltamax{\text{R},\vartheta}	&= \alpha_\text{R}|\Delta\vartheta|_\text{max} = \cr
						&= \sci{100}{-6}\times55 = 0{,}0055,	\\
	%\absdeltamax{\text{R}1\%,\text{p}}	&= 0{,}01,	\\
	\absdeltamax{\text{R},\text{p}}	&= 0{,}05,	\\
%	\absdeltamax{\text{R}1\%}		&= \left(1 + \absdeltamax{R1\%,\text{p}}\right)\left(1 + \absdeltamax{\text{R},\vartheta}\right) - 1 = \cr
%						&= \left(1 + 0{,}01\right)\left(1 + 0{,}0055\right) - 1 = 0{,}0156,	\\
	\absdeltamax{\text{R}}			&= \left(1 + \absdeltamax{R5\%,\text{p}}\right)\left(1 + \absdeltamax{\text{R},\vartheta}\right) - 1 = \cr
						&= \left(1 + 0{,}05\right)\left(1 + 0{,}0055\right) - 1 = 0{,}0558.
\end{align}
Pro přepočet jmenovitého odporu $R_{\text{xxx}_\text{nom}}$ rezistoru na minimální $R_{\text{xxx}_\text{min}}$ a maximální $R_{\text{xxx}_\text{max}}$ hodnotu platí
\begin{align}
	R_{\text{xxx}_\text{min}}	&= R_{\text{Rxxx}_\text{nom}}\left(1 - \absdeltamax{Rxxx}\right)	\\
	R_{\text{xxx}_\text{max}}	&= R_{\text{Rxxx}_\text{nom}}\left(1 + \absdeltamax{Rxxx}\right).
\end{align}

\section{Použitý mikrokontrolér}
Zde bude uvedeno, jaké požadavky jsou kladeny na použitý mikrokontrolér, který bude provádět kmitočtovou demodulaci signálu ze snímacího oscilátoru, předzpracování signálu a jeho rekonstrukci. Poté bude krátce představen zvolený mikrokontrolér PIC32MX250F128D.

\subsection{Požadavky}
Variační metody jsou výpočetně velmi náročné (slepá dekonvoluce vyžaduje jednotky až desítky milionů operací součinu a akumulace). Aby celý proces proběhl z pohledu uživatele dostatečně rychle, měl by se hodinový kmitočet \zk{zkCPU} pohybovat nejméně v řádu desítek megahertz. Hardwarová jednotka pro výpočet součinu je zcela nezbytná.

\zk{zkCPU} byl měl nativně pracovat s 32b slovy, neboť není vylouženo, že variační metody budou vyžadovat vyjadřování mezivýsledků s vysokou přesností.

Délka průběhu na obr.~\ref{fig:intro:bbce-barcode-analog-output} je $1\,000$ vzorků, tj. při rozlišení \qty{32}{b} na vzorek bude k jeho uložení potřeba \qty{4}{kB} paměti. Variační metody vyžadují současnou práci se zkresleným i rekonstruovaným signálem. \zk{zkMCU} by měl disponovat alespoň \qty{16}{KiB} operační paměti (je zde zahrnuta i určitá rezerva).

Jelikož je kmitočet snímacího oscilátoru přibližně \qty{300}{kHz} \cite[kap.~7.1]{kadlcik-bbce}, rychlost \zk{zkAD} převodníku by měla být minimálně \qty{600}{ksps}. Vzorkovací kmitočet musí být možno dostatečně jemně nastavovat, pro případné efektivní použití pásmového vzorkování.

\zk{zkMCU} musí mít hardwarovou podporu \zk{zkUSB}. Na ostatní periferie není kladen důraz. Jsou vhodné tzv. \emph{5V tolerantní} \zk{zkIO} porty (neboť rozhraní \zk{zkPS2} používá tyto napěťové úrovně).

Spotřeba \zk{zkMCU} by neměla být vyšší než \qty{100}{mA} i při maximálním výpočetním výkonu (jinak je při napájení z \zk{zkUSB} vyžadováno svolení od hostitele).

Pouzdro \zk{zkMCU} musí být typ s vývody, jejichž středová rozteč není menší než \qty{0{,}5}{mm} (neboť pájecí plošky pro \zk{zkMCU} jsou technologicky nejnáročnější částí plošného spoje).

\subsection{Mikrokontrolér PIC32MX250F128D}
Mikrokontrolér PIC32MX250F128D patří do rodiny PIC32. Obsahuje operační paměť o kapacitě \qty{32}{KiB} a programovou paměť \qty{128}{KiB}. Jmenovité napájecí napětí je \qty{3{,}3}{V}. \zk{zkMCU} při maximálním hodinovém kmitočtu \qty{40}{MHz} dosahuje výpočetního výkonu \qty{62}{DMIPS}. Pouzdro je typu \zk{zkTQFP}44 se středovou roztečí \qty{0{,}8}{mm}. \cite{microchip-pic32mx1xx2xx}

\zk{zkCPU} je založen na jádře \zk{zkMIPS} M4K a splňuje specifikaci instrukční sady \zk{zkMIPS}32 \cite{mips-mips32-arch-vol-2}. Software lze vedle jazyka symbolických adres vyvíjet i v jazyce C, např. s~po\-uži\-tím překladače \zk{zkGCC}. Architektura je typu load/store (přístup do paměti je možný pouze pomocí několika speciálních instrukcí). \zk{zkCPU} obsahuje jednotku pro rychlý výpočet součinu dvou hodnot a podporuje instrukci MADD (součin dvou čísel a přičtení výsledku k registru). Jednotka pro násobení pracuje relativně nezávisle na ostatních jednotkách, a tak je např. možno během výpočtu součinu dvou hodnot načítat třetí z paměti.

Hodinový kmitočet (ať již z vnitřního nebo vnějšího oscilátoru) lze upravovat pomocí vnitřních děličů nebo \zk{zkPLL}. Při volbě externího oscilátoru je nutno zkontrolovat, zdali je možno děliče nastavit tak, aby vnitřní blok \zk{zkUSB} pracoval se správným kmitočtem.

Vzhledem k velkému množství funkcí a relativně malému množství pinů může téměř každý pin zastávat množství alternativních funkcí. Přibližně $\ifrac{1}{3}$ pinů je 5V tolerantní, napětí \qty{5}{V} je k nim nutno přivést přes externí zdvihací (\en{pull-up}) rezistory.

\zk{zkAD} převodník je typ s postupnou aproximací, jeho jmenovité rozlišení je \qty{10}{b} a~rychlost převodu až \qty{1}{Msps}. Je napájen z oddělených napájecích pinů a jeho referenční napětí lze externě nastavit a filtrovat. Vzorkování a \zk{zkAD} převod lze taktovat automaticky, softwarově, externím signálem nebo pomocí vnitřního 16b časovače (tím je poskytnuta možnost relativně jemně měnit vzorkovací kmitočet). \cite{microchip-pic32mx1xx2xx}, \cite{microchip-pic32-ad}.

%Proudový odběr oscilátoru není v \cite{kadlcik-bbce} uveden, lze jej však vypočítat (tab.~\ref{tab:design:current-consumption}). Výstupní napětí zdroje bude \qty{12}{V} (stabilizováno) a proud až \qty{50}{mA}. Zdroj se sice zdá být předimenzován, ale cílem je určitá univerzálnost navrženého zařízení (tj. možnost případně napájet i~další obvody popsané v \cite{kadlcik-bbce}).

\section{Zvyšující měnič}
Proudový odběr snímacího oscilátoru popsaného v \cite[kap.~6.1]{kadlcik-bbce} není v \cite{kadlcik-bbce} uveden, a proto je odhad proveden v tab.~\ref{tab:design:boost:old-oscillator-current-consumption}.

\begin{table}[!htbm]
	\begin{center}\begin{tabular}{|l|l|}
		\hline
		Část obvodu		& Napájecí proud					\\
		\hline
		\hline
		Záporný odpor		& \qty{1}{mA}						\\
		Stabilizátor napětí	& \qty{6}{mA} \cite[tab.~5, tab.~14]{stm-l78xx}		\\
		Oddělovací stupeň	& \qty{6}{mA} (na \dev{R6} je polovina napájecího napětí)	\\
		\hline
		Celkem			& \qty{13}{mA}						\\
		\hline
		\hline
		\multicolumn{2}{|l|}{Pozn.: platí pro napájecí napětí oscilátoru \qty{12}{V}, přibližné hodnoty.}	\\
		\hline
	\end{tabular}\end{center}
	\caption{Přibližný výpočet proudového odběru snímacího oscilátoru z bakalářské práce}
	\label{tab:design:boost:old-oscillator-current-consumption}
\end{table}

Zvyšující měnič se skládá z \emph{vlastního zvyšujícího měniče}, který poskytuje napětí o velikosti $U_{\text{out}_\text{boost}} = \qty{14}{V}$, a \emph{lineárního stabilizátoru}, který napětí dále stabilizuje na hodnotu $U_\text{out} = \qty{12}{V}$ (a~sou\-čas\-ně potlačuje zvlnění).

Schéma zvyšujícího měniče je na obr.~\ref{fig:design:boost:sch}.

\fig{eagle/boost-sch}{Schéma zvyšujícího měniče}{fig:design:boost:sch}{1}

Pro omezení rušení se budou součástky měniče nacházet na samostatné desce plošných spojů. Vlastní měnič bude pracovat s digitální (\signal{DGND}) a stabilizátor s analogovou (\signal{AGND}) zemí. Rušení od vlastního měniče se tak bude případně šířit pouze do digitální části.

Vlastní měnič je založen na integrovaném obvodu \dev{IC1} (typ MIC2619YD6), jehož kmitočet spínání je přibližně \qty{1{,}2}{MHz}. Vysokým spínacím kmitočtem je umožněno použití cívky s nízkou indukčností, a tím i malými rozměry.

Dle \cite[str.~4, $V_\text{out} = \qty{12}{V}$]{micrel-mic2619} lze odhadnout účinnost měniče na $\eta_\text{boost} = 0{,}75$. Výstupnímu proudu $I_\text{out} = \qty{50}{mA}$ (velká rezerva pro univerzálnost) při vstupním napětí $U_\text{in} = \qty{5}{V}$ odpovídá vstupní proud měniče
\begin{align}
	I_\text{in} = \frac{U_{\text{out}_\text{boost}}}{U_\text{in}}\frac{I_\text{out}}{\eta_\text{boost}} = \frac{14}{5}\frac{0{,}05}{0{,}75} \doteq \qty{0{,}187}{A},
\end{align}
na který je nutno dimenzovat cívku \dev{L1}.

LC článek \dev{C1}-\dev{L1}-\dev{C2}-\dev{C3} tvoří dolní propust, bránící šíření rušení ze zdroje a do zdroje. Dopředný (ze vstupu zdroje na vstup \dev{IC1}) napěťový přenos a zpětný (od \dev{IC1} na vstup zdroje) proudový přenos rušení lze vyjádřit jedním činitelem filtrace
\begin{align}
	K_\text{f}		&= \left\|\frac{\komplex{Z_{C_{23}}}}{\komplex{Z_{C_{23}}} + \J{}X_{L_1}}\right\| \approx \frac{Z_{C_{23}}}{2\pi{}f_\text{boost}L_1},	\label{eq:design:boost:K-f}
\end{align}
kde $f_\text{boost}$ je spínací kmitočet měniče a $Z_{C_{23}}$ impedance paralelního spojení kondenzátorů \dev{C2} a \dev{C3}, jejíž hrubý odhad\footnote{Přesný výpočet by vyžadoval znalost \zk{zkESR} kondenzátoru na konkrétním kmitočtu pro konkrétní provedení (kapacita, napětí, rozměry).} je \qty{0{,}2}{\upOmega} na spínacím kmitočtu (včetně rezervy, \cite[obr.~9]{kemet-tantalum-capacitors}, \cite[obr.~1]{franklin-esr}, \cite[s.~17]{avx-x7r}).

Nejvyšší přípustný činitel filtrace bude zvolen $K_{\text{f}_\text{max}} = 0{,}01$, čemuž odpovídá minimální indukčnost cívky \dev{L1} (vyjádřením z \eqref{eq:design:boost:K-f})
\begin{align}
	L_{1_\text{min}} \approx \frac{Z_{C_{23}}}{2\pi{}f_\text{boost}K_{\text{f}_\text{max}}} = \frac{0{,}2}{2\pi\sci{1{,}2}{6}\cdot0{,}01} \doteq \qty{\sci{2{,}653}{-6}}{H}.
\end{align}
Bude zvolena cívka s jmenovitou indukčností $L_{1_\text{nom}} = \qty{10}{\upmu{}H}$. Sériový odpor vinutí tlumí rezonanci mezi indukčností cívky a kapacitou připojených kondenzátorů.

Indukčnost cívky \dev{L2} vychází ze zapojení \cite[s.~1]{micrel-mic2619} doporučeného výrobcem integrovaného obvodu \dev{IC1}. Nejvyšší možný proud protékající cívkou \dev{L2} je \cite[s.~4]{micrel-mic2619}
\begin{align}
	I_{{L_2}_\text{max}} = 0{,}680\frac{0{,}630}{0{,}600} = 0{,}714,
\end{align}
dle čehož musí být patřičně dimenzována (hodnota $0{,}680$ je maximální proud cívkou při vstupním napětí \qty{5}{V}, zlomek $\ifrac{0{,}630}{0{,}600}$ zahrnuje teplotní závislost proudu).

Činnost měniče je následující.

Integrovaný obvod \dev{IC1} obsahuje oscilátor generující jmenovitý kmitočet \qty{1{,}2}{MHz}. Oscilátorem je pravidelně spouštěn vnitřní generátor pilového průběhu a současně je sepnut vnitřní tranzistor, který pin \pin{SW} spojí se zemí (\signal{GND}), a cívka \dev{L2} se začne nabíjet.

Napětí z vnitřního generátoru pily je stejnosměrně posunuto v závislosti na proudu tekoucího do pinu \pin{SW} (tím je dosaženo řízení střídy spínání dle proudu tekoucího cívkou). Jakmile toto posunuté napětí překročí hodnotu danou vnitřním zesilovačem odchylky, je generátor pily vynulován a vnitřní tranzistor rozepnut.

Energie nahromaděná (v podobě magnetického pole) v cívce \dev{L1} je přes diodu \dev{D1} přenesena do filtračního kondenzátoru \dev{C4}.

Zmiňovaný vnitřní zesilovač odchylky porovnává vnitřní referenční napětí (typická hodnota je $U_{\text{ref}_\text{typ}} = \qty{1{,}265}{V}$ \cite[s.~11]{micrel-mic2619}) s napětím na pinu \pin{FB}. Děličem \dev{R3-R5} je nastaveno výstupní napětí měniče. Odpor rezistoru \dev{R3} byl zvolen \qty{10}{k\upOmega}, pro výstupní napětí $U_{\text{out}_{\text{boost}_\text{nom}}} = \qty{14}{V}$ bude jmenovitý odpor rezistoru \dev{R5} \cite[s.~11]{micrel-mic2619}
\begin{align}
	R_{5_\text{nom}} = R_{3_\text{nom}}\left(\frac{U_{\text{out}_{\text{boost}_\text{nom}}}}{U_{\text{ref}_\text{typ}}} - 1\right) = \sci{10}{3}\left(\frac{14}{1{,}265} - 1\right) \doteq \qty{\sci{100}{3}}{k\upOmega},
\end{align}
(při odvození vzorce je vycházeno z faktu, že regulační smyčka udržuje za normálních okolností na pinu \pin{FB} referenční napětí).

Překročí-li napětí přivedené na pin \pin{OVP} referenční napětí, je aktivována druhá regulační smyčka, která omezuje napětí na výstupu a pracuje jako přepěťová ochrana. Práh aktivace přepěťové ochrany bude nastaven na $U_{\text{OVP}_\text{nom}} = \qty{18}{V}$ -- tj. o přibližně $28\%$ více než výstupní napětí vlastního měniče -- je zde pokryta nepřesnost integrovaného obvodu \dev{IC1} i odporových děličů. Odpovídající jmenovitý odpor rezistoru \dev{R4} je
\begin{align}
	R_{4_\text{nom}} = R_{2_\text{nom}}\left(\frac{U_{\text{OVP}_\text{nom}}}{U_{\text{ref}_\text{typ}}} - 1\right) = \sci{10}{3}\left(\frac{18}{1{,}265} - 1\right) \doteq \sci{142}{3} \doteq \qty{150}{k\upOmega}.
\end{align}

Výstupní napětí měniče je filtrováno LC článkem \dev{L3}-\dev{C6}-\dev{C5}. Kapacita blokovacího kondenzátoru \dev{C7} je doporučena výrobcem stabilizátoru \dev{IC2} (\cite[s.~1]{ti-lm2940}). Vzhledem k použitým hodnotám součástek je filtrační účinek stejný jako u LC článku před měničem.

Stabilizátor \dev{IC2} je tzv. typu \zk{zkLDO}, tj. je schopen zachovat funkční stabilizaci napětí, i když jeho vstupní napětí je pouze o malou hodnotu vyšší než výstupní (při výstupním proudu \qty{100}{mA} postačí rozdíl \qty{200}{mV} \cite[s.~7]{ti-lm2940}).

Výstupní napětí zdroje je nakonec dále filtrováno kondenzátorem \dev{C8}.

Zdroj je vypínatelný. Přivedením log.~0 na pin \pin{EN} (signál \signal{EN}) je měnič vypnut (nicméně kompletní odpojení výstupu měniče vstupu není možné, neboť i při vypnutém obvodu \dev{IC1} proniká na vstup stabilizátoru \dev{IC2} napětí  přes cívku \dev{L2}). Logická úroveň potřebná k vypnutí a zapnutí měniče \cite[s.~3]{micrel-mic2619} je slučitelná s logickými úrovněmi používanými mikrokontrolérem.

\section{Modul s mikrokontrolérem}
Schéma modulu je na obr.~\ref{fig:design:mcu-module:sch}

\figrotated{eagle/mcu-module-sch}{Schéma modulu s mikrokontrolérem}{fig:design:mcu-module:sch}{1}

Hlavní motivací pro použití \zk{zkMCU} prostřednictvím modulu namísto \zk{zkMCU} samotného je usnadnění vývoje navrhovaného zařízení. Vývody modulu (konektory \dev{JP1} a \dev{JP1}) jsou rozmístěny ve standardním rastru \qty{2{,}54}{mm}. Modul je s \zk{zkDPS} rekonstrukčního obvodu (kap~.\ref{sec:design:recon}) spojen pomocí konektoru. Výměna desky rekonstrukčního obvodu poté nevyžaduje odpájení samotného \zk{zkMCU} (s pouzdrem \zk{zkTQFP}44). Současně lze modul snadno zapojit do nepájivého kontaktního pole.

Jádrem modulu je \zk{zkMCU} \dev{IC2} (výše popsaný typ PIC32MX250F128D). Napájení napětí o jmenovité velikosti \qty{3{,}3}{V} je přiváděno přes konektor \dev{JP1} (pinová řada) k \zk{zkMCU} přes LC filtr (dolní propust) \dev{C5}-\dev{L2}-\dev{C6}-\dev{C7}-\dev{C8}, potlačující rušení šířící se od \zk{zkMCU}.

Rezonance mezi indukčností a kapacitou filtru může způsobovat nepřípustné zákmity při skokové změně napájecího proudu \zk{zkMCU}. Zákmity lze zmírnit snížením činitele jakosti filtru, k čemuž je zde využita především ztrátovost cívky \dev{L2} a kondenzátoru \dev{C6}.

Pomocí simulace v simulátoru typu \zk{zkSPICE} bylo ověřeno, že amplituda zákmitů na výstupu filtru nepřesahuje $\Delta{}U_{\text{out}_\text{max}} = \qty{300}{mV}$ pokud je filtr výstup filtru zatěžován proudem o hodnotě skokově se měnící mezi \qty{0}{mA} a $I_{\text{DD}_\text{max}} = \qty{300}{mA}$. Hodnota $\Delta{}U_{\text{out}_\text{max}}$ byla zjištěna z maximálního napájecího napětí \zk{zkMCU} (\qty{3{,}6}{V} \cite[tab.~29-1]{microchip-pic32mx1xx2xx}) a nejvyššího napětí na jeho logickém vstupu (o \qty{300}{mV} více než napájecí napětí \cite[kap.~29.0]{microchip-pic32mx1xx2xx}), které je zde přiváděno obvody mimo modul. Hodnota $I_{\text{DD}_\text{max}}$ je nejvyšší přípustný napájecí proud \zk{zkMCU}.

Zenerovy diody \dev{D1}, \dev{D2} a \dev{D3} chrání \zk{zkMCU} před přepětím a přepólováním (jsou použity typy s drátovými vývody, neboť umožňují vedení většího proudu).

Kmitání vnitřního napěťového stabilizátoru \zk{zkMCU} brání kondenzátor \dev{C9}, jehož \zk{zkESR} by neměl překročit \qty{1}{\upOmega} \cite[tab.~29-13]{microchip-pic32mx1xx2xx}.

Pro generování hodinového signálu lze k \zk{zkMCU} připojit buď externí oscilátor \dev{IC1}, nebo krystal \dev{Q1}. Volba se provádí rozdílným osazením \zk{zkDPS}.

Externí oscilátor \dev{IC1} dodává hodinový signál o kmitočtu \qty{40}{MHz}, díky čemuž může být \zk{zkMCU} taktován maximálním kmitočtem i bez použití interního \zk{zkPLL} pro násobení kmitočtu. (\zk{zkPLL} by do hodinového signálu zanášel fázový šum, který by se přenesl i do vzorkovaného signálu ze snímacího oscilátoru, neboť \zk{zkAD} převodník je tímto hodinovým signálem řízen).

Při použití externího oscilátoru musí být pin \pin{RPA2} nastaven pro funkci jako vstup hodinového signálu (funkce \pin{OSC1}), pin \pin{RPA3} jako \zk{zkGPIO}.

Externí oscilátor je napájen napětím filtrovaným přes LC článek \dev{C1}-\dev{L1}-\dev{C2}, jehož činitel jakosti je sériovým odporem cívky \dev{L1} omezen na hodnotu
\begin{align}
	Q = \frac{\sqrt{\frac{L_1}{\frac{C_1C_2}{C_1 + C_2}}}}{R_{L_1}} = \frac{\sqrt{\sci{100}{-9}}{\frac{\sci{22}{-9}\sci{22}{-9}}{\sci{22}{-9} + \sci{22}{-9}}}}{7{,}5} \doteq 0{,}402,
\end{align}
tj. tlumené kmitání způsobené rezonancí je potlačeno (výpočet uvažuje nejhorší případ, tj. admitancí nezatížený vstup a výstup LC filtru).

Napájecí proud externího oscilátoru dosahuje hodnoty až \qty{10}{mA} \cite{txc-8w}. Aby proudová spotřeba celého zařízení v úsporné režimu nepřesáhla \qty{2{,}5}{mA} (požadavek standardu \zk{zkUSB} \cite{usbif-usb2.0-ecn-suspend-current}), je umožněno vypínání externího oscilátoru přivedením log.~0 na jeho vstup \pin{EN} (rezistor \dev{R1} zajišťuje přivedení definované logické úrovně i po resetu \zk{zkMCU}, kdy jsou jeho \zk{zkIO} piny nastaveny jako vstupní.

Krystal \dev{Q1} je připojen ke vstupu a výstupu vnitřního zesilovače v \zk{zkMCU} a kondenzátory \dev{C3*} a \dev{C4*} je upraven fázový posun, aby vytvořená zpětná vazba způsobila rozkmitání. Rezistorem \dev{R2} lze případně snížit limitaci signálu \cite[obr.~6-2]{microchip-pic32-osc}.

Při použití krystalu musí být pin \pin{RPA2} nastaven jako vstup hodinového signálu (funkce \pin{OSC1}), \pin{RPA3} jako výstup zpětné vazby (funkce \pin{OSC2}).

Kondenzátor \dev{C10} filtruje přiváděné referenční napětí pro \zk{zkAD} převodník.

Rezistory \dev{R4}, \dev{R5} upravují impedanční přizpůsobení pinů \pin{D+} a \pin{D-} \zk{zkMCU} ke sběrnici \zk{zkUSB} a mohou být nahrazeny zkratem, neboť dle \cite[kap.~27.1]{microchip-pic32-usb} nejsou zapotřebí.

Na modulu je umístěn konektor (\dev{JP3}) pro rozhraní \zk{zkICSP}, jímž je možno \zk{zkMCU} programovat a ladit běžící program. Komunikace probíhá synchronně sériově prostřednictvím dvojice pinů \pin{PGEC1} (hodinový signál) a \pin{PGED1} (datový signál). \zk{zkICSP} lze mapovat i na jiné piny \zk{zkMCU} \cite[obr.~13]{microchip-pic32mx1xx2xx}, správné mapování je automaticky zjištěno při programování (nehrozí tedy trvalé znepřístupnění \zk{zkICSP} při nastavení nesprávného mapování). Zdvihací rezistor \dev{R3} brání resetu \zk{zkMCU} při nezapojení pinu \dev{/MCLR}.

\clearpage
\section{Rekonstrukční obvod}
\label{sec:design:recon}
Schéma rekonstrukčního obvodu je na obr.~\ref{fig:design:recon:sch}.

\fig{eagle/recon-sch}{Schéma rekonstrukčního obvodu}{fig:design:recon:sch}{0.85}

Rekonstrukční obvod je pomyslně rozdělen na několik bloků, každý s vlastním číslováním součástek. Pro přehlednost je propojení mezi bloky a modulem s \zk{zkMCU} naznačeno pojmenováním uzlů. Značení vodičů uvedené v závorce nemá s vodivým propojením nic společného a pouze uvádí funkci příslušných pinů konektorů.

Jádrem rekonstrukčního obvodu je \zk{zkMCU}, obsažený v modulu \dev{MOD1}. Rezistor \dev{R1} slouží ke propojení analogové (\signal{AGND}) a digitální (\signal{DGND}) země, ale (jelikož s ostatními propojovacími vodiči tvoří proudový dělič) současně omezuje vzájemné pronikání rušivých proudů.

\subsection{Blok napájení}
Z hlediska napájení disponuje rekonstrukční obvod třemi napájecími vstupy:
\begin{itemize}
	\item{vstupem pro externí napájení (konektor \dev{J101}, uzel \signal{VDD5\_EXT}),}
	\item{\zk{zkUSB} (konektor \dev{X303}, uzel \signal{VDD5\_USB}),}
	\item{rozhraním \zk{zkPS2} (konektor \dev{X301}, uzel \signal{VDD5\_PS2}).}
\end{itemize}
Úkolem bloku napájení je informovat \zk{zkMCU} o napětí na napájecích vstupech a poté dle pokynů \zk{zkMCU} vybrat vstup, ze kterého bude celý rekonstrukční obvod (včetně připojeného snímacího oscilátoru) napájen. Dále blok napájení obsahuje stabilizátory pro tvorbu jmenovitého napětí \qty{3{,}3}{V}, zvlášť pro logické (uzel \dev{+D3V3}) i analogové (uzel \dev{+A3V3}) obvody.

Blok napájení lze rozdělit na čtyři spínací obvody, z nichž každý přivádí napájecí napětí z daného napájecího vstupu. Čtvrtý spínací obvod spíná napájecí napětí vytvořené diodovou sítí typu \zk{zkOR} (uzel \signal{VDD5\_OR}, diody \dev{D142}, \dev{D143}, \dev{D144}). Spínací obvody všech vstupů jsou prakticky shodné, čemuž odpovídá i číslování součástek, kdy shoda v poslední číslici značí shodu ve funkci. Proto (pro přehlednost) bude např. na rezistory \dev{R111}, \dev{R121} a \dev{R131} souhrnně odkazováno jako na \dev{R1x1}.

Samotná diodová síť by sice postačila k výběru napájecího vstupu, nicméně na diodách vzniká úbytek napětí a výběr by nebylo možno ovlivnit (by byl vždy vybrán vstup s přibližně nejvyšším napětím). Z diodové sítě je proto rekonstrukční obvod napájen (dočasně) pouze tehdy, dokud \zk{zkMCU} nevybere ani jeden napájecí vstup.

Pro protékající proud \qty{100}{mA} a nejnižší teplotu \qtyC{55} lze z \cite[obr.~1]{stm-tmmbat43} odečíst typický úbytek napětí na diodě \qty{0{,}75}{V}. Maximální hodnota není v katalogovém listu uvedena  a je odhadnuta na $U_{\text{OR}_\text{max}} = \qty{1}{V}$.

%Vždy je sepnut právě jeden spínací obvod, vybraný binárním slovem \signal{RPC1} a \signal{RPC2}. Sepnutí spínacího obvodu je provedeno uzemněním elektrod G příslušných spínacích tranzistorů (\dev{Q1x1} a \dev{Q1x2}) pomocí \emph{dekodérových} tranzistorů \dev{Q101}, \dev{Q102} a \dev{Q103}, které tvoří dekodér z binárního kódu na kód 1 z N. Spenutí je indikováno rozsvícením \zk{zkLED} \dev{LED1x1}.

Spínání napájecího napětí je prováděno pomocí elektronicky řízeného spínače tvořeného dvěma antisériově zapojenými \emph{spínacími} tranzistory \zk{zkMOSFET} \dev{Q1x1} a \dev{Q1x2} (použitý typ má odpor v sepnutém stavu menší než \qty{0{,}1}{\upOmega} \cite[tab.~7]{nxp-pmv32up}).

Spínač, který by v rozepnutém stavu neumožňoval průchod proudu v žádném směru, nelze sestavit z jednoho tranzistoru \zk{zkMOSFET}, neboť mezi elektrodami D a S se nachází paralelní substrátová dioda. Antisériovým spojením dvou tranzistorů se vliv substrátové diody potlačí.

V rozepnutém stavu se potenciál elektrody S alespoň jednoho z tranzistorů nachází nad potenciálem elektrody D (a jeho substrátová dioda je pólována v závěrném směru). Vysoký potenciál elektrody S je přes rezistor \dev{R1x3} přiváděn na elektrodu G, a tím je přinejmenším jeden z tranzistorů uzavřen. (Opačné antisériové zapojení tranzistorů, tj. spojení jejich elektrod D, by vyžadovalo dva tyto rezistory a složitější řízení.)

Sepnutí spínacího obvodu probíhá snížením potenciálu elektrod G spínacích tranzistorů pomocí \emph{dekodérových tranzistorů} \dev{Q101}--\dev{Q106}. Dekodérové tranzistory tvoří několik logických členů \zk{zkAND} a invertorů, z nichž je složen převodník z binárního kódu na kód 1 z N (viz tab.~\ref{tab:design:recon:power:switching}).

\begin{table}[!htbm]
	\begin{center}\begin{tabular}{|c||c|c|}
		\hline
		\multirow{2}{*}{Zvolený napájecí uzel}		& \multicolumn{2}{c|}{Řídicí signály}	\\
							& \signal{RPC1}		& \signal{RPC2}	\\
		\hline
		\hline
		\signal{VDD5\_EXT}			& 1			& 1		\\
		\signal{VDD5\_USB}			& 1			& 0		\\
		\signal{VDD5\_PS2}			& 0			& 1		\\
		\signal{VDD5\_OR}			& 0			& 0		\\
		\hline
	\end{tabular}\end{center}
	\caption{Kombinace logických řídicích signálů pro výběr zdroje napájecího napětí}
	\label{tab:design:recon:power:switching}
\end{table}

Sestavení dekodéru 1 z N (namísto použití standardního logického integrovaného obvodu) z diskrétních tranzistorů přináší následující výhody. Jednak takový dekodér je zcela přirozeně schopen pracovat s rozdílnými napěťovými úrovněmi na vstupu a výstupu, jednak je chování dekodéru definováno i při malém napájecím napětí.

Jsou-li piny \pin{RPC1} a \pin{RPC2} nastaveny jako vstupní (výchozí stav po resetu \zk{zkMCU}), snižovací rezistory \dev{R101} a \dev{R102} na nich zajistí definovanou logickou úroveň, a to log.~0 (odpovídající volbě diodové sítě jako zdroje napájecího napětí).

Rezistory \dev{R1x3} a \dev{R1x4} odvádějí část proudu a současně tvoří dělič zdánlivě navyšující prahové napětí spínacích tranzistorů, čímž se zabraňuje jejich nežádoucímu otevření zbytkovým proudem dekodérových tranzistorů a úbytkem na diodové síti (úbytek k tranzistorům proniká přes rezistory \dev{R1x5} a \dev{R1x6}).

Jmenovité odpory obou rezistorů \dev{R1x3} a \dev{R1x4} jsou zvoleny stejné, tj. při odhadnutém minimálním napájecím napětí \qty{3{,}6}{V} bude napětí G-S spínacích tranzistorů přibližně \qty{1{,}8}{V} (jedna z hodnot, pro níž je tranzistor určen, viz \cite{nxp-pmv32up}).

Odpory rezistorů budou odhadnuty na základě maximálního zbytkového proudu $I_{\text{DS0}_{\text{dec}_\text{max}}}$ dekodérových tranzistorů při vysoké teplotě (\cite[s.~2]{vishay-si1012x}) a minimálního prahového napětí spínacích tranzistorů $U_{\text{th}_{\text{sw}_\text{min}}}$ (\cite[tab.~7]{nxp-pmv32up}),
\begin{align}
	R_{\text{1x3}_\text{nom}} = R_{\text{1x4}_\text{nom}} = \frac{U_{\text{th}_{\text{sw}_\text{min}}}}{I_{\text{DS0}_{\text{dec}_\text{max}}}} = \frac{0{,}45}{\sci{5}{-6}} = \sci{90}{3} \doteq \qty{\sci{51}{3}}{\upOmega}.
\end{align}

\zk{zkLED} \dev{LED1x1} indikuje volbu daného vstupu pro napájení čtečky. Pro rozsvícení \zk{zkLED} bude vyhrazen proud nejvýše $I_{\text{LED}_\text{max}} = \qty{350}{\upmu{}A}$ (a proto bude potřeba použít typ s vysokou svítivostí). Minimální propustné napětí \zk{zkLED} při malých proudech je odhadnuto $U_{\text{LED}_\text{min}} = \qty{1{,}5}{V}$ (katalogový list \cite{lumex-ssl-lx3044srd} udává propustné napětí pouze pro proudy \qty{20}{mA}). Přibližný jmenovitý odpor rezistoru \dev{R1x5} bude
\begin{align}
	R_{\text{1x5}_\text{nom}} = \frac{U_{\text{CC}_\text{max}} - U_{\text{LED}_\text{min}}}{I_{\text{LED}_\text{max}}} = \frac{5{,}5 - 1{,}5}{\sci{350}{-6}} \doteq \sci{11{,}429}{3} \doteq \qty{\sci{12}{3}}{\upOmega}.
\end{align}

Za situace, kdy jsou příslušné dekodérové tranzistory uzavřeny a prochází jimi pouze zbytkový proud, rezistory \dev{R103} a \dev{R1x6} potlačují napěťový úbytek na \zk{zkLED} a zajišťují přivedení dostatečného napětí pro otevření tranzistorů \dev{Q103}, \dev{Q105} nebo \dev{Q106}. Pro otevření tranzistorů bude požadováno napětí minimálně $U_{\text{GS}_{\text{dec}_\text{min}}} = \qty{1{,}3}{V}$ (maximální prahové napětí tranzistoru je \qty{0{,}9}{V} \cite[s.~2]{vishay-si1012x}). Je-li uvažováno minimální napájecí napětí $U_{\text{CC}_\text{min}} = \qty{3{,}6}{V}$, odhad jmenovitého odporu rezistorů je (rezistor \dev{R1x5} je zanedbán)
\begin{align}
	R_{\text{103}_\text{nom}}	&= R_{\text{R1x6}_\text{nom}} = \frac{U_{\text{CC}_\text{min}} - U_{\text{OR}_\text{max}} - U_{\text{GS}_{\text{dec}_\text{min}}}}{I_{\text{DS0}_{\text{dec}_\text{max}}}} = \frac{3{,}6 - 1 - 1{,}3}{\sci{5}{-6}} = \cr
			&= \sci{260}{3} \doteq \qty{\sci{220}{3}}{\upOmega}.
\end{align}

Napětí na napájecích vstupech je sledováno integrovanými obvody \dev{IC1x1}, které jsou určeny pro generování resetovacího signálu a zde jsou použity jako napěťové komparátory. Výstup \pin{RES} přejde do vysoké úrovně, pokud napájecí napětí překročí určitý práh (který leží v rozmezí od $U_{\text{ON}_\text{min}} = \qty{3{,}89}{V}$ do $U_{\text{ON}_\text{max}} = \qty{4{,}10}{V}$ \cite[s.~4]{micrel-mic803}).

Rezistor \dev{R1x1} s diodou \dev{D1x1} tvoří okrajovač, zabraňující přivedení příliš vysokého napětí na pin \zk{zkMCU} (integrovaný obvod \dev{IC1x1} je totiž napájen vyšším napětím). Rezistor \dev{R1x2} zajišťuje na výstupu \pin{RES} definovanou logickou úroveň i v případě velmi nízkého vstupního napájecího napětí, kdy integrovaný obvod již nepracuje.

\begin{table}[!htbm]
	\begin{center}\begin{tabular}{|l|c|>{\raggedright}p{28em}|}
		\hline
		\multicolumn{3}{|l|}{Napětí G-S spínacího tranzistoru v rozepnutém stavu $U_{\text{GS}_{\text{sw}_\text{off}}}~\text{[V]}$}	\tabularnewline
		\hline
		max.	& $0{,}450$	& $R_\text{1x3}$~max., $R_\text{1x4}$~min., $R_\text{1x5}$~min., $R_\text{1x6}$~min., $U_\text{OR}$~max., $I_{\text{DS0}_\text{dec}}$~max.	\tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Proud tekoucí rezistorem (buzení \zk{zkLED}) $I_\text{R1x5}~\text{[mA]}$}	\tabularnewline
		\hline
		max.	& $0{,}353$	& $R_\text{1x5}$~min., $U_\text{CC}$~max., $U_\text{OR}$~min., $U_\text{LED}$~min.	\tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Proud tekoucí děličem \dev{R1x3}-\dev{R1x4} $I_\text{R1x3,R1x4}~\text{[mA]}$}	\tabularnewline
		\hline
		max.	& $0{,}058$	& $R_\text{1x3}$~min., $R_\text{1x4}$~min., $U_\text{CC}$~max.	\tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Proudová spotřeba komparátoru s \dev{IC1x1} $I_\text{comp}~\text{[mA]}$}	\tabularnewline
		\hline
		max.	& $0{,}066$	& $R_\text{1x1}$~min., $R_\text{1x2}$~min., $U_\text{CC}$~max., $U_\text{IC151,out}$~max., $U_\text{D1x1}$~min., $I_{\text{CC}_\text{IC1x1}}$~max.	\tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Klidová proudová bloku napájení $I_{\text{CC0}_\text{pwr}}~\text{[mA]}$}	\tabularnewline
		\hline
		max.	& $0{,}656$	& $I_\text{R1x5}$~max., $R_\text{R1x3,R1x4}$~max., $I_\text{comp}$~max., $I_{\text{CC0}_\text{+A3V3}}$~max., $I_{\text{CC0}_\text{+D3V3}}$~max.	\tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Napájecí napětí poskytované analogové části $U_\text{+A3V3}~\text{[V]}$}	\tabularnewline
		\hline
		min.	& $3{,}203$	& $\delta_\text{p,+A3V3}$~min., $\alpha_{U,\text{+A3V3}}$~min., $\alpha_{\vartheta,\text{+A3V3}}$~typ., $\vartheta$~min. \tabularnewline
		max.	& $3{,}400$	& $\delta_\text{p,+A3V3}$~max., $\alpha_{U,\text{+A3V3}}$~max., $\alpha_{\vartheta,\text{+A3V3}}$~typ., $\vartheta$~max. \tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Napájecí napětí poskytované digitální části $U_\text{+D3V3}~\text{[V]}$}	\tabularnewline
		\hline
		min.	& $3{,}211$	& $\delta_\text{p,+D3V3}$~min., $\alpha_{U,\text{+D3V3}}$~min., $\alpha_{\vartheta,\text{+D3V3}}$~typ., $\vartheta$~min. \tabularnewline
		max.	& $3{,}465$	& $\delta_\text{p,+D3V3}$~max., $\alpha_{U,\text{+D3V3}}$~max., $\alpha_{\vartheta,\text{+D3V3}}$~typ., $\vartheta$~max. \tabularnewline
		\hline
		\hline
		\multicolumn{3}{|l|}{Dolní hranice napájecího napětí čtečky pro spolehlivou funkci $U_{\text{CC}_\text{low}}~\text{[V]}$}	\tabularnewline
		\hline
		max.	& $3{,}610$	& $U_\text{+A3V3}$~max., $U_\text{+D3V3}$~max., $U_{\text{drop}_\text{+A3V3}}$, $U_{\text{drop}_\text{+D3V3}}$, $R_{\text{DSon}_\text{sw}}$~max., $I_\text{CC}$~max.	\tabularnewline
		\hline
	\end{tabular}\end{center}
	\caption{Krajní hodnoty vybraných parametrů bloku napájení}
	\label{tab:design:recon:power:corners}
\end{table}

Nyní budou pro kontrolu určeny vybrané extrémní hodnoty parametrů bloku napájení, jež jsou shrnuty v tab.~\ref{tab:design:recon:power:corners}.

Jsou-li spínací tranzistory vypnuty, jejich napětí G-S je rovno
\begin{align}
	U_{\text{GS}_{\text{sw}_\text{off}}}	&= \left[\frac{U_\text{OR}}{1 + \frac{R_\text{1x5} + R_\text{1x6}}{R_\text{1x3}}} + I_{\text{DS0}_\text{dec}}\left(R_\text{1x3} + R_\text{1x4}\right)\right]\frac{1}{1 + \frac{R_\text{1x4}}{R_\text{1x3}}}	\\
\end{align}
a nemělo by překročit prahové napětí $U_{\text{th}_\text{sw}}$, aby nedošlo k jejich nežádoucímu otevření (splněno i pro $U_{\text{th}_{\text{sw}_\text{min}}}$).

V úsporném režimu by napájecí proud čtečky neměl překročit \qty{2{,}5}{mA}. Klidový proud bloku napájení $I_{\text{CC0}_\text{pwr}}$ je dán součtem dílčích proudů,
\begin{align}
	I_{\text{CC}_\text{sw}}			&= I_\text{R1x3-R1x4} + I_\text{R1x5} + I_\text{comp} + I_{\text{CC0}_\text{+A3V3}} + I_{\text{CC0}_\text{+D3V3}},	\\
	I_\text{R1x5}				&= \frac{U_\text{CC} - U_\text{OR} - U_\text{LED}}{R_\text{1x5}},	\\
	I_\text{R1x3,R1x4}			&= \frac{U_\text{CC}}{R_\text{1x3} + R_\text{1x4}},	\\
	I_\text{comp}				&= \frac{U_\text{CC}}{R_\text{1x2}} + \frac{U_\text{CC} - U_\text{stab,out} - U_\text{D1x1}}{R_\text{1x1}} + I_{\text{CC}_\text{IC1x1}},	\\
	U_{\text{log.0}_\text{comp}}		&= R_\text{1x2}\left(I_{\text{R}_\text{D1x1}} + I_{\text{IO}_{\text{MCU}_\text{in}}}\right),
\end{align}
kde $I_{\text{CC0}_\text{+x3V3}}$ je klidový proud stabilizátorů, $I_\text{comp}$ je napájecí proud obvodu \dev{IC1x1}.

Dále je vhodné znát rozsah napájecího napětí poskytovaného analogové i digitální části stabilizátory. Na výstupním napětí $U_\text{+x3V3}$ stabilizátoru se podílí teplotní součinitel $\alpha_{\vartheta,\text{+x3V3}}$, činitel regulace $\alpha_{U,\text{+x3V3}}$ a výrobní rozptyl $\delta_\text{p,+x3V3}$ (viz tab.~\ref{tab:design:recon:power:regulators:parameters}; znak \uv{x} pro stručnost zastupuje znaky \uv{A} a \uv{D}). Poté je určena spodní hranice $U_{\text{CC}_\text{low}}$ napájecího napětí čtečky, pod níž nemusí stabilizátory pracovat korektně,
\begin{align}
	U_\text{+x3V3}			&= U_{\text{+x3V3}_\text{nom}}\left[1 + \delta_\text{p,+x3V3}\right]\cdot\cr
					&\phantom{=} \cdot\left[1 + \alpha_{U,\text{+x3V3}}\left(U_{\text{CC}_\text{max}} - U_{\text{CC}_\text{min}}\right)\right]\left[1 + \alpha_{\vartheta,\text{+x3V3}}(\vartheta - \vartheta_0)\right]	\\
	U_{\text{CC}_\text{low}}	&= 2R_{\text{DSon}_\text{sw}}I_\text{CC} + \cr
					&\phantom{=} + \max\left\{U_\text{+A3V3} + U_{\text{drop}_\text{+A3V3}}, U_\text{+D3V3} + U_{\text{drop}_\text{+D3V3}}\right\},
\end{align}
kde $R_{\text{DSon}_\text{sw}}$ je odpor spínacích tranzistorů v sepnutém stavu (pro napětí G-S \qty{1{,}8}{V} je maximální hodnota $R_{\text{DSon}_{\text{sw}_\text{max}}} = \qty{73}{m\upOmega}$ \cite[tab.~7]{nxp-pmv32up}). Maximální hodnota napájecího proudu je pro tento výpočet předběžně hrubě odhadnuta na $I_{\text{CC}_\text{max}} = \qty{100}{mA}$.

\begin{table}[!htbm]
	\begin{center}\begin{tabular}{|m{12em}|c|c||c|c|}
		\hline
		\multicolumn{3}{|c||}{\multirow{2}{*}{Parametr}}											& \multicolumn{2}{c|}{Stabilizátor pro uzel}						\\
		\multicolumn{3}{|c||}{}															& +A3V3					& +D3V3						\\
		\hline
		\hline
		\multirow{2}{12em}{Relativní výrobní odchylka výstupního napětí}	& \multirow{2}{*}{$\delta_{p,\text{+x3V3}}~[\jedn{-}]$}	& min.	& $-0{,}02$				& $-0{,}025$					\\
											& -							& max.	& $0{,}02$				& $0{,}025$					\\
		\hline
		\multirow{2}{12em}{Činitel stabilizace}					& \multirow{2}{*}{$\alpha_{U,\text{+x3V3}}~[\jedn{-}]$}	& min.	& $\sci{-2}{-3}$			& $0$						\\
											&							& max.	& $\sci{2}{-3}$				& $0{,}01$					\\
		\hline
		Teplotní součinitel výstupního napětí 					& $\alpha_{\vartheta,\text{+x3V3}}~[\jedn{K^{-1}}]$	& max.	& $\sci{100}{-6}$			& $\sci{40}{-6}$				\\
		\hline
		Požadovaný rozdíl mezi vstupem a výstupem pro funkční stabilizaci	& $U_{\text{drop}_\text{+x3V3}}~[\jedn{V}]$		& max.	& $0{,}090$				& $0{,}130$					\\
		\hline
		\hline
		\multicolumn{3}{|l||}{Zdroj}														& \cite[s.~3]{microchip-mcp1801}	& \cite[s.~2]{microchip-tc1262}			\\
		\hline
	\end{tabular}\end{center}
	\caption{Parametry stabilizátorů použitých v bloku napájení}
	\label{tab:design:recon:power:regulators:parameters}
\end{table}

%\begin{table}[!htbm]
%	\begin{center}\begin{tabular}{|l|c|>{\raggedright}p{28em}|}
%		\hline
%		\multicolumn{3}{|l|}{Napájecí napětí poskytované analogové části $U_\text{+A3V3}~\text{[V]}$}	\tabularnewline
%		\hline
%		min.	& $3{,}203$	& $\delta_\text{p,+A3V3}$~min., $\alpha_{U,\text{+A3V3}}$~min., $\alpha_{\vartheta,\text{+A3V3}}$~typ., $\vartheta$~min. \tabularnewline
%		max.	& $3{,}400$	& $\delta_\text{p,+A3V3}$~max., $\alpha_{U,\text{+A3V3}}$~max., $\alpha_{\vartheta,\text{+A3V3}}$~typ., $\vartheta$~max. \tabularnewline
%		\hline
%		\hline
%		\multicolumn{3}{|l|}{Napájecí napětí poskytované digitální části $U_\text{+D3V3}~\text{[V]}$}	\tabularnewline
%		\hline
%		min.	& $3{,}211$	& $\delta_\text{p,+D3V3}$~min., $\alpha_{U,\text{+D3V3}}$~min., $\alpha_{\vartheta,\text{+D3V3}}$~typ., $\vartheta$~min. \tabularnewline
%		max.	& $3{,}465$	& $\delta_\text{p,+D3V3}$~max., $\alpha_{U,\text{+D3V3}}$~max., $\alpha_{\vartheta,\text{+D3V3}}$~typ., $\vartheta$~max. \tabularnewline
%		\hline
%		\hline
%		\multicolumn{3}{|l|}{Dolní hranice napájecího napětí čtečky $U_{\text{CC}_\text{low}}~\text{[V]}$}	\tabularnewline
%		\hline
%		max.	& $3{,}610$	& $U_\text{+A3V3}$~max., $U_\text{+D3V3}$~max., $U_{\text{drop}_\text{+A3V3}}$, $U_{\text{drop}_\text{+D3V3}}$, $R_{\text{DSon}_\text{sw}}$~max., $I_\text{CC}$~max.	\tabularnewline
%		\hline
%	\end{tabular}\end{center}
%	\caption{Krajní hodnoty vybraných parametrů spínacího obvodu}
%	\label{tab:design:recon:power:regulators:voltages}
%\end{table}


\clearpage
\subsection{Blok analogového vstupu}
Hlavním úkolem bloku analogového vstupu je umožnit přivedení signálu ze snímacího oscilátoru na vstup vnitřního \zk{zkAD} převodníku \zk{zkMCU}.

Snímací oscilátor je s blokem analogového vstupu propojen pomocí konektoru na předním panelu čtečky, jenž je blokem analogového vstupu spojen konektorem \dev{X401}. Z konektoru \dev{X401} signál ze snímacího oscilátoru postupuje na napěťový sledovač a dále na vstup vnitřního \zk{zkAD} převodníku \zk{zkMCU}.

Použitím sledovače je zajištěno, že vstup \zk{zkAD} převodníku je vystaven nízké impedanci, nezbytné pro použití vysokého vzorkovacího kmitočtu (maximální impedance je specifikována v \cite[tab.~29-33]{microchip-pic32mx1xx2xx}).

Jako referenční napětí pro \zk{zkAD} převodník je využito napájecí napětí analogové části (uzel \signal{+A3V3}). K analogové části modulu \zk{zkMCU} je napětí přivedeno přes rezistor \dev{R205}, který s vnitřním kondenzátorem modulu tvoří filtrační RC člen.

Jmenovitý odpor emitorového rezistoru \dev{R204} je zvolen $R_{{204}_\text{nom}} = \qty{1}{\upOmega}$, čemuž přibližně odpovídá kolektorový proud tranzistoru \dev{Q202}
\begin{align}
	I_{\text{C}_\text{Q202}} \approx \frac{\frac{U_{\text{+A3V3}_\text{nom}}}{2}}{R_{{204}_\text{nom}}} = \frac{\frac{3{,}3}{2}}{\sci{1}{3}} = \qty{1{,}65}{mA}.
\end{align}

\begin{table}[!htbm]
	\begin{center}\begin{tabular}{|m{12em}|c||c|c|}
		\hline
		Parametr								& \multicolumn{2}{c|}{Hodnota}		& Zdroj													\\
		\hline
		\hline
		\multirow{3}{12em}{Proudový zesilovací činitel $\beta_\text{Q202}$}	& typ.	& $520$				& \multirow{3}{*}{\cite[s.~4]{nxp-bc847}, $I_{\text{C}_\text{Q202}} = \qty{2}{mA}$}			\\
											& min.	& $420$				&													\\
											& max.	& $800$				&													\\
		\hline
		Saturační napětí $U_{\text{CEsat}_\text{Q202}}$				& max.	& $0{,}250$			& \cite[s.~4]{nxp-bc847}, $I_{\text{C}_\text{Q202}} = \qty{2}{mA}$					\\
		\hline
		\multirow{2}{12em}{Napětí B-E $U_{\text{BE}_\text{Q202}}$}		& min.	& $0{,}44$			& \cite[s.~4]{nxp-bc847}, $I_{\text{C}_\text{Q202}} = \qty{2}{mA}$,					\\
											& max.	& $0{,}86$			& \cite[obr.~11]{nxp-bc847}, $I_{\text{C}_\text{Q202}} = \qty{1{,}65}{mA}$				\\
		\hline
	\end{tabular}\end{center}
	\caption{Parametry stabilizátorů použitých v bloku napájení}
	\label{tab:design:recon:power:regulators:parameters}
\end{table}


Pro návrh odporového děliče \dev{R202}-\dev{203} je nejdříve určena minimální a maximální okamžitá hodnota (pro typický případ) výstupního napětí sledovače, kdy ještě nenastává limitace signálu,
\begin{align}
	U_{\text{E}_{\text{Q202}_{\text{low}_\text{typ}}}}	&= \qty{0}{V},	\\
	U_{\text{E}_{\text{Q202}_{\text{high}_\text{typ}}}}	&= U_\text{+A3V3} - U_{\text{CEsat}_{\text{Q202}_\text{max}}} = 3{,}3 - 0{,}25 = \qty{3{,}05}{V},
\end{align}
kde $U_{\text{CEsat}_{\text{Q202}_\text{max}}}$ je maximální saturační napětí tranzistoru \dev{Q202} v sepnutém stavu při kolektorovém proudu \qty{5}{mA} (\cite[s.~4]{nxp-bc847}).

Rozsah napětí, které lze sledovačem zpracovat bez limitace, je maximalizován, pokud je pracovní bod nastaven tak, aby emitorové napětí tranzistoru \dev{Q202} bylo
\begin{align}
	U_{\text{E}_{0_{\text{Q202}_\text{typ}}}} = \frac{U_{\text{E}_{\text{Q202}_{\text{low}_\text{typ}}}} + U_{\text{E}_{\text{Q202}_{\text{high}_\text{typ}}}}}{2} = \frac{0 + 3{,}05}{2} = \qty{1{,}525}{V}.
\end{align}

Jmenovitý odpor rezistoru \dev{R202} je zvolen $R_{{202}_\text{nom}} = \qty{18}{k\upOmega}$, pro rezistor \dev{R203} poté platí
\begin{align}
	U_{\text{B}_{\text{Q202}_\text{typ}}}	&= U_{\text{E}_{0_{\text{Q202}_\text{typ}}}} + U_{\text{BE}_{\text{Q202}_\text{typ}}} = 1{,}525 + 0{,}65 = \qty{2{,}175}{V}	\\
	R_{{203}_\text{nom}}			&\approx \frac{R_{{202}_\text{nom}}}{\frac{U_{\text{+A3V3}_\text{nom}}}{U_{\text{B}_{\text{Q202}_\text{typ}}}} - 1} = \frac{\sci{18}{3}}{\frac{3{,}3}{2{,}175} - 1} \doteq \sci{34{,}800}{3} \doteq \qty{\sci{39}{3}}{\upOmega}.
\end{align}

Dále bude určena maximální amplituda sinusového vstupního signálu, kterou lze sledovačem zpracovat, aniž by nastala limitace. Emitorové napětí tranzistoru \dev{Q202} při nastaveném pracovním bodu je
\begin{align}
	U_{\text{B}_\text{Q202}}				&= \frac{U_\text{+A3V3}}{1 + \frac{R_{202}}{R_{203}}} - \frac{I_{\text{B}_\text{Q202}}}{\frac{1}{R_{202}} + \frac{1}{R_{203}}},	\quad I_{\text{B}_\text{Q202}} = \frac{U_{\text{B}_\text{Q202}} - U_{\text{BE}_\text{Q202}}}{R_{204}} \cr
	U_{\text{E}_\text{Q202}} + U_{\text{BE}_\text{Q202}}	&= \frac{U_\text{+A3V3}}{1 + \frac{R_{202}}{R_{203}}} - \frac{U_{\text{E}_\text{Q202}}}{\beta_\text{Q202}R_{204}\left(\frac{1}{R_{202}} + \frac{1}{R_{203}}\right)}	\cr
	U_{\text{E}_\text{Q202}}				&= \frac{\frac{U_\text{+A3V3}}{1 + \frac{R_{202}}{R_{203}}} - U_{\text{BE}_\text{Q202}}}{1 + \frac{1}{\beta_\text{Q202}R_{204}\left(\frac{1}{R_{202}} + \frac{1}{R_{203}}\right)}}.
\end{align}
Nejvyšší možná amplituda kladné a záporné výchylky výstupního napětí sledovače je
\begin{align}
	(\Delta{}U_{\text{E}_\text{Q202}})_+	&= U_{\text{E}_\text{Q202}} - U_{\text{E}_{\text{Q202}_\text{low}}},	\\
	(\Delta{}U_{\text{E}_\text{Q202}})_-	&= U_{\text{E}_{\text{Q202}_\text{high}}} - U_{\text{E}_\text{Q202}},
\end{align}
vypočtené krajní hodnoty v přítomnosti odchylek hodnot součástek jsou v tab.~\ref{tab:design:recon:analog:amplitudes}.
\begin{table}[!htbm]
	\begin{center}\begin{tabular}{|l|c|>{\raggedright}p{28em}|}
		\hline
		\multicolumn{3}{|p{35em}|}{Možná amplituda záporné půlvlny výstupního signálu sledovače bez výskytu limitace, $\left(\Delta{}U_{\text{E}_\text{Q202}}\right)_-~\text{[V]}$}	\tabularnewline
		\hline
		min.	& $1{,}002$	& $R_{202}$~max., $R_{203}$~min., $R_{204}$~min., $\beta_\text{Q202}$~min., $U_{\text{BE}_\text{Q202}}$~max., $U_\text{+A3V3}$~min. \tabularnewline
		\hline
		\hline
		\multicolumn{3}{|p{35em}|}{Možná amplituda kladné půlvlny výstupního signálu sledovače bez výskytu limitace, $\left(\Delta{}U_{\text{E}_\text{Q202}}\right)_+~\text{[V]}$}	\tabularnewline
		\hline
		min.	& $1{,}005$	& $R_{202}$~min., $R_{203}$~max., $R_{204}$~max., $\beta_\text{Q202}$~max., $U_{\text{BE}_\text{Q202}}$~min., $U_{\text{CEsat}_\text{Q202}}$~max., $U_\text{+A3V3}$~min.	\tabularnewline
		\hline
	\end{tabular}\end{center}
	\caption{Krajní hodnoty vybraných parametrů sledovače}
	\label{tab:design:recon:analog:amplitudes}
\end{table}
Napěťové zesílení sledovače je mírně nižší než jedna. S uvážením hodnot v tab.~\ref{tab:design:recon:analog:amplitudes} lze tvrdit, že amplituda sinusového signálu ze snímacího oscilátoru nesmí překročit hodnotu
\begin{align}
	U_{\text{rf,in}_{\text{a}_\text{max}}} = \qty{1}{V},	\label{eq:design:recon:analog:rf-in-max}
\end{align}
aby i v přítomnosti odchylek hodnot součástek nenastala limitace signálu.

Oddělovací kondenzátor \dev{C201} tvoří s děličem \dev{R202}-\dev{R203} a zesíleným (tranzistorem \dev{Q202}) odporem rezistoru \dev{R204} horní propust, jejíž mezní kmitočet (pro pokles přenosu o \qty{3}{dB}) bude požadován $f_{\text{in}_\text{min}} = \qty{200}{kHz}$. Jmenovitá kapacita kondenzátoru je
\begin{align}
	C_{{201}_\text{nom}}	&\approx \frac{\frac{1}{R_{{202}_\text{nom}}} + \frac{1}{R_{{203}_\text{nom}}} + \frac{1}{\beta_{\text{Q202}_\text{min}}R_{{204}_\text{nom}}}}{2\pi{}f_{\text{in}_\text{min}}} = \cr
				&= \frac{\frac{1}{\sci{15}{3}} + \frac{1}{\sci{24}{3}} + \frac{1}{420\times\sci{1}{3}}}{2\pi\times\sci{200}{3}} = \cr
				&\doteq \sci{88{,}1}{-12} \doteq \qty{\sci{150}{-12}}{pF}.
\end{align}
Zaokrouhlením kapacit k vyšší hodnotě je získána rezerva.

Prostřednictvím tranzistorů \dev{Q301} a \dev{Q201} může \zk{zkMCU} odpojit snímací oscilátor a sledovač od napájecího napětí, aby byl snížen napájecí proud čtečky v úsporném režimu.

Pro snímací oscilátor popsaný v bakalářské práci \cite[kap.~6.1]{kadlcik-bbce} je vytvořeno napájecí napětí o velikosti \qty{12}{V} zvyšujícím měničem \dev{MOD201}. Je-li použit snímací oscilátor navržený v kap.~\ref{sec:design:new-oscillator}, pro který je napájecí napětí \qty{5}{V} dostatečné, je zvyšující měnič nahrazen propojkou mezi piny \pin{IN} a \pin{OUT}.

Pokud \zk{zkMCU} uzemní pin \dev{RPC4}, je rozsvícena indikační \zk{zkLED} ve snímacím oscilátoru, která je elektricky zapojena mezi piny \pin{VDD}  a \pin{LED} konektoru \dev{X401} (a proto musí být pin \pin{RPC4} \zk{zkMCU} 5V  tolerantní). (V případě použití snímací oscilátoru z \cite[kap.~6.1]{kadlcik-bbce} je pin \dev{LED} elektricky nezapojen.)

\subsection{Blok periferií}
Blok periferií zprostředkovává propojení modulu \zk{zkMCU} s okolními digitálními obvody, včetně \zk{zkPC}.

Pro komunikaci přes rozhraní \zk{zkPS2} jsou určeny konektory \dev{X301} (propojení s \zk{zkPC}) a \dev{X302} (propojení s klávesnicí). Data jsou přenášena po lince \dev{DATA} a jsou taktována hodinovým signálem na lince \dev{CLK}. Obě linky jsou obousměrné a připojené logické obvody musí mít výstup s otevřeným kolektorem. Zdvihací rezistory jsou vyžadovány pouze na straně klávesnice \cite[s.~8]{forte-keyboard-mcu}, a proto nejsou rezistory \dev{R303*} a \dev{R304*} osazeny (jsou uvažovány pouze pro vyšší univerzálnost zařízení). Zdvihací rezistory jsou připojeny k napájecímu napětí poskytovanému rozhraním \zk{zkPS2} a nikoli na společný uzel \signal{+5V} (aby nezpůsobovaly zbytečný odběr proudu).

Pro připojení k \zk{zkUSB} slouží konektor \dev{X303} (tvarová varianta B). Přítomnost napětí z \zk{zkUSB} (uzel \signal{VDD5\_USB}) je sledována vnitřním komparátorem v \zk{zkMCU}, jehož vstup se nachází na pinu \pin{VBUS}.

Čtečka nemusí být napájena pouze z \zk{zkPC}, přes konektor \dev{J304} lze připojit zdroj externího napájení.

Pro připojení dalších bloků s periferiemi slouží konektor \dev{X305}, na nějž je vyvedena sběrnice \zk{zkI2C} a obě napájecí napětí \qty{5}{V} (nevypínatelné i vypínatelné) a \qty{3{,}3}{V}.

Jsou-li zdvihací rezistory \dev{R308} a \dev{R309} zapojeny tak, jak je naznačeno ve schématu, jsou napěťové úrovně sběrnice \zk{zkI2C} kompatibilní s $5\text{V}$ logickými obvody. Při návrhu desky plošných spojů je však umožněno zdvihací rezistory zapojit do uzlu \signal{+D3V3}, a tak přizpůsobit napěťové úrovně pro $3{,}3\text{V}$ logické obvody.

Pro snížení proudového odběru čtečky je napájecí napětí \qty{5}{V} vedle uzlu \signal{+5V} rozváděno i uzlem \signal{+5VSW}, který může být odpojen od napájecího napětí (pojmenování uzlu je zkratkou od angl. slova \en{switchable} -- vypínatelný).

Napájecí napětí je do uzlu \signal{+5VSW} přivedeno tranzistorem \dev{Q301}, který je otevřen, pokud \zk{zkMCU} nastaví na pinu \dev{RPC5} nízkou úroveň. Použití zdvihacího rezistoru \dev{R306} je nezbytné, neboť log.~1 s úrovní \qty{3{,}3}{V} nedostačuje k uzavření tranzistoru.

Při přechodu pinu \dev{RPC5} \zk{zkMCU} do nízké úrovně je kondenzátor \dev{C301} pomalu nabíjen přes rezistor \dev{C301}, čímž dojde k plynulému otevření tranzistoru. Okamžité otevření je nepřípustné, neboť rapidní nabíjení filtračních kondenzátorů (zvláště ve zvyšujícím měniči \dev{MOD201}) by mohlo vyvolat příliš velký pokles napájecího napětí.

Rychlost, s jakou nastane otevření tranzistoru, nelze během návrhu přesně určit kvůli vysokému výrobnímu rozptylu jeho prahového napětí. Řádově lze odhad provést určení časové konstanty \zk{zkRC} článku \dev{R307}-\dev{C301},
\begin{align}
	\tau_{R306-C301} \approx R_{{307}_\text{nom}}C_{{301}_\text{nom}} = \sci{1}{6}\times\sci{1}{-6} = \qty{1}{s}.
\end{align}

Při přechodu pinu \dev{RPC5} do vysoké úrovně je naopak tranzistor rychle uzavřen, neboť kondenzátor \dev{C301} je rychle vybit přes diodu \dev{D301} (a rezistor \dev{R306}).

Aby byla uživateli čtečky poskytnuta i akustická zpětná vazba (např. pípnutí v případě úspěšně přečteného čárového kódu), je přes konektor \dev{X305} připojen piezoměnič. Buzení piezoměniče probíhá obdélníkovým signálem generovaným vnitřním digitálním komparátorem \zk{zkMCU}. Jelikož po elektrické stránce má piezoměnič kapacitní charakter, je vhodné vzniklé proudové špičky omezit sériovým rezistorem \dev{R305}. 

\subsection{Blok programování a ladění}
K programování \zk{zkMCU} slouží rozhraní \zk{zkICSP}, jež je vyvedeno na desce plošného spoje modulu \zk{zkMCU}. Pro větší komfort při vývoji je vyvedeno i sériové rozhraní \zk{zkJTAG} (konektor \dev{JP402}), přes nějž lze \zk{zkMCU} rovněž programovat a ladit běžící program.

Mezi nejnáročnější (z hlediska vynaloženého úsilí programátora) části vývoje patří implementace algoritmů pro zpracování signálů. Vzhledem k velkém množství dat nelze k zobrazení signálu využít displej čtečky. Proto je na konektor \dev{JP401} vyvedena sériová linka, jejíž přenosová rychlost postačuje k odesílání signálů (s případným podvzorkováním signálu). Sériová linka je rovněž vhodná i odesílání ladicích výpisů.

\section{Přední panel}
Ačkoli \zk{zkUSB} a rozhraní \zk{zkPS2} postačuje k odeslání informace extrahované z čárového kódu, nastává problém, jak uživatele informovat o případném výskytu problému. Proto je rekonstrukční obvod doplněn o přední panel s alfanumerickým displejem a tlačítky. Schéma předního panelu je na obr.~\ref{fig:design:front-panel:sch}.

\fig{eagle/front-panel-sch}{Schéma předního panelu}{fig:design:front-panel:sch}{1}

Alfanumerický displej komunikuje paralelně. Data a příkazy jsou přenášeny přes piny \pin{DB0}-\pin{DB7}, jejich tok je řízen signálem přiváděným na pin \pin{E}. Nastavenou logickou úrovní na pinu \dev{RS} je rozlišeno, zdali dochází k přenosu dat nebo příkazu. Směr přenosu se řídí pinem \pin{R/W}.

Šířka dat a příkazů je \qty{8}{b}. Pro úsporu počtu pinů nadřízeného obvodu (zde \dev{IC1}) lze displejem komunikovat i ve $4\text{b}$ režimu, kdy namísto pinů \pin{DB0}-\pin{DB7} jsou použity pouze piny \pin{DB4}-\pin{DB7} a příkazy či data jsou přenášena ve dvou fázích (nejdříve první polovina 8 bitů, poté druhá).

Přední panel je s rekonstrukčním obvodem propojen pomocí konektoru \dev{J1}. Komunikace probíhá po sběrnici \zk{zkI2C}. Navázání paralelně komunikujícího displeje na sériovou sběrnici \zk{zkI2C} je realizováno $8\text{b}$ expandérem \dev{IC1}. Signálem \signal{P1.0} je ovládán tranzistor \dev{Q1}, jímž jsou vnitřní \zk{zkLED} (podsvícení) displeje připojovány k napájecímu napětí (součástí vnitřní \zk{zkLED} je i sériový rezistor).

Napětím přivedeným na pin \pin{V0} odporovým trimrem \dev{P1} je seřízen kontrast displeje. Aby trimrem zbytečně neprotékal proud v úsporném režimu, je napětí pro trimr přivedeno z uzlu \dev{+5VSW} (vypínatelné napětí \qty{5}{V}).

Druhý expandér (\dev{IC2}) zprostředkovává připojení tlačítek \dev{S1}-\dev{S4} a \zk{zkLED} \dev{LED1}. Zdvihací rezistory \dev{R1}-\dev{R4} definují log. úroveň (log.~1) pokud není tlačítko stisknuto. Indikační \zk{zkLED} je umístěna vedle konektoru pro připojení snímacího oscilátoru a rekonstrukční obvod ji používá pro indikaci přítomnosti signálu ze snímacího oscilátoru. Proud \zk{zkLED} je zvolen přibližně $I_\text{LED} = \qty{5}{mA}$, jmenovitý odpor rezistoru \dev{R5} je
\begin{align}
	R_{5_\text{nom}} = \frac{U_{\text{+5V}_\text{typ}} - U_\text{LED}}{I_\text{LED}} = \frac{5 - 2{,}3}{\sci{5}{-3}} = 540 \doteq \qty{680}{\upOmega}.
\end{align}

Kondenzátory \dev{C1} a \dev{C2} blokují napájecí napětí pro expandéry.


\section{Snímací oscilátor}
\label{sec:design:new-oscillator}
Snímací oscilátor sice již byl navržen v rámci bakalářské práce \cite[kap.~6.1]{kadlcik-bbce}, nicméně jeho napájecí napětí je minimálně \qty{7}{V}, a tak jej nelze jednoduše přímo připojit k rekonstrukčnímu obvodu (který má k dispozici napětí nejvýše \qty{5}{V}).

Proto byla vyvinuta inovovaná verze snímacího oscilátoru, která přináší následující vylepšení.
\begin{itemize}
	\item{Nižší napájecí napětí: \qty{(3{,}4 \to 16)}{V}.}
	\item{Nižší výstupní odpor, dosažený použitím napěťové záporné zpětné vazby.}
	\item{Vyšší úroveň výstupního signálu.}
	\item{Indikační \zk{zkLED}.}
\end{itemize}

Schéma inovovaného snímacího oscilátoru je na obr.~\ref{fig:new-oscillator:sch}. \zk{zkLED} \dev{LED1} nemá na funkci oscilátoru žádný vliv a slouží jako indikační prvek pro uživatele (např. může být rozsvícena připojeným mikrokontrolérem, pokud je detekováno snímání čárového kódu). Použitým zapojením \zk{zkLED} je jí procházející proud veden mimo zemní vodič (\signal{GND}), a tak se na něm nevytváří rušivý úbytek napětí.

\fig{eagle/new-oscillator-sch}{Schéma snímacího oscilátoru}{fig:new-oscillator:sch}{1}

Oscilátor je s rekonstrukčním obvodem propojen pomocí stíněné dvojlinky, kterou lze považovat za dva mechanicky (nikoli elektricky) spojené koaxiální kabely.  Stínění je využito pro přivedení napájení (\signal{GND} a \signal{VDD}) a současně zamezuje šíření rušení z a do středových vodičů, které vedou výstupní signál a ovládají indikační \zk{zkLED} (viz obr.~\ref{fig:new-oscillator:cable}).

\fig{img/new-oscillator-cable}{Rozmístění signálů v přívodním kabelu snímacího oscilátoru}{fig:new-oscillator:cable}{1}

Snímací oscilátor je pomyslně rozdělen na dva bloky: \emph{vnitřní oscilátor} a \emph{výstupní zesilovač}.

Napájecí napětí je nejdříve stabilizováno stabilizátorem \dev{IC2} na hodnotu $U_{\text{CC}_\text{amp}} = \qty{3{,}3}{V}$ (pro napájení výstupního zesilovače) a poté podruhé na hodnotu $U_{\text{out}_\text{IC1}} = \qty{1{,}8}{V}$ stabilizátorem \dev{IC1} (pro napájení vnitřního oscilátoru, kde by mohlo kolísající napětí vlivem parazitních kapacit tranzistorů způsobit parazitní kmitočtovou modulaci). Kondenzátory \dev{C2} a \dev{C5} zlepšují dynamické parametry stabilizátorů a spolu s kondenzátorem \dev{C6} filtrují rušení. Kapacita kondenzátorů je volena dle doporučení výrobců stabilizátorů (\cite[obr.~6-1]{microchip-mcp1703}, \cite[obr.~20]{ti-tps763xx}).

\subsection{Vnitřní oscilátor}
Rezonanční obvod je tvořen cívkou (není zakreslena ve schématu), která je vystavena magnetickému čárovému kódu, a paralelní kombinací kondenzátorů \dev{C3A} -- \dev{C3F}. Rezonanční kmitočet je očekáván v rozmezí \qty{(200 \to 400)}{kHz}. Pro zajištění vysoké teplotní stability kmitočtu oscilátoru by kondenzátory měl mít dielektrikum typu NP0. S dielektrikem NP0 však nemohou kondenzátory dosáhnout vysoké kapacity (nejvýše desítky nanofaradů u běžně dostupných typů), a proto je předpokládáno jejich paralelní řazení (vysoká kapacita je nezbytná k dosažení požadovaného kmitočtu oscilátoru i při nízké indukčnosti cívky).

Rozdílový zesilovač tvořený tranzistorovým párem \dev{Q1} se v daném zapojení chová jako záporný dynamický odpor, který do rezonančního obvodu dodává energii (kompenzuje jeho ztráty) a rozkmitává jej. (Princip vytvoření záporné dynamické vodivosti je následující. Pokles napětí na kolektoru tranzistoru \n{Q1B} způsobí přivření tranzistoru \n{Q1A}, čímž se na jejich emitorech sníží napětí. Pokles emitorového napětí způsobí větší otevření tranzistoru \n{Q1B}, čímž je pokles napětí na jeho kolektoru zpětně podpořen.)

Zápornou dynamickou vodivost vykazuje rozdílový zesilovač pouze pro malé okamžité hodnoty napětí na rezonančním obvodu (velikostí přibližně do \qty{0{,}1}{V}), pro větší hodnoty je dynamická vodivost téměř nulová a pro vysoké hodnoty (velikostí nad \qty{0{,}4}{V}) je dynamický odpor výrazně kladný (napětí je tvrdě limitováno přechody B-C) \cite[obr.~5.5]{kadlcik-bbce}. Cílem návrhu bude, aby na rezonančním obvodu bylo střídavé napětí o amplitudě $U_{\text{osc}_\text{a}} = \qty{0{,}25}{V_{max}}$.

Rozdílový zesilovač dodává proud s téměř obdélníkovým průběhem \cite[obr.~5.7]{kadlcik-bbce} do rezonančního obvodu, díky jehož selektivitě je zachována pouze první harmonická. Amplituda napětí na rezonančním obvodu závisí výrazně pouze na jeho ekvivalentní paralelní ztrátové vodivosti a na celkovém emitorovém proudu rozdílového zesilovače. Oscilátor tak generuje \emph{relativně čistý harmonický signál} se stabilní amplitudou, kterou není třeba stabilizovat.

Střední hodnota výstupního napětí $U_{\text{out}_0}$ snímacího oscilátoru by měla ležet uprostřed výstupního napěťového rozsahu výstupního zesilovače,
\begin{align}
	U_{\text{out}_0}	&= \frac{(U_{\text{CC}_\text{amp}} - U_{\text{CEsat}_3}) + (0 + U_{\text{CEsat}_4})}{2} =\cr
				&= \frac{(3{,}3 - 0{,}1) + (0 + 0{,}1)}{2} = \qty{1{,}65}{V},
\end{align}
kde $U_{\text{CEsat}_3}$ \cite[obr.~8]{nxp-bc847bs} a $U_{\text{CEsat}_4}$ \cite[obr.~4]{nxp-bc857} jsou saturační napětí C-E tranzistorů \dev{Q3} a \dev{Q3} (včetně velké rezervy, neboť katalogový list udává pouze typické hodnoty). Obvodově je hodnota $U_{\text{out}_0}$ nastavena volbou napájecího napětí vnitřního oscilátoru.

Pro výpočet odporu rezistoru \dev{R1} lze použít následující postup. Z kapacity kondenzátoru v rezonančním obvodu s rezonančním kmitočtem $f_0$ a činitelem jakosti $Q$ (zjištěn měřením) je určena ekvivalentní paralelní ztrátová vodivost
\begin{align}
	G_\text{P} = \frac{2\pi{}f_0C_3}{Q}	\units{S; Hz, F, -}.
\end{align}
Dále je určena velikost celkového emitorového proudu
\begin{align}
	I_{\text{E}_1} \approx U_{\text{osc}_\text{a}}\frac{\pi}{2}G_\text{P}	\units{A; V_{max}, S},	\quad 0{,}1 \leq U_{\text{osc}_\text{a}} \leq 0{,}4,
\end{align}
přičemž vztah \cite[vzorec (5.19)]{kadlcik-bbce} byl upraven pro dosazení amplitudy napětí. Zjištěný emitorový proud je dosažen použitím rezistoru \dev{R1} o odporu
\begin{align}
	R_1 = \frac{U_{\text{osc}_0} - U_\text{BE}}{I_{\text{E}_1}}	\units{\upOmega; V, V, A}.
\end{align}

Velikost celkového emitorového proudu $I_{\text{E}_1}$ bude nyní velmi hrubě odhadnuta na $I_{\text{E}_1} = \qty{2}{mA}$ (\qty{1}{mA} v \cite[obr.~6.1]{kadlcik-bbce}), neboť lze očekávat nižší činitel jakosti rezonančního obvodu (vzhledem k použití tenčího jádra cívky).

RC $\pi$-článek \dev{C1}-\dev{R2}-\dev{C2} zajišťuje dodatečnou filtraci a současně snižuje napětí dodávané stabilizátorem \dev{IC1} na požadovanou hodnotu $U_{\text{out}_0}$,
\begin{align}
	R_2 = \frac{U_{\text{IC1}_\text{out}} - U_{\text{out}_0}}{I_{\text{E}_1}} = \frac{1{,}8 - 1{,}65}{\sci{2}{-3}} = \qty{75}{\upOmega}.
\end{align}
Se zvolenou kapacitou kondenzátoru \dev{C1} je velikost přenosu integračního článku \dev{C1}-\dev{R2} pro nejnižší kmitočet oscilátoru
\begin{align}
	|K_{\text{C1}-\text{R2}}|	&= \frac{1}{\sqrt{1 + (2\pi{}f_\text{min}R_2C_1)^2}} =\cr
					&= \frac{1}{\sqrt{1 + (2\pi\cdot\sci{200}{3}\cdot75\cdot\sci{1}{-6})^2}} \doteq 0{,}01.
\end{align}

\subsection{Výstupní zesilovač}
Výstupní zesilovač se skládá z rozdílového zesilovače (s tranzistory \dev{Q2}), který řídí koncový tranzistor \dev{Q3}, jež má v kolektoru zapojenu aktivní zátěž s proudovým zrcadlem (tranzistory \dev{Q4}).

Celkový emitorový proud rozdílovým zesilovačem je zvolen $I_{\text{E}_2} = \qty{1}{mA}$, kterého je dosaženo při odporu emitorového rezistoru
\begin{align}
	R_4 = \frac{U_{\text{out}_0} - U_\text{BE}}{I_{\text{E}_1}} = \frac{1{,}65 - 0{,}65}{\sci{1}{-3}} = \qty{1\,000}{\upOmega},
\end{align}
kde $U_\text{BE}$ je přibližné prahové napětí přechodu B-E bipolárního tranzistoru.

Aby výstupní zesilovač nevykazoval systematický ofset, tranzistor \dev{Q3} by měl být částečně otevřen, když je rozdílový zesilovač vyvážen. Na rezistoru \dev{R3} by se proto měl vytvořit úbytek roven prahovému napětí tranzistoru \dev{Q3}, když jím protéká polovina emitorového proudu rozdílového zesilovače,
\begin{align}
	R_3 = \frac{U_\text{BE}}{\frac{I_{\text{E}_2}}{2}} = \frac{0{,}65}{\frac{\sci{1}{-3}}{2}} = 1\,300 \doteq \qty{1\,500}{\upOmega}.
\end{align}

Použitý přívodní kabel má středový vodič o průměru $d_1 = \qty{0{,}3}{mm}$, oddělený od stínění vrstvou \zk{zkPVC} o vnitřním průměru $d_2 = \qty{0{,}7}{mm}$. Délka kabelu je předpokládána $l = \qty{2}{m}$ (včetně rezervy). Výstupní zesilovač tedy bude zatížen kapacitou kabelu
\begin{align}
	C_\text{out} = l\frac{2\pi\varepsilon_0\varepsilon_{\text{r}_\text{PVC}}}{\ln\frac{d_2}{d_1}} = 2\frac{2\pi\sci{8{,}854}{-12}}{\ln\frac{0{,}7}{0{,}3}} \doteq \qty{\sci{525}{-12}}{F}.
\end{align}

Výstupní napětí výstupního zesilovače může mít amplitudu nejvýše (bez výskytu limitace)
\begin{align}
	U_{\text{out}_{\text{a}_\text{max}}} = \frac{U_{\text{CC}_\text{out}} - U_{\text{CEsat}_3} - U_{\text{CEsat}_4}}{2} = \frac{3{,}3 - 0{,}1 - 0{,}1}{2} = \qty{1{,}55}{V_{max}}.	\label{eq:new-oscillator:U-out-a-max}
\end{align}
Okamžitá hodnota proudu tekoucího kapacitou kabelu je
\begin{align}
	i_{C_\text{out}}(t) = C_\text{out}\frac{\dif\,U_{\text{out}_\text{a}}\sin\left(2\pi{}ft\right)}{\dif\,t} = 2\pi{}fC_\text{out}U_{\text{out}_\text{a}}\cos\left(2\pi{}ft\right),
\end{align}
maximum dosahuje
\begin{align}
	I_{C_\text{out}} = 2\pi{}f_\text{max}C_\text{out}U_{\text{out}_\text{a}} = 2\pi\cdot\sci{400}{3}\cdot\sci{525}{-12}\cdot1{,}2 \doteq \qty{\sci{2{,}046}{-3}}{A},
\end{align}
kde $f_\text{max}$ je uvažovaný maximální kmitočet oscilátoru. Tento proud musí být schopno proudové zrcadlo (tranzistory \dev{Q4}) odvést z kapacity kabelu. Proudové zrcadlo zrcadlí proud v poměru $1{:}1$, odpor rezistoru \dev{R7} tedy je
\begin{align}
	R_7 = \frac{U_{\text{IC2}_\text{IC2}} - U_\text{BE}}{I_{C_\text{out}}} \doteq 1\,295 \doteq \qty{1\,000}{\upOmega},
\end{align}
zaokrouhlením odporu směrem dolů je získána dodatečná rezerva. (Naopak dostatečný proud \emph{do} kapacity lze zcela zaručeně dodat, neboť tranzistor \dev{Q3} je buzen rozdílovým zesilovačem, jímž teče relativně velký proud.)

S ohledem na vypočtená maxima \eqref{eq:new-oscillator:U-out-a-max}, \eqref{eq:design:recon:analog:rf-in-max} a s přidáním určité rezervy je volena amplituda výstupního napětí snímacího oscilátoru $U_{\text{out}_\text{a}} = \qty{0{,}9}{V_{max}}$, které bude dosaženo volbou vhodného zisku výstupního zesilovače.

Zisk výstupního zesilovače je dán především dělicím poměrem odporového děliče \dev{R5}-\dev{R6} (vzorec je analogií k výpočtu zisku operačního zesilovače v klasickém neinvertujícím zapojení). Odpor rezistoru \dev{R6} je volen $R_6 = \qty{2{,}2}{k\upOmega}$, odpor rezistoru \dev{R5} poté je
\begin{align}
	R_5 = \frac{R_6}{\frac{U_{\text{out}_\text{a}}}{U_{\text{osc}_\text{a}}} - 1} = \frac{\sci{2{,}}{3}}{\frac{0{,}9}{0{,}25} - 1} \doteq 769 \doteq \qty{820}{\upOmega}.
\end{align}

Šířka pásma výstupního zesilovače bude oboustranně omezena, a to na rozsah od $f_\text{min}$ a $f_\text{max}$ se zvoleným poklesem zisku o \qty{1}{dB}. Výpočet bude přibližný. Omezení zdola je provedeno sériovým kondenzátorem \dev{C3} o kapacitě
\begin{align}
	C_3 \approx \frac{1}{2\pi{}f_\text{min}R_5\alpha} = \frac{1}{2\pi\cdot\sci{200}{3}\cdot820\cdot0{,}509} \doteq \sci{1{,}907}{-9} \doteq \qty{\sci{2{,}2}{-9}}{F},
\end{align}
kde $\alpha = 0{,}509$ je činitel\footnote{Činitel $\alpha$ lze určit vyjádřením z rovnice $20\log\left|\frac{1}{1 + \J\alpha}\right| = -1$.}, kterým byl vzorec pro výpočet mezního kmitočtu upraven z poklesu o \qty{3}{dB} na pokles o \qty{1}{dB}. Dolní mezní kmitočet je dán paralelním kondenzátorem \dev{C4},
\begin{align}
	C_4	&\approx \frac{1}{2\pi{}f_\text{max}R_6\alpha} =\cr
		&= \frac{1}{2\pi\cdot\sci{400}{3}\cdot\sci{2{,}2}{3}\cdot0{,}509} \doteq \sci{92{,}1}{-12} \doteq \qty{\sci{100}{-12}}{F}.
\end{align}

\subsection{Mechanické provedení}
Elektronika snímacího oscilátoru je umístěna na desce plošného spoje o rozměrech \qty{6{,}5\times65}{mm} (ve srovnání \qty{10\times65}{mm} s oscilátorem popsaným v \cite[kap.~A.2.1]{kadlcik-bbce}) a očekává se její umístění do pouzdra popisovače (jako např. \cite[obr.~A.18]{kadlcik-bbce}).

Jelikož je třeba použité cívce přizpůsobit volbu kondenzátorů \dev{C3A} -- \dev{C3F} a rezistoru \dev{R1}, jsou tyto součástky umístěny na části desky plošného spoje, kterou lze v případě potřeby odstřihnout a nahradit.
