Table des matières:

Voltmètre Arduino précis et précis (0-90V DC): 3 étapes
Voltmètre Arduino précis et précis (0-90V DC): 3 étapes

Vidéo: Voltmètre Arduino précis et précis (0-90V DC): 3 étapes

Vidéo: Voltmètre Arduino précis et précis (0-90V DC): 3 étapes
Vidéo: Review of ZL-SJVA-4X 35W Step up/Down Constant Current Converter Charger 2024, Juin
Anonim

Dans ce instructable, j'ai construit un voltmètre pour mesurer les hautes tensions DC (0-90v) avec une précision et une exactitude relatives à l'aide d'un Arduino Nano.

Les mesures de test que j'ai prises étaient suffisamment précises, principalement à moins de 0,3 V de la tension réelle mesurée avec un voltmètre standard (j'ai utilisé un Astro AI DM6000AR). C'est assez proche pour mon utilisation prévue de l'appareil.

Pour archiver cela, j'ai utilisé une référence de tension (4.096v) et un diviseur de tension.

Côté code, j'ai bien entendu utilisé l'option "référence externe" pour l'Arduino Nano et l'exemple "Lissage" dans les tutoriels Arduino.

Fournitures

1 x Arduino Nano - Lien

1 x écran Oled (SSD 1306) - Lien

1 x Résistances 1/4W 1% - 1k ohm - Lien

1 x Résistances 1/4W 1% - 220k ohm - Lien

1 x Résistances 1/4W 1% - 10k ohm - Lien

1 x 4.096v LM4040DIZ-4.1 Référence de tension - Lien

Planche à pain et fils - Lien

Astro AI DM6000AR - Lien

Banque d'alimentation USB - Lien

Piles 9V - Lien

CanadianWinters participe au programme d'associés d'Amazon Services LLC, un programme de publicité d'affiliation conçu pour permettre aux sites de gagner des frais en se connectant à Amazon.com et aux sites affiliés. En utilisant ces liens, en tant qu'associé Amazon, je gagne des achats éligibles, même si vous achetez autre chose, et cela ne vous coûtera rien.

Étape 1: les schémas

Les schémas
Les schémas
Les schémas
Les schémas

J'ai connecté toutes les pièces selon les schémas ci-dessus. J'ai notamment choisi la référence de tension 4.096 pour rester le plus près possible de la marque 5v pour éviter de perdre en résolution.

En suivant la fiche technique, j'ai choisi une résistance de 1K ohm pour la référence de tension même si une valeur différente pouvait être utilisée. La tension pour la référence est fournie par la broche Nano 5v.

L'idée du circuit est que la tension continue à mesurer passe par une résistance de tension. La tension mise à l'échelle pénètre ensuite dans la broche analogique de l'Arduino pour être échantillonnée, lissée, redimensionnée et affichée sur l'écran OLed.

J'ai essayé de garder les choses simples:)

Étape 2: Les calculs de code et de résistance

Les valeurs des résistances ont été choisies car il est conseillé (si je ne me trompe pas c'est sur la fiche technique Arduino/Atmega) de maintenir l'impédance en dessous de 10k ohm.

Pour simplifier les choses, j'ai fait un tableur qui automatise les calculs au cas où vous voudriez utiliser différentes valeurs de résistance: Lien vers Google Sheet

Voici le code que j'ai utilisé pour ce projet:

#comprendre

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (rotation, [réinitialiser]) tension flottante =0; // utilisé pour stocker la valeur de tension float Radjust = 0.043459459; //Facteur diviseur de tension (R2 / R1+R2) float vbat =0; //tension finale après calculs- tension du flotteur de la batterie Vref = 4,113; //Référence de tension - valeur réelle mesurée. Valeur nominale 4.096v const int numReadings = 50; // nombre d'échantillons de lecture - augmenter pour plus de lissage. Diminuer pour une lecture plus rapide. int lectures[numLectures]; // les lectures de l'entrée analogique int readIndex = 0; // l'index de la lecture en cours total long non signé = 0; // le total cumulé int moyenne = 0; //variables pour rafraîchir l'écran sans utiliser de délai non signé long previousMillis = 0; // stockera la dernière mise à jour de l'écran // les constantes ne changeront pas: const long interval = 50; // intervalle d'actualisation de l'écran (millisecondes) void setup(void) { analogReference(EXTERNAL); // utilise AREF pour la tension de référence 4.096. Ma tension réelle de référence est 4.113v u8g2.begin(); for (int thisReading = 0; thisReading = numReadings) { // …revenir au début: readIndex = 0; } // calcule la moyenne: moyenne = (total / numReadings); tension = moyenne * (Vref / 1023.0); //4.113 est la Vref vbat = voltage/Radjust; // Réglage du délai pour le rafraîchissement de l'écran à l'aide de Millis if (currentMillis - previousMillis >= interval) { // enregistre la dernière fois que l'écran a été mis à jour previousMillis = currentMillis; u8g2.clearBuffer(); // efface la mémoire interne // Affichage de la tension du pack u8g2.setFont(u8g2_font_fub20_tr); // police 20px u8g2.setCursor (1, 20); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // police 10 px u8g2.setCursor (76, 20); u8g2.print("Volts"); u8g2.setCurseur (1, 40); u8g2.print("Les Hivers Canadiens"); u8g2.setCurseur (1, 60); u8g2.print ("Tension précise"); } u8g2.sendBuffer(); // transfert de la mémoire interne vers l'affichage delay(1); }

Veuillez noter que je suis un peu rouillé avec le codage Arduino, donc si vous trouvez une erreur ou un moyen d'améliorer le code, je suis ouvert aux suggestions:)

Étape 3: Testons-le

Testons-le !
Testons-le !
Testons-le !
Testons-le !
Testons-le !
Testons-le !

Pour tester ce voltmètre, j'ai utilisé des piles 8x 9v que j'ai achetées dans un magasin local. Je prévois d'utiliser ce voltmètre pour mesurer la tension sur les batteries de mes vélos électriques (ils ont des tensions allant de 24-60v avec des 72v occasionnelles).

Une fois que l'électronique est emballée dans un circuit imprimé et une petite boîte, cela fera un compteur de batterie agréable et portable. Les graphiques et les polices de l'OLED peuvent être personnalisés pour répondre à vos besoins (par exemple, une police plus grande pour une lecture facile).

Mon objectif était d'avoir une lecture de tension sur le compteur Oled/Arduino pas trop loin de mon multimètre numérique. Je visais +/-0, 3v max delta. Comme vous pouvez le voir sur la vidéo, j'ai pu archiver cela, sauf à l'extrémité supérieure des mesures.

J'espère que vous avez apprécié ce Instructable et laissez-moi savoir vos pensées !

Conseillé: