Open form

Wykorzystanie belki tensometrycznej przy pomocy Arduino

Belka tensometryczna umożliwia zważenie danego przedmiotu. Ten krótki poradnik pokazuje jak ją obsłużyć wykorzystując płytkę Arduino Uno.

 

W przykładzie wykorzystano następujące elementy:

 

Podłączenie

Moduł jest zasilany bezpośrednio z Arduino, więc nie potrzebujemy zewnętrznego źródła energii. Piny podpinamy według poniższej tabeli:

 

Pin wzmacniacza Pin Arduino
VCC 5 V
DAT 3
CLK 2
GND GND

 

Z drugiej strony modułu wzmacniacza podpinamy belkę tensometryczną według kolorów przewodów.

  • RED - czerwony
  • BLK - czarny
  • WHT - biały
  • GRN - zielony

 

 Schemat podłączenia belki, wzmacniacza i Arduino Uno.

 

Obsługa

Na początku bibliotekę należy dodać do środowiska Arduino (Szkic -> Include Library -> Add .ZIP Library...).

W przykładzie zostały wykorzystane programy z dołączonej biblioteki. Na początek należy uruchomić program kalibracyjny SparkFun_HX711_Calibration (Plik -> Przykłady -> HX711 -> SparkFun_HX711_Calibration). Dzięki niemu możemy określić współczynnik dla użytej belki tensometrycznej.

Uruchamiamy układ bez obciążenia na belce. Następnie wkładamy przedmiot o znanej masie. Teraz za pomocą przycisków "+" i "-" (lub "a" i "z") ustawiamy odczyt tak, aby zgadzał się z naszą znaną masą, np.

 

Zrzut ekrany z monitora portu szeregowego.

 

Poniżej wykorzystany program (na podstawie tego z biblioteki)

 

  1. #include "HX711.h"
  2.  
  3. #define DOUT 3 //pin 3 Arduino i wyjście DAT czujnika
  4. #define CLK 2 //pin 2 Arduino i wyjście CLK czujnika
  5.  
  6. HX711 scale(DOUT, CLK);
  7.  
  8. float calibration_factor = -7050; //współczynnik kalibracji
  9.  
  10. void setup() {
  11. Serial.begin(9600);
  12. Serial.println("HX711 - program kalibracyjny");
  13. Serial.println("Usun obciazenie z belki");
  14. Serial.println("Po rozpoczeciu odczytu, umiesc znana mase na belce");
  15. Serial.println("Wcisnij + lub a by zwiekszyc wspolczynnik kalibracji");
  16. Serial.println("Wcisnij - lub z by zwiekszyc wspolczynnik kalibracji");
  17.  
  18. scale.set_scale();
  19. scale.tare(); //Resetuje skalę na 0
  20.  
  21. long zero_factor = scale.read_average(); //Odczyt podstawy
  22. Serial.print("Zero factor: "); //Może być wykorzystane aby usunąć potrzebę tarowania skali. Użyteczne w projektach o stałej skalli
  23. Serial.println(zero_factor);
  24. }
  25.  
  26. void loop() {
  27.  
  28. scale.set_scale(calibration_factor); //Wyrównanie według współczynnika kalibracji
  29.  
  30. Serial.print("Odczyt: ");
  31. Serial.print(scale.get_units(), 1);
  32. Serial.print(" kg"); //Dowolnie możemy wybrać kilogramy lub funty, ponieważ między nimi jest liniowa zależność
  33. Serial.print(" Wspolczynnik_kalibracji: ");
  34. Serial.print(calibration_factor);
  35. Serial.println();
  36.  
  37. if(Serial.available())
  38. {
  39. char temp = Serial.read(); //pobranie wpisanej wartości i zmiana współczynnika kalibracji
  40. if(temp == '+' || temp == 'a')
  41. calibration_factor += 10;
  42. else if(temp == '-' || temp == 'z')
  43. calibration_factor -= 10;
  44. }
  45. }

 

Następnie odczytaną wartość należy wykorzystać w programie SparkFun_HX711_Example (Plik -> Przykłady -> HX711 -> SparkFun_HX711_Example). My użyjemy spolszczonego programu:

 

  1. #include "HX711.h"
  2.  
  3. #define calibration_factor -3350.0 //Odczytana wartość z programu kalibracyjnego
  4.  
  5. #define DOUT 3 //pin 3 Arduino i wyjście DAT czujnika
  6. #define CLK 2 //pin 2 Arduino i wyjście CLK czujnika
  7.  
  8. HX711 scale(DOUT, CLK);
  9.  
  10. void setup() {
  11. Serial.begin(9600);
  12. Serial.println("HX711 scale demo");
  13.  
  14. scale.set_scale(calibration_factor); //Ustawienie kalibracji
  15. scale.tare(); //Zerowanie wskazania na początek
  16.  
  17. Serial.println("Odczyty:");
  18. }
  19.  
  20. void loop() {
  21. Serial.print("Odczyt: ");
  22. Serial.print(scale.get_units(), 1); //scale.get_units() zwraca zmienną float
  23. Serial.print(" kg"); //Dowolnie możemy wybrać kilogramy lub funty, lecz przy zmianie zmienia się również współczynnik kalibracji
  24. Serial.println();
  25. }

 

Teraz możemy ważyć dowolne przedmioty. Wynik pracy programu widoczny jest na screenie poniżej:

 

Zrzut ekrany z monitora portu szeregowego.

zapraszamy do współpracy!