Innholdsfortegnelse:

Digital skala med ESP32: 12 trinn
Digital skala med ESP32: 12 trinn

Video: Digital skala med ESP32: 12 trinn

Video: Digital skala med ESP32: 12 trinn
Video: ESP32 Tutorial 3 - Resistor, LED, Bredboard and First Project: Hello LED -ESP32 IoT Learnig kit 2024, November
Anonim
Image
Image
Ressurser brukt
Ressurser brukt

Har du noen gang tenkt på å montere en digital skala ved hjelp av en ESP32 og en sensor (kjent som en lastcelle)? I dag skal jeg vise deg hvordan du gjør dette gjennom en prosess som også tillater andre laboratorietester, for eksempel å identifisere kraften som en motor utfører på et punkt, blant andre eksempler.

Jeg vil da demonstrere noen konsepter knyttet til bruk av lastceller, fange celledata for å bygge en eksempelskala og påpeke andre mulige applikasjoner av lastceller.

Trinn 1: Ressurser brukt

• Heltec Lora 32 WiFi ESP

• Lastecelle (0 til 50 newton, ved hjelp av en skala)

• 1 potensiometer på 100k (bedre hvis du bruker en multivolt trimpot for finjustering)

• 1 Amp Op LM358

• 2 1M5 motstander

• 2 10k motstander

• 1 4k7 motstand

• Ledninger

• Et Protoboard

• En USB -kabel for ESP

• En skala, beholder med gradert volum eller annen kalibreringsmetode.

Trinn 2: Demonstrasjon

Demonstrasjon
Demonstrasjon

Trinn 3: Last inn celler

Last inn celler
Last inn celler

• De er kraftoverførere.

• De kan bruke forskjellige metoder for å oversette den påførte kraften til en proporsjonal størrelse som kan brukes som et mål. Blant de vanligste er de som bruker arkforlengelsesmålere, den piezoelektriske effekten, hydraulikk, vibrerende strenger, osv …

• De kan også klassifiseres etter måleformen (spenning eller kompresjon)

Trinn 4: Last inn celler og silemålere

Last inn celler og strekkmålere
Last inn celler og strekkmålere
Last inn celler og strekkmålere
Last inn celler og strekkmålere

• Arkforlengelsesmålere er filmer (vanligvis plast) med en trykt tråd som har en motstand som kan variere med størrelsesendringen.

• Konstruksjonen tar hovedsakelig sikte på å konvertere en mekanisk deformasjon til en variasjon av elektrisk størrelse (motstand). Dette skjer fortrinnsvis i en enkelt retning, slik at komponentevaluering kan utføres. For dette er kombinasjonen av flere ekstensometre vanlig

• Når den er riktig festet til et legeme, er dens deformasjon lik kroppens. Dermed varierer motstanden med deformasjonen av kroppen, som igjen er relatert til deformeringskraften.

• De er også kjent som strekkmålere.

• Når de strekkes med en strekkraft, forlenger trådene og smal, og øker motstanden.

• Når de komprimeres av en trykkraft, forkortes og utvides ledningene, noe som reduserer motstanden.

Trinn 5: Wheatstone Bridge

Wheatstone Bridge
Wheatstone Bridge

• For en mer nøyaktig måling og for å muliggjøre mer effektiv deteksjon av motstandsvariasjon i en lastcelle, blir strekkmåleren satt sammen til en Wheatstone -bro.

• I denne konfigurasjonen kan vi bestemme variasjonen av motstanden gjennom broens ubalanse.

• Hvis R1 = Rx og R2 = R3, vil spenningsdelerne være like, og spenningene Vc og Vb vil også være like, med broen i likevekt. Det vil si Vbc = 0V;

• Hvis Rx er annen enn R1, vil broen være ubalansert og spenningen Vbc vil være null.

• Det er mulig å vise hvordan denne variasjonen skal forekomme, men her vil vi foreta en direkte kalibrering, som relaterer verdien som er lest i ADC til en masse som påføres lastcellen.

Trinn 6: Forsterkning

Forsterkning
Forsterkning

• Selv om du bruker Wheatstone -broen for å gjøre avlesningen mer effektiv, gir mikrodeformasjonene i metallet i lastcellen små spenningsvariasjoner mellom Vbc.

• For å løse denne situasjonen vil vi bruke to trinn av forsterkning. En for å bestemme forskjellen og en annen for å matche verdien som er oppnådd med ADC for ESP.

Trinn 7: Forsterkning (skjema)

Forsterkning (skjema)
Forsterkning (skjema)

• Forsterkningen av subtraksjonstrinnet er gitt med R6 / R5 og er den samme som R7 / R8.

• Gevinsten av det ikke-inverterende siste trinnet er gitt av Pot / R10

Trinn 8: Innsamling av data for kalibrering

Innsamling av data for kalibrering
Innsamling av data for kalibrering
Innsamling av data for kalibrering
Innsamling av data for kalibrering

• Når det er satt sammen, setter vi den endelige forsterkningen slik at verdien av den største målte massen er nær maksimalverdien til ADC. I dette tilfellet, for 2 kg påført i cellen, var utgangsspenningen rundt 3V3.

• Deretter varierer vi den påførte massen (kjent gjennom en balanse og for hver verdi), og vi knytter en LEITUR for ADC, og får neste tabell.

Trinn 9: Oppnå funksjonsforhold mellom målt masse og verdien av ADC oppnådd

Oppnå funksjonsforhold mellom målt masse og verdien av ADC oppnådd
Oppnå funksjonsforhold mellom målt masse og verdien av ADC oppnådd

Vi bruker PolySolve -programvaren til å skaffe et polynom som representerer forholdet mellom massen og verdien av ADC.

Trinn 10: Kildekode

Kildekode - #Inkluderer

Nå som vi har hvordan vi får målingene og kjenner forholdet mellom ADC og den påførte massen, kan vi gå videre til å faktisk skrive programvaren.

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

Kildekode - #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 av programvare

Kilde - Globale variabler og konstanter

SSD1306 -skjerm (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

Kildekode - Oppsett ()

ugyldig oppsett () {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}

Kildekode - sløyfe ()

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 ((masse), 1); // massa em gramas // Oppbevar ingen buffer for å vise display.clear (); // Limpa o buffer do display // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte for Arial 16 display.setFont (ArialMT_Plain_16); // Skap ingen buffer for å vise en masse display.drawString (0, 0, "Massa:" + String (int (massa)) + "g"); // ikke oppgi noen buffer eller verdi for ADC display.drawString (0, 30, "ADC:" + String (int (medidas))); } annet // se está ligado a menos de 5 segundos {display.clear (); // limpa o buffer viser display.setTextAlignment (TEXT_ALIGN_LEFT); // Ajusta o alinhamento para a esquerda display.setFont (ArialMT_Plain_24); // ajusta a fonte for Arial 24 display.drawString (0, 0, "Balança"); // escreve no buffer display.setFont (ArialMT_Plain_16); // Ajusta a fonte for Arial 16 display.drawString (0, 26, "ESP-WiFi-Lora"); // ikke oppgi buffer} display.display (); // overføre eller buffer for displayforsinkelse (50); }

Kildekode - FunksjonsberegningMassa ()

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

Trinn 11: Start og måling

Start og måling
Start og måling

Trinn 12: Filer

Last ned filene

INO

PDF

Anbefalt: