Sommario:

Bilancia digitale con ESP32: 12 passaggi
Bilancia digitale con ESP32: 12 passaggi

Video: Bilancia digitale con ESP32: 12 passaggi

Video: Bilancia digitale con ESP32: 12 passaggi
Video: Arduino + 5kg Load Cell Sensor + HX711 Module | Arduino Digital Scales with Load Cell Sensor & HX711 2024, Dicembre
Anonim
Image
Image
Risorse utilizzate
Risorse utilizzate

Hai mai pensato di montare una bilancia digitale utilizzando un ESP32 e un sensore (noto come cella di carico)? Oggi ti mostrerò come farlo attraverso un processo che consente anche altri test di laboratorio, come l'identificazione della forza che un motore esercita su un punto, tra gli altri esempi.

Dimostrerò quindi alcuni concetti relativi all'uso delle celle di carico, catturerò i dati delle celle per costruire una scala di esempio e indicherò altre possibili applicazioni delle celle di carico.

Passaggio 1: risorse utilizzate

• Heltec Lora 32 WiFi ESP

• Cella di carico (da 0 a 50 newton, utilizzando una bilancia)

• 1 potenziometro da 100k (meglio se si usa un trimpot multivolt per la regolazione fine)

• 1 Amplificatore Op LM358

• 2 resistenze 1M5

• 2 resistori da 10k

• 1 resistenza 4k7

• Fili

• Una scheda prototipo

• Un cavo USB per ESP

• Una bilancia, un contenitore con volume graduato o qualsiasi altro metodo di calibrazione.

Passaggio 2: dimostrazione

Dimostrazione
Dimostrazione

Passaggio 3: celle di carico

Celle di carico
Celle di carico

• Sono trasduttori di forza.

• Possono utilizzare vari metodi per tradurre la forza applicata in una grandezza proporzionale che può essere utilizzata come misura. Tra i più comuni ci sono quelli che utilizzano estensimetri a lamiera, L'effetto piezoelettrico, idraulici, corde vibranti, ecc…

• Possono essere classificati anche in base alla forma di misura (tensione o compressione)

Passaggio 4: celle di carico ed estensimetri

Celle di carico ed estensimetri
Celle di carico ed estensimetri
Celle di carico ed estensimetri
Celle di carico ed estensimetri

• Gli estensimetri a foglio sono film (solitamente plastici) con un filo stampato che hanno una resistenza che può variare al variare della loro dimensione.

• La sua costruzione mira principalmente a convertire una deformazione meccanica in una variazione di grandezza elettrica (resistenza). Ciò avviene preferibilmente in un'unica direzione, in modo da poter eseguire la valutazione dei componenti. Per questo, è comune la combinazione di più estensimetri

• Quando è correttamente attaccato a un corpo, la sua deformazione è uguale a quella del corpo. Pertanto, la sua resistenza varia con la deformazione del corpo, che a sua volta è correlata alla forza deformante.

• Sono anche conosciuti come estensimetri.

• Quando vengono allungati da una forza di trazione, i trefoli si allungano e si restringono, aumentando la resistenza.

• Quando vengono compressi da una forza di compressione, i fili si accorciano e si allargano, riducendo la resistenza.

Passaggio 5: ponte di Wheatstone

Ponte di Wheatstone
Ponte di Wheatstone

• Per una misurazione più accurata e per consentire un rilevamento più efficiente della variazione di resistenza in una cella di carico, l'estensimetro è assemblato in un ponte di Wheatstone.

• In questa configurazione, possiamo determinare la variazione della resistenza attraverso lo squilibrio del ponte.

• Se R1 = Rx e R2 = R3, i divisori di tensione saranno uguali, e anche le tensioni Vc e Vb saranno uguali, con il ponte in equilibrio. Cioè, Vbc = 0V;

• Se Rx è diverso da R1, il ponte sarà sbilanciato e la tensione Vbc sarà diversa da zero.

• È possibile mostrare come dovrebbe avvenire questa variazione, ma qui faremo una calibrazione diretta, mettendo in relazione il valore letto nell'ADC con una massa applicata alla cella di carico.

Passaggio 6: amplificazione

Amplificazione
Amplificazione

• Anche utilizzando il ponte di Wheatstone per rendere più efficiente la lettura, le micro deformazioni nel metallo della cella di carico producono piccole variazioni di tensione tra Vbc.

• Per risolvere questa situazione, utilizzeremo due stadi di amplificazione. Uno per determinare la differenza e un altro per abbinare il valore ottenuto all'ADC dell'ESP.

Passaggio 7: amplificazione (schema)

Amplificazione (schema)
Amplificazione (schema)

• Il guadagno del passo di sottrazione è dato da R6/R5 ed è lo stesso di R7/R8.

• Il guadagno del passo finale non invertente è dato da Pot / R10

Passaggio 8: raccolta dei dati per la calibrazione

Raccolta di dati per la calibrazione
Raccolta di dati per la calibrazione
Raccolta di dati per la calibrazione
Raccolta di dati per la calibrazione

• Una volta assemblato, impostiamo il guadagno finale in modo che il valore della massa maggiore misurata si avvicini al valore massimo dell'ADC. In questo caso, per 2kg applicati nella cella, la tensione di uscita era di circa 3V3.

• Successivamente, si varia la massa applicata (nota tramite una bilancia e per ogni valore), e si associa un LEITUR dell'ADC, ottenendo la tabella successiva.

Passaggio 9: ottenere la relazione della funzione tra la massa misurata e il valore dell'ADC ottenuto

Ottenimento della funzione Relazione tra la massa misurata e il valore dell'ADC ottenuto
Ottenimento della funzione Relazione tra la massa misurata e il valore dell'ADC ottenuto

Utilizziamo il software PolySolve per ottenere un polinomio che rappresenti il rapporto tra la massa e il valore dell'ADC.

Passaggio 10: codice sorgente

Codice sorgente - #Includes

Ora che sappiamo come ottenere le misurazioni e conoscere la relazione tra l'ADC e la massa applicata, possiamo passare alla scrittura del software.

//Biblioteca per l'utilizzo del display oLED#include // Necessario per accedere a Arduino 1.6.5 e anterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h"

Codice sorgente - #Definisce

//Os pinos do OLED estão conectados ao ESP32 segue GPIO's://OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado per software

Sorgente - Variabili e costanti globali

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

Codice sorgente - Configurazione ()

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

Codice sorgente - Ciclo ()

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 secondi 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 a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //aggiusta una fonte per Arial 16 display.setFont(ArialMT_Plain_16); //Escreve no buffer visualizza un 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 è legato a meno di 5 secondi { display.clear(); //limpa o buffer visualizza display.setTextAlignment(TEXT_ALIGN_LEFT); //Ajusta o alinhamento para a esquerda display.setFont(ArialMT_Plain_24); //aggiusta una fonte per Arial 24 display.drawString(0, 0, "Bilancia"); //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); }

Codice sorgente - Funzione 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.70748108838320e- 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 meda; }

Passaggio 11: avvio e misurazione

Avvio e misurazione
Avvio e misurazione

Passaggio 12: file

Scarica i file

IO NO

PDF

Consigliato: