Skocz do zawartości

(Nie)elektroniczny multimetr DIY z Arduino Pro Mini


Pomocna odpowiedź

Napisano

(Nie)elektroniczny multimetr DIY z Arduino Pro Mini

Uniwersalny miernik to niezbędne wyposażenie każdego elektronika. Pomiar prądu czy oporu to nieodzowne czynności podczas majsterkowania. Nikt nie powiedział, że miernik uniwersalny musi mieć funkcje przydatne tylko dla elektroników. Oto ciekawy przyrząd DIY, który potrafi zbadać zupełnie inne wielkości fizyczne.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

  • Lubię! 1

Na pierwszy rzut oka można by pomyśleć, że to nowy model trumny ;D  Design mi jakoś nie odpowiada - nie ten rozmiar :D

  • 7 miesiące później...
(edytowany)

Witam wszystkich, Wykonałem projekt, naprawdę super. Mam tylko problem z kątomierzem i licznikiem obrotów - kątomierz mimo iż leży nieruchomo,  to po woli kąt się zwiększa, to samo z licznikiem obrotów - po woli licznik się zwiększa

Co może być przyczyna takiego zachowania? MPU uszkodzony?

Edytowano przez dawidd
(edytowany)

Nie, a ma to znaczenie? Chodzi o to żeby leżąc na płaskiej powierzchni pokazywał x=0 i y=0 ?

Sorry za być może trywialne pytanie, ale nie jestem w tym specem 🙂

Edytowano przez dawidd
  • Lubię! 1
18 minut temu, dawidd napisał:

Nie, a ma to znaczenie?

Jak widać ma 🙂 Każdy przyrząd pomiarowy pokazuje wynik z jakimś błędem, a kalibracja jest po to aby ten błąd skorygować.

19 minut temu, dawidd napisał:

żeby leżąc na płaskiej powierzchni pokazywał x=0 i y=0 ?

To akurat akcelerometr, ale również o to. No i oczywiście o to, aby żyroskop nie "płynął" jeśli jest nieruchomy.

  • Lubię! 1
(edytowany)

W opisie jest jak skalibrować osie x i y - i to udało mi się zrobić i jest  lepiej. A jak skalibrować żyroskop?

Co to znaczy "No i oczywiście o to, aby żyroskop nie "płynął" jeśli jest nieruchomy."?

Bede wdzięczny za wszelkie sugestie

 

Edytowano przez dawidd

ustawiłem osie x i y tak, ze teraz gdy przyrząd leży na płaskiej powierzchni to X wskazuje 0,05 i Y podobnie - obie te wartosci pływają +- 0,05. Jednak kątomierz dalej nie działa prawidłowo mimo iż leży nieruchomo jego wartość się zwiększa tak ja na filmiku, trochę wolniej ale po ok 2 min z 0 st pokazał 2 st itd. Co jeszcze można zrobić żeby to poprawić?

Trzeba by było trochę przerobić kod - w kodzie jest automatyczna kalibracja żyroskopu, trzeba by było zmienić ją na ręczną i ustawić dokładniej. Masz możliwość podłączenia konwertera USB w czasie pracy urządzenia? Bo trzeba:

  • uruchomić automatyczną kalibrację
  • przeczytać, jakie wartości zostały ustawione
  • zmienić w programie automatyczną na ręczną i wpisać dokładne wartości (przynajmniej dla osi Z) dla tego konkretnego egzemplarza MPU6050.

Mogę spróbować machnąć kawałek kodu, ale bez podłączenia monitora serial w czasie pracy urządzenia to nic nie da.

Na szybko możesz spróbować jeszcze jednego: po włączeniu odczekać jakieś 30 sekund, wyłączyć i włączyć urządzenie. Oczywiście wszystko bez poruszania urządzenia! Czasem pomaga...

nie bardzo wiem czy to o to chodzi:

========================================
Calculating gyro offsets
DO NOT MOVE MPU6050...
Done!
X : -6.33
Y : -1.39
Z : -0.85
Program will start after 3 seconds
========================================

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.

 

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"

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...