Inhaltsverzeichnis:

Digitalwaage mit ESP32 - Gunook
Digitalwaage mit ESP32 - Gunook

Video: Digitalwaage mit ESP32 - Gunook

Video: Digitalwaage mit ESP32 - Gunook
Video: Arduino Tropfenzähler wiegt die Tropfen mit der Waage 2024, November
Anonim
Image
Image
Verwendete Ressourcen
Verwendete Ressourcen

Haben Sie schon einmal darüber nachgedacht, eine digitale Waage mit einem ESP32 und einem Sensor (bekannt als Wägezelle) zu montieren? Heute zeige ich Ihnen, wie dies durch einen Prozess geht, der auch andere Labortests ermöglicht, wie unter anderem die Ermittlung der Kraft, die ein Motor auf einen Punkt ausübt.

Anschließend werde ich einige Konzepte im Zusammenhang mit der Verwendung von Wägezellen demonstrieren, Zellendaten erfassen, um eine Beispielwaage zu bauen, und auf andere mögliche Anwendungen von Wägezellen hinweisen.

Schritt 1: Verwendete Ressourcen

• Heltec Lora 32 WLAN-ESP

• Wägezelle (0 bis 50 Newton, mit einer Waage)

• 1 Potentiometer von 100k (besser, wenn Sie ein Multivolt-Trimmpotentiometer zur Feineinstellung verwenden)

• 1 Ampere Op LM358

• 2 1M5 Widerstände

• 2 10k Widerstände

• 1 4k7-Widerstand

• Drähte

• Ein Protoboard

• Ein USB-Kabel für ESP

• Eine Waage, ein Behälter mit graduiertem Volumen oder eine andere Kalibriermethode.

Schritt 2: Demonstration

Demonstration
Demonstration

Schritt 3: Wägezellen

Wägezellen
Wägezellen

• Sie sind Kraftaufnehmer.

• Sie können verschiedene Methoden anwenden, um die aufgebrachte Kraft in eine proportionale Größe umzuwandeln, die als Maß verwendet werden kann. Zu den gebräuchlichsten gehören diejenigen, die Plattenextensometer, den piezoelektrischen Effekt, Hydraulik, vibrierende Saiten usw. verwenden.

• Sie können auch nach der Messform (Zug oder Druck) klassifiziert werden

Schritt 4: Wägezellen und Dehnungsmessstreifen

Wägezellen und Dehnungsmessstreifen
Wägezellen und Dehnungsmessstreifen
Wägezellen und Dehnungsmessstreifen
Wägezellen und Dehnungsmessstreifen

• Plattenextensometer sind Folien (normalerweise Kunststoff) mit einem gedruckten Draht, deren Widerstand sich mit ihrer Größenänderung ändern kann.

• Seine Konstruktion zielt hauptsächlich darauf ab, eine mechanische Verformung in eine Variation einer elektrischen Größe (Widerstand) umzuwandeln. Dies erfolgt vorzugsweise in einer einzigen Richtung, so dass eine Bauteilbewertung durchgeführt werden kann. Hierfür ist die Kombination mehrerer Dehnungsaufnehmer üblich

• Bei richtiger Befestigung an einem Körper entspricht seine Verformung der des Körpers. Somit variiert sein Widerstand mit der Verformung des Körpers, die wiederum mit der Verformungskraft zusammenhängt.

• Sie werden auch als Dehnungsmessstreifen bezeichnet.

• Wenn sie durch eine Zugkraft gedehnt werden, verlängern und verengen sich die Litzen, was den Widerstand erhöht.

• Beim Zusammendrücken durch eine Druckkraft verkürzen und weiten sich die Drähte, wodurch der Widerstand verringert wird.

Schritt 5: Wheatstone-Brücke

Wheatstone-Brücke
Wheatstone-Brücke

• Für eine genauere Messung und um eine effizientere Erkennung von Widerstandsschwankungen in einer Wägezelle zu ermöglichen, ist der Dehnungsmessstreifen in eine Wheatstone-Brücke eingebaut.

• In dieser Konfiguration können wir die Widerstandsänderung durch die Brückenunsymmetrie bestimmen.

• Wenn R1 = Rx und R2 = R3 sind, sind die Spannungsteiler gleich und die Spannungen Vc und Vb sind auch gleich, wobei die Brücke im Gleichgewicht ist. Das heißt, Vbc = 0 V;

• Wenn Rx nicht R1 ist, ist die Brücke unsymmetrisch und die Spannung Vbc ist ungleich Null.

• Es ist möglich zu zeigen, wie diese Abweichung auftreten sollte, aber hier führen wir eine direkte Kalibrierung durch, indem wir den im ADC gelesenen Wert auf eine an der Wägezelle aufgebrachte Masse beziehen.

Schritt 6: Verstärkung

Verstärkung
Verstärkung

• Selbst wenn die Wheatstone-Brücke verwendet wird, um das Ablesen effizienter zu machen, erzeugen die Mikroverformungen im Metall der Wägezelle kleine Spannungsschwankungen zwischen Vbc.

• Um diese Situation zu lösen, verwenden wir zwei Verstärkungsstufen. Eine, um die Differenz zu bestimmen, und eine andere, um den erhaltenen Wert mit dem ADC des ESP abzugleichen.

Schritt 7: Amplifikation (Schema)

Verstärkung (Schema)
Verstärkung (Schema)

• Die Verstärkung des Subtraktionsschritts wird durch R6 / R5 gegeben und ist gleich R7 / R8.

• Die Verstärkung des nicht-invertierenden Endschritts ist gegeben durch Pot / R10

Schritt 8: Erfassung von Daten für die Kalibrierung

Sammlung von Daten für die Kalibrierung
Sammlung von Daten für die Kalibrierung
Sammlung von Daten für die Kalibrierung
Sammlung von Daten für die Kalibrierung

• Nach dem Zusammenbau stellen wir die endgültige Verstärkung so ein, dass der Wert der größten gemessenen Masse nahe am Maximalwert des ADC liegt. In diesem Fall betrug die Ausgangsspannung für 2 kg in der Zelle etwa 3 V3.

• Als nächstes variieren wir die aufgebrachte Masse (bekannt durch eine Waage und für jeden Wert) und ordnen einen LEITUR des ADC zu, um die nächste Tabelle zu erhalten.

Schritt 9: Erhalten der Funktionsbeziehung zwischen der gemessenen Masse und dem Wert des erhaltenen ADC

Erhalten der Funktionsbeziehung zwischen der gemessenen Masse und dem Wert des erhaltenen ADC
Erhalten der Funktionsbeziehung zwischen der gemessenen Masse und dem Wert des erhaltenen ADC

Wir verwenden die PolySolve-Software, um ein Polynom zu erhalten, das die Beziehung zwischen der Masse und dem Wert des ADC darstellt.

Schritt 10: Quellcode

Quellcode - #Enthält

Nachdem wir nun wissen, wie wir die Messungen erhalten und die Beziehung zwischen dem ADC und der aufgebrachten Masse kennen, können wir mit dem eigentlichen Schreiben der Software fortfahren.

// Bibliotecas para utilização do display oLED#include // Notwendige Apenas für Arduino 1.6.5 und anterior #include "SSD1306.h" // oder mesmo que #include "SSD1306Wire.h"

Quellcode - #Defines

//Os pinos do OLED estão conectados ao ESP32 pelos seguintes GPIOs://OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado por software

Quelle - Globale Variablen und Konstanten

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

Quellcode - Einrichtung ()

Void setup () {pinMode (pin, INPUT); // Pino de leitura analógica Serial.begin (115200); // iniciando eine serielle // Inicia o display.init(); display.flipScreenVertically(); //Vira a tela verticalmente }

Quellcode - Schleife ()

Void Schleife () { float medidas = 0.0; // variável para manipular als 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 contendo o instante, a media media do ADC und valor em gramas //para a Serial. Serial.print (millis () / 1000.0, 0); // Instant em Segundos Serial.print (", "); Serial.print (Medidas, 3); // Valor médio obtido kein ADC Serial.print (", "); Serial.println ((Massa), 1); //massa em gramas //Escreve no buffer do display.clear(); //Limpa o Buffer do display //ajusta o alinhamento para a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); //Escreve kein Puffer, um eine Massa anzuzeigen display.drawString(0, 0, "Massa: " + String(int(massa)) + "g"); // escreve no buffer o valor do ADC display.drawString(0, 30, "ADC: " + String(int(medidas))); aufrechtzuerhalten. Sonst //se está ligado a menos de 5 segundos { display.clear(); // schlaffe oder Puffer zeigen display.setTextAlignment (TEXT_ALIGN_LEFT); //Ajusta oder alinhamento para a esquerda display.setFont(ArialMT_Plain_24); // ajusta a fonte para Arial 24 display.drawString(0, 0, "Balança"); // Escreve kein Puffer display.setFont(ArialMT_Plain_16); //Ajusta a fonte para Arial 16 display.drawString(0, 26, "ESP-WiFi-Lora"); // escreve no buffer } display.display(); // transfere o buffer para o display delay (50); }

Quellcode - Funktion 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.684944732070e-04 * medida * medida + -3.7-4810 * 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; }

Schritt 11: Starten und Messen

Starten und Messen
Starten und Messen

Schritt 12: Dateien

Laden Sie die Dateien herunter

INO

PDF

Empfohlen: