Table des matières:

Balance numérique avec ESP32 : 12 étapes
Balance numérique avec ESP32 : 12 étapes

Vidéo: Balance numérique avec ESP32 : 12 étapes

Vidéo: Balance numérique avec ESP32 : 12 étapes
Vidéo: balance ESP 32 2024, Juillet
Anonim
Image
Image
Ressources utilisées
Ressources utilisées

Avez-vous déjà pensé à monter une balance numérique à l'aide d'un ESP32 et d'un capteur (appelé cellule de charge) ? Aujourd'hui, je vais vous montrer comment faire cela grâce à un processus qui permet également d'autres tests de laboratoire, tels que l'identification de la force qu'un moteur exerce sur un point, entre autres exemples.

Je vais ensuite démontrer certains concepts liés à l'utilisation des cellules de charge, capturer les données des cellules pour créer un exemple de balance et souligner d'autres applications possibles des cellules de charge.

Étape 1: Ressources utilisées

• Heltec Lora 32 WiFi ESP

• Cellule de charge (0 à 50 newtons, à l'aide d'une balance)

• 1 potentiomètre de 100k (mieux si vous utilisez un potentiomètre multivolt pour un réglage fin)

• 1 ampli op LM358

• 2 résistances 1M5

• 2 résistances de 10k

• 1 résistance 4k7

• Fils

• Un Protoboard

• Un câble USB pour ESP

• Une balance, un récipient à volume gradué ou toute autre méthode d'étalonnage.

Étape 2: Démonstration

Manifestation
Manifestation

Étape 3: Cellules de charge

Des cellules de charge
Des cellules de charge

• Ce sont des capteurs de force.

• Ils peuvent utiliser diverses méthodes pour traduire la force appliquée en une grandeur proportionnelle qui peut être utilisée comme mesure. Parmi les plus courants, on trouve ceux utilisant des extensomètres à feuilles, L'effet piézoélectrique, l'hydraulique, les cordes vibrantes, etc…

• Ils peuvent également être classés par la forme de mesure (tension ou compression)

Étape 4: Cellules de charge et jauges de contrainte

Cellules de charge et jauges de contrainte
Cellules de charge et jauges de contrainte
Cellules de charge et jauges de contrainte
Cellules de charge et jauges de contrainte

• Les extensomètres en feuille sont des films (généralement en plastique) avec un fil imprimé qui ont une résistance qui peut varier avec leur changement de taille.

• Sa construction vise principalement à convertir une déformation mécanique en une variation d'une grandeur électrique (résistance). Cela se produit de préférence dans une seule direction, de sorte que l'évaluation des composants peut être effectuée. Pour cela, la combinaison de plusieurs extensomètres est courante

• Lorsqu'il est correctement attaché à un corps, sa déformation est égale à celle du corps. Ainsi, sa résistance varie avec la déformation du corps, qui à son tour est liée à la force de déformation.

• Ils sont également appelés jauges de contrainte.

• Lorsqu'ils sont étirés par une force de traction, les brins s'allongent et se rétrécissent, augmentant la résistance.

• Lorsqu'ils sont comprimés par une force de compression, les fils se raccourcissent et s'élargissent, réduisant la résistance.

Étape 5: Pont de Wheatstone

Pont de Wheatstone
Pont de Wheatstone

• Pour une mesure plus précise et pour permettre une détection plus efficace de la variation de résistance dans une cellule de charge, la jauge de contrainte est assemblée dans un pont de Wheatstone.

• Dans cette configuration, on peut déterminer la variation de la résistance à travers le déséquilibre du pont.

• Si R1 = Rx et R2 = R3, les diviseurs de tension seront égaux, et les tensions Vc et Vb seront également égales, avec le pont en équilibre. C'est-à-dire que Vbc = 0V;

• Si Rx est différent de R1, le pont sera déséquilibré et la tension Vbc sera non nulle.

• Il est possible de montrer comment cette variation doit se produire, mais ici, nous allons faire un étalonnage direct, en rapportant la valeur lue dans l'ADC à une masse appliquée à la cellule de charge.

Étape 6: Amplification

Amplification
Amplification

• Même en utilisant le pont de Wheatstone pour rendre la lecture plus efficace, les micro déformations dans le métal de la cellule de charge produisent de petites variations de tension entre Vbc.

• Pour résoudre cette situation, nous utiliserons deux étages d'amplification. Un pour déterminer la différence et un autre pour faire correspondre la valeur obtenue à l'ADC de l'ESP.

Étape 7: Amplification (schéma)

Amplification (schéma)
Amplification (schéma)

• Le gain du pas de soustraction est donné par R6 / R5 et est le même que R7 / R8.

• Le gain du pas final non inverseur est donné par Pot / R10

Étape 8: Collecte des données pour l'étalonnage

Collecte de données pour l'étalonnage
Collecte de données pour l'étalonnage
Collecte de données pour l'étalonnage
Collecte de données pour l'étalonnage

• Une fois assemblé, on règle le gain final pour que la valeur de la plus grande masse mesurée soit proche de la valeur maximale de l'ADC. Dans ce cas, pour 2kg appliqués dans la cellule, la tension de sortie était d'environ 3V3.

• Ensuite, on fait varier la masse appliquée (connue grâce à une balance et pour chaque valeur), et on associe un LEITUR de l'ADC, obtenant le tableau suivant.

Étape 9: Obtention de la relation fonctionnelle entre la masse mesurée et la valeur de l'ADC obtenue

Obtention de la relation fonctionnelle entre la masse mesurée et la valeur de l'ADC obtenue
Obtention de la relation fonctionnelle entre la masse mesurée et la valeur de l'ADC obtenue

Nous utilisons le logiciel PolySolve pour obtenir un polynôme qui représente la relation entre la masse et la valeur de l'ADC.

Étape 10: Code source

Code source - #Inclut

Maintenant que nous savons comment obtenir les mesures et connaître la relation entre l'ADC et la masse appliquée, nous pouvons passer à l'écriture du logiciel.

//Bibliotecas para utilização do display oLED#include // Necessário apenas para o Arduino 1.6.5 e anterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h"

Code source - #Defines

//Os pinos do OLED estão conectados ao ESP32 seguintes GPIO's://OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado par logiciel

Source - Variables et constantes globales

Affichage SSD1306 (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display" const int amostras = 10000; //número de amostras coletadas para a média const int pin = 13; //pino de leitura

Code source - Configuration ()

void setup(){ pinMode(pin, INPUT); //pino de leitura analógica Serial.begin(115200); //Iniciando a serial //Inicia o display display.init(); display.flipScreenVertically(); //Vira a tela verticalmente }

Code source - Boucle ()

void loop(){ float medidas = 0.0;//variável para manipular as medidas float massa = 0.0; //variável para armazenar o valor da massa //inicia a coleta de amostras do ADC for (int i = 0; i (5000)) //se está ligado a mais que 5 segundos { //Envia um CSV conflicto o instante, a medida média do ADC e o valor em gramas //para a Serial. Serial.print (millis() / 1000.0, 0); //instantané en deux Serial.print(", "); Serial.print(medidas, 3);//valor médio obtido no ADC Serial.print(", "); Serial.println((massa), 1); //massa em gramas //Escreve aucun tampon n'affiche display.clear(); //Limpa o buffer do display //justa o alinhamento para a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //juste une police pour Arial 16 display.setFont(ArialMT_Plain_16); //Escreve aucun tampon n'affiche une masse display.drawString(0, 0, "Massa: " + String(int(massa)) + "g"); // escreve no buffer o valor do ADC display.drawString(0, 30, "ADC: " + String(int(medidas))); } else //se ligado a menos de 5 segundos { display.clear(); //limpa o buffer affiche display.setTextAlignment(TEXT_ALIGN_LEFT); //Régler ou aligner pour un affichage display.setFont(ArialMT_Plain_24); //juste une police pour Arial 24 display.drawString(0, 0, "Balança"); // escreve no buffer display.setFont(ArialMT_Plain_16); // Ajuste une police pour Arial 16 display.drawString(0, 26, "ESP-WiFi-Lora"); // escreve no buffer } display.display();//transfere o buffer para o display delay(50); }

Code source - Fonction calculaMassa ()

//função para cálculo da massa obtida pela regressão//usando oPolySolve float calculaMassa (float medida) { return -6.798357840659e+01 + 3.885671618930e-01 * medida + 3.684944764970e-04 * medida * medida + -3.748108838 medida * medida * medida + 1.796252359323e-10 * medida * medida * medida * medida + -3.995722708150e-14 * medida * medida * medida * medida * medida + 3.284692453344e-18 * medida * medida * medida * medida * medida * medida; }

Étape 11: Démarrage et mesure

Démarrage et mesure
Démarrage et mesure

Étape 12: Fichiers

Télécharger les fichiers

INO

PDF

Conseillé: