EUR | USD

Comment utiliser les fonctions analogiques d’Arduino dans vos prochaines conceptions

Par Lee H. Goldberg

Avec la contribution de Electronic Products


Que vous soyez un pro de la conception embarquée ou un hacker débutant, les canaux d'entrée et de sortie analogiques de la plateforme matérielle ouverte Arduino permettront à vos projets d'interagir avec le « monde réel » en toute simplicité. Les modules compacts facilitent l'accès aux entrées à plusieurs canaux du microcontrôleur, permettant de mesurer la tension, de lire un large éventail de capteurs analogiques ou d'échantillonner des formes d'onde.

Bien que doté d'une résolution et d'une vitesse de conversion relativement modestes, le convertisseur numérique-analogique du microcontrôleur s'adapte parfaitement à de nombreuses applications courantes (éclairage, commande moteur, polarisation du gain d'un amplificateur, etc.). Cet article présente les ressources matérielles et logicielles sur lesquelles reposent les fonctions analogiques d'Arduino et vous explique comment en tirer parti dans votre prochaine conception.

Pour plus d'informations sur Arduino, consultez l'article TechZone « Arduino Open Source Platform Unleashes Creativity » (La plateforme matérielle open-source Arduino libère la créativité).

Né pour l'analogique

Conçue pour faciliter l'interaction entre les technologies numériques et le monde réel, la plateforme matérielle Arduino vise à tirer le meilleur parti des capacités analogiques des microcontrôleurs polyvalents ATmega 8 bits d'Atmel. Toutes les variantes ATmega utilisées sur les plateformes Arduino sont équipées d'un convertisseur analogique-numérique (CAN) multicanal intégré. Le CAN présente une résolution de 10 bits et peut générer jusqu'à 15 000 échantillons par seconde, sous forme de nombres entiers compris entre 0 et 1023. La plupart des microcontrôleurs AVR prennent en charge 6 canaux d'entrée analogiques, voire 8 et 16 pour certains modèles. Bien que leur fonction première soit de lire les entrées analogiques, les broches analogiques peuvent également être configurées en tant que broches d'entrée/sortie à usage général (GPIO). En cas de besoin, les broches analogiques comportent des résistances d'excursion haute sélectionnables pouvant être configurées de la même manière que les broches numériques du microcontrôleur.

Même si certains microcontrôleurs AVR sont dotés de convertisseurs numérique-analogique (CNA), les modèles de la génération actuelle de cartes Arduino produisent leurs sorties analogiques en commutant rapidement leurs broches E/S numériques afin de générer des signaux à modulation de largeur d'impulsions (PWM). Le rapport cyclique de l'onde carrée d'environ 490 Hz de chaque sortie PWM peut être programmé pour générer une tension efficace de 0 à 5 V en 256 incréments de 2 ms (Figure 1). Malgré leur capacité limitée, les sorties d'Arduino peuvent accomplir de nombreuses tâches, telles que la commande de DEL ou de moteurs.

Broches GPIO numériques d'Arduino

Figure 1 : Les broches GPIO numériques d'Arduino peuvent servir de sorties analogiques grâce aux techniques de modulation de largeur d'impulsion (PWM) (publié avec l'aimable autorisation d'Arduino.cc).

La plupart des cartes Arduino permettent d'accéder facilement aux signaux E/S analogiques (et numériques) du microcontrôleur grâce aux connecteurs à broches femelles situés au bord de la carte. Le nombre de canaux analogiques et l'affectation physique des broches varient selon le microcontrôleur utilisé et le format de la carte. Toutefois, de nombreuses variantes utilisent les conventions de brochage popularisées par les modèles « officiels », comme Uno (Figure 2), Mega et Nano.

Carte Arduino Uno (rév. 3)

Figure 2 : Il est possible d'accéder physiquement aux entrées analogiques (A0-A5) et aux sorties PWM analogiques (numérique 3, 5, 6, 9, 10 et 11) de la carte Arduino Uno (rév. 3) par le biais des embases standard situées sur les bords de la carte (publié avec l'aimable autorisation d'Arduino.cc).

Le langage de programmation de l'environnement de développement Arduino inclut un jeu de commandes d'E/S analogiques natives, ce qui facilite également le développement de code intégrant des fonctions d'E/S analogiques. Ces commandes permettent de lire des entrées analogiques, de générer des sorties analogiques (PWM) et de configurer la tension de référence du convertisseur analogique-numérique.

Lecture d'entrées analogiques

S'il est relativement simple de créer une interface entre les entrées analogiques d'Arduino et le monde réel, vous devez toutefois veiller à bien choisir la source de référence de tension pour le convertisseur analogique-numérique du régulateur AVR. Il peut utiliser indifféremment une tension de référence PAR DÉFAUT, INTERNE ou EXTERNE pour déterminer la valeur maximale de sa plage de tensions d'entrée. En mode PAR DÉFAUT, le microcontrôleur utilise la sortie du régulateur d'alimentation embarqué comme référence. Le niveau de référence est fixé à 5 V ou 3,3 V selon le modèle de carte Arduino utilisé.

Le mode INTERNE utilise la source de référence de précision intégrée du régulateur AVR. La tension de la source varie selon le dispositif, mais est généralement égale à 1,1 V (ATmega168 ou ATmega328) ou 2,56 V (ATmega8 et série Mega). Le mode EXTERNE vous permet de connecter une tension de référence externe à la broche AREF par le biais d'une résistance 5K. La broche AREF intègre une résistance de protection interne 32K qui agit comme un diviseur de tension avec la résistance externe 5K. Par exemple, une tension de 2,5 V appliquée via la résistance donnera en réalité 2,5 x 32 / (32 + 5) = environ 2,2 V sur la broche AREF.

La lecture d'une tension analogique avec le langage de programmation Arduino implique la sélection de la source de référence à l'aide de la commande analogReference(type), puis l'appel de la lecture analogRead(broche), (broche) correspondant au numéro de la broche que vous souhaitez échantillonner. Une fois sélectionné, le type de référence reste constant, sauf modification ultérieure. Les microcontrôleurs AVR permettent un taux de conversion atteignant 15 000 échantillons par seconde, mais l'environnement matériel/logiciel d'Arduino limite cette valeur à environ 10 000 échantillons par seconde.

Création de sorties analogiques PWM

Pour générer une tension analogique sur l'une des broches PWM d'Arduino, configurez cette broche comme sortie à l'aide des commandes pinMode(broche, mode) puis analogWrite(broche, valeur), (broche) indiquant la broche que vous souhaitez définir comme sortie et (valeur) représentant la fraction de la tension de référence à générer (par incréments de 1/255). Une fois configurée, la broche générera une onde carrée régulière de 490 Hz avec le rapport cyclique spécifié jusqu'à ce que la commande analogWrite(), digitalRead() ou digitalWrite() soit à nouveau utilisée pour cette broche.

Les broches d'E/S prennent en charge des courants d'attaque jusqu'à 40 mA et peuvent donc commander directement des matrices de DEL de taille moyenne. La sortie analogique peut également servir à commander un transistor de puissance ou un circuit en pont pour les moteurs CC et les éclairages plus puissants. Pour les applications plus exigeantes, la sortie peut être filtrée à l'aide d'un simple circuit RC et utilisée comme tension de commande pour un amplificateur ou une source de courant.

Autres astuces analogiques

Certains microcontrôleurs AVR (notamment les modèles MEGA8 et MEGA168) intègrent un comparateur interne permettant de comparer une tension d'entrée à une entrée externe, une tension générée par l'une des sorties PWM ou une tension de référence interne du dispositif de référence. La sortie du comparateur peut être interrogée ou utilisée pour déclencher une interruption. Bien qu'elle implique un développement logiciel plus poussé, cette interruption permet au processeur de détecter une condition de sous-tension/surtension sans devoir échantillonner constamment un canal analogique. Cela peut se révéler très pratique dans de nombreux domaines, des détecteurs de mouvement à seuil ajustable aux capteurs de chocs en passant par les instruments de suivi biomédical.

Pour les cartes Arduino dont les microcontrôleurs sont dépourvus de comparateur interne, il est relativement aisé d'ajouter un dispositif externe tel qu'un LM741, un LM339N ou un TLC3704 dans la zone de « kluge » prévue sur certaines cartes Arduino. Si votre plateforme ne permet pas l'intégration de circuits personnalisés, vous pouvez y remédier en utilisant une carte de prototypage bon marché (Figure 3)

Cartes de prototypage

Figure 3 : Les cartes de prototypage vous permettent d'intégrer vos propres E/S analogiques ou numériques à la plupart des cartes Arduino standard en toute simplicité (publié avec l'aimable autorisation de Digi-Key).

Résumé

Grâce à son coût réduit et à sa polyvalence, Arduino a rapidement remporté l'adhésion des développeurs de matériel commercial. La plateforme matérielle Arduino vise à tirer le meilleur parti des capacités analogiques des microcontrôleurs ATmega 8 bits d'Atmel. Tous ces modèles de microcontrôleurs sont équipés d'un convertisseur analogique-numérique (CAN) multicanal intégré. Cet article vise à présenter les ressources matérielles et logicielles sur lesquelles reposent les fonctions analogiques d'Arduino et à initier les ingénieurs souhaitant utiliser ces fonctions dans leurs prochaines conceptions. Nous avons abordé à cette fin la lecture des entrées analogiques, la création de sorties PWM analogiques et l'ajout d‘E/S analogiques externes. Pour en savoir plus sur les produits Arduino, cliquez sur les liens fournis pour accéder aux pages du site Web de Digi-Key.

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de Digi-Key Electronics ni les politiques officielles de la société.

À propos de l'auteur

Lee H. Goldberg

À propos de l'éditeur

Electronic Products

Le magazine Electronic Products et le site ElectronicProducts.com s'adressent aux ingénieurs et aux directeurs de l'ingénierie responsables de la conception de systèmes et d'équipements électroniques.