Gestion de LED RVB, 2013/2014, TD1
Première séance
Partie électronique:
• prise en main de la nanoboard et du logiciel Altium à l'aide d'un tutoriel. Je pense que c'est la meilleure façon de commencer le projet sur la nanoboard, puisque ça permet de mettre en place une application fonctionnelle de A à Z (réalisation d'un petit compteur). Cela permet entre autre de comprendre l'agencement des librairies, le type données traités, les interfaces d'entrées-sorties...
• réalisation d'un schéma de test "PWM".
J'ai réalisé un schéma simple dans avec un bloc PWM qui, à l'aide d'un registre 8 bits (valeur à coder) et d'une horloge (porteuse) permet d'envoyer sur une des sorties de la nanoboard un signal modulé.
• réalisation d'un circuit de filtrage passe bas RC J'ai réalisé un circuit passe bas avec une fréquence de coupure très basse (environ 100Hz) d'ordre 1.
• test du système précédemment décrit sur la led RVB J'ai branché le signal filtré sur chacune des broches de la diode RVB (sauf la masse évidement). La diode fonctionne bien, je visualise bien le rouge, le vert et le bleu. Pour tester le bon fonctionnement du système PWM, j'ai fait varier la valeur du registre 8 bits (configurable digital IO) et j'ai put voir que l'intensité de la couleur variait. Avec 0XFF sur le registre, on obtient l'intensité de couleur maximale. Avec 0x0B, la diode est quasiment éteinte. En changeant la valeur de la résistance du filtre l'intensité varie, on a donc une plus grande précision, car si R est faible, il y aura quand même un courant non négligeable dans la diode pour des valeurs faibles du registre 8 bits. Il faut aussi tenir compte de la vitesse de la porteuse (signal d'horloge) pour réaliser un signal bien propre (pas de découpage après le filtrage), plus on aura une porteuse élevé, moins il y aura ce découpage à la sortie d'un même filtre. Je pense aussi qu'il faut dimensionner le filtre en fonction de cette fréquence de découpage.
• visualisation sur l'analyseur logique et sur oscilloscope J'ai visualisé à l'aide l'analyseur logique les signaux de ma PWM, cependant, j'ai préféré utiliser le mode oscilloscope, qui ne va pas "nettoyer" mes signaux certes, mais va me permettre de faire des tests plus rapidement sur la partie analogique et sur la partie signaux logiques. Je pense malgré tout que l'analyseur logique est un bon outils lorsque l'on travaille uniquement sur des systèmes binaires.
Partie informatique:
1) Prise en main du sujet, lecture du cahier des charges, découverte et analyse des programmes d'exemples de la page des projets http://rex.plil.fr/Enseignement/Systeme/Projet.IMA3/index.html.
2) Ecriture d'une procédure en C pour allumer la LED RVB à l'aide d'une liaison série. Nous nous sommes inspire de l'exemple de programme C utilisant le port série.
3) Recherche documentaire sur la bibliotheque JQuery Bibliothèque libre en javascript permettant une interactivité avec l’utilisateur sans relancer la page html. La bibliothèque comprends de nombreuses fonctions. Dans ce projet cette bibliotheque va nous servir pour animer un curseur qui sera deplacer par l’action de la souris de l’utilisateur. La transmission des parametres au programme en C se fera au relachement du bouton de la souris.
4) Recherche et analyse d'une page web contenant un objets de type "slider" écrit en javascript et utilisant la bibliothèque JQuery. Il s'agit d'un curseur sur une barre qui va nous permettre d'ajuster la valeur de chaque couleur.
Deuxième séance
Partie électronique:
• recherche sur la liaison J'ai fais des recherches sur la liaison série sous Altium, il existe un bloc configurable pour réaliser des communications entre système. Il semble qu'il faille éditer les drivers de ce bloc pour modifier les vitesse, bit de stop... En fait, il semble que ce soit un autre groupe de recherche qui travaillent sur le sujet. On m'a appris que mon application devait gérer 8 bits d'entrées et un bit de stop. C'est à dire que mon système va recevoir:
• 8 bits de données pour le rouge (noté R)
• 1 bit de stop
• 8 bits de données pour le vert (noté V)
• 1 bit de stop
• 8 bits de données pour le bleu (noté B)
• 1 bit de stop
Cette information est des plus précieuses, car après avoir testé la sortie de mon système (PWM + filtrage + LED RVB), je connais la forme de mes informations d'entrées. Mon travail est alors de réaliser un système qui va automatiser la lecture des informations les unes après les autres.
A la réflexion, je me rend compte d'une chose, que se passe il si l'information de couleur rouge reçu est interprété comme une autre couleur?
Voici comment j'ai imaginé le système:
En entrée, je dispose d'un registre 8 bit qui représente l'information de couleur R, V ou B et d'un interrupteur simulant le bit de stop. Je fixe la valeur pour R, et j'actionne le bit de stop: •une première PWM se déclenche
PUIS
•je fixe V et j'actionne le bit de stop, une deuxième PWM s'actionnent (tout en laissant le PWM-R en action).
Ainsi à chaque appuie sur l'interrupteur stop, la valeur du registre 8 bits doit être mémorisé pour ne pas perdre cette information lorsque les 8 bits suivant arrivent.
• réalisation du schéma électrique total sur Altium designer. Je réalise à tâtons un système qui permet d'envoyer successivement les valeurs voulues.
A la fin de la séance, le système ne fonctionne pas vraiment. La PWM réalisé avec plusieurs blocs opère. Mais il manque des blocs logiques, le schéma est incomplet et il me manque des informations quant au bon fonctionnement de certains blocs.
• fabrication du circuit électrique total (3 filtres RC et brochage) Je prend le temps de fabriquer 3 circuits RC (1 par couleur) je les dimensionnent avec pour avoir la fréquence de coupure au alentours de 500Hz.
Partie informatique:
Nous avons lors de cette seance fait fonctionner et analyser le fonctionnement de l'exemple du script CGI-BIN. Un script CGI est un programme executé par le serveur web qui va permettre de transmettre au script les paramètres envoyé par le navigateur grace au fonction POST ou GET. Lorsque nous déplacerons le curseur sur la page la valeur du curseur sera automatiquement envoyee au script. Un programme CGI peut être écrit dans à peu près n'importe quel langage de programmation pourvu que celui-ci soit :
• capable de lire le flux de données d'entrée ;
• capable de traiter des chaînes de caractères ;
• capable d'écrire sur le flux standard de sortie ;
• exécutable ou interprétable par le serveur web.
Nous écrirons notre programme en C pour y intégrer la partie du code permettant le fonctionnement de la diode et de la liaison série écrite en séance 1. Nous choisissons le script CGI plutot que le php comme langage intermédiaire entre le navigateur et notre application, puisque notre application est déja écrite en C.
Troisième séance
Partie électronique:
• Ajout de blocs de mémorisation Je réalise le schéma final dont voici un aperçu:
-Test avec le système de LED de la nanoboard pour avoir un visu habile -Finalisation du système -Amélioration du filtre -àtude de la diode RVB en courant et tension
Partie informatique:
- On crée un script ./compile.sh pour générer un ledrvb.cgi directment dans le répertoire qui convient
#apt-get install cgilib
gcc -o ledrvb.cgi ledrvb.c serial.c -lcgi
cp ledrvb.cgi /usr/lib/cgi-bin/ledrvb.cgi
- Après la méthode validée pour un slider, on multiplie le procédé pour avoir 3 sliders.