Différences entre versions de « Pi-WiringPi-Exemple-Quick2Wire-AnalogExtension »
(3 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 179 : | Ligne 179 : | ||
== Calcul de la sortie analogique == | == Calcul de la sortie analogique == | ||
− | + | LA tension de sortie se calcule comme suit: | |
− | '''vOut = | + | '''vOut = valeur ÷ 255 * 3.3''' |
− | + | Où: | |
+ | * vOut: est la tension de sortie | ||
+ | * valeur: est une valeur entre 0 et 255 (donc 8 bits) indiquant la tension de sortie désirée | ||
− | + | Pour trouver la valeur correspondant à la tension de sortie souhaitée: | |
− | + | valeur_a_utiliser = vOutSouhaitée ÷ 3.3 * 255 | |
− | + | Où: | |
+ | * valeur_a_utiliser: est la valeur entre 0 et 255 correspondant à la tension de sortie désirée. Cette valeur est utilisée avec analogWrite (). | ||
+ | * vOutSouhaitée: la tension de sortie souhaitée (entre 0 et 3.3v) | ||
− | + | Pour obtenir, par exemple, une tension de sortie à 3 volts: | |
+ | |||
+ | valeur_a_utiliser = vOutSouhaitée ÷ 3.3 * 255 | ||
+ | valeur_a_utiliser = 3 ÷ 3.3 * 255 | ||
+ | valeur_a_utiliser = 232 | ||
+ | |||
+ | Il ne reste plus qu'à écrire la valeur en utilisant la fonction ''analogWrite(pin, 232);'' ou la commande ''gpio -x pcf8591:120:0x48 awrite 120 232'' pour fixer la tension de sortie à 3v. | ||
== Conclusion == | == Conclusion == | ||
− | + | La carte d'entrée/sortie analogique est vraiment une ajout utile au système Quick2Wire et peut être utilisé pour une variété de senseur analogiques comme: | |
+ | * [http://mchobby.be/PrestaShop/product.php?id_product=58 photorésistance] (LDR), | ||
+ | * un senseur de température analogique ([http://mchobby.be/PrestaShop/product.php?id_product=59 TMP36] ou LM35), | ||
+ | * un simple [http://mchobby.be/PrestaShop/product.php?id_product=126 joystick analogique], | ||
+ | * un [http://mchobby.be/PrestaShop/product.php?id_product=111 Flex senseu], | ||
+ | * etc. | ||
+ | |||
+ | La sortie analogique peut être utilisée pour générer une onde sur un oscilloscope ou le contrôle analogique de moteurs, lumière, etc (par l’intermédiaire d'un amplificateur approprié). | ||
− | + | Ce n'est pas le système le plus rapide – la vitesse d’échantillonnage maximum se situant aux alentour de 2000 échantillons/seconde et une vitesse de mise-à-jour de la tension de sortie d'environ 4000 valeurs/seconde. | |
+ | Ce n'est certes pas suffisant pour de l'audio mais à cette vitesse devrait être plus appropriée pour la lecture de plusieurs senseurs analogiques. | ||
{{Pi-WiringPi-TRAILER}} | {{Pi-WiringPi-TRAILER}} |
Version actuelle datée du 30 septembre 2013 à 15:49
Carte d'extension analogique
Vous pouvez ignorer cette section si vous ne disposez pas encore de module Quick2Wire.
Source: wiringPi.com
Carte d'interface analogique Quick2Wire connectée sur un simple potentiomètre pour faire quelques tests d'entrée.
LA carte d'extension analogique utilise un circuit intégré PCF5891. Il dispose d'une seule canal de sortie analogique et 4 canaux d'entrées analogiques. Tous les canaux disposent d'une précision 8-bits (donc des valeurs pouvant varier entre 0 et 255).
Pour effectuer quelques test priliminaire, nous allons connecter un potentiomètre de 10KΩ entre la connexion ARef (3.3v) et la masse/GND/0v. La sortie du potentiomètre (généralement la broche du milieu) est connectée sur l'entrée analogique 0 (broche 0).
Commandes
Nous pouvons utiliser la commande gpio pour faire quelques tests:
gpio -x pcf8591:120:0x48 aread 120
Ou utiliser une boucle pour lire la valeur évoluant entre 0 et 255 lorsque le potentiomètre est manipulé:
while true; do gpio -x pcf8591:120:0x48 aread 120 ; done
Que fait la commande gpio?
Le flag -x informe la commande gpio qu'il faut utiliser un module d'extension – le pcf8591 dans notre cas.
Les paramètres séparés par des ":" sont:
- Le numéro de base des broches du pcf8591. Dans notre cas, il s'agit de la valeur 120.
- L'adresse du circuit intégré sur le bus I2C. Qui est 0×48 dans notre cas.
A partir de ce point, vous pouvez utiliser les commande gpio standard. Seul les ordres aread et awrite sont seulement applicable ici..
programme
Vous pouvez lire les 4 canaux d'entrée analogique de la même façon et utiliser le résultat obtenu pour contrôler différentes actions sur votre Pi – ex: ce petit programme la LED de la carte Q2W principale comme sortie PWM et utiliser la valeur du potentiomètre pour en contrôler la luminosité.
/* * bright.c: * Faire varier la luminosité de la LED sur la carte Q2W principale * avec la carte analogique * * Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net> *********************************************************************** * (fr) Traduction Francaise par Meurisse D. pour MCHobby.be. Crédit de traduction MCHobby.be * Tutoriel WiringPi traduit disponible sur http://mchobby.be/wiki/index.php?title=Pi-WiringPi * * (en) French translation by Meurisse D. for MCHobby.be. Translation credit to MCHobby.be * Translated WiringPi's tutorial available at http://mchobby.be/wiki/index.php?title=Pi-WiringPi */ #include <stdio.h> #include <wiringPi.h> #include <pcf8591.h> #define LED 1 #define Q2W_ABASE 120 int main (void) { int value ; // Activation du GPIO wiringPiSetup () ; // Ajouter le pcf8591 de la carte analogique q2w pcf8591Setup (Q2W_ABASE, 0x48) ; printf ("Raspberry Pi - Quick2Wire Test Analogique\n") ; // Initialiser la LED (en mode PWM) pinMode (LED, PWM_OUTPUT) ; pwmWrite (LED, 0) ; for (;;) { value = analogRead (Q2W_ABASE + 0) ; pwmWrite (LED, value * 4) ; delay (5) ; } return 0 ; }
Ce programme s'appelle bright.c et vous pouvez le trouver dans le sous répertoire q2w/examples/ (les exemples Quick2Wire) du répertoire wiringPi.
Vous pouvez le compiler et l'exécuter avec les commandes suivantes:
gcc -Wall -o bright bright.c -lwiringPi sudo ./bright
Calcul de la valeur analogique
Les entrées et sorties analogiques sont des périphériques 8-bit, la gamme de valeur varie donc entre 0 et 255 lors des lectures/Ecritures analogiques.
Lorsque l'on utilise la source normal de 3.3v comme référence de tension (dite ARef), alors:
La tension d'entrée se calcule comme suit:
vIn = valeur * 3.3 ÷ 255
où
- vIn: est la tension d'entrée
- valeur: est la valeur numérique lue sur le convertisseur en utilisant analogRead().
Par exemple, si la valeur lue est 172, alors la tension d'entée (input voltage anglais) est:
172 * 3.3 ÷ 255 = 2.23 volts.
Lecture de la tension
Ce programme va lire et afficher la tension des 4 canaux d'entrée.
/* * volts.c: * Lecture des 4 entrées analogique sur la carte analogique de Q2W * * Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net> *********************************************************************** * (fr) Traduction Francaise par Meurisse D. pour MCHobby.be. Crédit de traduction MCHobby.be * Tutoriel WiringPi traduit disponible sur http://mchobby.be/wiki/index.php?title=Pi-WiringPi * * (en) French translation by Meurisse D. for MCHobby.be. Translation credit to MCHobby.be * Translated WiringPi's tutorial available at http://mchobby.be/wiki/index.php?title=Pi-WiringPi */ #include <stdio.h> #include <wiringPi.h> #include <pcf8591.h> #define Q2W_ABASE 120 int main (void) { int value, pin ; // Activer le GPIO de la carte wiringPiSetup () ; // Ajouter le pcf8591 de la carte analogique q2w pcf8591Setup (Q2W_ABASE, 0x48) ; printf ("Raspberry Pi - Quick2Wire Voltmetre\n") ; for (;;) { for (pin = 0 ; pin < 4 ; ++pin) { value = analogRead (Q2W_ABASE + pin) ; printf (" %5.2f", (double)value * 3.3 / 255.0) ; } printf ("\r") ; fflush (stdout) ; delay (100) ; } return 0 ; }
Ce programme s'appelle volts.c et vous pouvez le trouver dans le répertoire q2w/examples dans le répertoire wiringPi.
Vous pouvez le compiler et exécuter avec les commandes suivantes:
gcc -Wall -o volts volts.c -lwiringPi sudo ./volts
Les entrées non connectées produirons des lectures de valeur aléatoire. Vous pouvez connecter un senseur de température LM35 (comme pour le potentiomètre) et vous verriez alos la température s'afficher comme une tension (divisé par 100)</nowiki>
Sortie analogique
La manière la plus simple de tester une sortie analogique est de connecter un voltmètre (position tension continu) dessus et d'utiliser la commande gpio pour fixer arbitrairement la valeur de la tension de sortie.
gpio -x pcf8591:120:0x48 awrite 120 127
La commande ci-dessus devrait fixer la tension de sortie à mi-valeur. Un voltmètre connecté sur la sortie devrait donc indiqué une tension de 1.65 volts (une une valeur très proche comme 1.63 volts par exemple, ce qui tout à fait correct!)
Calcul de la sortie analogique
LA tension de sortie se calcule comme suit:
vOut = valeur ÷ 255 * 3.3
Où:
- vOut: est la tension de sortie
- valeur: est une valeur entre 0 et 255 (donc 8 bits) indiquant la tension de sortie désirée
Pour trouver la valeur correspondant à la tension de sortie souhaitée:
valeur_a_utiliser = vOutSouhaitée ÷ 3.3 * 255
Où:
- valeur_a_utiliser: est la valeur entre 0 et 255 correspondant à la tension de sortie désirée. Cette valeur est utilisée avec analogWrite ().
- vOutSouhaitée: la tension de sortie souhaitée (entre 0 et 3.3v)
Pour obtenir, par exemple, une tension de sortie à 3 volts:
valeur_a_utiliser = vOutSouhaitée ÷ 3.3 * 255 valeur_a_utiliser = 3 ÷ 3.3 * 255 valeur_a_utiliser = 232
Il ne reste plus qu'à écrire la valeur en utilisant la fonction analogWrite(pin, 232); ou la commande gpio -x pcf8591:120:0x48 awrite 120 232 pour fixer la tension de sortie à 3v.
Conclusion
La carte d'entrée/sortie analogique est vraiment une ajout utile au système Quick2Wire et peut être utilisé pour une variété de senseur analogiques comme:
- photorésistance (LDR),
- un senseur de température analogique (TMP36 ou LM35),
- un simple joystick analogique,
- un Flex senseu,
- etc.
La sortie analogique peut être utilisée pour générer une onde sur un oscilloscope ou le contrôle analogique de moteurs, lumière, etc (par l’intermédiaire d'un amplificateur approprié).
Ce n'est pas le système le plus rapide – la vitesse d’échantillonnage maximum se situant aux alentour de 2000 échantillons/seconde et une vitesse de mise-à-jour de la tension de sortie d'environ 4000 valeurs/seconde.
Ce n'est certes pas suffisant pour de l'audio mais à cette vitesse devrait être plus appropriée pour la lecture de plusieurs senseurs analogiques.
Source: WiringPi.com. WiringPi est une libraire sous licence GPL écrite par Gordon Henderson. Crédit: wiringpi.com
Traduit de l'anglais par Meurisse D. pour MCHobby.be
Traduit avec l'accord de Gordon Henderson, créateur de wiringPi - Translated with authorization of Gordon Henderson, creator of wiringPi
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.