Conversion analogique numérique NOM: PRENOM: Grpe:

Documents pareils
AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Configuration de TCPIPconfig.h

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

! analyse du fonctionnement

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

I- Définitions des signaux.

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ANALYSE TRAMEs LIAISON SERIE

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Introduction au langage C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Modules d automatismes simples

Cours de Systèmes d Exploitation

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

MEMOIRES MAGNETIQUES A DISQUES RIGIDES

ELP 304 : Électronique Numérique. Cours 1 Introduction

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours 7 : Programmation d une chaîne d acquisition

La programmation des PIC en C. Les fonctions, les interruptions.

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

CONVERTISSEURS NA ET AN

Java Licence Professionnelle CISII,

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Les structures. Chapitre 3

ENREGISTREUR DE TEMPERATURE

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Introduction à la Programmation Parallèle: MPI

GUIDE DE L UTILISATEUR

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Algorithmique et Programmation, IMA

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Initiation. àl algorithmique et à la programmation. en C

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

Liste des Paramètres 2FC4...-1ST 2FC4...-1PB 2FC4...-1PN 2FC4...-1SC 2FC4...-1CB

1. PRESENTATION DU PROJET

Rappels Entrées -Sorties

Temps Réel. Jérôme Pouiller Septembre 2011

COMMUTEL PRO VM3 INTERFACE GSM VOIX POUR EMULATION DE LIGNE RTC ET TRANSMETTEUR DE SMS D ALERTES ET TECHNIQUES.

V- Manipulations de nombres en binaire

UE C avancé cours 1: introduction et révisions

Cours Programmation Système

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours 6 : Tubes anonymes et nommés

Astra Elite AM/3 Manuel d'installation

SRS DAY: Problématique liée à la virtualisation

La norme Midi et JavaSound

Étude des Corrélations entre Paramètres Statiques et Dynamiques des Convertisseurs Analogique-Numérique en vue d optimiser leur Flot de Test

CHAPITRE V. Théorie de l échantillonnage et de la quantification

Programmation impérative

Programmation en langage C

Systèmes de transmission

CENTRALE DE SURVEILLANCE EMBARQUEE MULTIMEDIA

Le prototype de la fonction main()

LOGICIEL DC4D MONITOR

T500 DUAlTACH. JAQUET T500 DualTach Instrument de mesure et de surveillance équipé de 2 entrées fréquence TACHYMETRE 2 CANAUX

Programmation système de commandes en C

Système d automation TROVIS 6400 Régulateur compact TROVIS 6493

Notions fondamentales du langage C# Version 1.0

Programmation système I Les entrées/sorties

Equipement. électronique

Relais statiques SOLITRON MIDI, Commutation analogique, Multi Fonctions RJ1P

JUPITER /20/27/61m. Contact NF, 50mA à 24v max. avec R50 Ohms en série

EMETTEUR ULB. Architectures & circuits. Ecole ULB GDRO ESISAR - Valence 23-27/10/2006. David MARCHALAND STMicroelectronics 26/10/2006

SYSTEME DE PALPAGE A TRANSMISSION RADIO ETUDE DU RECEPTEUR (MI16) DOSSIER DE PRESENTATION. Contenu du dossier :

Architecture des ordinateurs

Spécialité Professionnelle. Patrick Boulandet

VIII- Circuits séquentiels. Mémoires

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Livret Phoenix-M. Par Georges Khaznadar, Lycée Jean Bart, Dunkerque d'après Phoenix Programmer's Manual

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

COACH-II Manuel d utilisation

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

SYSTEMES ELECTRONIQUES NUMERIQUES

Version beta. Station Météo 12/11/2012. Réalisation d un Station Météo avec Webserver composée de capteurs Grove et d un module Wifi Flyport.

Conception et réalisation d'une pédale MIDI

PIC : COURS ASSEMBLEUR

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Romain Buisson Vincent Journel PROJET BALLON SONDE. Tuteur : M André Lagrèze

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

Claude Delannoy. 3 e édition C++

Chapitre 1 : La gestion dynamique de la mémoire

Objet : Alimentation pour ordinateur portable et autre. Alimentation Schéma 1

Ordinateurs, Structure et Applications

Automatique Linéaire 1 Travaux Dirigés 1A ISMIN

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Activité initiation Arduino

SUPPORT DE COURS. Langage C

- Instrumentation numérique -

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Notice d'utilisation Afficheur multifonctions et système d'évaluation FX 360. Mode/Enter

DIGIGRAM interfaces audio INTERFACES PCMCIA. VXpocket V2. VXpocket 440 INTERFACES USB UAX220 V2. UAX220-Mic 346 DIGIGRAM

Les processus légers : threads. Système L3, /31

Transcription:

Cours de PIC Conversion analogique numérique NOM: PRENOM: Grpe:

CAN:Principes et caractéristiques Objectif du convertisseur analogique numérique convertir une tension analogique, comprise entre deux tension de référence Vref- et Vref+, en une valeur numérique N sur n bits Un système de commande comportant un microprocesseur peut se schématiser de la manière suivante Un exemple Les étapes de conversion L échantillonnage action de prélever la valeur du signal à intervalle fixe et répétitif Fréquence des échantillons: Te Le blocage Temps de conversion non nul Maintien de la valeur pendant ce temps L échantillonneur bloqueur:schéma de prinicpe 2

CAN:Principes et caractéristiques L échantillonneur bloqueur du PIC Temps d établissement de l échantillonneur bloqueur = temps de chargement du condo La quantification Réalisé par le convertisseur Convertir une valeur analogique en une valeur numérique sur m bits Introduit des distordions Erreur de quantification, erreur de gains Les différents signaux d un CAN Le signal à convertir (si périodique T) Signal échantilloné (période d échantillonnage Te) L horloge du convertisseur Tconv Pour le PIC il faut 12 coup d horloge pour réaliser une conversion => on peut en déduire la fréquence max d échantillonnage 3

CAN:Principes et caractéristiques Les caractéristiques principales d un CAN La résolution et quantum Quantum ou LSB: Incrément de tension d'entrée produisant une variation d'une unité du résultat de la conversion lsb. q=(vref+ - Vref-)/ 2 n pour un convertisseur n bits => 1lsb =2 n / (Vref+ - Vref-) Résolution: nombre de «points» =2 n La fonction de transfert Erreur de quantification Le temps de conversion La pleine échelle (Full Scale Range FSR) : c'est la tension maximum acceptable FSR= 2Nq pour un convertisseur linéaire. 4

Les étapes à mettre en œuvre Initialisation des paramètres du convertisseur Sélection de la voie à convertir Attente de la stabilisation de l échantillonneur bloqueur (chargement du condensateur) Lancement d une conversion Attente Fin de conversion Lecture donnée Potentiomètre de la carte PICDEM2+ connecté à AN0 5

Etape 1:Initialisation Validation du convertisseur: registre ADCON1, bit ADON=1 Choix des tensions de références 4 possibilités haute : Vdd ou externe par l'entrée Vref+ (AN3) (1.8V mini) basse : Vss ou externe par l'entrée Vref- (AN2) Nos choix: Vdd et Vss Registre ADCON1 bits VCFG1: VCFG0 Mode Analogique pour les broches d entrées Registre ADCON1, bits PCFG3:PCFG0 Voir tableau p224 doc du PIC18Fxxx Fréquence d horloge de conversion Tad=temps de conversion min d un bit Données constructeur: Tadmin >= 0.7μs Tbitconv=kTosc > Tadmin => k= k le + petit compatible avec les bits ADCS2:ADCS0 de ADCON2 Temps d établissement de l échantillonneur bloqueur Tacq Temps mini entre fin d acquisition et début nouvelle acquisition Ou encore entre un changement de voie et le début nouvelle acquisition Dépend de l impédance de la source d entrée Estimation: 2.8 us Temps obtenu par soft ou hardware Temps hardware réglable grâce à ACQT2:ACQT0 registre ADCON2 Multiple de Tad ex : 010=> 2*Tad de tempo Optionnel dans le cas d une seul voie le temps des instructions de votre programme assure en général un temps suffisant Cadrage à gauche ou à droite (explications pages + loin) Bit ADFM du registre ADCON2 Exemple de fonction d initialisation Void adc_init (void) { ADCON0=0x09; ADCON1=0x0C; ADCON2=0x94; TRISAbits.TRISA0 = 1; } 6

Etape 2: Sélection de la voie à acquérir registre ADCON1 Bits CHS0 à CHS2 : Choix du canal à convertir voir doc Etape 3: Temps d acquisition de l échantillonneur bloqueur Temps à respecter entre un changement de voie et le début nouvelle acquisition la fin d acquisition et le début d une nouvelle acquisition Mode automatique: ACQT2:ACQT0 registre ADCON2 tempo automatique après une demande de conversion Mode «manuel»: ACQT2:ACQT0=000 Prévoir le cas échéant une tempo software ( delays ou autre) Etape 4: Lancement d une conversion Bits GO de ADCON0 Mettre ce bit à 1 pour démarrer la conversion Etape 5: Attente fin de conversion Fin de conversion si bit GO retombe à 0 Plusieurs méthodes pour tester le bit GO Méthode POLLING ( scrutation) 2 approches: bloquante ou non Méthode INTERRUPTION Solution hardware Le CAN interrompt le PIC Etape 6: lecture des données Résultat dans les registres ADRESH et ADRESL Méthode la+ simple (toléré!!!! voir transp suivant) Suivant la valeur du bit ADFM le résultat se trouve sur 10 bits cadrés à droite ou à gauche ce qui permet d exploiter le résultat sur 8 ou 10 bits ( voir schémas de ADRESH et ADRESL précédents). 7

Comprendre le cadrage : ADFM Permet facilement de lire un résultat de 8 bits sur un convertisseur de 10 bits Si ADFM = 1 Résultat sur 10 bits cadrés à droite. (B0 à B9) B0 B7 dans ADRESL (L). B8 B9 dans les deux bits de poids faibles de ADRESH (H). Si ADFM = 0 Résultat sur 10 bits cadrés à gauche. (B0 à B9) B2 B9 dans ADRESH (H). B0 B1 dans les deux bits de poids forts de ADRESL (L). Le dernier cas permet de récupérer le résultat de la conversion sur 8 bits (poids forts de la conversion) en lisant uniquement le registre ADRESH. L initialisation du registre ADCON1 est faite une seule fois en début de programme Conversion sur 8 bits: res=adresh; //avec unsigned char res; et ADCON2bits.ADFM=0 Conversion sur 10 bits: La variable res déclarée en: unsigned int res; res=adresh; // recupère poids fort de res et mets sur poids faible de res res=res<<8; // poids faible devient poids fort Res=res+ADRESL // complte avec le pids faible 8

Comprendre le polling Technique 1: boucle directe sur le bit GO => while(adcon0bits.go ==1); // Directives de compilation #include <p18cxxx.h> // configuration #pragma config OSC = HS //Oscillateur externe #pragma config WDT = OFF //Watch Dog inhibé. #pragma config LVP = OFF //Low Voltage ICSP dévalidé. #pragma config PBADEN = OFF #include <stdio.h> #include "xlcd200v.h" #define GO ADCON0bits.GO unsigned char res; void main(){ ADCON0=0x09; ADCON1=0x0C; ADCON2=0x94; TRISAbits.TRISA0 = 1; OpenXLCD(OPEN_PICDEM_LCD); stdout = _H_USER ; clearxlcd(); for(;;){ GO=1; while(go==1); res=adresh; gotoxlcd(lcd_line_one); printf("%x ",res);} } Toléré pour le CAN Inconvénient technique 1: cette méthode est BLOQUANTE pour le programme, par conséquence déconseillée sur le plan du principe de fonctionnement Cependant dans le cas du convertisseur la durée de conversion est de 12Tad. En supposant Tad=1us, le programme resterait bloqué 12us. Ce temps reste petit et peut-être négligé dans bon nombre d applications! L étude se fait au cas par cas et dépend des contraintes temps réels de l application Technique 2: Polling en exploitant la boucle infini for(;;) + un IF pour le test de fin de conversion Demande une approche plus structurée => utilisation d une machine d état conseillée 9

Utilisation de la librairie C18 standart Fonctions de haut niveau disponible NE PAS OUBLIER #include <adc.h> Initialiser le convertisseur Complément d info sur la doc OpenADC( ADC_FOSC_8 &ADC_RIGHT_JUST &ADC_4_TAD, ADC_CH0 &ADC_INT_OFF &ADC_VREFPLUS_VDD &ADC_VREFMINUS_VSS, 14 ); Changer de voie SetChanADC(ADC_CH1); Attention: vérifier que le temps d établissement de l échantillonneur est respecté avant la demande de conversion Voir dans la doc «A/D acquisition time select» pour la fonction OpenADC Lancer la conversion ConvertADC() Attendre la fin de conversion Technique 1: while(busyadc()); Technique 2 : if (BusyADC()) {..}; Lire la valeur Variable=ReadADC(); 10

Un exemple #define S2 PORTAbits.RA4 11