Sadržaj:

Digitalna vaga s ESP32: 12 koraka
Digitalna vaga s ESP32: 12 koraka

Video: Digitalna vaga s ESP32: 12 koraka

Video: Digitalna vaga s ESP32: 12 koraka
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Srpanj
Anonim
Image
Image
Korišteni resursi
Korišteni resursi

Jeste li ikada razmišljali o postavljanju digitalne vage pomoću ESP32 i senzora (poznatog kao mjerna ćelija)? Danas ću vam pokazati kako to učiniti kroz postupak koji dopušta i druge laboratorijske pretrage, poput identificiranja sile koju motor djeluje na točku, među ostalim primjerima.

Zatim ću demonstrirati neke koncepte koji se odnose na korištenje mjernih ćelija, snimiti podatke o ćelijama za izradu primjera mjerila i ukazati na druge moguće primjene mjernih ćelija.

Korak 1: Korišteni resursi

• Heltec Lora 32 WiFi ESP

• Učitaj ćeliju (0 do 50 newtona, koristeći vagu)

• 1 potenciometar od 100k (bolje ako koristite viševoltni trimpot za fino podešavanje)

• 1 pojačalo Op LM358

• 2 otpornika 1M5

• 2 10k otpornika

• 1 4k7 otpornik

• Žice

• Protoboard

• USB kabel za ESP

• Vaga, spremnik s postepenim volumenom ili bilo koja druga metoda kalibracije.

Korak 2: Demonstracija

Demonstracija
Demonstracija

Korak 3: Učitajte ćelije

Učitaj ćelije
Učitaj ćelije

• Oni su pretvarači sile.

• Mogu koristiti različite metode za prevođenje primijenjene sile u proporcionalnu veličinu koja se može koristiti kao mjera. Među najčešćim su oni koji koriste ekstenzometre od lima, piezoelektrični učinak, hidrauliku, vibrirajuće žice itd …

• Također se mogu klasificirati prema obliku mjerenja (napetost ili kompresija)

Korak 4: Učitajte ćelije i mjerače napona

Mjerila opterećenja i mjerači naprezanja
Mjerila opterećenja i mjerači naprezanja
Mjerila opterećenja i mjerači naprezanja
Mjerila opterećenja i mjerači naprezanja

• Ekstenzimetri listova su filmovi (obično plastični) s tiskanom žicom čiji otpor može varirati ovisno o promjeni njihove veličine.

• Njegova konstrukcija uglavnom ima za cilj pretvoriti mehaničku deformaciju u varijaciju električne veličine (otpora). To se po mogućnosti događa u jednom smjeru, tako da se može izvršiti ocjena komponente. Za to je uobičajena kombinacija nekoliko ekstenzometara

• Kada se pravilno pričvrsti na tijelo, njegova deformacija jednaka je deformaciji tijela. Dakle, njegov otpor varira ovisno o deformaciji tijela, što je pak povezano sa silom deformiranja.

• Poznati su i kao mjerači naprezanja.

• Prilikom rastezanja vlačnom silom, niti se izdužuju i sužavaju, povećavajući otpor.

• Kad se stisnu tlačnom silom, žice se skraćuju i šire, smanjujući otpor.

Korak 5: Wheatstoneov most

Vitstanov most
Vitstanov most

• Za preciznije mjerenje i za učinkovitije otkrivanje varijacija otpora u mjernoj ćeliji, mjerač naprezanja je sastavljen u Wheatstoneov most.

• U ovoj konfiguraciji možemo odrediti promjenu otpora kroz neravnotežu mosta.

• Ako je R1 = Rx i R2 = R3, razdjelnici napona bit će jednaki, a naponi Vc i Vb također će biti jednaki, s mostom u ravnoteži. To jest, Vbc = 0V;

• Ako Rx nije R1, most će biti neuravnotežen, a napon Vbc neće biti nula.

• Moguće je pokazati kako bi se ta varijacija trebala pojaviti, ali ovdje ćemo napraviti izravnu kalibraciju, povezujući očitanu vrijednost u ADC -u s masom primijenjenom na mjernu ćeliju.

Korak 6: Pojačavanje

Pojačanje
Pojačanje

• Čak i pomoću Wheatstonovog mosta kako bi čitanje bilo učinkovitije, mikro deformacije u metalu mjerne ćelije proizvode male varijacije napona između Vbc.

• Za rješavanje ove situacije koristit ćemo dvije faze pojačanja. Jedan za određivanje razlike, a drugi za usklađivanje dobivene vrijednosti s ADC -om ESP -a.

Korak 7: Pojačavanje (shema)

Pojačanje (shema)
Pojačanje (shema)

• Dobitak koraka oduzimanja dan je s R6 / R5 i isti je kao R7 / R8.

• Dobitak neinvertirajućeg završnog koraka dat je Pot / R10

Korak 8: Prikupljanje podataka za kalibraciju

Prikupljanje podataka za kalibraciju
Prikupljanje podataka za kalibraciju
Prikupljanje podataka za kalibraciju
Prikupljanje podataka za kalibraciju

• Nakon sastavljanja namještamo konačni dobitak tako da vrijednost najveće izmjerene mase bude blizu maksimalne vrijednosti ADC -a. U ovom slučaju, za 2 kg primijenjeno u ćeliji, izlazni napon je bio oko 3V3.

• Zatim mijenjamo primijenjenu masu (poznatu putem vage i za svaku vrijednost) i povezujemo LEITUR ADC -a, dobivajući sljedeću tablicu.

Korak 9: Dobivanje odnosa funkcija između izmjerene mase i vrijednosti dobivenog ADC -a

Dobivanje odnosa funkcija između izmjerene mase i vrijednosti dobivenog ADC -a
Dobivanje odnosa funkcija između izmjerene mase i vrijednosti dobivenog ADC -a

Koristimo softver PolySolve za dobivanje polinoma koji predstavlja odnos između mase i vrijednosti ADC -a.

Korak 10: Izvorni kod

Izvorni kod - #Uključuje

Sada kada imamo kako doći do mjerenja i znati odnos između ADC -a i primijenjene mase, možemo prijeći na stvarno pisanje softvera.

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

Izvorni kod - #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 por softver

Izvor - Globalne varijable i konstante

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

Izvorni kod - Postavljanje ()

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

Izvorni kod - Petlja ()

void loop () {float medidas = 0.0; // variável para manipular as medidas float massa = 0.0; // varijaá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. Serijski.ispis (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 // Escreve no buffer do display display.clear (); // Limpa o buffer do display // ajusta o alinhamento para esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); // Escreve no buffer do display a 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 međuspremnik za prikaz 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 (); // prijenos o međuspremnik para o prikaz odgode (50); }

Izvorni kod - Funkcija 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.74888 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; }

Korak 11: Pokretanje i mjerenje

Pokretanje i mjerenje
Pokretanje i mjerenje

Korak 12: Datoteke

Preuzmite datoteke

INO

PDF

Preporučeni: