tp4_mise en oeuvre du can de l'arduino uno

6
Station météo Mesure des températures Mise en œuvre du convertisseur de l’Arduino UNO Objectifs : - Mise en œuvre d’un microcontrôleur (Câblage, programmation) - Découverte de la fonction Conversion Analogique-Numérique - Caractérisation et mise en œuvre d’un CAN Compétences : - C.2.1 Analyser - C.2.3 Développer But : Afficher le résultat brut d'une conversion analogique-numérique dans la fenêtre Terminal du PC et vérifier la conformité des résultats obtenus Pour toute question sur les Convertisseurs analogiques numériques vous pourrez vous appuyer sur le document en cliquant ici . I- Présentation Ce programme permet de réaliser une conversion analogique-numérique avec la carte Arduino et affiche le résultat brut (une valeur entière entre 0 et 1023) de la mesure sur le PC lors de l'exécution d'un programme. La carte Arduino uno utilisée ici, basée sur un microcontrôleur dispose d'un convertisseur analogique numérique 10 bits qui permet de convertir la tension présente sur une entrée analogique (entre 0 et 5V par défaut) en une valeur entière comprise entre 0 et 1023 (avec 0 pour le 0V et 1023 pour le 5V). La plupart des cartes Arduino disposent de 5 entrées analogiques, certaines en disposent de davantage. Le langage Arduino permet de réaliser très simplement une telle conversion analogique-numérique 10 bits à l'aide de l'instruction analogRead(). Ce programme utilise les fonctionnalités suivantes : la connexion série vers le PC La conversion analogique numérique 10 bits sur la voie analogique analog 0

Upload: hixam-sbai

Post on 26-Dec-2015

25 views

Category:

Documents


0 download

DESCRIPTION

r

TRANSCRIPT

Page 1: TP4_Mise en Oeuvre Du CAN de l'Arduino UNO

Station météo Mesure des températures

Mise en œuvre du convertisseur de l’Arduino UNO

Objectifs :

- Mise en œuvre d’un microcontrôleur (Câblage, programmation) - Découverte de la fonction Conversion Analogique-Numérique - Caractérisation et mise en œuvre d’un CAN

Compétences : - C.2.1 Analyser - C.2.3 Développer

But : Afficher le résultat brut d'une conversion analogique-numérique dans la fenêtre Terminal du PC et vérifier la conformité des résultats obtenus

Pour toute question sur les Convertisseurs analogiques numériques vous pourrez vous appuyer sur le document en cliquant ici.

I- Présentation Ce programme permet de réaliser une conversion analogique-numérique avec la carte Arduino et affiche le résultat brut (une valeur entière entre 0 et 1023) de la mesure sur le PC lors de l'exécution d'un programme. La carte Arduino uno utilisée ici, basée sur un microcontrôleur dispose d'un convertisseur analogique numérique 10 bits qui permet de convertir la tension présente sur une entrée analogique (entre 0 et 5V par défaut) en une valeur entière comprise entre 0 et 1023 (avec 0 pour le 0V et 1023 pour le 5V). La plupart des cartes Arduino disposent de 5 entrées analogiques, certaines en disposent de davantage. Le langage Arduino permet de réaliser très simplement une telle conversion analogique-numérique 10 bits à l'aide de l'instruction analogRead(). Ce programme utilise les fonctionnalités suivantes : • la connexion série vers le PC • La conversion analogique numérique 10 bits sur la voie analogique analog 0

Page 2: TP4_Mise en Oeuvre Du CAN de l'Arduino UNO

II- Le montage :

Matériel nécéssaire : • L’espace de développement Arduino pour éditer, compiler et programmer la carte Arduino UNO • La carte Arduino UNO

• Un potentiomètre 10KΩ/10 tours et 3 câbles • Un voltmètre

Instructions de montage :

• Connexion série entre la carte Arduino et le PC (Port USB) • Broche Analog 0 (=broche 14) en entrée Analogique connectée sur la sortie une résistance variable 10K connectée entre le 0V et

5V.

Le schéma théorique du montage :

Carte arduino UNO

C

A B

A0

USB

Carte Arduino UNO

Page 3: TP4_Mise en Oeuvre Du CAN de l'Arduino UNO

III- Explications et mise en œuvre du programme :

Structure globale du programme

Ce programme simple comprend :

• une entête déclarative • une partie « configuration » qui ne sera exécutée qu'une fois (fonction setup( ) ) • une partie constituée d'une boucle sans fin que le programme répètera à l'infini ( fonction loop( ) ) : c'est le coeur du programme.

Déroulement du programme

Le programme se déroule de la façon suivante :

Après avoir pris en compte les instructions de la partie déclarative,puis après avoir exécuté la partie configuration ( fonction setup( ) ),le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.

Le déroulement du programme

Partie déclarative :

Déclaration des constantes de broches

• Déclaration des constantes pour les broches utilisées dans le programme : on renomme Voie_0 la broche analogique 0 (broche numérique 14).

const int Voie_0=0; //declaration constante de broche analogique

Déclaration des variables globales

• Déclaration des variables globales du programmes : o Déclaration des variables globales utilisées pour la conversion analogique-numérique : on déclare une variable entière

destinée à stocker le résultat de la mesure (valeur comprise entre 0 et 1023).

Page 4: TP4_Mise en Oeuvre Du CAN de l'Arduino UNO

int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

Fonction d’initialisation setup() :

• On initialise les différentes fonctionnalités utilisées :

Initialisation de la communication série avec le PC pour une communication à 115200 bauds. Il faudra régler le terminal côté PC impérativement sur la même valeur.

Serial.begin(115200); // initialise connexion série à 115200 bauds // IMPORTANT : régler le terminal côté PC avec la même valeur de transmission Remarque : Il n'est pas nécessaire de configurer la broche analogique. Fonction Principale loop()

• On commence par mettre le résultat d'une mesure dans la variable mesure_brute, à l'aide de l'instruction analogRead(). On remarquera ici la simplicité avec laquelle le langage Arduino permet un tel résultat !

• Pour info : une telle mesure prend 100µs environ et la carte Arduino peut donc en faire environ 10 000 par seconde ce qui est très largement suffisant dans la plupart des cas.

// acquisition conversion analogique-numerique (CAN) sur la voie analogique mesure_brute=analogRead(Voie_0);

• On envoie ensuite vers le PC la valeur ainsi obtenue à l'aide de l'instruction Serial.println() qui ajoute également un saut de ligne. // affiche valeur numerique entière ou à virgule au format décimal Serial.println(mesure_brute);

• On réalise une pause entre deux mesures grâce à l'instruction delay() qui ajoute également un saut de ligne. delay(500); // pause de 500 millisecondes

• Le programme recommence en boucle les instructions de la fonction loop( ). Le résultat de la mesure s'affiche de façon répétée dans la fenêtre Terminal : faire varier la résistance variable fait varier également la mesure.

Se reporter aux commentaires présents dans le programme pour plus de détails.

Mise en œuvre du programme :

Préparation du montage et programmation de la carte Arduino :

• Effectuer le câblage comme indiqué plus haut. • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

Préparation du Terminal côté PC dans le logiciel Arduino

• Côté PC, il faut ouvrir la fenêtre terminal de l'IDE Arduino : pour ce faire, dans le menu « outil », sélectionner « moniteur série » (CTRL+Maj+M)

• La fenêtre « Terminal » s'ouvre alors :

Page 5: TP4_Mise en Oeuvre Du CAN de l'Arduino UNO

• Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :

Fonctionnement du montage :

• Le résultat de la mesure s'affiche de façon répétée dans la fenêtre Terminal : faire varier la résistance variable fait varier également la mesure. Une fois le programme programmé dans la carte Arduino, le résultat brut de la mesure doit s'afficher dans la fenêtre Terminal : ici, résultats successifs en faisant varier la valeur de la résistance du 0V vers le 5V.

Le programme complet en langage Arduino :

Page 6: TP4_Mise en Oeuvre Du CAN de l'Arduino UNO

// CONVERSION ANALOGIQUE NUMERIQUE SUR ARDUINO UNO (entrée A0) // --- Que fait ce programme ? --- /* Affiche le résultat brut d'une conversion analogique numérique sur la fenêtre terminal du PC*/ // --- Fonctionnalités utilisées --- // Utilise la connexion série vers le PC // Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0, // --- Circuit à réaliser --- // Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1) //**************** déclaration de variables ******* const int Voie_0=0; //declaration constante de broche analogique // --- Déclaration des variables globales --- int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique // --- Initialisation des fonctions utilisées --- //**************** FONCTION SETUP = Code d'initialisation ***** // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() Serial.begin(115200); // initialise connexion série à 115200 bauds // IMPORTANT : régler le terminal côté PC avec la même valeur de transmission } // //*************** FONCTION LOOP = Boucle sans fin = coeur du programme ************* // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() mesure_brute=analogRead(Voie_0); // affiche valeur numerique entière ou à virgule au format décimal Serial.println(mesure_brute); delay(500); // pause de 500 millisecondes } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin // ******************************************************************************** // --- Fin programme ---

IV- Mesures: En effectuant des mesures de tensions au niveau du potentiomètre sur la broche connectée à l’entrée analogique de l’Arduino UNO, Procédez aux réglages nécessaires permettant de compléter le tableau suivant :

Tension présente en A0 Résultat de la conversion (lisible dans la fenêtre « moniteur série » En décimal En binaire

0V 1V 2V 3V 4V 5V

Sachant que les deux tensions de références du convertisseur analogique numérique de l’Arduino Uno sont 0v (pour Vref-) et 5V (pour Vref+), déterminer les résultats théoriques pour chacune des mesures effectuées précédemment puis compléter le tableau suivant :

Tension présente en A0 Résultat de la conversion (lisible dans la fenêtre « moniteur série » 0V 1V 2V 3V 4V 5V

Que pouvez-vous conclure quant à l’expérimentation effectuée ?

Quelle est la plus petite tension pouvant être mesurée théoriquement ? Comment s’appelle cette tension ? Pouvez vous pratiquement effectuer cette mesure ?