mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-06 19:43:10 +02:00
159 lines
7.0 KiB
TeX
159 lines
7.0 KiB
TeX
\documentclass{article}
|
|
\usepackage{hyperref}
|
|
\usepackage{pdfpages}
|
|
\usepackage{tikz}
|
|
\usepackage{float}
|
|
\usetikzlibrary{shapes.geometric, arrows, positioning}
|
|
\tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30]
|
|
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
|
|
\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=orange!30]
|
|
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]
|
|
\tikzstyle{arrow} = [thick,->,>=stealth]
|
|
\title{EMISY Project 21 Portable Compass}
|
|
\author{Krzysztof Rudnicki, 307585}
|
|
\date{\today}
|
|
\begin{document}
|
|
\includepdf[pages={1}]{declaration.pdf}
|
|
\maketitle
|
|
\section{Analysis of the project}
|
|
\subsection{Discussion of project requirements}
|
|
We need to create a simple portable compass circuit \\
|
|
It should:
|
|
\begin{itemize}
|
|
\item Use energy-saving power modes of microcontroller
|
|
\item Be battery powered
|
|
\item Be portable (cellphone/wrist watch)
|
|
\item Communicate using graphical OLED display and two buttons keyboard
|
|
\end{itemize}
|
|
\subsection{Discussion of solution}
|
|
In my solution I focused on picking components based on firstly low power
|
|
consumption, then size, then simplicity, whenever I could I tried to do
|
|
everything as proposed in the component data sheet. \\
|
|
For the schematic itself I needed power saving microcontroller, oled display,
|
|
battery, voltage regulator that works well with batteries and digital compass.
|
|
\section{Detailed circuit diagram}
|
|
\subsection{Diagram itself}
|
|
(Diagram is in pdf format so feel free to zoom in if something is not clearly
|
|
visible)
|
|
\includepdf[pages=-]{schematicpdf.pdf}
|
|
\subsection{Diagram description}
|
|
Voltage regulator schematic is done one to one on how it was done in voltage
|
|
regulator schematic in case of two battery cells \\
|
|
Digital compass also was connected exactly as specified in datasheet \\
|
|
For OLED I based on the pin descriptions from datasheet and on common patterns
|
|
of connecting peripherals \\
|
|
Microcontroller itself was pretty straightforward with classic VDD, VSS and
|
|
Reset pin conections \\
|
|
For buttons I used pull up resistors
|
|
\newpage
|
|
\subsection{Components}
|
|
\subsubsection{Microcontroller}
|
|
I decided to use STM32L082CZ from STM32L0 line
|
|
\paragraph{Relatively small} Up to 10 mm $\times$ 10 mm dimensions,
|
|
compared to apple watch display of 34 mm by 40 mm for smaller version.
|
|
\cite{datasheet}
|
|
111th page
|
|
\paragraph{Square} It is shaped in a square which also simplifies portability
|
|
\cite{datasheet} 111th page
|
|
\paragraph{Power saving} STM32L0 line was designed specifically for low power
|
|
consumption with power consumption as low as 0.29 $\mu$ A in Standby mode
|
|
\cite{datasheet} 1st page
|
|
\paragraph{Consumer devices} This microcontroller comes from STM32LOx2 line
|
|
prepared to be used in consumer devices \cite{consumerDevice}
|
|
\paragraph{Ease of use} USB compatible microcontroller and dedicaded debug port
|
|
allows for swift code creation.
|
|
\cite{datasheet} 1st page
|
|
\subsubsection{All other components}
|
|
\paragraph{Oled display} For OLED display I decided to go with
|
|
NHD-2.7-12864WDY3. It was an OLED display found on \href{www.mouser.pl}{mouser}
|
|
webpage with lowest operating supply current of 180 uA, supply voltage
|
|
compatible wit microcontroller (3.3 V) and datasheet not in japanese.
|
|
\cite{OLED}
|
|
\paragraph{Digital compass} For the compass I used HMC5883L with compatible
|
|
voltage, low power consumption of 100 $\mu$ A, compatiblity with battery powered
|
|
applications according to datasheet and small size
|
|
\paragraph{Battery} For the battery I choose 2x LR44R series battery, with output
|
|
voltage of 1.5 V compatible with voltage regulator (3 V in series), compatible
|
|
battery chemistry of Alkaline, 150 mAh capacity for single battery and compact
|
|
coin cell shape. \cite{Battery}
|
|
\paragraph{Voltage Regulator} For voltage regulator I choose LTC3525-3.3 with high 95 \%
|
|
efficiency, desirable output voltage of 3.3 V, low profile and tiny package, it
|
|
is also available in kicad by default \cite{Voltage Regulator}
|
|
\section{Draft of the microcontroller firmware}
|
|
\subsection{Block diagram}
|
|
\begin{figure}[H]
|
|
\caption{Start algorithm}
|
|
\centering
|
|
\begin{tikzpicture}[node distance=2cm]
|
|
\node (start) [startstop] {Initialize};
|
|
\node (wait) [process, below of = start] {Wait for all components to start};
|
|
\node (main) [process, below of = wait] {Begin Microprocessor system work};
|
|
\node (end) [process, below of = main] {Turn off everything};
|
|
\node (return) [startstop, below of = end] {Return};
|
|
\draw [arrow] (start) -- (wait);
|
|
\draw [arrow] (wait) -- (main);
|
|
\draw [arrow] (main) -- node[anchor=east] {Request shutdown} (end);
|
|
\draw [arrow] (end) -- (return);
|
|
\end{tikzpicture}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\caption{Main loop}
|
|
\centering
|
|
\begin{tikzpicture}[node distance=2cm]
|
|
\node (beginMain) [startstop] {Begin Microprocessor system
|
|
work};
|
|
\node (setButtonClicked) [process, below of = beginMain]
|
|
{buttonClicked = 0};
|
|
\node (buttonInterrupts) [process, below of = setButtonClicked] {Button Interrupts};
|
|
\node (infiniteLoop) [process, below of = buttonInterrupts] {Infinite
|
|
loop};
|
|
\node (whichButton) [decision, below = 1 cm of infiniteLoop] {buttonClicked?};
|
|
\node(idle) [process, below = 1 cm of whichButton] {Stop mode without RTC};
|
|
\node(freeze) [process, below of = idle] {Wait for interrupt};
|
|
\node (infiniteLoop2) [process, below of = freeze] {Infinite loop};
|
|
\node (endCompass) [process, below of = infiniteLoop2] {Request shutdown};
|
|
\node(updateCompass) [process, left = 1 cm of idle] {Do a single
|
|
measurement};
|
|
\node(resetButton) [process, below of = updateCompass] {buttonClicked =
|
|
0};
|
|
|
|
\end{tikzpicture}
|
|
\end{figure}
|
|
|
|
\begin{figure}[H]
|
|
\caption{Single measurement algorithm}
|
|
\centering
|
|
\begin{tikzpicture}[node distance = 2cm]
|
|
\node (start) [startstop] {Do a single measurement};
|
|
\node (askFor) [process, below of = start] {Take measurement
|
|
from magnetometer};
|
|
\node (process) [process, below of = askFor] {Output measurment
|
|
to display};
|
|
\node (end) [startstop, below of = process] {Finish
|
|
measurement};
|
|
\end{tikzpicture}
|
|
\end{figure}
|
|
\subsection{Description of the algorithm}
|
|
\begin{thebibliography}{9}
|
|
\bibitem{datasheet}
|
|
\href{https://www.st.com/resource/en/datasheet/stm32l082cz.pdf}{STM32LO82CZ
|
|
datasheet}
|
|
\bibitem{consumerDevice}
|
|
\href{https://www.st.com/en/microcontrollers-microprocessors/stm32l0-series.html}{Consumer
|
|
Device STM32LOx2 Line}
|
|
\bibitem{OLED}
|
|
\href{https://www.mouser.pl/datasheet/2/291/NHD_2_7_12864WDY3-1116258.pdf}{OLED
|
|
datasheet}
|
|
\bibitem{Magnetometer}
|
|
\href{https://cdn-shop.adafruit.com/datasheets/HMC5883L_3-Axis_Digital_Compass_IC.pdf}{Magnetometer
|
|
datasheet}
|
|
\bibitem{Battery}
|
|
\href{https://www.murata.com/products/productdata/8809693839390/LR44R-DATASHEET.pdf?1604287808000}{Battery}
|
|
\bibitem{Voltage Regulator}
|
|
\href{https://www.analog.com/media/en/technical-documentation/data-sheets/3525fc.pdf}{Voltage
|
|
regulator}
|
|
\end{thebibliography}
|
|
\end{document}
|
|
|