From 30a5e29e4d65bbb764cc8a11156a7c2c460dda39 Mon Sep 17 00:00:00 2001 From: Pacien TRAN-GIRARD Date: Tue, 17 Jun 2014 01:34:50 +0200 Subject: Update report --- report/document.tex | 5 +- report/project.tex | 356 +++++++++++++++++++++- report/resources/amplification-mic-saturation.png | Bin 0 -> 33871 bytes report/resources/amplification-mic.png | Bin 0 -> 33149 bytes report/resources/aschema-amplimic.png | Bin 0 -> 12745 bytes report/resources/aschema-amplitemp.png | Bin 0 -> 9544 bytes report/resources/aschema-cretemic.png | Bin 0 -> 6134 bytes report/resources/aschema-mic.png | Bin 0 -> 44980 bytes report/resources/aschema-shp.png | Bin 0 -> 14889 bytes report/resources/aschema-temp.png | Bin 0 -> 22649 bytes report/resources/aschema-trigmic.png | Bin 0 -> 19313 bytes report/resources/aschema-vent.png | Bin 0 -> 9126 bytes report/resources/capture-xtimclk.png | Bin 0 -> 29790 bytes report/resources/schema-pwm-io.png | Bin 0 -> 6492 bytes report/resources/schema-pwm-logic.png | Bin 0 -> 35405 bytes report/resources/schema-soundgene-config.png | Bin 0 -> 30508 bytes report/resources/schema-soundgene-gen.png | Bin 0 -> 37786 bytes report/resources/schema-soundgene-io.png | Bin 0 -> 12215 bytes report/resources/trigger-xy.png | Bin 0 -> 24470 bytes report/resources/trigger.png | Bin 0 -> 35302 bytes report/resources/triggersortiehautparleur.png | Bin 0 -> 30787 bytes 21 files changed, 345 insertions(+), 16 deletions(-) create mode 100644 report/resources/amplification-mic-saturation.png create mode 100644 report/resources/amplification-mic.png create mode 100644 report/resources/aschema-amplimic.png create mode 100644 report/resources/aschema-amplitemp.png create mode 100644 report/resources/aschema-cretemic.png create mode 100644 report/resources/aschema-mic.png create mode 100644 report/resources/aschema-shp.png create mode 100644 report/resources/aschema-temp.png create mode 100644 report/resources/aschema-trigmic.png create mode 100644 report/resources/aschema-vent.png create mode 100644 report/resources/capture-xtimclk.png create mode 100644 report/resources/schema-pwm-io.png create mode 100644 report/resources/schema-pwm-logic.png create mode 100644 report/resources/schema-soundgene-config.png create mode 100644 report/resources/schema-soundgene-gen.png create mode 100644 report/resources/schema-soundgene-io.png create mode 100644 report/resources/trigger-xy.png create mode 100644 report/resources/trigger.png create mode 100644 report/resources/triggersortiehautparleur.png diff --git a/report/document.tex b/report/document.tex index a133160..e9786db 100644 --- a/report/document.tex +++ b/report/document.tex @@ -7,6 +7,7 @@ \usepackage[francais]{babel} \usepackage{lipsum} +\usepackage{amsmath} \input{style/pascience-pages} \input{style/pascience-numbering} @@ -39,8 +40,8 @@ %\input{work} -\bibliographystyle{unsrt} -\bibliography{bibliography} +%\bibliographystyle{unsrt} +%\bibliography{bibliography} \end{document} \ No newline at end of file diff --git a/report/project.tex b/report/project.tex index e7673b4..99e4c31 100644 --- a/report/project.tex +++ b/report/project.tex @@ -65,11 +65,13 @@ Le module de commande prendra en compte les entrées des paramètres utilisateurs, via les interrupteurs, et des paramètres environnementaux, via les capteurs de bruit et de température connectés aux ports GPIO. -\begin{figure}[h] +\begin{figure}[p] \centering \includegraphics{resources/commande-interrupteurs-legende} \caption{Actions des interrupteurs de la carte DE2} +\end{figure} +\begin{figure}[p] \centering \includegraphics{resources/schema-commande-io} \caption{Entrées/sorties du sous-système \og{}commande\fg{}} @@ -79,7 +81,7 @@ Ce module a été décomposé en deux sous-modules semi-indépendants, l'un dest contrôler l'alarme, et l'autre le ventilateur, ce dernier étant désactivé lorsque l'alarme est déclenchée. -\begin{figure}[h] +\begin{figure}[p] \centering \includegraphics{resources/schema-commande-logic} \caption{Schéma bloc du sous-système \og{}commande\fg{}} @@ -147,7 +149,7 @@ Le circuit correspondant est ainsi celui de la figure ~\ref{fig:alarm-logic}. \caption{Entrées/sorties du sous-sous-système \og{}ventilation\fg{}} \centering - \includegraphics{resources/schema-fan-logic} + \includegraphics[width=\textwidth]{resources/schema-fan-logic} \caption{Schéma du sous-sous-système \og{}ventilation\fg{}} \label{fig:fan-logic} \end{figure} @@ -189,7 +191,7 @@ caractères. \subsection{Afficheurs 7-segments} -\begin{figure}[h] +\begin{figure}[p] \centering \includegraphics{resources/schema-display-io} \caption{Entrées/sorties du sous-sous-système \og{}display\fg{}} @@ -227,7 +229,7 @@ constante binaire 00 a été concaténée en LSB. Le résultat de la conversion valeur est ensuite directement affichée sur HEX4. Le schéma associé est le ~\ref{fig:speed-indicator-logic}. -\begin{figure}[h] +\begin{figure}[p] \centering \includegraphics{resources/schema-display-speed} \caption{Schéma d'affichage de la vitesse du ventilateur} @@ -248,7 +250,7 @@ segments en bordure), \og{}ralentit\fg{} à l'aide d'un module clock\_divider. Les segments du milieu ont été désactivés. Le schéma associé est le ~\ref{fig:speed-useless-logic}. -\begin{figure}[h] +\begin{figure}[p] \centering \includegraphics{resources/schema-display-useless} \caption{Schéma du chenillard} @@ -272,42 +274,257 @@ message. \caption{Découpage du sous-système \og{}alarme\fg{} en sous-sous-systèmes} \end{figure} +\newpage + \section{Detection du niveau sonore} -\subsection{Câblage du microphone} +\subsection{Câblage du microphone et amplification} + +En générant une sinusoïde depuis un téléphone nous observons un signal crête +crête de $18.8mV$ (figure ~\ref{fig:ampmicsin}). +Pour amplifier de manière cohérente se micro il aurait fallu mettre une +résistance variable, permettant de jouer sur la \og{}sensibilité\fg{} du micro. + +Apres avoir, calculé un gain théorique sur papier de $-26$, nous nous sommes +rendu compte que c’était bien trop faible. Afin de trouver la résistance idéale +nous avons parcourue un jeu de résistance allant de $22k\Omega$ à $560k\Omega$, +et retenue une résistance de $120k\Omega$ à $1.5k\Omega$ en entrée nous avons +donc un gain de $-80$. + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5]{resources/aschema-amplimic} + \caption{Schéma de câblage de l'amplificateur du microphone} +\end{figure} + + +\begin{figure}[p] + \centering + \includegraphics{resources/amplification-mic} + \caption{Amplification d’un signal sinusoïdal} + \label{fig:ampmicsin} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics{resources/amplification-mic-saturation} + \caption{Amplification d’un signal sinusoïdal, en saturation} +\end{figure} -\subsection{Amplification} \subsection{Detection de niveau sonore} +\subsubsection{Détection de crête} + +En générant une sinusoïde depuis un téléphone nous observons un signal crête +crête de $18.8mV$. +Une fois notre signal amplifié nous devons récupérer une composante continue +afin de pouvoir utiliser celle–ci dans notre Trigger, pour atteindre le basculement. +Pour récupérer cette composante continue nous avons utilisé un détecteur de crête. + +On nous avait imposé un condo de $330nF$ et un temps de décharge de $0.3s$. + +Le calcul effectué afin de trouver la résistance correspondante à l'aide du +temps de décharge du condensateur est ~\ref{eq:crete} + +\begin{equation} +\begin{split} + &\tau = R \cdot C\\ + &\iff 0.3 = 330nF \cdot R\\ + &\iff R = 909090\Omega\\ + &\iff R = 1M\Omega +\end{split} +\end{equation} +\label{eq:crete} + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5]{resources/aschema-cretemic} + \caption{Schéma de câblage du détecteur de crête du microphone} +\end{figure} + + + +\subsubsection{Détection de niveau} + +Un comparateur à hystérésis a été utilisé pour la détection du niveau sonore. + +Le but était de détecter le niveau sonore suivant le principe suivant : + +\begin{itemize} + \item Entrée $ >2V \rightarrow $ Sortie $4V$ + \item Entrée $ <1V \rightarrow $ Sortie $0V$ +\end{itemize} + +Il a fallu trouver Vref, il suffit juste de remplacer une de nos deux expression +par le jeu de valeur correspondant on trouve ainsi $V_{ref}=1.6V$. +Un simple pont diviseur de tension permet d’atteindre ce $V_{ref}$. + +\begin{equation} +\begin{split} + V^+ &= \dfrac{ \dfrac{V_{in}}{R_3} + \dfrac{V_{out}}{R_4} }{ \dfrac{1}{R_3} + + \dfrac{1}{R_4} }\\ + &= \dfrac{V_{in} \cdot R_4}{R_3+R_4} + \dfrac{V_{out} \cdot R_3}{R_3+R_4}\\ + &= V_{ref} +\end{split} +\end{equation} + +Deux cas possibles de basculement à $1V$ et à $2V$. + +\begin{equation} + \begin{cases} + V_{ref} = \dfrac{1 \cdot R_4}{R_3+R_4} + \dfrac{4 \cdot R_3}{R_3+R_4}\\ + V_{ref} = \dfrac{2 \cdot R_4}{R_3+R_4} + \dfrac{0 \cdot R_3}{R_3+R_4} + \end{cases} +\end{equation} + +\begin{equation} + \begin{split} + \iff & \dfrac{2 \cdot R_4}{R_3 + R_4} = \dfrac{R_4 + 4 \cdot R_3}{R_3+R_4}\\ + \iff & R_4=4 \cdot R_3 + \end{split} +\end{equation} + + + +\begin{figure}[p] + \centering + \includegraphics{resources/trigger-xy} + \caption{Visualisation XY du trigger} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics{resources/triggersortiehautparleur} + \caption{Visualisation du basculement sur un signal sinusoïdal (GBF)} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics{resources/trigger} + \caption{Visualisation du basculement sur un signal sinusoïdal (GBF) 2} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5]{resources/aschema-trigmic} + \caption{Schéma de câblage du trigger du microphone} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5,angle=90]{resources/aschema-mic} + \caption{Schéma global de détection sonore} +\end{figure} + + + + +\newpage \section{Génération du son} +Le son strident de l'alarme est généré numériquement sur le FPGA puis convertit +en signal analogique via le CODEC. + \subsection{Horloge du CODEC} -\begin{figure}[h] +Pour fonctionner, le CODEC de la carte nécessite un signal de référence +$xti\_mclk\_a$, auquel s'appliquent plusieurs contraintes temporelles : un état +bas ou haut doit avoir une durée d'au minimum 18 ns, et un cycle d'horloge 54 ns. +Ainsi, un module $codec\_clock$ a été créé afin de générer ce signal. + +Celui-ci utilise un composant clock\_divider afin de générer un signal d'horloge +de période 60 ns, soit une fréquence de 16.6 MHz avec un état haut et un état +bas de 30 ns, répondant aux critères. + +Une seconde horloge de référence $xti\_mclk\_b$ avec une fréquence de 10 MHz a +été aussi créée pour la génération d'un second son strident. + +\begin{figure}[p] \centering \includegraphics{resources/schema-codecclock-io} \caption{Entrées/sorties du module \og{}codec\_clock\fg{}} \end{figure} -\begin{figure}[h] +\begin{figure}[p] \centering \includegraphics{resources/schema-codecclock-logic} \caption{Schéma du module \og{}codec\_clock\fg{}} \end{figure} -\begin{figure}[h] +Le premier signal de référence $xti\_mclk\_a$ a été visualisé à l'oscilloscope +pour validation (figure ~\ref{fig:capture-xtimclk-valid}). Il a été constaté que +le signal correspondait aux attentes (fréquences et durée des états hauts et +bas). + +\begin{figure}[p] \centering \includegraphics{resources/capture-xtimclk} - \caption{ \og{}codec\_clock\fg{}} + \caption{Observation du signal d'horloge généré xti\_mclk\_a} + \label{fig:capture-xtimclk-valid} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics{resources/schema-soundgene-config} + \caption{Schéma de configuration du codec dans \og{}sound\_gene\fg{}} +\end{figure} + +\subsection{Génération du son strident} + +La génération du son strident s'effectue numériquement à l'aide d'une fonction +tabulée dans le sous-système $sound\_gene$. + +Pour ce faire, un module $dds\_sinus$ a été utilisé en conjonction avec un +diviseur d'horloge afin de produire un signal ayant une fréquence audible. + +Sur ce projet, les horloges de référence $xti\_mclk\_a$ et $xti\_mclk\_b$ sont +utilisées alternativement grâce à un multiplexeur, une bascule et un diviseur +d'horloge, visibles sur la figure ~\ref{fig:schema-soundgene-gen}. + +\begin{figure}[p] + \centering + \includegraphics{resources/schema-soundgene-io} + \caption{Entrées/sorties du module \og{}sound\_gene\fg{}} \end{figure} -\subsection{Génération du son} +\begin{figure}[p] + \centering + \includegraphics{resources/schema-soundgene-gen} + \caption{Schéma de génération du son strident} + \label{fig:schema-soundgene-gen} +\end{figure} +\newpage \section{Sortie vers le haut-parleur} +Calcul de la puissance nécessaire pour que le haut parleur fonctionne. + +\begin{equation} +\begin{split} + & P = U \cdot I\\ + \iff & 0.5 = 8\Omega \cdot I^2\\ + \iff & I = 250mA +\end{split} +\end{equation} + +Ce courant est trop grand pour être délivrer par la carte, de plus celle-ci +délivre une tension de $3.3V_{cc}$ alors que nous désirons limiter le haut +parleur à $1V{cc}$. +Nous allons donc utiliser des transistors afin de pouvoir fournir le courant +nécessaire. + +Nous avons utilisé un AOP de gain $1/3$ afin d’atteindre les $1V_{cc}$ que nous +désirons. + +\begin{figure}[h] + \centering + \includegraphics[scale=0.5]{resources/aschema-shp} + \caption{Schéma de câblage de sortie vers le H-P} +\end{figure} + \chapter{Sous-système \og{}ventilation\fg{}} @@ -319,18 +536,129 @@ message. sous-sous-systèmes} \end{figure} +\newpage \section{Détection de la température} -\subsection{Câblage du détecteur} +\subsection{Câblage du détecteur et amplification} + +Dans un premier temps nous avons dus amplifier le signal en sortie du capteur +analogique LM35 (capteur température), afin de rendre celui-ci +exploitable. C’est un ampli non inverseur car les températures sont uniquement +positives et c’est avec des tensions positives que nous avons désiré travailler. + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5]{resources/aschema-amplitemp} + \caption{Schéma de câblage du capteur de température} +\end{figure} + +Une fois notre signal amplifié nous pouvons désormais travailler dessus. \subsection{Detection de niveau de température} +Pour éviter les oscillations lorsque notre température ne varie que très peu nous avons utilisé un trigger à hystérésis. + + +\begin{equation} +\begin{split} + V^+ &= \dfrac{ \dfrac{V_{in}}{R_3} + \dfrac{V_{out}}{R_4} }{ \dfrac{1}{R_3} + + \dfrac{1}{R_4} }\\ + &= \dfrac{V_{in} \cdot R_4}{R_3+R_4} + \dfrac{V_{out} \cdot R_3}{R_3+R_4}\\ + &= V_{ref} +\end{split} +\end{equation} + +Deux cas possibles de basculement à $28.4\,^{\circ}{C}$ et $32\,^{\circ}{C}$, +soit $2.9V$ et à $3.3V$, avec comme sorties possibles $0V$ et $4V$. + +\begin{equation} + \begin{cases} + V_{ref} = \dfrac{2.9 \cdot R_4}{R_3+R_4} + \dfrac{4 \cdot R_3}{R_3+R_4}\\ + V_{ref} = \dfrac{3.3 \cdot R_4}{R_3+R_4} + \dfrac{0 \cdot R_3}{R_3+R_4} + \end{cases} +\end{equation} + +\begin{align*} + 2.9 \cdot R_4 + 4 \cdot R_3 &= 3.3 \cdot R_4\\ + 4 \cdot R_3 &= 0.4 \cdot R_3\\ + R_3 &= 0.1 \cdot R_4 +\end{align*} + + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5]{resources/aschema-temp} + \caption{Schéma global de câblage du capteur de température} +\end{figure} + + + +\newpage \section{PWM (Pulse Width Modulation)} +La commande numérique de la vitesse du ventilateur repose sur le principe de la +PWM ou modulation de largeur d'impulsion, implémentée dans le sous-système +\og{}pwm\fg{}. + +La vitesse du ventilateur dépend du rapport de la durée d'impulsion sur la durée +d'une période fixe. + +Ainsi, pour créer les quatre vitesses du ventilateur (0\%, 25\%, 50\% et +75\%), il suffit de créer quatre constantes ayant un rapport cyclique avec une +période de révolution fixe associé. +Alors qu'un multiplexeur permet le choix de la constante de rapport en fonction +de la vitesse souhaitée, un comparateur combiné avec un compteur génère +l'impulsion de sortie de rapport correspondant. + +\begin{figure}[p] + \centering + \includegraphics{resources/schema-pwm-io} + \caption{Entrées/sorties du module \og{}pwm\fg{}} +\end{figure} + +\begin{figure}[p] + \centering + \includegraphics[width=\textwidth]{resources/schema-pwm-logic} + \caption{Schéma du module \og{}pwm\fg{}} +\end{figure} + +\newpage \section{Commande du ventilateur} +Le ventilateur nécessite une autre alimentation que celle du FPGA qui génère que +du $3V$ avec une intensité trop faible pour le ventilo nous utilisons donc un +transistor. + +Calculons la résistance interne du ventilateur sachant qu’il dissipe $1W$ en +$12V$. + +\begin{align*} + I &= 0.833333\\ + P &= U \cdot I\\ + I &= \dfrac{1}{12}\\ + \newline + R &= \dfrac{P}{I^2}\\ + R &= \dfrac{1}{\left(\dfrac{1}{12}\right)^2}\\ + R &= 144\Omega +\end{align*} + +Lorsque le transistor est passant : +\begin{align*} + I_{bsat} &= 6.96 \cdot 10^{-4} A\\ + R &= \dfrac{3-0.6}{I_{bsat}}\\ + R &= \dfrac{2.4}{6.96 \cdot 10^{-4}}\\ + R &= 3448\Omega +\end{align*} + +On mettra alors une résistance de $3.3k\Omega$. + +\begin{figure}[p] + \centering + \includegraphics[scale=0.5]{resources/aschema-vent} + \caption{Schéma de câblage du transistor de contrôle du ventilateur} +\end{figure} diff --git a/report/resources/amplification-mic-saturation.png b/report/resources/amplification-mic-saturation.png new file mode 100644 index 0000000..6b012bb Binary files /dev/null and b/report/resources/amplification-mic-saturation.png differ diff --git a/report/resources/amplification-mic.png b/report/resources/amplification-mic.png new file mode 100644 index 0000000..1ebf759 Binary files /dev/null and b/report/resources/amplification-mic.png differ diff --git a/report/resources/aschema-amplimic.png b/report/resources/aschema-amplimic.png new file mode 100644 index 0000000..e8d1583 Binary files /dev/null and b/report/resources/aschema-amplimic.png differ diff --git a/report/resources/aschema-amplitemp.png b/report/resources/aschema-amplitemp.png new file mode 100644 index 0000000..5b4ae01 Binary files /dev/null and b/report/resources/aschema-amplitemp.png differ diff --git a/report/resources/aschema-cretemic.png b/report/resources/aschema-cretemic.png new file mode 100644 index 0000000..00b870c Binary files /dev/null and b/report/resources/aschema-cretemic.png differ diff --git a/report/resources/aschema-mic.png b/report/resources/aschema-mic.png new file mode 100644 index 0000000..21738fd Binary files /dev/null and b/report/resources/aschema-mic.png differ diff --git a/report/resources/aschema-shp.png b/report/resources/aschema-shp.png new file mode 100644 index 0000000..d168111 Binary files /dev/null and b/report/resources/aschema-shp.png differ diff --git a/report/resources/aschema-temp.png b/report/resources/aschema-temp.png new file mode 100644 index 0000000..7bc558f Binary files /dev/null and b/report/resources/aschema-temp.png differ diff --git a/report/resources/aschema-trigmic.png b/report/resources/aschema-trigmic.png new file mode 100644 index 0000000..f3f5f41 Binary files /dev/null and b/report/resources/aschema-trigmic.png differ diff --git a/report/resources/aschema-vent.png b/report/resources/aschema-vent.png new file mode 100644 index 0000000..5be338e Binary files /dev/null and b/report/resources/aschema-vent.png differ diff --git a/report/resources/capture-xtimclk.png b/report/resources/capture-xtimclk.png new file mode 100644 index 0000000..a094fe1 Binary files /dev/null and b/report/resources/capture-xtimclk.png differ diff --git a/report/resources/schema-pwm-io.png b/report/resources/schema-pwm-io.png new file mode 100644 index 0000000..d3cc1c1 Binary files /dev/null and b/report/resources/schema-pwm-io.png differ diff --git a/report/resources/schema-pwm-logic.png b/report/resources/schema-pwm-logic.png new file mode 100644 index 0000000..f4f0eb4 Binary files /dev/null and b/report/resources/schema-pwm-logic.png differ diff --git a/report/resources/schema-soundgene-config.png b/report/resources/schema-soundgene-config.png new file mode 100644 index 0000000..4d8d9b6 Binary files /dev/null and b/report/resources/schema-soundgene-config.png differ diff --git a/report/resources/schema-soundgene-gen.png b/report/resources/schema-soundgene-gen.png new file mode 100644 index 0000000..c9d2d25 Binary files /dev/null and b/report/resources/schema-soundgene-gen.png differ diff --git a/report/resources/schema-soundgene-io.png b/report/resources/schema-soundgene-io.png new file mode 100644 index 0000000..6fadbdf Binary files /dev/null and b/report/resources/schema-soundgene-io.png differ diff --git a/report/resources/trigger-xy.png b/report/resources/trigger-xy.png new file mode 100644 index 0000000..888b4f5 Binary files /dev/null and b/report/resources/trigger-xy.png differ diff --git a/report/resources/trigger.png b/report/resources/trigger.png new file mode 100644 index 0000000..7b99f12 Binary files /dev/null and b/report/resources/trigger.png differ diff --git a/report/resources/triggersortiehautparleur.png b/report/resources/triggersortiehautparleur.png new file mode 100644 index 0000000..869921f Binary files /dev/null and b/report/resources/triggersortiehautparleur.png differ -- cgit v1.2.3