| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- \documentclass{article}
- \usepackage[utf8]{inputenc}
- \usepackage{graphicx}
- \usepackage{mathtools, bm}
- \usepackage{amssymb, bm}
- \usepackage{eurosym}
- \usepackage{textcomp}
- \usepackage{shorttoc}
- \usepackage{listings}
- \title{Fonctionnement Rampes à LED}
- \author{Rémy cluze}
- \date{Janvier 2017}
- \begin{document}
- \section{Introduction}
- Ce document sert d'explication au fonctionnement de la rampes à LED.
- \section{Matériel}
- \subsection{Control}
- \subsection{Drivers}
- \section{Soft}
- Cette partie expolique le fonctionnement du soft de la rampes à LED.
- \subsection{Les états}
- Chaqu'une des 10 sorties de la carte de controle et branché avec un ou plusieurs drivers pour controlé grace au MOSFET présent sur le drivers.
- On distingue 4 états pour les sorties.
- \begin{itemize}
- \item 0 : Eteinte
- \item 1 : En Cours d'allumage
- \item 2 : Allumé
- \item 3 : En cours d'extinxtion
- \end{itemize}
- Chaqu'un des états si desus dure 1h. Les états 0 et 2 peuvents étre renouvellé.
- La valeurs de chaque sortie correspond à l'état mais aussi a la duré en minute dans cette états.
- L'état eteint la sortie est toujours égale a 0 donc le ou les MOSFET branché sur cette sortie sont non passant.
- L'état allumé la sortie est toujours égale a 1 donc le ou les MOSFET branché sur cette sortie sont passant.
- L'etat en cours d'allumage la sortie est est variable avec un PWM avec un duty cycle variable en fonction du temps. On incremente toute les 3 min de 5\% le duty cycle.
- L'état en cours d'extixion est le contraire de l'état en cours d'allumage. On démarre avec un duty cycle a 100\% pour progressivement arrivé a 0\%.{}
- Les états de chaque sortie pour chaque heure de la journée sont stocké dans un tableau dans l'EEPROM.
- Le tableau est de la forme suivante:
- %~ \begin{tabular}
-
- %~ \end{tabular}
- Chaque case du tableau fait 1 octet est contient l'états de la sortie à une certaine heure de la journée.
- \subsection{L'algorithme général du programme}
- Le programme fonctionnera avec 3 timers:
- \begin{itemize}
- \item timer 1 : Se timer est réglé sur 1 second il sera toujours actif. Toute les seconds le programme ira lire l'heure sur la RTC, l'ecrira dans l'eeprom, testera si on a changé d'heure
- (ex:10H -> 11H). Si une des sortie est dans un des 2 états EnCours le timers 1 testera si 3 min ce sont ecoulé pour l'augmentation du timer 3.
- \item timer 2 : Ce timer est reglé toute les 20ms il est fonctionel que si une des sortie est dans un des 2 états EnCours. Il sert a allumé les sortie qui sont dans l'état en cours d'allumage,
- et eteindre celle qui sont dans l'état en cours d'extinxtion. Il demare aussi le timer 3 avec le bon nombre de milli second.
- \item timer 3 : Ce timer est réglé en fonction des minutes $\lfloor (minute/3)\rfloor /1000$ ce qui donne un nombre de miliseconde entre 1 et 20 ms. Sont acction sera en oposition avec le timer 2
- etteindre les sortie qui sont dans l'état en cours d'allumage et allumé celle qui sont dans l'état en cours d'extinxtion.
- \end{itemize}
- Algorithme principal:
- \textbf{Chaque fonction sera détaillé apres}
- \begin{lstlisting}[language=C]
- int heure = lireHeure(); //on initialise l'heure grace a la fonction de lecture de l\'heure sur la RTC.
- char nouvelleHeure = 1; //Variable qui sert à savoir si on est passe à une nouvelle heure. Initialise à 1 car au demarage du programme rien est initialise.
- char change = 0; //Variable qui sert à savoir si une des sortie est dans un état non stable.
- char tableSortie[10]; //Variable qui sert à savoir quelle sont les états des sortie.
- char 3min = 0; //Variable qui sert à savoir si on a passé 3min depuis la derniere fois que l'on a augménté le timer 3
- char Xms = 0; //Variable qui sert au temps du timer 3
- demarreTimer1();
- while(1){
- if (nouvelleHeure) {
- nouvelleHeure = 0;
- Xms = 0;
- lireSortie(heure,tableSortie);
- change = change(tableSortie);
- if (change)
- demarreTimer2();
- else
- eteindreTimer2();
- }
- if (change){
- if (3min)
- Xms = Xms + 1 ;
- }
- sleep(65);// On dort 65 ms pour pas toujour etre actif
- \end{lstlisting}
- Algorithme timer1:
- \begin{lstlisting}[language=C]
- etteindreSortieEnCoursExtinxtion(tableSortie);
- allumeSortieEnCoursAllumage(tableSortie);
- demarreTimer3();
- demarreTimer2();
- \end{lstlisting}
- Algorithme timer2:
- \begin{lstlisting}[language=C]
- allumeSortieEnCoursExtinxtion(tableSortie);
- eteindreSortieEnCoursAllumage(tableSortie);
- \end{lstlisting}
- Algorithme timer3:
- \begin{lstlisting}[language=C]
- Heure = lireheure();
- EcrireHeure();
- nouvelleHeure=nouvelleHeure();
- if
- \end{lstlisting}
- \end{document}
|