summaryrefslogtreecommitdiff
path: root/electronics/cw1/writeup.tex
diff options
context:
space:
mode:
authorThing1 <thing1@seacrossedlovers.xyz>2024-12-15 19:06:48 +0000
committerThing1 <thing1@seacrossedlovers.xyz>2024-12-15 19:06:48 +0000
commit1151d348c0d8d5e3a92d02188911dfd305c9187b (patch)
tree2059d03a4b126c4c749db7487b52b958ba9e807e /electronics/cw1/writeup.tex
parent67fe02db81b4cbebd6503ddb34d3cb3b258c611b (diff)
finished coursework
Diffstat (limited to 'electronics/cw1/writeup.tex')
-rw-r--r--electronics/cw1/writeup.tex117
1 files changed, 94 insertions, 23 deletions
diff --git a/electronics/cw1/writeup.tex b/electronics/cw1/writeup.tex
index b7fad58..5dfa82d 100644
--- a/electronics/cw1/writeup.tex
+++ b/electronics/cw1/writeup.tex
@@ -10,8 +10,12 @@
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{forest}
-\usepackage{tikz-qtree} \usepackage[siunitx, european, straightvoltages, cute inductors]{circuitikz}
-\usepackage{setspace} \usepackage{ragged2e}
+\usepackage{tikz-qtree}
+\usepackage[siunitx, european, straightvoltages, cute inductors]{circuitikz}
+\usepackage{setspace}
+\usepackage{ragged2e}
+\usepackage{graphicx}
+\graphicspath{ {./images/} }
\addbibresource{ref.bib}
@@ -81,17 +85,30 @@
their tanks getting too hot, especially in the summer, my project is perfect for these fish owners.
\section{Design specification}
+ \subsection{Design brief}
+ This project will need to achieve a few goals to be deemed as a success, they are as follows:
+ \begin{description}
+ \item[] Display a status LED to tell the user all is working as expected
+ \item[] Check the temperature against a known value
+ \item[] Have the ability to notify the user if the temperature is above the known value
+ \item[] Have the ability to inform the user if the temperature has risen above the known value and then fallen again
+ \item[] To have the system reset easily
+ \end{description}
+ If my project can meet all of these goals it will be a useable temperature sensing system, primarily designed for fish tanks,
+ but could be used in any number of temperature dependant environments.
\subsection{System Design}
- The project will need to do the following things:
+ \subsubsection{Outline of internal workings}
+ The project will need to do the following things internally to function as outlined in the design brief. These are tasks that
+ will be ran on the microcontroller by the assembly code I need to write.
\begin{description}
- \item[] Read the temprature
- \item[] Compare the temprature to a known value
+ \item[] Read the temperature
+ \item[] Compare the temperature to a known value
\item[] The output is a flashing led and buzzer
\item[] The output is a flashing led and buzzer
\end{description}
-
- My system will contain the following components to
- function:
+
+ \subsubsection{Outline of component roles}
+ My system will contain the following components to function scouring to my outline of internal workings:
\begin{description}
\item[Mircocontroller] This will be used to control all the other components \item[Thermistor] This will
sense the temperature
@@ -123,19 +140,20 @@
As one can see a button will control the Microcontroller, by drawing all the current that the power supply
can through the button, one can make the Microcontroller reset. The Microcontroller will have 2 inputs, and
- 4 outputs. The potentiomiter will be used to set the threshold in which the warnings begin, this will be done
+ 4 outputs. The potentiometer will be used to set the threshold in which the warnings begin, this will be done
inside the microcontroller, with a subtraction between the Thermistor value, and the potentiometer value. The
needed outputs will pulse to be especially clear that something is wrong.
- \subsection{Flowchart}
- Here is my code, build into an abstracted flow chart, to make the reading of the program easier.
+ \subsection{Planning the inner workings}
+ \subsubsection{Flowchart}
+ Here is my code, built into an abstracted flow chart, to make the reading of the program easier.
It is spread across 2 pages, to ensure it is big enough to read.
\begin{tikzpicture}[node distance=2cm]
\node (start) [startstop] {Start};
- \node (in1) [io, below of=start] {Read temprature};
+ \node (in1) [io, below of=start] {Read temperature};
\node (in2) [io, below of=in1] {Read threshold value};
- \node (dec1) [decision, below of=in2, yshift=-2cm] {Is the temprature too hot?};
+ \node (dec1) [decision, below of=in2, yshift=-2cm] {Is the temperature too hot?};
\node (sub1) [subroutine, right of=dec1, xshift=6cm] {Flash};
\node (proc1) [process, below of=dec1, yshift=-2cm, xshift=6cm] {Reset the status flag};
@@ -175,7 +193,7 @@
- \subsection{How will it function?}
+ \subsubsection{How will it function outside of the microcontroller?}
Bellow is the diagram for my circuit, it works mostly via the code on the
micro controller, so this is just connecting things between live and the microcontroller.
\begin{flushleft}
@@ -236,13 +254,13 @@
flashes at the same time; an amber LED that turns on after the flashing has stopped to inform the user that it
was too hot at some point; and a green status LED to inform the user that all is working.
- \subsection{The code}
- Bellow is the code for the micro controller. It is 59 lines long and commented. It contains 12 unique instructions.
+ \subsubsection{The code controlling everything else}
+ Bellow is the code for the micro controller. It is 58 lines long and commented. It contains 12 unique instructions.
\lstinputlisting[]{./final.asm}
This code starts with an initialisation section, that sets the micro controller's input and output pins to do
the correct things. Then it defines a subroutine that flashes the LED and buzzer and sets the status led. And
finally the main function runs in a loop to continue checking if it is too hot.
- \subsection{Errors in code}
+ \subsubsection{Errors in code}
Through out the development of project, a few errors came up in my code, I fixed them, however here is a documented
list of them
\subsubsection{Forgetting to specify the output register}
@@ -255,19 +273,72 @@
was to change a C to an S.
\section{System Realisation}
+ After designing and writing the functionality, code, and the circuit it was time to build it. Here is the finished results.
\subsection{Circuit realisation}
- PUT CIRCUIT PHOTO HERE
- Here is my finished design prototyped on a bread board, I have cut the wires to an adequate length to ensure it is cleanly made.
- I left the potential divider uncut, as I changed what value components I was using many times.
+ \includegraphics[width=\textwidth]{off.jpg.jpeg}
- \subsection{Calibrating the sensors}
- PUT PHOTOS HERE FOR CALIBRATING
+ Here is my finished design prototyped on a bread board, I have cut the wires to an adequate length to ensure it is cleanly made.
+ I left the potential divider uncut, as I changed what value components I was using many times throughout building. In this photo
+ an external (off breadboard) thermistor is being used.
+
+ I decided to use a multi-turn potentiometer instead of a traditional one, this allowed me and the end user, to calibrate the
+ system to far smaller amounts.
+
+ \subsection{Calibrating the sensors and testing the system}
+ To calibrate my system I used water at a known temperature and a thermometer to measure. I then tuned my potentiometer to the adequate
+ value to ensure the circuit functioned as intended.
+
+ Here is the circuit at a normal state with water at \({20}^\circ C \).
+ \\
+ \\
+ \includegraphics[width=\textwidth]{normal.jpg.jpeg}
+ \\
+ As one can see the green LED is on at the correct time!
+ \\
+ \includegraphics[width=\textwidth]{offtemp.jpg.jpeg}
+ \\
+ After adding more hot water one can see it switch to the higher point.
+ \\
+ \includegraphics[width=\textwidth]{hotLED.jpg.jpeg}
+ \\
+ As the temperature rises above the \({26}^\circ C \) switching threshold the red LED begins to blink.
+ \\
+ \includegraphics[width=\textwidth]{hightemp.jpg.jpeg}
+ \\
+ \includegraphics[width=\textwidth]{formerhot.jpg.jpeg}
+ \\
+ As one can see after it falls back to a low temperature the amber status LED comes on to let the user know
+ it has been too hot.
+ \\
+ \includegraphics[width=\textwidth]{lowtemp.jpg.jpeg}
+ \\
+ This temperature caused the amber LED to come on after being at \({26}^\circ C \) previously.
+ \\
\subsection{Results}
+ As shown in the previous sections the circuit has worked as intended, it switches at a user defined temperature, which for testing
+ purposes I have set to \({26}^\circ C \). The tuning process is easy and simple to work with, only requiring the turning of a potentiometer.
+ This could be set out of box in a production setting, or it could be tweaked by the use to their needs.
\section{System Evaluation}
- \subsection{Did it work?}
\subsection{What could go better?}
+ To make this system better I would have liked to make it test temperatures using a difference amplifier to compare to another known temperature as this
+ would have let me compare to room temperature, instead of set constants, this would be more helpful if the use case was slightly changed, to show relative
+ temperature, which would be helpful in a factory to show temperatures next to a machine. This however was out of the scope of this project, as I was
+ attempting to use a microcontroller to do all comparisons, a difference amplifier would have removed the need for the microcontroller, making the project
+ irrelevant.
+
+ I also would have liked it if I could have added more features to the code, perhaps in some way adding an interrupt service to allow for further user control.
+ Perhaps as a simple clear amber status LED.
+
+ Finally I was not overly happy with my solution to resetting the microcontroller, I chose to, for a short time, short circuit the power rails of my bread board,
+ to cut power from the microcontroller, if I were to make any edits to this system I would have replaced this with a simple MOSFET system that could keep it
+ powered until a button was pressed. This sadly wasn't possible due to time constraints on this project. This is also caused a flaw in the 18M2 picaxe chip. The
+ original 16F88 has a reset pin, that could have been used to clear the microcontroller's state , this isn't available on the 18M2 chip.
+
+ \subsection{Conclusions}
+ Overall, including short comings, I am happy with my system. It completed my design brief of a simple temperature sensing system in a simple way. I believe this
+ could be used for its goal of triggering alarms when fish tanks of other similar items, reach an unsafe temperature.
\newpage