Cuprins:
- Pasul 1: Resurse utilizate
- Pasul 2: demonstrație
- Pasul 3: Încărcați celulele
- Pasul 4: Încărcați celulele și aparatele de tensiune
- Pasul 5: Podul Wheatstone
- Pasul 6: Amplificare
- Pasul 7: Amplificare (schemă)
- Pasul 8: Colectarea datelor pentru calibrare
- Pasul 9: Obținerea funcției Relația dintre masa măsurată și valoarea ADC obținută
- Pasul 10: Cod sursă
- Pasul 11: Pornire și măsurare
- Pasul 12: Fișiere
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
V-ați gândit vreodată să montați o cântare digitală utilizând un ESP32 și un senzor (cunoscut sub numele de celulă de încărcare)? Astăzi, vă voi arăta cum să faceți acest lucru printr-un proces care permite și alte teste de laborator, cum ar fi identificarea forței pe care o efectuează un motor asupra unui punct, printre alte exemple.
Voi demonstra apoi câteva concepte legate de utilizarea celulelor de încărcare, voi captura date celulare pentru a construi un exemplu de scară și voi arăta alte posibile aplicații ale celulelor de încărcare.
Pasul 1: Resurse utilizate
• Heltec Lora 32 WiFi ESP
• Celula de încărcare (de la 0 la 50 de newtoni, utilizând o scală)
• 1 potențiometru de 100k (mai bine dacă utilizați un trimpot multivolt pentru reglarea fină)
• 1 Amp Op LM358
• 2 rezistențe 1M5
• 2 rezistențe de 10k
• 1 rezistor 4k7
• Fire
• Un Protoboard
• Un cablu USB pentru ESP
• Un cântar, recipient cu volum gradat sau orice altă metodă de calibrare.
Pasul 2: demonstrație
Pasul 3: Încărcați celulele
• Sunt traductoare de forță.
• Pot folosi diverse metode pentru a traduce forța aplicată într-o magnitudine proporțională care poate fi utilizată ca măsură. Printre cele mai frecvente se numără cele care utilizează extensometre cu foi, efectul piezoelectric, hidraulică, corzi vibrante etc.
• Pot fi clasificate și după forma de măsurare (tensiune sau compresie)
Pasul 4: Încărcați celulele și aparatele de tensiune
• Extensometrele pentru foi sunt pelicule (de obicei din plastic) cu o sârmă tipărită care au o rezistență care poate varia în funcție de schimbarea dimensiunii lor.
• Construcția sa vizează în principal transformarea unei deformări mecanice într-o variație de magnitudine electrică (rezistență). Acest lucru are loc de preferință într-o singură direcție, astfel încât să poată fi efectuată evaluarea componentelor. Pentru aceasta, combinația mai multor extensometre este obișnuită
• Când este atașat corespunzător de un corp, deformarea acestuia este egală cu cea a corpului. Astfel, rezistența sa variază în funcție de deformarea corpului, care la rândul său este legată de forța de deformare.
• Sunt, de asemenea, cunoscute sub numele de aparate de măsură.
• Când sunt întinse de o forță de întindere, firele se alungesc și se îngustează, crescând rezistența.
• Când sunt comprimate de o forță de compresie, firele se scurtează și se lărgesc, reducând rezistența.
Pasul 5: Podul Wheatstone
• Pentru o măsurare mai precisă și pentru a permite o detectare mai eficientă a variației rezistenței într-o celulă de sarcină, dispozitivul de măsurare a tensiunii este asamblat într-un pod Wheatstone.
• În această configurație, putem determina variația rezistenței prin dezechilibrul podului.
• Dacă R1 = Rx și R2 = R3, divizoarele de tensiune vor fi egale, iar tensiunile Vc și Vb vor fi de asemenea egale, cu puntea în echilibru. Adică Vbc = 0V;
• Dacă Rx este altul decât R1, puntea va fi dezechilibrată și tensiunea Vbc va fi diferită de zero.
• Este posibil să se arate cum ar trebui să apară această variație, dar aici vom face o calibrare directă, raportând valoarea citită în ADC la o masă aplicată celulei de încărcare.
Pasul 6: Amplificare
• Chiar și folosind puntea Wheatstone pentru a face citirea mai eficientă, micro-deformările din metalul celulei de sarcină produc mici variații de tensiune între Vbc.
• Pentru a rezolva această situație, vom folosi două etape de amplificare. Una pentru a determina diferența și alta pentru a potrivi valoarea obținută cu ADC-ul ESP.
Pasul 7: Amplificare (schemă)
• Câștigul etapei de scădere este dat de R6 / R5 și este același cu R7 / R8.
• Câștigul pasului final care nu se inversează este dat de Pot / R10
Pasul 8: Colectarea datelor pentru calibrare
• Odată asamblat, stabilim câștigul final astfel încât valoarea celei mai mari mase măsurate să fie aproape de valoarea maximă a ADC. În acest caz, pentru 2 kg aplicate în celulă, tensiunea de ieșire a fost de aproximativ 3V3.
• În continuare, vom varia masa aplicată (cunoscută printr-o balanță și pentru fiecare valoare) și vom asocia un LEITUR al ADC, obținând tabelul următor.
Pasul 9: Obținerea funcției Relația dintre masa măsurată și valoarea ADC obținută
Folosim software-ul PolySolve pentru a obține un polinom care reprezintă relația dintre masă și valoarea ADC.
Pasul 10: Cod sursă
Cod sursă - # Include
Acum că avem cum să obținem măsurătorile și să cunoaștem relația dintre ADC și masa aplicată, putem trece la scrierea efectivă a software-ului.
// Bibliotecas pentru utilizare do display oLED # include // Necesar apenas for o Arduino 1.6.5 e anterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h"
Cod sursă - #Defines
// Os pinos do OLED este conectat la ESP32 pentru următorii GPIO's: // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // RST trebuie să fie ajustat prin software
Sursă - Variabile și constante globale
Afișaj SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do object "display" const int amostras = 10000; // número de amostras coletadas para a média const int pin = 13; // pino de leitura
Cod sursă - Configurare ()
void setup () {pinMode (pin, INPUT); // pino de leitura analogică Serial.begin (115200); // iniciando a serial // Inicia o display display.init (); display.flipScreenVertically (); // Vira a tela verticalmente}
Cod sursă - Buclă ()
void loop () {float medidas = 0.0; // variável para manipular as mesures float massa = 0.0; // variável para armazenar o valor da massa // inicia a coleta de amostras do ADC for (int i = 0; i
Cod sursă - Funcția calculaMassa ()
// funcție pentru calculul de masă obținut pela regresie // folosind oPolySolve float calculaMassa (float medida) {return -6.798357840659e + 01 + 3.885671618930e-01 * medida + 3.684944764970e-04 * medida * medida + -3.748108838320e-07 * măsură * măsură * măsură + 1.796252359323e-10 * măsură * măsură * măsură * măsură + -3.995722708150e-14 * măsură * măsură * măsură * măsură * măsură * măsură + 3.284692453344e-18 * măsură * măsură * măsură * măsură * măsură * măsură * măsură; }
Pasul 11: Pornire și măsurare
Pasul 12: Fișiere
Descărcați fișierele
EU NU