diff options
-rw-r--r-- | report/document.tex | 1 | ||||
-rw-r--r-- | report/project.tex | 245 | ||||
-rw-r--r-- | report/resources/commande-gpio-legende.png | bin | 0 -> 13387 bytes | |||
-rw-r--r-- | report/resources/commande-interrupteurs-legende.png | bin | 0 -> 49636 bytes | |||
-rw-r--r-- | report/resources/schema-alarm-io.png | bin | 0 -> 3257 bytes | |||
-rw-r--r-- | report/resources/schema-alarm-logic.png | bin | 0 -> 7680 bytes | |||
-rw-r--r-- | report/resources/schema-commande-io.png | bin | 0 -> 11406 bytes | |||
-rw-r--r-- | report/resources/schema-commande-logic.png | bin | 0 -> 16022 bytes | |||
-rw-r--r-- | report/resources/schema-display-af.png | bin | 0 -> 37464 bytes | |||
-rw-r--r-- | report/resources/schema-display-io.png | bin | 0 -> 14754 bytes | |||
-rw-r--r-- | report/resources/schema-display-speed.png | bin | 0 -> 11961 bytes | |||
-rw-r--r-- | report/resources/schema-display-useless.png | bin | 0 -> 46153 bytes | |||
-rw-r--r-- | report/resources/schema-fan-io.png | bin | 0 -> 4850 bytes | |||
-rw-r--r-- | report/resources/schema-fan-logic.png | bin | 0 -> 42399 bytes |
14 files changed, 223 insertions, 23 deletions
diff --git a/report/document.tex b/report/document.tex index 9ff46a8..a133160 100644 --- a/report/document.tex +++ b/report/document.tex | |||
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | \input{style/pascience-listings} | 19 | \input{style/pascience-listings} |
20 | 20 | ||
21 | \pdfimageresolution96 | ||
21 | 22 | ||
22 | %%%%%%%%%%%%%%%%%%%% | 23 | %%%%%%%%%%%%%%%%%%%% |
23 | %% DOCUMENT | 24 | %% DOCUMENT |
diff --git a/report/project.tex b/report/project.tex index f98e892..5da7f30 100644 --- a/report/project.tex +++ b/report/project.tex | |||
@@ -8,9 +8,9 @@ FPGA, capable de commander un ventilateur et une alarme en fonction de l'état d | |||
8 | différents capteurs et des entrées de l'utilisateur. | 8 | différents capteurs et des entrées de l'utilisateur. |
9 | 9 | ||
10 | \begin{figure}[h] | 10 | \begin{figure}[h] |
11 | \centering | 11 | \centering |
12 | \includegraphics[width=0.8\textwidth]{resources/project-de2-io} | 12 | \includegraphics[width=0.8\textwidth]{resources/project-de2-io} |
13 | \caption{Capteurs/actionneurs autour de la carte Altera DE2} | 13 | \caption{Capteurs/actionneurs autour de la carte Altera DE2} |
14 | \end{figure} | 14 | \end{figure} |
15 | 15 | ||
16 | \section{Matériel} | 16 | \section{Matériel} |
@@ -19,12 +19,12 @@ Des contraintes matérielles ont été imposées dans le cadre de ce projet, qui | |||
19 | réalisera autour des composants suivants : | 19 | réalisera autour des composants suivants : |
20 | 20 | ||
21 | \begin{itemize} | 21 | \begin{itemize} |
22 | \item Carte Altera DE2 équipée d'un FPGA Altera Cyclone II avec une horloge à | 22 | \item Carte Altera DE2 équipée d'un FPGA Altera Cyclone II avec une horloge à |
23 | 50MHz et des interfaces utilisateurs (boutons, afficheurs, \ldots) | 23 | 50MHz et des interfaces utilisateurs (boutons, afficheurs, \ldots) |
24 | \item Microphone ELECTRET | 24 | \item Microphone ELECTRET |
25 | \item Capteur de température LM35 | 25 | \item Capteur de température LM35 |
26 | \item Haut-parleur (8 Ohm) | 26 | \item Haut-parleur (8 Ohm) |
27 | \item Ventilateur (12V/1W) | 27 | \item Ventilateur (12V/1W) |
28 | \end{itemize} | 28 | \end{itemize} |
29 | 29 | ||
30 | \section{Méthodologie} | 30 | \section{Méthodologie} |
@@ -38,9 +38,9 @@ Ainsi, la centrale domotique comprendra deux sous-systèmes : une partie alarme | |||
38 | et une partie ventilation. | 38 | et une partie ventilation. |
39 | 39 | ||
40 | \begin{figure}[h] | 40 | \begin{figure}[h] |
41 | \centering | 41 | \centering |
42 | \includegraphics[width=0.85\textwidth]{resources/project-topdown-subsystems} | 42 | \includegraphics[width=0.85\textwidth]{resources/project-topdown-subsystems} |
43 | \caption{Découpage du système en sous-systèmes} | 43 | \caption{Découpage du système en sous-systèmes} |
44 | \end{figure} | 44 | \end{figure} |
45 | 45 | ||
46 | \subsection{Validation \og{}bottom-up\fg{}} | 46 | \subsection{Validation \og{}bottom-up\fg{}} |
@@ -52,24 +52,223 @@ nouveau testé globalement. | |||
52 | 52 | ||
53 | \chapter{Interface de commande} | 53 | \chapter{Interface de commande} |
54 | 54 | ||
55 | \section{Contrôle} | 55 | L'interface de commande comprend les entrées et les sorties permettant à |
56 | l'utilisateur d'intéragir avec la centrale. | ||
56 | 57 | ||
57 | \subsection{Commande du ventilateur} | 58 | Celle-ci comprend un module de commande (utilisant les interrupteurs et les |
59 | ports GPIO de la carte DE2) et un module d'affichage (via les DELs, les | ||
60 | afficheurs 7-segments et l'écran à cristaux liquides). | ||
61 | |||
62 | \section{Commande} | ||
63 | |||
64 | Le module de commande prendra en compte les entrées des paramètres | ||
65 | utilisateurs, via les interrupteurs, et des paramètres environnementaux, via les | ||
66 | capteurs de bruit et de température connectés aux ports GPIO. | ||
67 | |||
68 | \begin{figure}[h] | ||
69 | \centering | ||
70 | \includegraphics{resources/commande-interrupteurs-legende} | ||
71 | \caption{Actions des interrupteurs de la carte DE2} | ||
72 | |||
73 | \centering | ||
74 | \includegraphics{resources/schema-commande-io} | ||
75 | \caption{Entrées/sorties du sous-système \og{}commande\fg{}} | ||
76 | \end{figure} | ||
77 | |||
78 | Ce module a été décomposé en deux sous-modules semi-indépendants, l'un destiné à | ||
79 | contrôler l'alarme, et l'autre le ventilateur, ce dernier étant désactivé | ||
80 | lorsque l'alarme est déclenchée. | ||
81 | |||
82 | \begin{figure}[h] | ||
83 | \centering | ||
84 | \includegraphics{resources/schema-commande-logic} | ||
85 | \caption{Schéma bloc du sous-système \og{}commande\fg{}} | ||
86 | \end{figure} | ||
87 | |||
88 | \newpage | ||
58 | 89 | ||
59 | \subsection{Commande de l'alarme} | 90 | \subsection{Commande de l'alarme} |
60 | 91 | ||
61 | \section{Afficheur 7-segments} | 92 | \begin{figure}[p] |
93 | \centering | ||
94 | \includegraphics{resources/schema-alarm-io} | ||
95 | \caption{Entrées/sorties du sous-sous-système \og{}alarme\fg{}} | ||
96 | |||
97 | \centering | ||
98 | \includegraphics{resources/schema-alarm-logic} | ||
99 | \caption{Schéma du sous-sous-système \og{}alarme\fg{}} | ||
100 | \label{fig:alarm-logic} | ||
101 | \end{figure} | ||
102 | L'alarme doit être activée (state) dans les cas suivants : | ||
103 | |||
104 | \begin{itemize} | ||
105 | \item Condition nécéssaire : l'utilisateur a activé l'alarme (enable) | ||
106 | \item Condition nécéssaire : un bruit est détecté (activate) | ||
107 | \item Condition suffisante : l'alarme est déjà activée (alarm) | ||
108 | \end{itemize} | ||
109 | |||
110 | L'ensemble des situations possibles sont représentables par la table de vérité | ||
111 | ~\ref{tab:tab-alarm}. | ||
112 | |||
113 | \begin{table}[p] | ||
114 | \centering | ||
115 | \begin{tabular}{ c | c | c || c } | ||
116 | enable & activate & alarm & STATE\\ | ||
117 | \hline | ||
118 | 0 & 0 & 0 & 0\\ | ||
119 | 0 & 0 & 1 & 1\\ | ||
120 | 0 & 1 & 0 & 0\\ | ||
121 | 0 & 1 & 1 & 1\\ | ||
122 | 1 & 0 & 0 & 0\\ | ||
123 | 1 & 0 & 1 & 1\\ | ||
124 | 1 & 1 & 0 & 1\\ | ||
125 | 1 & 1 & 1 & 1\\ | ||
126 | \end{tabular} | ||
127 | \caption{Table de vérité de l'activation de l'alarme} | ||
128 | \label{tab:tab-alarm} | ||
129 | \end{table} | ||
130 | |||
131 | De cette table, nous obtenons l'équation booléenne évidente : | ||
132 | |||
133 | \begin{equation} | ||
134 | STATE = (enable \cdot activate) + alarm | ||
135 | \end{equation} | ||
136 | |||
137 | Le circuit correspondant est ainsi celui de la figure ~\ref{fig:alarm-logic}. | ||
138 | |||
139 | |||
140 | %\newpage | ||
141 | |||
142 | \subsection{Commande du ventilateur} | ||
143 | |||
144 | \begin{figure}[p] | ||
145 | \centering | ||
146 | \includegraphics{resources/schema-fan-io} | ||
147 | \caption{Entrées/sorties du sous-sous-système \og{}ventilation\fg{}} | ||
148 | |||
149 | \centering | ||
150 | \includegraphics{resources/schema-fan-logic} | ||
151 | \caption{Schéma du sous-sous-système \og{}ventilation\fg{}} | ||
152 | \label{fig:fan-logic} | ||
153 | \end{figure} | ||
154 | |||
155 | La sortie $FAN\_AUTO$ indique l'activation du mode automatique lorsque | ||
156 | celui-ci est sélectionné et que la vitesse définie manuellement par | ||
157 | l'utilisateur est la vitesse 0. Cette dernière condition donnée sur $no\_manual$ | ||
158 | est vérifiée à l'aide d'un comparateur. | ||
159 | |||
160 | \begin{equation} | ||
161 | FAN\_AUTO = fan\_auto\_user \cdot no\_manual | ||
162 | \end{equation} | ||
163 | |||
164 | Un premier multiplexeur permet de choisir la valeur $fan\_auto\_value$ définie à | ||
165 | la vitesse 3 si le capteur de température est activé ($hot$). | ||
166 | |||
167 | Un second multiplexeur permet la sélection entre la vitesse manuellement définie | ||
168 | par l'utilisateur ($fan\_speed$) ou la vitesse automatique déterminée par l'état | ||
169 | du capteur ($fan\_auto\_value$) en fonction de l'activation du mode automatique | ||
170 | $FAN\_AUTO$. | ||
171 | |||
172 | Un troisième multiplexeur permet de désactiver le ventilateur, | ||
173 | quelque soit la vitesse définie manuellement ou automatiquement par l'état du capteur, | ||
174 | selon l'entrée $enable$. | ||
175 | |||
176 | Le schéma synthétique est celui du ~\ref{fig:fan-logic} | ||
177 | |||
178 | |||
179 | |||
180 | \newpage | ||
181 | |||
182 | \section{Affichage} | ||
183 | |||
184 | L'état de la centrale domotique est visible par l'utilisateur au travers de | ||
185 | multiples DELs ainsi que des afficheurs 7-segments. | ||
186 | |||
187 | L'écran à cristaux liquide affiche quant à lui un message trivial en 32 | ||
188 | caractères. | ||
189 | |||
190 | \subsection{Afficheurs 7-segments} | ||
191 | |||
192 | \begin{figure}[h] | ||
193 | \centering | ||
194 | \includegraphics{resources/schema-display-io} | ||
195 | \caption{Entrées/sorties du sous-sous-système \og{}display\fg{}} | ||
196 | \end{figure} | ||
197 | |||
198 | Les huit afficheurs 7-segments, à l'exception de HEX5, sont utilisés. Celui-ci | ||
199 | est donc éteint à l'aide d'une constante $7 \times 1$, puisqu'actif à | ||
200 | l'état bas. | ||
201 | |||
202 | \subsubsection{Témoins d'activation} | ||
203 | |||