\section{Návrh a výroba senzoriky}

\subsection{Naše volba senzoru}

Z přibližných znalostí toho, jak se motor chová, jsme začali uvažovat o volbě vhodného senzoru. Podle naměřených teplot se nám samozřejmě nabízela celá škála zařízení. Kladli jsme tedy následující podmínky:
\begin{itemize}

\item digitální výstup (při analogovém výstupu bychom museli počítat s šumem, který je nežádoucí)
\item standartizované rozhraní, kterým disponuje řídící jednotka
\item malá velikost součástky
\item vhodné napájecí napětí (3,3 nebo 5 V)

\end{itemize}

Nakonec jsme vybrali jako vhodný senzor zařízení TMP275 od firmy Texas Instruments.

\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.7]{images/TMP275.jpg}
\caption{Teplotní senzor TMP275 \cite{TMP275_www}}
\end{center}
\end{figure}

\newpage

Jedinou jeho nevýhodou, se kterou jsme od začátku museli počítat, byl fakt, že se jedná o SMD součástku. Museli jsme tedy navrhnout zvláštní destičku pro senzor. Návrh desky je uveden v příloze.
Veškeré parametry jsou dostupné z datasheetu \cite{TMP275_www}. Uveďme zde jen některé vlastnosti:

\begin{itemize}

\item I2C rozhraní
\item rozsah měřících teplot: od -20°C do +100°C
\item velký rozsah napájecího napětí: 2,7 - 5,5 V
 
\end{itemize}

\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.5]{images/TMP275_board_full.JPG}
\\[5mm]
\caption{Vyrobená a osazená deska teplotního senzoru}
\end{center}
\end{figure}

\subsection{Aplikace I2C sběrnice a vytvoření funkčního kódu pro komunikaci}

Nyní se dostáváme k problematice komunikace senzorů s řídící jednotkou. Tato úloha se na začátku zadání této práce nejevila jako nikterak složitá. Nakonec se ale ukázala jako ne zcela jednoduchá a časově velmi náročná. Jak již bylo uvedeno výše, pro komunikaci senzoru s mikrokontrolerem jsme zvolili sběrnici I2C. 
\newpage

\subsubsection{Problémy s automatickým generováním kódu}

Pro veškeré programování řídících jednotek na experimentálním vozidle se používala knihovna \emph{Embedded Target for dsPIC} \cite{kerhuel} jako nástavba do programu \emph{Simulink}. Model pro řízení byl sestaven v \emph{Simulinku} za pomocí této knihovny a následně přeložen do .hex souboru, který mohl být nahrán do procesoru na vozidle, a to za pomoci softwaru \emph{MPLAB IDE}, vyvinutým firmou \emph{Microchip}, tedy tou samou, která vyvíjí procesory dsPIC. Celkově se jedná o velmi elegantní řešení, které velice urychluje a zjednodušuje práci. Tento postup totiž obchází pracné psaní zdrojového kódu v~jazyce C, stejně tak jako ladění hotového programu. Očekávali jsme jednoduché vytvoření modelu, neboť bloček pro I2C sběrnici je v knihovně integrován. Zde jsme však narazili na problém. Po prvním sestavení modelu, přeložení a náhrání ho do procesoru jsme zjistili, že sběrnice se nechová podle očekávání. Proto jsme připojili na obě linky sběrnice osciloskop a zkoumali, kde může být chyba.  Následovaly dlouhé týdny strávené nad identifikací problému, o kterých je zbytečné se zde rozepisovat. Uveďme jen naši hypotézu, proč bloček z knihovny nefungoval.

Ačkoliv Lubin Kerhuel, který knihovnu vyvíjí, někdy funkčně aplikoval I2C sběrnici pro komunikaci s dsPIC procesorem, bylo tomu pravděpodobně na jiném zařízení. Celá jeho knihovna je vyvíjena pro kompletní škálu procesorů, které se mezi sebou méně nebo více liší. Tento fakt se většinou obchází voláním příslušného .h souboru konkrétního procesoru. To však vždy nestačí.

\subsubsection{Náš způsob vyřešení problému}

Celkový problém jsme nakonec postupně odstranili. Nebudeme zde teď podrobně rozepisovat celé naše snažení. Uveďmě jen náš konečný výsledek.
Knihovnu \emph{Embedded Target for dsPIC} jsme nakonec přeci jen využili, a to skrz bloček \emph{C Function Call}. Tento bloček volá již napsanou funkci v C jazyce. Naprogramovali jsme si tedy několik základních funkcí pro komunikaci a jejich variacemi jsme docílili úspěšné komunikace s jednotlivými periferiemi.


Celý zdrojový kód je uveden v příloze, stejně tak jako několik rad pro další uživatele sběrnice. Braní těchto rad v potaz by jim mělo ušetřit mnoho času a pomoci vyhnout se častým chybám při vytváření funkčního modelu pro komunikaci.


\subsection{Realizace senzoriky}

V konečném výsledku byly vyrobeny čtyři destičky s teplotními senzory a uchyceny na plášť motoru, jak je patrné z obrázku níže. Teplotní senzorika tvořila jeden celek komunikující po I2C sběrnici, která byla připojena na Slave jednotku řídící elektroniky. Takto zasáhnout do systému řízení bylo možné. Připojením senzorů v podstatě nebyl snížen výpočetní výkon řídící jednotky, neboť snímání teploty postačilo provádět s~frekvencí~1~Hz.

\begin{figure}[htbp]
\begin{center}
\includegraphics[scale=0.25]{images/uchyt_TMP275.jpg}
\\[5mm]
\caption{Uchycení teplotního senzoru na plášť motoru}
\end{center}
\end{figure}