A cause du confinement du covid X,
J’ai demandé à mes étudiants d’IUT première année de se familiariser avec l’écriture du forum et de s’entre aider entre eux, pour faire quelques programmes
Exercice 1
Sur la première ligne du LCD, Ecrire votre nom avec à la fin le caractère µ(micro).
Sur la deuxième ligne, les secondes qui s’incrémentent avec une routine d’interruption
De Faire, une simulation avec ISIS de leur programme en mode pause, faire une copie d’écran avec le déroulement du programme et de mettre sur le forum cette copie d’écran
De plus de mettre leurs programmes avec des commentaires pour qu’il soit vu en tant que programme.
Meme si c’est copié ce n’est pas grave……mais mettre une fausse valeur de l’ecriture µ (micro)
Voici l’exemple de ce qui est demandé
Exercice 2
Avec d’un seul terminal dans ISIS, je vous propose seulement, que vous écriviez un programme ou l’affichage des secondes déroulantes, toutes les seconds sur le terminal
Et si vous écrivez votre nom dans le terminal , celui s’affiche sur l’écran LCD.
Faire une capture d’écran et poster le, ainsi que votre code sur le lien suivant
Pour que le virtual terminal envoie des données, pendant la simulation click droit sur l'ecran du terminal, il faut activer « echo type characters »
Comme sur la photo suivante
Exercice 3
Faire un programme pour afficher l’heure, les minutes, les secondes sur l’afficheur LCD sur la deuxième ligne, avec la routine d’interruption.
Donc au bout de 60secondes, les minutes s’incrémentent, au bout de 60 minutes les heures s’incrémente…etc…bref, une horloge numérique.
Initialisé les variables à 23heures, 59 minutes et 30 secondes et faire une capture d’écran au bout de 40 secondes pour vérifier que votre programme est correcte, comme on peut l’observer sur la figure suivante
Il y a aura toujours votre nom sur l’afficheur LCD pour prouver que c’est bien vous.
Mettre votre programme en ligne pour que je puisse noter et vérifier votre code.
exercice 4
Pour vérifier que vous avez compris l’utilisation des instructions analogRead et analogWrite ainsi que celle des instruments d’ISIS. Je vous propose d’utiliser l’Arduino nano pour faire du traitement de signal et faire un voltmètre DC mais aussi AC de l’entrée avec 5V amplitude max. Aucun composant extérieur sera utile, mais avec juste avec un pont diviseur de tension, il sera possible de mesurer jusque 400V.
Vous allez devoir réaliser un petit programme qui mesure une tension triangulaire ou sinusoidale (offset de 2.5V, bouton unipolaire du GBF, amplitude 4.9v ou de 3V, fréquence 50Hz).
Ce signal lu par l’Arduino avec une fréquence d’échantillonnage de 1ms grâce à la routine d’interruption, sera ressorti sur la PWM broche 3 avec une amplitude divisé par 2, ainsi que sa valeur moynne. Le signal de la PWM à 32khz sera filtré par une résistance et un condensateur qui a une fréquence de coupure de 500Hz pour avoir une tension analogique.
Sur l’oscilloscope, la tension du GBF et la tension de sortie du filtre de la PWM seront vérifiées.
Le programme calculera la tension moyenne DC du signal d’entrée, pour l’afficher sur l’écran LCD. De plus, votre programme mesurera l’amplitude. (Il y a de nombreuses méthodes pour les mesures, je vous laisse utiliser celle que vous voulez)
Votre nom sera toujours sur la première ligne sur l’afficheur LCD.
Vous pouvez vous inspirer du post « filtre numérique » qui est sur le lien suivant
https://forum.arduino.cc/index.php?topic=668939.0
D’ailleurs, dans ISIS garder que l’Arduino, le LCD faire le filtre RC….retirer tous les composants qui sont inutiles.
Vérifier que votre programme fonctionne bien de 5Hz à 250Hz.
Puis, comme d’habitude, vous mettrez votre code, 2 captures d’écrans pour prouver que votre programme fonctionne bien avec une amplitude de 4.9Vpuis 3V.
Expliquer quelle est la précision de votre voltmètre et ces limites pour faire une synthèse.
Voici une capture d’écran, de ce qu’il faut faire, sans la partie fréquencemètre
Votre programme doit aussi bien fonctionné pour tous types de signaux
Exercice 5
Dans la continuité de l’exercice 4, Le processeur peut être utilisé comme compteur, donc faire un fréquencemètre.
L’Arduino a une instruction pour la routine extérieure et sur la nano, il n’y a que les broches 2 et 3 qui sont concernés, mais la broche 3 est déjà utilisée pour la PWM.
attachInterrupt (digitalPinToInterrupt(pin), ISR, mode)
Pour mesurer le comptage du temps entre 2 fronts, il y a 2 instructions possible time = millis() ou micros() qui utilise le timer0 de 8 bits de l’Atmega 328. Voir le lien suivant.
https://www.locoduino.org/spip.php?article84
Il faudra utiliser un AOP pour triguerisé le signal pour la routine d’interruption extérieure.
Mais avec une routine d’interruption de 1ms du timer1, il est possible de l’utiliser sans utiliser les 2 instructions millis ou micro.
Par contre, la routine d’interruption extérieure devra être la plus courte possible car il n’y aura pas de priority entre la routine d’interruption extérieure et la routine timer1.
Vérifier que votre fréquencemètre fonctionne bien de 5Hz à 500Hz.
Puis, comme d’habitude, vous mettrez votre code, 1 capture d’écrans pour prouver que votre programme fonctionne bien avec la fréquence du GBF et celle affichée sur l’écran LCD, ainsi que votre nom.
Exercice 6
Les afficheurs LCD sont relativement petits, donc souvent il faut gérer différents menus par l’intermédiaire de bouton poussoir.
Etant donné que les routines d’interruptions étant relativement courtes en temps d’instruction ainsi que la boucle loop, cela permet dans la loop de scruter des entrées pour savoir si un bouton poussoir est activé ou pas. Sachant que l’homme est lent car il va appuyer au moins pendant 0.15s.
On utilisera la résistance de pull up interne à l’Arduino
voir LOCODUINO - Entrées numériques et résistance pull-up
- Donc, 1 bouton poussoir permettra d’incrémenter un menu déroulant permettra d’afficher la tension moyenne, l’amplitude, la fréquence, la valeur efficace TRMS (true root mean square)
- Un autre bouton poussoir permettra de figer la valeur des mesures en mettant en Haut à gauche de l’écran LCD les lettres « Me» comme mémoire.
(Première ligne votre nom, deuxième ligne ce que vous mesurez, troisième ligne la valeur et l’unité)
Comme d’habitude mettre une seule capture d’écran et votre programme.
Voici un exemple de la gestion des menus
Lorsque la mémoire est activée, la sortie analogwrite est aussi arrété comme on peut l’observer sur l’oscciloscope