Dans ce tutoriel, nous montrons comment utiliser REOBoard pour mesurer des signaux externes analogues. Comme nous avons déjà introduit PWM, nous utiliserons le résultat de la mesure d'un potentiomètre pour changer la luminosité de la LED.

À propos de l' ADC

ADC, c'est Analog Digital Converter. Convertisseur Analogique Digital en Français.

Le MSP430F5659 a un ADC à 12 canaux d'entrée.Tous ces canaux peuvent être configurés individuellement pour mesurer des tensions par rapport à diverses références. Avant de commencer, il faut réaliser un petit montage hardware comme suit.

À gauche, le schéma montre comment connecter le potentiomètre à la carte. À droite, une photo du hardware réalisé. Tous les connecteurs de REOBoard ont une alimentation. On peut donc utiliser ces alimentation pour le potentiomètre directement. Le curseur sera relié à A0.

Attention: La carte REOBoard existe en plusieurs variantes. Bien vérifier que l'alimentation est 3.3V et non 5 ou 12!!!

Par contre, les bornes du potentiomètres peuvent être inversées sans problème. Le point milieu est important puisque c'est celqui qui est variable.

Pot

 BoardAndPot320

 

 

 

 

 

 

 

 

Nous utilisons A0, la première entrée analogique.

Le programme

Une conversion peut être démarrée de diverses façons.

  • Timing déterminé par l'ADC
  • Conversion démarrée par un autre timer
  • Conversion simple, par fonction.

Comme les timers sont déjà très utilisés par REOBoard, nous avons choisi la 3ème solution, une fonction, mais appelée par une interruption timer.

Les functions

Par souci de clarité, ce programme a été découpé en fonctions comme suit:

  • void EnableLedPWM(void);

    Cette fonction configures le timer utiliser par PWM. Ce timer va directement alimenter la LED comme montré précédemment. Dans le programme ci-desssous, la configuration du timer est faite relativement à l'horloge temps réel (TASSEL_1_. Avec cette configuration, on pourra observer la durée ON / OFF en fonction du potentiomètre. En choisissant TASSEL_2, l'horloge de référence sera de 24 MHZ au lieu de 32 kHz. Cette fois, la LED brillera continument (ceci dépend de la valeur de TACCR0), mais sa luminance va varier.

  • void SetLedDuty(uint16 duty);

    Cette fonction définit le rapport cyclique de la LED (rapport cyclique, c'est à dire le pourcentage de temps ON par rapport à une période. L'effet dépend de la fréquence du timer. Si cette fréquence est basse, la LED va clignoter, et le temps allumé dépendra de la position du potentiomètre. Si cette fréquence est rapide, on aura l'impression que la LED est toujours allumée et que son intensité varie.

  • void EnableADCTimer(void);

    Ceci est le deuxième timer. Il définit la cadence à laquelle le potentiomètre va être mesuré. Pour que la variation semble être continue, il faut mesurer, environ 25 fois par seconde. 25 fois par seconde, c'est la cadence des images
     de cinéma. C'est la limite à partir de laquelle un mouvement semble continu pour l'oeil humain.

  • void EnableADC();

    Cette fonction configure l'ADC pour une mesure unique. C'est à dire que la mesure sera déclenchée ailleurs, et se fera par une fonction que l'on déclenchera périodiquement.

  • uint16 ReadADCVal(void);

    Cette fonction lit la valeur du potentiomètre.

Lancer le programme

Ce programme doit fonctionner sans surprise directement après compilation sur Code Composer.

Téllécharger le programme

Un sommaire de ces premiers programmes est téléchargeable en fichier zip ici.