Skocz do zawartości
Komentator

(Nie)elektroniczny multimetr DIY z Arduino Pro Mini

Pomocna odpowiedź

Mniej więcej o to.

Tyle, że teraz w programie zamiast linijki:

  mpu6050.calcGyroOffsets(true);

(ostatnia w funkcji setup())

musisz wpisać:

mpu6050.setGyroOffset(-6.33, -1.39, -0.85);

przy czym ostatnie -0.85 to właśnie wartość kalibracji Z, musisz ją zmienić i tak dobrać, aby zmniejszyć dryft żyroskopu do jakiejś akceptowalnej wartości Nie powiem na jaką, bo dla kadego egzemplarza żyroskopu ta wartość będzie inna.

 

Udostępnij ten post


Link to post
Share on other sites

zmieniłem i niestety przy probie kompilacji podświetla mi ta zmieniona  linijkę i mam błąd:

Arduino:1.8.7 (Windows 10), Płytka:"Arduino Nano, ATmega328P (Old Bootloader)"

C:\Users\Fujitsu\Desktop\akcelerometr\final_code\final_code.ino: In function 'void setup()':

final_code:45:11: error: 'class MPU6050' has no member named 'setGyroOffset'

   mpu6050.setGyroOffset(-6.33, -1.39, -0.85);

           ^

exit status 1
'class MPU6050' has no member named 'setGyroOffset'

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"

 

Udostępnij ten post


Link to post
Share on other sites

Przepraszam, literówka; powinno być setGyroOffsets a nie setGyroOffset.

Udostępnij ten post


Link to post
Share on other sites

dziękuje ethanak, kod wrzuciłem i będę obserwował czy działa prawidłowo. Ale już wygląda ze jest lepiej. 

Powiedz jeszcze jeśli chodzi o ta wartość kalibracji Z -0.85 to mam ją z czegoś wyczytać, czy po prostu metoda prób i błędów wpisywać rożne liczby i obserwować kiedy osie x i y najmniej się zmieniają gdy przyrząd leży nieruchomo? Obecnie przy wartosci  -0.85 osie x i y pływa w okolicy +- 0,05. Czy to jest akceptowalny wynik czy powinno być jeszcze lepiej ? 

Udostępnij ten post


Link to post
Share on other sites

Nie chodzi o X i Y, ale o dryft kąta (X i Y nie mają z tym nic wspólnego). Chciałeś aby nieruchomy miernik nie pokazywał że się kręci, prawda? Więc niestety - metodą prób i błędów.

Pamiętaj tylko o jednej ważnej sprawie: żyroskop nie pokazuje jakichś tam kątów, ale prędkość kątową, a program na tej podstawie oblicza o ile "przekręcił się" miernik. Niestety - Ziemia też się kręci, i to całkiem szybko, dlatego prędkość kątowa będzie dla nieruchomego miernika zawsze różna od zera - i tę wartość musisz znaleźć. Automatyczna kalibracja nie jest niestety zbyt dokładna...

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

dziękuje za wyjaśnienie. Wygląda na to ze najlepszą wartością jest -0,84.  Czy program bierze pod uwagę jak bym wpisał wartość jeszcze dokładniejszą np -0,835 czy tylko do 2 miejsc po przecinku możną korygować?

Udostępnij ten post


Link to post
Share on other sites

Można korygować dalej, po prostu print wyświetla liczby do dwóch miejsc po przecinku. Tyle że w pewnym momencie przestanie to być skuteczne (taki urok działań na floatach).

 

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Z grubsza można powiedzieć ze mam już co chciałem. Dzięki ethanak, bez Ciebie by mi sie nie udało.

Jeszcze mam takie pytanie - czy duzo roboty by było żeby usunąć z kodu DISTANCE i ROLLER ? Tych funkcji nie używam, a trzeba w menu przez nie przeskakiwać

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...