• Jour #10 : Calcul de résistance avec une Arduino

    Bonsoir, Bonsoir ! 

    En cette douce soirée, je vous propose un petit projet qui m'est passé par la tête après avoir calculé la valeur d'une résistance. Avec un peu d'habitude, il est simple de calculer la valeur d'une résistance. Mais quand on doit en calculer plusieurs centaines, la tâche devient vite pénible. 

    C'est pourquoi je me suis dit, pourquoi ne pas laisser mon ordinateur se charger du calcul.. ou plutôt de la mesure de la résistance. 

    Effectivement, je me sert de mon ordinateur et d'une carte Arduino Uno pour mesurer la résistance. À l'aide d'une platine à essai, de 3 fils et de 2 résistances de 1k Ohm uniquement le montage est finit.  

    Le principe est simple, on place la résistance à calculer dans un pont diviseur de tension. On mesure la tension à ses bornes à l'aide d'une entrée analogique (A0 pour le cas présent). Ensuite, à l'aide d'une petite équation, on convertit le nombre obtenu en volt puis on calcul la résistance avec la loi d'Ohm. Et pour finir, on l'envoi à l'ordinateur via un câble USB et un gestionnaire série RS232. 

     

    Schéma et calcul necessaire à ce projet : 

    Jour #10 : Calcul de résistance avec une arduino

    En calculant le courant (qui est le même dans chaques résistances car elles sont en série et A0 est considéré comme une haute impédance) et en mesurant la tension R2, on obtient facilement la valeur de la résistance. 

    Celle ci est ensuite envoyée par le port série (USB) à l'ordinateur. 

    Afin d'éviter une mesure continue qui serait inutile, j'ai fait en sorte que lorsque l'ordinateur envoi la lettre 'R' à la Uno, celle-ci mesure la tension sur A0, converti et fait le calcul pour obtenir R2 et renvoie la valeur. 

     

    J'ai ensuite fait une application très simple sous Qt qui permet de lancer une acquisition et d'afficher le résultat. 

    Voici la bouille de l'application : 

    Jour #10 : Calcul de résistance avec une Arduino

    J'utilise la librairie non officielle qExtSerialPort (car il n'en existe pas d'officielle...) pour la communication série. Celle ci n'est pas encore au point car il y a quelques différences entre son utilisation sous Windows et sous Linux que je n'ai pas totalement comprise. 

    Je compte aussi améliorer le programme afin qu'il donne la valeur exacte (1502Ω) et aussi la valeur normalisée de la série E12 (1500). 

    Ce projet reste très simple. Toute la complexité reste dans la communication série au niveau de l'ordinateur. 

    Et je vois déjà venir les commentaires du genre "Sinon les ohmmètres ça existe hein  ! ". Je répond "oui", mais mon but est d'utiliser cette application dans ma futur banque de composants. Ceci permettrait, à l'ajout d'une nouvelle résistance, de la mesurer et d'ajouter ça valeur automatiquement.  

    Voici le code de l'Arduino Uno : 

    void setup() {
      Serial.begin(9600);
    }

    void loop() {
      if(Serial.read()=='R')
      {
        // tension Ur en mv
        long U = analogRead(0);
        U *= 5000;
        U /= 1023;  

        // valeur de la résistance R
        long R = (U*500)/(5000-U);

        // envoi de la valeur de R sur le port serie
        Serial.print(R);
      }
    }

    Le calcul est divisé en plusieurs parties sinon il y a des problèmes de moyennage. Il faudrait typer le calcul... Perso j'avais la flemme de rechercher comment faire 

     

    En espérant que cet article vous a plu, bonne soirée ! 

     

    PS : demain, peut être un gros tuto sur l'asservissement de position. Utile pour réaliser la direstion d'un robot par exemple. 

    « Changement de programme ..!Un nouveau blog »

    Tags Tags : , , , ,
  • Commentaires

    1
    Vendredi 11 Novembre 2011 à 23:10
    urcadox

    En théorie tu devrais pouvoir tout faire en un calcul, faut juste mettre des nombres genre 5000.0 ou 1023.0 pour que ça ne fasse pas de division entière. ;)

    2
    Samedi 12 Novembre 2011 à 12:06

    Ah, simplement avec un ".0" après le nombre, il fait le calcul comme il faut ? 

    Je pensai plutôt qu'il fallait faire quelque chose comme ça "(double)variable/autreVariable" et donc durant le calcul les variables sont concidérées comme des doubles (ou float, au choix). Je crois que c'est un "cast" ou castage. 

    3
    Samedi 12 Novembre 2011 à 12:13
    urcadox

    Yep c'est bien un cast m'enfin c'est un peu beaucoup ridicule là.

    Donc en mettant simplement 51.0, par exemple, ton nombre est considéré comme un flottant et du coup ça  ne fait pas une division entière. ;)

    4
    Mercredi 14 Décembre 2011 à 11:06
    urcadox

    Donc maintenant c'est Au mois le mois le nouveau nom du blog ? =D

    5
    Mercredi 14 Décembre 2011 à 19:18

    xD J'avoue que la..

    Je comptais parlé de ma commande de PICAXE reçue et expliquer plus en détail ce que c'est. 

    Je comptait aussi parler de ma 6 ou 7ème guitare qui est finit de restaurer.

    Et aussi parler d'un ampli de guitare que je suis en trin de restaurer. 

    Mais j'avais 2 oraux à préparer, que j'ai passé aujourd'hui d'ailleur et qui se sont bien passé. 

    Du coup, normalement, j'ai enfin du temps pour poster.. normalement car franchement j'ai pas mal de temps durant les vacances à consacrer à SongAccoustic. Comme les compositions qui commencent demain soir jusqu'à samedi. Et aussi l'achat du décors pour les photos officielles qui devraient être faites durant les vacances. 

     

    Ca explique le si peu d'actualité et de vie sur ce foutu blog qui soit disant devait poster tous les jours, puis toutes les semaines. Finallement tous les mois et bientôt tous les ans.. En faite, c'est au feeling :) ! 

    Pour le moment, priorité à SongAccoustic. Il faut vraiment que ça avance avant le départ.. ! 

    6
    Mercredi 5 Août 2020 à 02:35

    Bonjour,

    Je suis novice dans le domaine de l'électronique happy

    Je souhaite dans le futur avec un Arduino Nano créer un témoin de réserve d'essence pour ma voiture en me servant comme valeur la résistance de sortie du flotteur qui est donnée dans le manuel d'atelier (niveau bas entre 105 et 110 ohms).

     

    Donc pour que le témoin s'allume, l'arduino doit mesurer en entrée analogique la résistance du fil positif du flotteur d'essence (qui me fait aussi bouger mon aiguille sur le compteur) arrêtez-moi si je me trompe.

     

    Néanmoins je ne comprend pas le principe du pont diviseur de tension... Cela ne "casse" pas la résistance ? ça agit seulement sur la tension c'est bien ça ? car dans une voiture tout est en 12v et l'Arduino accepte seulement du 5v en entrée il me semble...

     

    Bref, si vous pouviez me renseigner, ce serait sympa, merci d'avance cool

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :