Spisu treści:

Cyfrowa waga z ESP32: 12 kroków
Cyfrowa waga z ESP32: 12 kroków

Wideo: Cyfrowa waga z ESP32: 12 kroków

Wideo: Cyfrowa waga z ESP32: 12 kroków
Wideo: ESP32 Tutorial 5 - LED Fade, control brightness of an LED -ESP32 IoT Learnig kit 2024, Listopad
Anonim
Image
Image
Wykorzystane zasoby
Wykorzystane zasoby

Czy kiedykolwiek myślałeś o zamontowaniu wagi cyfrowej za pomocą ESP32 i czujnika (zwanego ogniwem tensometrycznym)? Dzisiaj pokażę, jak to zrobić w procesie, który pozwala również na inne testy laboratoryjne, takie jak identyfikacja siły, jaką silnik wywiera na punkt, między innymi.

Następnie zademonstruję niektóre koncepcje związane z wykorzystaniem ogniw obciążeniowych, przechwycę dane z ogniw w celu zbudowania przykładowej skali i wskażę inne możliwe zastosowania ogniw obciążeniowych.

Krok 1: Wykorzystane zasoby

• Heltec Lora 32 WiFi ESP

• Ogniwo obciążnikowe (0 do 50 niutonów, przy użyciu wagi)

• 1 potencjometr 100k (lepiej, jeśli używasz potencjometru wielowoltowego do precyzyjnej regulacji)

• 1 A Optyczny LM358

• 2 rezystory 1M5

• 2 rezystory 10k

• 1 rezystor 4k7

• Przewody

• Płyta prototypowa

• Kabel USB do ESP

• Waga, pojemnik ze stopniowaną objętością lub jakakolwiek inna metoda kalibracji.

Krok 2: Demonstracja

Demonstracja
Demonstracja

Krok 3: Załaduj ogniwa

Ogniwa obciążnikowe
Ogniwa obciążnikowe

• Są przetwornikami siły.

• Mogą używać różnych metod, aby przełożyć przyłożoną siłę na proporcjonalną wielkość, którą można wykorzystać jako miarę. Do najczęstszych należą te wykorzystujące ekstensometry arkuszowe, efekt piezoelektryczny THE, hydraulikę, wibrujące struny itp.

• Można je również klasyfikować według formy pomiaru (rozciąganie lub ściskanie)

Krok 4: Ogniwa obciążnikowe i tensometry

Czujniki tensometryczne i tensometry
Czujniki tensometryczne i tensometry
Czujniki tensometryczne i tensometry
Czujniki tensometryczne i tensometry

• Ekstensometry arkuszowe to folie (zwykle plastikowe) z zadrukowanym drutem, których rezystancja może zmieniać się wraz ze zmianą ich rozmiaru.

• Jego konstrukcja ma na celu głównie przekształcenie odkształcenia mechanicznego w zmianę wielkości elektrycznej (rezystancję). Odbywa się to korzystnie w jednym kierunku, dzięki czemu można przeprowadzić ocenę komponentów. W tym celu powszechne jest połączenie kilku ekstensometrów

• Po prawidłowym przymocowaniu do ciała jego odkształcenie jest równe odkształceniu ciała. Zatem jego opór zmienia się wraz z odkształceniem ciała, co z kolei jest związane z siłą odkształcającą.

• Znane są również jako tensometry.

• Przy rozciąganiu siłą rozciągającą splotki wydłużają się i zwężają, zwiększając wytrzymałość.

• Przy ściskaniu siłą ściskającą, druty skracają się i rozszerzają, zmniejszając opór.

Krok 5: Most Wheatstone

Most Wheatstone
Most Wheatstone

• Aby uzyskać dokładniejszy pomiar i umożliwić bardziej efektywne wykrywanie zmian rezystancji w ogniwie obciążnikowym, tensometr jest montowany w mostku Wheatstone'a.

• W tej konfiguracji możemy określić zmienność rezystancji przez nierównowagę mostka.

• Jeśli R1 = Rx i R2 = R3, dzielniki napięcia będą równe, a napięcia Vc i Vb również będą równe, z mostkiem w równowadze. Oznacza to, że Vbc = 0V;

• Jeśli Rx jest inny niż R1, mostek będzie niezrównoważony, a napięcie Vbc będzie niezerowe.

• Możliwe jest pokazanie, jak ta zmiana powinna wystąpić, ale tutaj wykonamy bezpośrednią kalibrację, odnosząc wartość odczytaną w ADC do masy przyłożonej do ogniwa obciążnikowego.

Krok 6: Wzmocnienie

Wzmocnienie
Wzmocnienie

• Nawet przy użyciu mostka Wheatstone'a w celu zwiększenia wydajności odczytu, mikroodkształcenia w metalu ogniwa obciążnikowego powodują niewielkie wahania napięcia między Vbc.

• Aby rozwiązać tę sytuację, wykorzystamy dwa etapy wzmocnienia. Jeden, aby określić różnicę, a drugi, aby dopasować uzyskaną wartość do ADC ESP.

Krok 7: Amplifikacja (schemat)

Amplifikacja (schemat)
Amplifikacja (schemat)

• Wzmocnienie kroku odejmowania jest podane przez R6 / R5 i jest takie samo jak R7 / R8.

• Wzmocnienie nieodwracającego kroku końcowego jest podane przez Pot / R10

Krok 8: Zbieranie danych do kalibracji

Zbieranie danych do kalibracji
Zbieranie danych do kalibracji
Zbieranie danych do kalibracji
Zbieranie danych do kalibracji

• Po zmontowaniu ustawiamy końcowe wzmocnienie tak, aby wartość największej zmierzonej masy była zbliżona do maksymalnej wartości ADC. W tym przypadku dla 2kg przyłożonych do ogniwa napięcie wyjściowe wynosiło około 3V3.

• Następnie różnicujemy zaaplikowaną masę (znaną przez wagę i dla każdej wartości) i kojarzymy LEITUR ADC, uzyskując następną tabelę.

Krok 9: Uzyskanie zależności funkcji między zmierzoną masą a uzyskaną wartością ADC

Uzyskiwanie zależności funkcji między zmierzoną masą a uzyskaną wartością ADC
Uzyskiwanie zależności funkcji między zmierzoną masą a uzyskaną wartością ADC

Używamy oprogramowania PolySolve, aby uzyskać wielomian reprezentujący zależność między masą a wartością ADC.

Krok 10: Kod źródłowy

Kod źródłowy - #Zawiera

Teraz, gdy wiemy, jak uzyskać pomiary i znamy zależność między ADC a przyłożoną masą, możemy przejść do faktycznego pisania oprogramowania.

//Biblioteka dotycząca obsługi wyświetlania oLED#include // Niezbędne elementy dla Arduino 1.6.5 i przednie #include „SSD1306.h” // o wiadomości #include „SSD1306Wire.h”

Kod źródłowy - #Definiuje

//Os do łączenia urządzeń OLED ao ESP32 następujące po kolei GPIO's://OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 //RST deve ser ajustado oprogramowanie por

Źródło - zmienne i stałe globalne

Wyświetlacz 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

Kod źródłowy - konfiguracja ()

void setup(){ pinMode(pin, INPUT); //pino de leitura analógica Serial.begin(115200); //zainicjuj serial // Zainicjuj wyświetlanie display.init(); display.flipScreenPionowo(); //Vira a tela verticalmente }

Kod źródłowy - pętla ()

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, media media to ADC i Valor em gramas //dla serialu. Serial.print (millis() / 1000.0, 0); //natychmiastowa kolejność Serial.print(", "); Serial.print(medidas, 3);//valor médio obtido no ADC Serial.print(", "); Serial.println((masa), 1); //Massa em gramas //Usuń brak bufora do wyświetlania display.clear(); //Wyłącz wyświetlanie bufora //ustawiaj wyświetlanie na wyświetlaczu.setTextAlignment(TEXT_ALIGN_LEFT); //ustaw czcionkę dla Arial 16 display.setFont(ArialMT_Plain_16); //Usuń brak bufora, aby wyświetlić display massa.drawString(0, 0, "Massa: " + String(int(massa)) + "g"); //usuń brak bufora dla ADC display.drawString(0, 30, "ADC: " + String(int(medidas))); } else //se está ligado a menos de 5 segundos { display.clear(); //Limpa o bufor wyświetla display.setTextAlignment(TEXT_ALIGN_LEFT); //Dostosuj lub zapisz na wyświetlaczu display.setFont(ArialMT_Plain_24); //dostosuj czcionkę do Arial 24 display.drawString(0, 0, "Balança"); //usuń brak bufora display.setFont(ArialMT_Plain_16);//Ustaw czcionkę dla Arial 16 display.drawString(0, 26, "ESP-WiFi-Lora"); //usuń brak bufora } display.display();//przenieś bufor para o display delay(50); }

Kod źródłowy - funkcja calculaMassa ()

//função para cálculo da massa obtida pela regressão//usando oPolySolve float calculaMassa (float medida) { powrót -6.798357840659e+01 + 3.885671618930e-01 * medida + 3.684944764970e-04 * medida-07 * medida + -3.79838320 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; }

Krok 11: Rozpoczęcie i pomiar

Rozpoczęcie i pomiar
Rozpoczęcie i pomiar

Krok 12: Pliki

Pobierz pliki

JA NIE

PDF

Zalecana: