Indholdsfortegnelse:

Digital skala med ESP32: 12 trin
Digital skala med ESP32: 12 trin

Video: Digital skala med ESP32: 12 trin

Video: Digital skala med ESP32: 12 trin
Video: ESP32 Tutorial 10 - Digital counter using Seven Segment Display 74HC595 -ESP32 IoT Learnig kit 2024, November
Anonim
Image
Image
Ressourcer brugt
Ressourcer brugt

Har du nogensinde tænkt på at montere en digital skala ved hjælp af en ESP32 og en sensor (kendt som en vejecelle)? I dag vil jeg vise dig, hvordan du gør dette gennem en proces, der også giver mulighed for andre laboratorietests, såsom at identificere den kraft, en motor udfører på et punkt, blandt andre eksempler.

Jeg vil derefter demonstrere nogle begreber relateret til brugen af vejeceller, fange celledata for at bygge en eksempelskala og påpege andre mulige anvendelser af vejeceller.

Trin 1: Brugte ressourcer

• Heltec Lora 32 WiFi ESP

• Load celle (0 til 50 newton, ved hjælp af en skala)

• 1 potentiometer på 100k (bedre hvis du bruger en multivolt trimpot til finjustering)

• 1 Amp Op LM358

• 2 1M5 modstande

• 2 10k modstande

• 1 4k7 modstand

• Ledninger

• Et Protoboard

• Et USB -kabel til ESP

• En vægt, beholder med gradueret volumen eller en anden kalibreringsmetode.

Trin 2: Demonstration

Demonstration
Demonstration

Trin 3: Indlæs celler

Indlæse celler
Indlæse celler

• De er krafttransducere.

• De kan bruge forskellige metoder til at oversætte den anvendte kraft til en proportional størrelse, der kan bruges som et mål. Blandt de mest almindelige er dem, der bruger arkekstensometre, den piezoelektriske effekt, hydraulik, vibrerende strenge osv …

• De kan også klassificeres efter måleformen (spænding eller kompression)

Trin 4: Indlæs celler og stammålere

Indlæs celler og belastningsmålere
Indlæs celler og belastningsmålere
Indlæs celler og belastningsmålere
Indlæs celler og belastningsmålere

• Arkforlængere er film (normalt plastik) med en trykt tråd, der har en modstand, der kan variere med deres størrelsesændring.

• Konstruktionen har hovedsageligt til formål at konvertere en mekanisk deformation til en variation af elektrisk størrelse (modstand). Dette sker fortrinsvis i en enkelt retning, så komponentevaluering kan udføres. Til dette er kombinationen af flere ekstensometre almindelig

• Når den er korrekt fastgjort til et legeme, er dens deformation lig med kroppens. Således varierer dens modstand med deformationen af kroppen, som igen er relateret til deformeringskraften.

• De er også kendt som belastningsmålere.

• Når de strækkes af en trækstyrke, forlænges strengene og smalner, hvilket øger modstanden.

• Når de komprimeres af en trykkraft, forkortes og udvides ledningerne, hvilket reducerer modstanden.

Trin 5: Wheatstone Bridge

Wheatstone Bridge
Wheatstone Bridge

• For en mere nøjagtig måling og for at muliggøre en mere effektiv detektion af modstandsvariation i en vejecelle samles belastningsmåleren til en Wheatstone -bro.

• I denne konfiguration kan vi bestemme variationen af modstanden gennem broens ubalance.

• Hvis R1 = Rx og R2 = R3, vil spændingsdelerne være ens, og spændingerne Vc og Vb vil også være ens, med broen i ligevægt. Det vil sige, Vbc = 0V;

• Hvis Rx er anden end R1, vil broen være ubalanceret, og spændingen Vbc vil være nul.

• Det er muligt at vise, hvordan denne variation skal forekomme, men her foretager vi en direkte kalibrering, der relaterer værdien, der er læst i ADC, til en masse, der påføres vejecellen.

Trin 6: Forstærkning

Forstærkning
Forstærkning

• Selv ved at bruge Wheatstone -broen til at gøre aflæsningen mere effektiv, producerer mikrodeformationerne i metallet i vejecellen små spændingsvariationer mellem Vbc.

• For at løse denne situation vil vi bruge to trin af forstærkning. En for at bestemme forskellen og en anden for at matche den opnåede værdi til ADC'en for ESP.

Trin 7: Amplifikation (skema)

Forstærkning (skema)
Forstærkning (skema)

• Forstærkningen af subtraktionstrinnet er givet med R6 / R5 og er den samme som R7 / R8.

• Gevinsten ved det ikke-inverterende sidste trin er givet ved Pot / R10

Trin 8: Indsamling af data til kalibrering

Indsamling af data til kalibrering
Indsamling af data til kalibrering
Indsamling af data til kalibrering
Indsamling af data til kalibrering

• Når vi er samlet, indstiller vi den endelige forstærkning, så værdien af den største målte masse er tæt på maksimalværdien af ADC. I dette tilfælde var udgangsspændingen for 2 kg påført i cellen omkring 3V3.

• Dernæst varierer vi den anvendte masse (kendt gennem en saldo og for hver værdi), og vi forbinder en LEITUR for ADC'en og opnår den næste tabel.

Trin 9: Opnåelse af funktionsforhold mellem målt masse og værdien af den opnåede ADC

Opnåelse af funktionsforhold mellem målt masse og værdien af den opnåede ADC
Opnåelse af funktionsforhold mellem målt masse og værdien af den opnåede ADC

Vi bruger PolySolve -softwaren til at opnå et polynom, der repræsenterer forholdet mellem massen og værdien af ADC.

Trin 10: Kildekode

Kildekode - #Inkluderer

Nu hvor vi har, hvordan vi får målingerne og kender forholdet mellem ADC og den anvendte masse, kan vi gå videre til faktisk at skrive softwaren.

// 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 ved software

Kilde - Globale variabler og 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

Kildekode - Opsætning ()

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}

Kildekode - 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); // masse em gramas // Skærm uden buffer vis 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); // Vis ingen buffer, vis en masse display.drawString (0, 0, "Massa:" + String (int (massa)) + "g"); // opretter ingen buffer eller værdi til ADC display.drawString (0, 30, "ADC:" + String (int (medidas))); } ellers // 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 para 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"); // escreve no buffer} display.display (); // transfere o buffer para o display delay (50); }

Kildekode - FunktionsberegningMassa ()

// função para cálculo da masse 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; }

Trin 11: Start og måling

Start og måling
Start og måling

Trin 12: Filer

Download filerne

INO

PDF

Anbefalede: