Programme bargraphe LED sous arduino. Important
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Programme bargraphe LED sous arduino. Important



  1. #1
    invite6d7c3de8

    Exclamation Programme bargraphe LED sous arduino. Important


    ------

    Bonjour à tous ,

    Alors voila je suis tout niveau ici et j'ai grand besoin d'aide

    En effet je bloque sur un programme arduino. Mon but est de pouvoir affiché l'autonomie restant d'energie d'une batterie branché sur la carte arduino avec un système de bargraphe 10LED , en gros je veux que mes led s'allume en fonction de la tension restant dans ma batterie ( une pile de 9V) j'ai deja fais un test avec un potentionmetre de 10K , tension comprise entre 0 et 5v , mon programme marche niquel les led s'allume bien en fonction de ma variation de mon potentiomètre mais maitenant je veux que cela marche quand je branche ma batterie.

    Je voulais donc avoir un programme sous arduino (c++) pour pouvoir allumer mes led en fonction de la tension lu dans la batterie.
    Pouvez-vous m'aider ?

    -----

  2. #2
    azad

    Re : Programme bargraphe LED sous arduino. Important

    Salut
    Tu as fait le plus dur. A toi de décider quelles seront les tensions minimales et maximales admissibles pour ta batterie.
    Disons entre 7,5V et 9,5V par exemple. Tu n'as plus qu'à faire correspondre le 0 de ton potentiomètre à 7,5 et le 5V de ton potentiomètre à 9,5V.....
    Si ton potentiomètre est linéaire, tu peux même par interpolation déduire les tensions intermédiaires.
    Dernière modification par azad ; 15/04/2013 à 12h28.

  3. #3
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Bonjour

    La première chose à faire, c'est d'adapter le niveau de tension provenant de la batterie à celui de l'entrée analogique de l'Arduino.


    Si ta batterie délivre en toute circonstance une tension inférieure à la tension d'alimentation régulée de l'Arduino (a priori 5V) alors un branchement direct peut être envisagé (en pratique il vaut quand même mieux insérer une résistance en série pour parer à d'éventuels erreurs de branchement).

    En revanche si ta batterie délivre une tension supérieure, alors il faudra insérer un point diviseur, constitué de deux résistances.


    Cette façon de faire ne te permet pas de profiter pleinement de la résolution du convertisseur analogique-numérique, mais cela peut certainement suffire compte tenu de ton application.

    Par exemple, si tu cherches à visualiser le niveau de tension d'une batterie Ni-MH de 6 éléments (6x1,2V=7,2V), ce niveau peut varier entre 6V (batterie à plat) et 8V (batterie chargée) en utilisation normale (on peut atteindre 9,6V juste après avoir sorti la batterie d'un chargeur rapide, mais c'est une situation exceptionnelle qui offre peu d'intérêt).

    Pour ces valeurs, afin de ne pas dépasser les 5V en temps normal, tu peux mettre un pont diviseur constitué :
    - d'une résistance de 33kΩ entre la batterie et l'entrée analogique (qui assure au passage, avec les diodes de clamp du µC, une protection contre les surtensions et l'inversion de polarité),
    - d'une résistance de 47kΩ entre l'entrée analogique et la masse.
    Le pont ainsi constitué réalise une division par un facteur 1,7 (=1+33k/47k), aux tolérances sur les composants près. Les niveaux de tension cités plus haut sont alors ramenés respectivement à 3,525V et 4,7V.

    En faisant appel à des conversions sur 10 bits (réglage par défaut) et une référence à 5,0V, ces niveaux correspondent respectivement aux valeurs numériques entières 721 et 961. L'évolution de la tension entre ces bornes durant la décharge de la batterie correspond à 240 échelons, qui pourront aisément être convertis en 10 échelons pour allumer tes 10 leds.


    Toutefois, note que la connaissance de la tension aux bornes de la batterie ne donne qu'une indication très vague du niveau de charge d'une batterie, car elle est influencée par d'autres facteurs telles que la température, la pression, le vieillissement de la batterie, le régime des derniers cycles de recharge et de décharge, et l'historique récent de la consommation de courant.
    Dernière modification par PA5CAL ; 15/04/2013 à 13h43.

  4. #4
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    merci pour vos réponse , elle me seront très utile. Mon plus gros problème maitenant c'est mon programme arduino que je dois faire pour que mon montage allume les led directement quand on branche une batterie et qui donne le montant d'energie restant. c'est surtout ca ou je bloque , mon potentiometre etait uniquement la pour mon premier test

  5. A voir en vidéo sur Futura
  6. #5
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Si tu as déjà un programme qui fonctionne avec un potentiomètre, il est simple de l'adapter pour afficher le niveau de tension d'une batterie, si tu connais ses caractéristiques. Et dans ce cas il vaut mieux que tu nous présentes ce programme pour qu'on t'indique où faire la modification, plutôt que tu attendes de nous qu'on refasse un programme entier en essayant de deviner comment ton Arduino pilote les leds.


    Quoi qu'il en soit, tout ce qu'on peut afficher, ce n'est une indication du niveau de tension de la batterie, mais en aucun cas une indication fiable de l'énergie restante.

    En effet, généralement les batteries voient leur tension chuter rapidement au début et à la fin de la décharge, ce qui permet de distinguer une batterie à plat d'une batterie bien rechargée. Mais entre les deux, la tension évolue lentement et ne permet pas de déterminer l'énergie restante en dehors de toute autre indication.

    Par exemple pour une batterie 7,2V li-po ou Ni-MH, la seule mesure directe d'une tension de 7,0V ne permet pas de dire si elle est déchargée à 30% ou bien à 80%.
    Dernière modification par PA5CAL ; 15/04/2013 à 15h54.

  7. #6
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    alors pour ce qui est de mon programme j'ai mis celui-ci:

    const int analogPin = A0; // the pin that the potentiometer is attached to
    const int ledCount = 10; // the number of LEDs in the bar graph

    int ledPins[] = {
    2, 3, 4, 5, 6, 7,8,9,10,11 }; // an array of pin numbers to which LEDs are attached


    void setup() {
    // loop over the pin array and set them all to output:
    for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
    }
    }

    void loop() {
    // read the potentiometer:
    int sensorReading = analogRead(analogPin);
    // map the result to a range from 0 to the number of LEDs:
    int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);

    // loop over the LED array:
    for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    // if the array element's index is less than ledLevel,
    // turn the pin for this element on:
    if (thisLed < ledLevel) {
    digitalWrite(ledPins[thisLed], HIGH);
    }
    // turn off all pins higher than the ledLevel:
    else {
    digitalWrite(ledPins[thisLed], LOW);
    }
    }
    }

    mais il y a possibilité de quand meme pouvoir lire la tension de la batterie avec bargraphe même en gardant le potentiomètre et sans le toucher ?

    pour ma carte arduino c'est une ATmega 2560 16 entrées analogique , j'utilise l'entré 5V pour une batterie de 9V , j'ai deja fais mon pont diviseur et grace a mon test j'avais pu voir que la dernier led s'eteint à 4,80 et des poussiere (donc batterie pleine) et la dernière à partir de 0.5v j'ai mis 10 résistance sur chaque led de 10k ohms

  8. #7
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    1k ohms pardon

  9. #8
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    NB: il aurait été préférable de mettre le programme entre des balises [CODE] (bouton # de l'éditeur avancé) pour garder son indentation et sa lisibilité.

    Il suffit de modifier les bornes de départ dans la fonction map() de sorte qu'elles reflètent les valeurs minimales et maximales attendues. Si l'on reprend l'exemple que j'ai donné, ces valeurs sont 721 pour toutes les leds éteintes et 961 pour toutes les leds allumées. La ligne :
    Code:
      int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
    devient :
    Code:
      int ledLevel = map(sensorReading, 721, 961, 0, ledCount);

  10. #9
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    donc si je comprends bien le faites de changer les valeurs minimal et maximal attendues , vont modifier la réactions des led et donc pouvoir lire la tension recu ? et fatalement allumer les led en fonction de ca ? mais mon potentiomètre je dois le mettre à fond ou le baisser au max ?

  11. #10
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    [CODE]const int analogPin = A0;// the pin that the potentiometer is attached to
    const int ledCount =10;// the number of LEDs in the bar graph

    int ledPins[]={
    2,3,4,5,6,7,8,9,10,11};// an array of pin numbers to which LEDs are attached


    voidsetup(){
    // loop over the pin array and set them all to output:
    for(int thisLed =0; thisLed < ledCount; thisLed++){
    pinMode(ledPins[thisLed],OUTPUT);
    }
    }

    voidloop(){
    // read the potentiometer:
    int sensorReading =analogRead(analogPin);
    // map the result to a range from 0 to the number of LEDs:
    int ledLevel =map(sensorReading, 721,961,0, ledCount);

    // loop over the LED array:
    for(int thisLed =0; thisLed < ledCount; thisLed++){
    // if the array element's index is less than ledLevel,
    // turn the pin for this element on:
    if(thisLed < ledLevel){
    digitalWrite(ledPins[thisLed],HIGH);
    }
    // turn off all pins higher than the ledLevel:
    else{
    digitalWrite(ledPins[thisLed],LOW);
    }
    }
    }

    ca donnerais ca ?

  12. #11
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    mais il y a possibilité de quand meme pouvoir lire la tension de la batterie avec bargraphe même en gardant le potentiomètre et sans le toucher ?

    pour ma carte arduino c'est une ATmega 2560 16 entrées analogique , j'utilise l'entré 5V pour une batterie de 9V , j'ai deja fais mon pont diviseur et grace a mon test j'avais pu voir que la dernier led s'eteint à 4,80 et des poussiere (donc batterie pleine) et la dernière à partir de 0.5v j'ai mis 10 résistance sur chaque led de 10k ohms
    Si je dois comprendre que le potentiomètre sert actuellement de pont diviseur, alors :
    - oui, ça marche
    - mais non, il ne vaudrait mieux pas procéder ainsi, car le pont diviseur protège également l'entrée de l'Arduino contre les erreurs de manipulation. Par exemple si le curseur arrive en fin de course (ou s'en approche trop) alors que la tension de la batterie dépasse les 5V, l'entrée de ATmega grille !

    Les batteries de 9V ne sont pas courantes. S'agit-il d'un accumulateur rechargeable, ou bien d'une pile de type alcaline (non rechargeable) ? Car dans ce dernier cas, ce que j'ai indiqué plus haut n'est plus valable. Les piles alcalines ont une tension qui chute rapidement au cours de la décharge, ce qui rend beaucoup plus pertinent la mesure de leur tension pour connaître l'énergie restante.
    Dernière modification par PA5CAL ; 15/04/2013 à 16h44.

  13. #12
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Citation Envoyé par azuraz Voir le message
    [CODE](...)

    ca donnerais ca ?
    Attention, pour l'affichage sur le forum, il faut terminer le code par une balise de fin [/CODE].

    Oui, ça donne ça pour des bornes fixées à 721 et 961. Maintenant, c'est à toi de déterminer les valeurs correspondant à ta batterie (ou ta pile) et à ton pont diviseur.

  14. #13
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Pour info, s'il s'agit d'une pile alcaline de 9V, on considère que la plage d'utilisation d'une telle pile est comprise entre 4,8V et 9V. Avec un pont diviseur constitué de deux résistances identiques (par exemple 47kΩ+47kΩ) la tension est divisée par deux, ce qui donnerait des bornes à 491 et 920 dans la fonction map().
    Dernière modification par PA5CAL ; 15/04/2013 à 16h50.

  15. #14
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    alors oui je précise que ce n'est pas une pile rechargeable mais une pile 9v basique rectangulaire. enfaite c'est un prototype d'une télécommande pour dirigé un robot , et j'ai pour but d'affiché par système de led le restant d'energie dans la pile

    mon potentiomètre c'etait deja pour tester mon premier programme en variant la tension du potentiometre mes led s'allumait en fonction de ce dernier.

    donc je garde ce nouveau programme la ? en 491 - 920? (enfin tout depends de ce que j'aurais comme pont diviseur)

  16. #15
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Citation Envoyé par azuraz Voir le message
    donc je garde ce nouveau programme la ? en 491 - 920?
    Si tu utilises un pont diviseur par 2 (deux résistances identiques), oui. Sinon il faudra que tu fasses le calcul pour le rapport du pont diviseur que tu utilises.

    La formule à appliquer pour connaître chaque valeur est :

    N = 1023 x tension / 5V
    Dernière modification par PA5CAL ; 15/04/2013 à 17h22.

  17. #16
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    très bien merci bcp en tout cas pour toutes tes infos qui me seront très précieuse , j'espere que ca marchera

  18. #17
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    une derniere question : vu que le principe du potentiometre c'est de faire manuellement varié une tension , ca fais que mon montage ne vas pas pouvoir mesurer tout seul la tension dans la batterie vu que je pourrais varier cet tension avec mon potentiometre

  19. #18
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Le délai de modification de mon précédent post étant terminé, je reprends ce que je n'ai pas eu le temps de rajouter entièrement...


    La formule à appliquer pour connaître chaque valeur est :

    N = 1023 x tension / 5V

    où :
    - 1023 est la valeur pleine échelle du convertisseur (valeur par défaut)
    - 5V est la tension de référence du convertisseur (valeur par défaut)
    - tension est la valeur de la tension présentée sur l'entrée de l'Arduino. Avec un pont diviseur constitué d'une résistance R1 entre la batterie et l'entrée et d'une résistance R2 entre l'entrée et la masse, sa valeur est égale à celle de la tension de la batterie au moment considéré multipliée par R2/(R1+R2) .
    Dernière modification par PA5CAL ; 15/04/2013 à 17h31.

  20. #19
    invite6d7c3de8

    Re : Programme bargraphe LED sous arduino. Important

    d'accord donc j'ai juste a prendre les mesure de la resistance R1 et R2 avec un multimetre pour connaitre la tension qui y passe , d'appliquer la formule pour R1 et R2 et je vais connaitre mon intervalle pour le mettre dans mon programme ?

  21. #20
    PA5CAL

    Re : Programme bargraphe LED sous arduino. Important

    Si tu ne connais pas R1 et R2, tu peux faire ça.

    Si tu as un voltmètre avec une résistance interne suffisante, tu peux aussi déduire le rapport du pont diviseur en l'alimentant (par exemple avec 5V) et en mesurant la tension à l'entrée et à la sortie.

Discussions similaires

  1. Arduino Poussoir et Led
    Par invite8c4c08e9 dans le forum Électronique
    Réponses: 14
    Dernier message: 31/10/2018, 20h09
  2. Matrice à led + arduino
    Par invitefd30d555 dans le forum Électronique
    Réponses: 54
    Dernier message: 29/07/2013, 01h13
  3. Programme sur Arduino
    Par invite364f7719 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 22/02/2013, 22h36
  4. LED RGB et Arduino
    Par bypbop dans le forum Électronique
    Réponses: 2
    Dernier message: 22/11/2012, 20h24
  5. programme gestion led avec arduino
    Par axel_67 dans le forum Électronique
    Réponses: 4
    Dernier message: 03/01/2012, 17h29
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...