Pour connaître vite la valeur d'une des 1000 résistances qui traînent en vrac au fond de ce carton / cette trousse / cette boîte…
vide-armoire arduino 3D en cours en cours warning danger
2019
Série #VIDE-ARMOIRE, un Ohm-metre Arduino Avec une UNO, un LCD LCM1602c + potard 10Ko + R 1Ko et un pont diviseur simple : R connue de 1Ko
Objectif : un montage pour tester les Résistances qui traînent en vrac dans mes sacs, mes trousses, mes boîtes…
mesure de la tension sur une broche analogique, U = R*i…
Pont diviseur: montage de 2 résistances qui permettent de calculer l'une des 2 sans utiliser l'intensité.
Ici une Résistance de 1Ko compare l'autre R placée avec la série de résistances E12 : valeurs standards, avec 5% d'erreurs (bague dorée)
/* Serie #VIDE-ARMOIRE-2019, un Ohm-metre Arduino Avec une Nano ou UNO, un LCD LCM1602c + potard 10Ko + R 1Ko et un pont diviseur simple : R connue de 1Ko * *************** ECRAN LCD LCM1602C *************** * * ************** Calcul de Résistance *************** * */ #include <LiquidCrystal.h> LiquidCrystal EcranLCD(12, 11, 5, 4, 3, 2); // syntaxe : LiquidCrystal(rs, enable, d4, d5, d6, d7) /* VARIABLES CALCUL RESISTANCE */ float Vin = 4.7; // tension alim float Vout = 0; // tension à determiner sur A0 float R1 = 1000.0; // resistance connue 1ko sur A0; float R2 = 0; // resistance à trouver int a0Data = 0; // stockage AnalogRead /* VARIABLES COMPARATIF R COMMERCE */ const int Re12[11] = {10, 12, 15, 18, 22, 33, 39, 47, 56, 68, 82}; // ces valeurs se multiplient 5 fois par 10 pour couvrir la gamme e12 int Tolerance = 5; // unsigned long Multiplicateur = 1; // multiplier les ref long Compar = 0; // stocker la difference entre valeur lue et valeur ref unsigned long Rcommerce = 0; // stock le retour du comparateur void setup() { EcranLCD.begin(16, 2); // utilisation d'un écran 16 colonnes et 2 lignes // EcranLCD.write("Hello"); // petit test pour vérifier que l'écran marche } void loop() { a0Data = analogRead(A0); if (a0Data && a0Data != 1023) { Vout = (a0Data * Vin) / 1024; R2 = Vout * R1 / (Vin - Vout); Rcommerce = Compare(R2); // fonction comparaison valeur lue avec Re12 LCDAffiche(); // fonction affichage } else { // si A0 prend le max de tension : aucune R posée LCDInvite(); // affiche "placez une resistance" } delay(2500); EcranLCD.clear(); } /* Fonction pour comparer la mesure avec les valeurs vendues, de ¹⁰ en ¹⁰ */ unsigned long Compare(float Rmesuree) { Tolerance = 5; Multiplicateur = 1; for (int g = 1; g <= 5; g++) { // on change 5* la gamme des valeurs (*10) for (int i = 0; i < 11; i++) { if (abs(Compar) < Tolerance ) { } } Tolerance = Tolerance * 10; Multiplicateur = Multiplicateur * 10; } } /* fin fonction compare */ /* fonction pour gerer l'affichage sur LCD 16,2 */ void LCDAffiche() { // 1° ligne : la resistance mesuree EcranLCD.print(R2); EcranLCD.print(" "); EcranLCD.write((char)244); // le symble ohm EcranLCD.print(" lues"); //2° ligne : la resistance vendue EcranLCD.setCursor(7, 2); EcranLCD.print(Rcommerce); EcranLCD.print(" "); EcranLCD.write((char)244); } void LCDInvite() { EcranLCD.print(" Placez"); // je met les espaces là car il n'affiche rien si je setCursor ??? EcranLCD.setCursor(2, 2); EcranLCD.print("1 resistance"); }
Petit bug d'affichage LCD si je tente de setCursor sur la 1° ligne dans mes fonctions… ? ? ?
connecté comme dans l'exemple de la bibliothèque LiquidCrystal
Prise en main LCD en français grâce à Eskimon Mais si tu préfères les vidéos il y a ça
Les caractères spéciaux de base sont là : charset.gif, il faut traduire leur place dans le tableau binaire en décimal pour les afficher sur LCD. ex convertisseur. Le signe ohm est en char 244.
En testant avec 1 seul étalon de 1Ko on perd la ref à partir de 47Ko (et plus), à améliorer avec 3 résistances connues sur 3 ponts ?
Ce serait chouette si l'affichage donnait les valeurs de référence en lettres : 1K, 1M… etc.