Voltmètre à quatre canaux 0-50V basé sur le kit de laboratoire numérique NR05

Souvent , il est nécessaire de surveiller simultanément plusieurs tensions, par exemple, la sortie de la tension d'alimentation de l' ordinateur, plusieurs batteries et ainsi de suite. N. La dernière publication , nous avons examiné comment le travail la serrure à combinaison, et maintenant, sur la base du kit de carte d'extension « Digital Lab» NR05 , Collect numérique à quatre canaux voltmètre avec indication des résultats sur l'écran intégré à la carte. La plage de tensions mesurées peut être modifiée à l'aide d'un diviseur externe, et l'étape de mesure est déterminée par la résolution du convertisseur analogique-numérique (ADC) du microcontrôleur Atmega 328 utilisé dans la carte Arduino et est de 1024 valeurs. Ensuite, dans la plage de tension de 0 à 50 V, l'étape de mesure de la tension sera d'environ 50 mV, ce qui est tout à fait suffisant pour un usage domestique.



Nous connecterons les tensions mesurées aux entrées analogiques libres de la carte. Ce sont les entrées A0, A4, A5 et A7 situées dans la partie inférieure droite de la carte. Pour utiliser l'entrée A0, retirez temporairement la résistance R4 située près du connecteur XP3 dans la partie inférieure droite de la carte.



Nous allons fabriquer un diviseur externe avec des connecteurs pour connecter les tensions mesurées et une carte d'extension en utilisant la méthode LUT (dite "technologie de repassage laser") et graver la carte dans une solution de chlorure ferrique. Nous avons utilisé des résistances SMD, mais si vous n'avez pas d'imprimante laser, vous pouvez faire le séparateur en dessinant des conducteurs avec un stylo feutre étanche. Dans ce cas, il est préférable d'utiliser des résistances de sortie, car la précision de taille des conducteurs résultants sera plus faible. En détail, la technologie de fabrication de circuits imprimés par gravure dans du chlorure ferrique peut être étudiée en achetant un jeu de NN201 produit par Master Kit.

Le panneau de séparation fini est illustré sur la photo ci-dessous.



La carte d'extension a un écran à cristaux liquides à 2 lignes avec 16 caractères sur chaque ligne. Sur un tel indicateur, quatre lectures de 0 à 50 volts avec une décimale et des identificateurs de canal sont assez confortables à placer.

Les mesures elles-mêmes sont recommandées d'effectuer plusieurs fois en peu de temps, en faisant la moyenne de leurs valeurs. Cela réduira les erreurs de mesure aléatoires.
Nous réalisons également dans le programme «gel» les résultats lorsque vous cliquez sur l'un des boutons intégrés dans la carte, par exemple, celui du milieu. Une deuxième pression reprendra les mesures en continu.

Nous utilisons la LED connectée à la 13e sortie numérique d'Arduino pour indiquer le processus de mesure.

Sur la base de ce qui précède, nous réaliserons un programme pour Arduino:

Spoiler
/*--------------------------------------------------------------
0-50, ,
, LCD-
16 , 2 ,


NR05 « »; 4 10
1, 100, A0,A4,A5,A7


5 V_REF
.
-
.

(
)
Vin
.
Vout .
DIV_* Vin/Vout.

startingelectronics.com
--------------------------------------------------------------*/
#include <LiquidCrystal.h>

// ( )
#define LED 13
//
#define NUM_SAMPLES 20
//
#define DIV_1 11.186
#define DIV_2 11.186
#define DIV_3 11.186
#define DIV_4 11.186
//
#define V_REF 4.575
//
#define NUM_KEYS 5
// ( )
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};

LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
unsigned long sum[4] = {0}; //
unsigned char sample_count = 0; //
float voltage[4] = {0.0}; //
int cnt = 0; //
int keyIsPressed = 0; // «»

void setup()
{
lcd.begin(16, 2);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}

void loop()
{
// 3 , «»
if (get_key() == 3){
keyIsPressed = !keyIsPressed;
delay(500);
}
// (1),
if (keyIsPressed == 0){
digitalWrite(LED, LOW);
//
while (sample_count < NUM_SAMPLES) {
// sample channel A0, A4, A5, A7
sum[0] += analogRead(A0);
sum[1] += analogRead(A4);
sum[2] += analogRead(A5);
sum[3] += analogRead(A7);
sample_count++;
delay(10);
}
digitalWrite(LED, HIGH);
//
for (cnt = 0; cnt < 4; cnt++) {
voltage[cnt] = ((float)sum[cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
}
//
lcd.setCursor(0, 0);
lcd.print(«A „);
lcd.print(voltage[0] * DIV_1, 1);
lcd.print(“V „);
// voltage 2 — B (pin A4)
lcd.setCursor(8, 0);
lcd.print(“B „);
lcd.print(voltage[1] * DIV_2, 1);
lcd.print(“V „);
// voltge 3 — C (pin A5)
lcd.setCursor(0, 1);
lcd.print(“C „);
lcd.print(voltage[2] * DIV_3, 1);
lcd.print(“V „);
// voltage 4 — D (pin A7)
lcd.setCursor(8, 1);
lcd.print(“D „);
lcd.print(voltage[3] * DIV_4, 1);
lcd.print(“V „);

//
sample_count = 0;
for (cnt = 0; cnt < 4; cnt++) sum[cnt] = 0;
delay(20);
}
}

//
int get_key()
{
int input = analogRead(A6);
int k;
for (k = 0; k < NUM_KEYS; k++)
if (input < adcKeyVal[k])
return k + 1;
return 0;
}


Le programme est équipé de commentaires suffisamment détaillés expliquant les caractéristiques de la mise en œuvre de l'algorithme.

La caractéristique la plus importante est peut-être le processus d'étalonnage des constantes décrites dans les commentaires impliqués dans le calcul des tensions mesurées. Pour calibrer le diviseur (effectué une fois), utilisez une source de tension constante stable. Étant donné que l'étalonnage prend peu de temps, vous pouvez utiliser avec succès une pile 9 V «Krona» et un multimètre numérique. Un multimètre du "Set of a Young Electronic Engineer" NR02 est tout à fait approprié. Ce kit est également idéal pour enseigner la soudure et l'assemblage de circuits imprimés.

Il convient de noter que lorsque la tension d'alimentation arrivant à Arduino change, les valeurs d'étalonnage de la tension de référence doivent être modifiées en conséquence, dont les valeurs relatives sont mesurées.

Pour modifier la plage de mesure, il est nécessaire d'appliquer un diviseur avec un rapport de division différent de la tension d'entrée.

Source: https://habr.com/ru/post/fr393225/


All Articles