• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Układ z tensometrami i HX711
#1
Question 
Cześć, pracuję nad projektem pomiaru mocy generowanej na rowerze i do tego celu kupiłem i zainstalowałem cztery czujniki 120Ohm na ramieniu korby. Stworzyłem pełny mostek wheatstone'a a przewody wyprowadziłem na moduł HX7111 i obserwuję przebieg w IDE. Układ reaguje jakoś na moje ruchy, działania, ale brakuje w tym wszystkim logiki. Chodzi o to, że kładąc odważnik na ramieniu wartość odczytywana rośnie, ale gdy ściągnie ciężar to wartość pozostaje. Raz wyniki pełzną po zerze, w innym przypadku wartości delikatnie i liniowo rosną. Ogólnie rzecz ujmując to pukając, obciążając ramię widać jak układ reaguje ale te reakcje są każdego rodzaju. Jest ktoś w stanie poradzić co mogę w takim przypadku zrobić? Już jestem bezradny a potrzebuję ukończyć ten projekt na studia, pozostałe podpunkty zrealizowałem, ale tego najważniejszego mi brakuje. Z góry dziękuję za pomoc.
 
Odpowiedź
#2
Jeśli problem jest związany z programem to należy go tu zamieścić.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
Próbuję uruchamiać różne kody do kalibracji, jednak z tego co widzę problem jest stały. Zamieszczam kod, nad którym najczęściej siedzę, jest to kod ściągnięty z opracowania z internetu, jednak większość używając modułu HX711 korzysta z gotowej belki tensometrycznej.

Kod:
/*
Setup your scale and start the sketch WITHOUT a weight on the scale
Once readings are displayed place the weight on the scale
Press +/- or a/z to adjust the calibration_factor until the output readings match the known weight
Arduino pin 5 -> HX711 CLK
Arduino pin 6 -> HX711 DOUT
Arduino pin 5V -> HX711 VCC
Arduino pin GND -> HX711 GND
*/

#include "HX711.h"

HX711 scale(A2, A3);

float calibration_factor = -375; // this calibration factor is adjusted according to my load cell
float units;
float ounces;

void setup() {
  Serial.begin(9600);
  Serial.println("HX711 calibration sketch");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press + or a to increase calibration factor");
  Serial.println("Press - or z to decrease calibration factor");

  scale.set_scale();
  scale.tare();  //Reset the scale to 0

  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}

void loop() {

  scale.set_scale(calibration_factor); //Adjust to this calibration factor

  Serial.print("Reading: ");
  units = scale.get_units(), 10;
  if (units < 0)
  {
    units = 0.00;
  }
  ounces = units * 0.035274;
  Serial.print(units);
  Serial.print(" grams");
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();

  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 1;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 1;
  }
}
 
Odpowiedź
#4
Dodaję zdjęcie, gdzie widać problem; waga swobodnie wisi na ramieniu a wartości w stałym tempie narastają. Pisząc ten post wartości doszły do -18000

link do zdjęcia - - - - >>>> https://ibb.co/3Rhhh2y
 
Odpowiedź
#5
(22-06-2019, 11:16)Zebedeusz napisał(a): Dodaję zdjęcie, gdzie widać problem; waga swobodnie wisi na ramieniu a wartości w stałym tempie narastają. Pisząc ten post wartości doszły do -18000
Jak zresetujesz uC używając wejścia reset, to zjawisko powtarza się i odczyty zaczynają rosnąc od ok -4000?
 
Odpowiedź
#6
Zdjęcie wklej do postu w pełnej edycji, możesz wyedytować poprzedni post.
Tego jesteś pewien:
Kod:
void loop() {

  scale.set_scale(calibration_factor); //Adjust to this calibration factor
w każdym loop robisz kalibrację?
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#7
W tym programie chodziło o to, że ręcznie kalibruje się wagę wpisując + / - w serial monitorze i ręcznie, w locie zmienia się wartość współczynnika kalibracji.
Zresetowałem programowo, ale dalej wyniki po prostu powoli rosną, pomimo stałego obciążenia, używając

Kod:
void(* resetFunc) (void) = 0;//declare reset function at address 0
resetFunc();
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości