View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Afficher le résultat brut d'une conversion analogique-numérique dans la fenêtre Terminal du PC

ARDUINO - INITIATION - SERIE - CAN
Par X. HINAULT - Créé le 15/02/2010

Présentation

Ce programme montre comment réaliser une conversion analogique-numérique (voir la rubrique COMPRENDRE au besoin) 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 Duemilanove utilisée ici, basée sur un microcontrôleur ATmega 328 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.

Les conversions analogique-numériques sont très utiles notamment pour mesurer la valeur de la tension de sortie d'un capteur analogique tel qu'un capteur de température ou de distance. 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 10bits sur la voie analogique analog 0.

Matériel Nécessaire

L'espace de développement Arduino

  • ... pour éditer, compiler le programme et programmer la carte Arduino.

Le matériel suivant pour réaliser le montage associé

  • une plaque d'essai pour montage sans soudures,
  • des straps,
  • une résistance variable linéaire de 10 KOhms,

Instructions de montage

  • Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1)
  • 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


Le schéma théorique du montage

Le circuit du montage


Le schéma du montage à réaliser

(Les traits pointillés symbolisent la connexion interne à la carte Arduino entre les broches 0 et 1 et l'entrée USB)

Explication 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

Au niveau de la 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 :
    • 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).
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

Au niveau de la fonction d'initialisation setup( ) :

Initialisation des fonctionnalités utilisées :

  • 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 

Configuration des broches utilisées :

Il n'est pas nécessaire de configurer la broche analogique.

Au niveau de la boucle principale, la fonction 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 oeuvre du programme

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

  • Commencer par réaliser le montage indiqué sur plaque d'expérimentation
  • 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, un simple clic sur le bouton « Sérial Monitor ».
  • La fenêtre « Terminal » s'ouvre alors :
  • 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

  • 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 :

A copier/coller directement dans l'éditeur Arduino


// --- Programme Arduino ---
// par X. HINAULT - 01/2010 

// --- 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)  

// Broche Analog 0 (=broche 14) en entrée Analogique  : connecter la sortie d'une résistance Variable 10K elle-même connectée entre 0 et 5V 

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---

// --- Déclaration des constantes ---

// --- constantes des broches ---

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 fonctionnalités 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()

// --- ici instructions à exécuter au démarrage --- 

Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission 




} // fin de la fonction setup()
// ********************************************************************************

//*************** 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()

// --- ici instructions à exécuter par le programme principal --- 

// acquisition conversion analogique-numerique (CAN) sur la voie analogique
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 ---