Skip to content
Snippets Groups Projects
Commit 54c0136a authored by Stefan Gehr's avatar Stefan Gehr
Browse files

start of the report

parent b619fad5
No related branches found
No related tags found
No related merge requests found
...@@ -6,11 +6,12 @@ ...@@ -6,11 +6,12 @@
\usepackage{amsmath, amssymb} \usepackage{amsmath, amssymb}
%\usepackage{graphicx} %\usepackage{graphicx}
%\graphicspath{{../figures/}} %\graphicspath{{../figures/}}
\usepackage{siunitx}
\usepackage{ragged2e} \usepackage{ragged2e}
\usepackage{booktabs} \usepackage{booktabs}
\usepackage{hyperref} \usepackage{hyperref}
\title{Solar Pump} \title{Solar Pump Control}
\subtitle{Arduino Project for the Arduino Block Course 2022} \subtitle{Arduino Project for the Arduino Block Course 2022}
\author{Engelmann, Mario\and Gehr, Stefan} \author{Engelmann, Mario\and Gehr, Stefan}
...@@ -21,10 +22,63 @@ ...@@ -21,10 +22,63 @@
\tableofcontents \tableofcontents
\section{Introduction} \section{Introduction}
For ur final project we decided to create a control system for a solar pump.
There is a temperature sensor up at the solar array, and another one down at the heat exchanger.
When the temperature difference is sufficiently high the pump gets turned on.
It moves the hot water from the array to the heat exchanger.
Once a certain smaller temperature difference is reached, the pump turns off again.
This whole setup is actually realised twice, which means two solar arrays, two heat exchangers, two pumps, four temperature sensors.
The reason for this is that we are actually planning to use this system.
One of the author's uncle currently uses some analog electronics to handle his two solar arrays, but he would like to modernise it with a microcontroller.
He also wants to know what the current state of the pumps are and what the temperatures are.
For this we have provided a speaker, such that the microcrontroller can tell all the infos, and also a small display with all the infos on it.
The reason for the speaker is that he is visually impaired.
The display was just a nice add-on for us, but actually not that useful to our ``client''.
\section{Main Code} \section{Main Code}
At first everything is getting initialised, such that it can be used later.
This contains the LCD display, the four temperature sensors, the two pumps and the button.
Then the loop starts where a few things happen:
\begin{itemize}
\item BUTTON: We check if our debounced button was pushed.
If it was then we
\begin{itemize}
\item tell our LCD display backlight to turn on for the next 30 seconds.
\item start saying all the infos over the loudspeaker.
\end{itemize}
\item TEMPERATURES: We get all the temperatures using our temperature library.
If any of those temperature readouts failed for more than 60 seconds,
we start turning on the pump for safety reasons.
Also the loudspeaker will continuously say ``error'' to inform the user.
Otherwise, with no circulation, the solar array might overheat.
If both readouts, for the up-temperature (from the array) and the down-temperature (from the heat exchanger), worked then the concerned pump gets controlled according to those temperatures.
\item PUMP: If it is currently turned off then we check if the temperature difference is bigger than \SI{10}{\kelvin}.
If it is then we turn it on.
If, on the other hand, the pump is currently turned on, then we check if the temperature difference is smaller than \SI{3}{\kelvin}.
If it is, then we turn it off again.
\item DISPLAY: Show all the current temperature readouts.
If there was a long time error with one of the readouts, just show a straight line ``---'' for that temperature instead.
Also show the current states of the two pumps.
\end{itemize}
Calling the functions that say anything over the loudspeaker does not halt the main loop.
The way this was implemented is further explained in \autoref{sec:mp3}.
Also the function, that turns on the backlight of the LCD display for 30 seconds,
is not halting the main loop either.
This is implemented via a static variable in the function,
that saves the timestamp of when we started turning the display on.
If the display is currently turned on and the this timestamp is more than 30 seconds ago, then we turn the backlight off again.
\section{MP3} \section{MP3}
\label{sec:mp3}
All the sounds we are playing over the speaker are pregenerated mp3-files.
We used a text-to-speech program called ...
% TODO: Mario, the stage is yours.
% - header file soundFiles.h blabla
% - mp3 module sending the signal start/stop "file number on the sd card"
Another challenge was to not halt the main loop when we want to say something.
For example if we want to
\section{Saying Numbers} \section{Saying Numbers}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment