Innehållsförteckning:

Digital skala med ESP32: 12 steg
Digital skala med ESP32: 12 steg

Video: Digital skala med ESP32: 12 steg

Video: Digital skala med ESP32: 12 steg
Video: #5 Аналоговый ввод FLProg на ЖК-дисплее I2C | ESP32 NodeMCU |Визуальное программирование для Arduino 2024, Juli
Anonim
Image
Image
Resurser som används
Resurser som används

Har du någonsin funderat på att montera en digital skala med hjälp av en ESP32 och en sensor (känd som en lastcell)? Idag ska jag visa dig hur du gör detta genom en process som också möjliggör andra laboratorietester, till exempel att identifiera den kraft som en motor utför på en punkt, bland andra exempel.

Jag kommer då att visa några begrepp relaterade till användningen av lastceller, fånga celldata för att bygga en exempelskala och peka på andra möjliga tillämpningar av lastceller.

Steg 1: Resurser som används

• Heltec Lora 32 WiFi ESP

• Lastcell (0 till 50 newton, med hjälp av en skala)

• 1 potentiometer på 100k (bättre om du använder en multivolt trimpot för finjustering)

• 1 Amp Op LM358

• 2 1M5 -motstånd

• 2 10k motstånd

• 1 4k7 motstånd

• Ledningar

• Ett Protoboard

• En USB -kabel för ESP

• En våg, behållare med graderad volym eller någon annan kalibreringsmetod.

Steg 2: Demonstration

Demonstration
Demonstration

Steg 3: Ladda celler

Ladda celler
Ladda celler

• De är kraftgivare.

• De kan använda olika metoder för att översätta den applicerade kraften till en proportionell storlek som kan användas som ett mått. Bland de vanligaste är de som använder arkförlängningsmätare, den piezoelektriska effekten, hydrauliken, vibrerande strängar, etc. …

• De kan också klassificeras efter mätformen (spänning eller kompression)

Steg 4: Ladda celler och silmätare

Ladda celler och silmätare
Ladda celler och silmätare
Ladda celler och silmätare
Ladda celler och silmätare

• Arkförlängningsmätare är filmer (vanligtvis plast) med en tryckt tråd som har ett motstånd som kan variera med storleksändringen.

• Konstruktionen syftar främst till att omvandla en mekanisk deformation till en variation av elektrisk storlek (motstånd). Detta sker företrädesvis i en enda riktning, så att komponentutvärdering kan utföras. För detta är kombinationen av flera extensometrar vanlig

• När den är ordentligt ansluten till en kropp motsvarar dess deformation kroppens. Således varierar dess motstånd med deformationen av kroppen, som i sin tur är relaterad till deformeringskraften.

• De är också kända som töjningsmätare.

• När de sträcks med en dragkraft, förlängs strängarna och smalnar, vilket ökar motståndet.

• När de komprimeras av en tryckkraft förkortas och vidgas trådarna, vilket minskar motståndet.

Steg 5: Wheatstone Bridge

Wheatstone Bridge
Wheatstone Bridge

• För en mer exakt mätning och för att möjliggöra effektivare detektering av resistansvariationer i en lastcell, monteras töjningsmätaren till en Wheatstone -bro.

• I denna konfiguration kan vi bestämma variationen av motståndet genom broens obalans.

• Om R1 = Rx och R2 = R3, kommer spänningsdelarna att vara lika, och spänningarna Vc och Vb kommer också att vara lika, med bron i jämvikt. Det vill säga Vbc = 0V;

• Om Rx är annan än R1 är bron obalanserad och spänningen Vbc är noll.

• Det är möjligt att visa hur denna variation ska ske, men här kommer vi att göra en direkt kalibrering, som relaterar värdet som läses i ADC till en massa som appliceras på lastcellen.

Steg 6: Förstärkning

Förstärkning
Förstärkning

• Även om Wheatstone -bron används för att göra avläsningen mer effektiv, ger mikrodeformationerna i lastcellens metall små spänningsvariationer mellan Vbc.

• För att lösa denna situation kommer vi att använda två steg av förstärkning. En för att bestämma skillnaden och en annan för att matcha värdet som erhållits med ADC för ESP.

Steg 7: Förstärkning (schema)

Förstärkning (schema)
Förstärkning (schema)

• Förstärkningen för subtraktionssteget ges av R6 / R5 och är densamma som R7 / R8.

• Förstärkningen av det icke-inverterande sista steget ges av Pot / R10

Steg 8: Insamling av data för kalibrering

Insamling av data för kalibrering
Insamling av data för kalibrering
Insamling av data för kalibrering
Insamling av data för kalibrering

• Efter montering ställer vi in den slutliga förstärkningen så att värdet på den största uppmätta massan är nära ADC: s maximala värde. I detta fall, för 2 kg applicerad i cellen, var utspänningen cirka 3V3.

• Därefter varierar vi den applicerade massan (känd genom en balans och för varje värde), och vi associerar en LEITUR för ADC, så att vi får nästa tabell.

Steg 9: Erhålla funktionsförhållande mellan uppmätt massa och värdet av erhållen ADC

Erhålla funktionsförhållande mellan uppmätt massa och värdet av erhållen ADC
Erhålla funktionsförhållande mellan uppmätt massa och värdet av erhållen ADC

Vi använder PolySolve -programvaran för att få ett polynom som representerar förhållandet mellan massan och värdet på ADC.

Steg 10: Källkod

Källkod - #Inkluderar

Nu när vi har hur man får mätningarna och känner till förhållandet mellan ADC och den applicerade massan kan vi gå vidare till att faktiskt skriva programvaran.

// 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"

Källkod - #Defines

// Os pinos do OLED estão conectados ao ESP32 pelos 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 genom programvara

Källa - Globala variabler och konstanter

SSD1306 -skärm (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

Källkod - Setup ()

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}

Källkod - Loop ()

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 contendo o instante, a medida média do ADC e o valor em gramas // para a Serial. Serial.print (millis () / 1000.0, 0); // instante em segundos Serial.print (","); Serial.print (medidas, 3); // valor médio obtido no ADC Serial.print (","); Serial.println ((massa), 1); // massa em gramas // Skapa ingen buffert och visa 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); // Skapa ingen buffert och visa en massa 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 está ligado a menos de 5 segundos {display.clear (); // limpa o buffert visar display.setTextAlignment (TEXT_ALIGN_LEFT); // Ajusta o alinhamento para a esquerda display.setFont (ArialMT_Plain_24); // ajusta a fonte para Arial 24 display.drawString (0, 0, "Balança"); // escreve no buffer 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); }

Källkod - FunktionsberäkningMassa ()

// 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 * -3320838 * 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; }

Steg 11: Starta och mäta

Start och mätning
Start och mätning

Steg 12: Filer

Ladda ner filerna

INO

PDF

Rekommenderad: