Jak Podłączyć Akcelerometr Do Arduino?

Spisu treści:

Jak Podłączyć Akcelerometr Do Arduino?
Jak Podłączyć Akcelerometr Do Arduino?

Wideo: Jak Podłączyć Akcelerometr Do Arduino?

Wideo: Jak Podłączyć Akcelerometr Do Arduino?
Wideo: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, Kwiecień
Anonim

Tym razem zajmiemy się podłączeniem analogowego akcelerometru trójosiowego ADXL335 do Arduino.

Akcelerometr analogowy ADXL335
Akcelerometr analogowy ADXL335

Niezbędny

  • - Arduino;
  • - akcelerometr ADXL335;
  • - komputer osobisty ze środowiskiem programistycznym Arduino IDE.

Instrukcje

Krok 1

Akcelerometry służą do wyznaczania wektora przyspieszenia. Akcelerometr ADXL335 ma trzy osie, dzięki czemu może wyznaczać wektor przyspieszenia w przestrzeni trójwymiarowej. Ze względu na fakt, że siła grawitacji jest również wektorem, akcelerometr może określić własną orientację w przestrzeni trójwymiarowej względem środka Ziemi.

Ilustracja przedstawia zdjęcia z paszportu (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) dla akcelerometru ADXL335. Pokazano tu osie współrzędnych czułości akcelerometru w odniesieniu do geometrycznego rozmieszczenia korpusu urządzenia w przestrzeni, a także tabelę wartości napięć z 3 kanałów akcelerometru w zależności od jego orientacji w przestrzeni. Dane w tabeli podano dla czujnika w stanie spoczynku.

Przyjrzyjmy się bliżej temu, co pokazuje nam akcelerometr. Pozwól czujnikowi leżeć poziomo, na przykład na stole. Wtedy rzut wektora przyspieszenia będzie równy 1g wzdłuż osi Z, czyli Zout = 1g. Pozostałe dwie osie będą miały zera: Xout = 0 i Yout = 0. Gdy czujnik zostanie obrócony „na plecy”, będzie skierowany w przeciwną stronę względem wektora grawitacji, tj. Zout = -1g. Podobnie pomiary są wykonywane na wszystkich trzech osiach. Oczywiste jest, że akcelerometr można ustawić w przestrzeni w dowolnym miejscu, więc odczyty inne niż zero ze wszystkich trzech kanałów.

Jeśli sonda jest silnie potrząsana wzdłuż pionowej osi Z, wartość Zout będzie większa niż „1g”. Maksymalne mierzalne przyspieszenie wynosi „3g” w każdej z osi w dowolnym kierunku (tj. zarówno z „plusem” jak i „minusem”).

Osie czułości akcelerometru i tabela wartości wyjściowych
Osie czułości akcelerometru i tabela wartości wyjściowych

Krok 2

Myślę, że wymyśliliśmy zasadę działania akcelerometru. Spójrzmy teraz na schemat połączeń.

Analogowy układ akcelerometru ADXL335 jest dość mały i mieści się w obudowie BGA i trudno go zamontować na płycie w domu. Dlatego użyję gotowego modułu GY-61 z akcelerometrem ADXL335. Takie moduły w chińskich sklepach internetowych kosztują prawie grosz.

Do zasilania akcelerometru niezbędne jest podanie na pin VCC modułu napięcia +3,3 V. Kanały pomiarowe czujnika podłączone są do pinów analogowych Arduino, np. „A0”, „A1” i „ A2 . To cały obwód:)

Schemat połączeń akcelerometru ADXL335 do Arduno
Schemat połączeń akcelerometru ADXL335 do Arduno

Krok 3

Załadujmy ten szkic do pamięci Arduino. Odczyty z wejść analogowych na trzech kanałach odczytamy, przekonwertujemy na napięcie i wyprowadzimy na port szeregowy.

Arduino ma 10-bitowy ADC, a maksymalne dozwolone napięcie pinów wynosi 5 woltów. Mierzone napięcia są zakodowane bitami, które mogą przyjmować tylko 2 wartości - 0 lub 1. Oznacza to, że cały zakres pomiarowy zostanie podzielony przez (1+1) do 10. potęgi, czyli na 1024 równych segmentach.

Aby przeliczyć odczyty na wolty, należy każdą wartość zmierzoną na wejściu analogowym podzielić przez 1024 (segmenty), a następnie pomnożyć przez 5 (wolty).

Zobaczmy, co naprawdę pochodzi z akcelerometru na przykładzie osi Z (ostatnia kolumna). Gdy czujnik jest ustawiony poziomo i patrzy w górę, pojawiają się liczby (2,03 +/- 0,01). Powinno to więc odpowiadać przyspieszeniu „+1g” wzdłuż osi Z i kątowi 0 stopni. Odwróć czujnik. Przychodzą liczby (1, 69 +/- 0, 01), co powinno odpowiadać „-1g” i kątowi 180 stopni.

Szkic odczytu akcelerometru
Szkic odczytu akcelerometru

Krok 4

Weźmy wartości z akcelerometru pod kątem 90 i 270 stopni i wprowadź je do tabeli. W tabeli przedstawiono kąty obrotu akcelerometru (kolumna „A”) oraz odpowiadające im wartości Zout w woltach (kolumna „B”).

Dla jasności pokazano wykres napięć na wyjściu Zout w funkcji kąta obrotu. Niebieskie pole to zasięg w spoczynku (przy przyspieszeniu 1g). Różowe pole na wykresie to margines, dzięki któremu możemy zmierzyć przyspieszenie do +3g i do -3g.

Przy obrocie o 90 stopni oś Z ma zerowe przyspieszenie. Te. wartość 1,67 wolta jest warunkowym zerem Zo dla osi Z. Wtedy możesz znaleźć przyspieszenie w ten sposób:

g = Zout - Zo / czułość_z, tutaj Zout to zmierzona wartość w miliwoltach, Zo to wartość przy zerowym przyspieszeniu w miliwoltach, czułość_z to czułość czujnika wzdłuż osi Z. skalibruj akcelerometr i oblicz wartość czułości specjalnie dla swojego czujnik wykorzystując wzór:

czułość_z = [Z (0 stopni) - Z (90 stopni)] * 1000. W tym przypadku czułość akcelerometru wzdłuż osi Z = (2, 03 - 1, 68) * 1000 = 350 mV. Podobnie czułość będzie musiała zostać obliczona dla osi X i Y.

Kolumna „C” tabeli pokazuje przyspieszenie obliczone dla pięciu kątów z czułością 350. Jak widać, praktycznie pokrywają się z tymi pokazanymi na rysunku 1.

Zgodność kątów obrotu akcelerometru z odczytami
Zgodność kątów obrotu akcelerometru z odczytami

Krok 5

Pamiętając podstawowy kurs geometrii otrzymujemy wzór na obliczanie kątów obrotu akcelerometru:

kąt_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Wartości podane są w radianach. Aby przekonwertować je na stopnie, podziel przez Pi i pomnóż przez 180.

W rezultacie na ilustracji pokazano kompletny szkic obliczający kąty przyspieszenia i obrotu akcelerometru we wszystkich osiach. Komentarze zawierają wyjaśnienia dotyczące kodu programu.

Podczas wysyłania do portu „Serial.print()” znak „\ t” oznacza znak tabulacji, tak aby kolumny były parzyste, a wartości znajdowały się jedna pod drugą. „+” oznacza konkatenację (konkatenację) ciągów. Co więcej, operator „String ()” wyraźnie mówi kompilatorowi, że wartość liczbowa musi zostać przekonwertowana na ciąg. Operator round () zaokrągla róg do najbliższego 1 stopnia.

Szkic, który oblicza przyspieszenie i kąty akcelerometru
Szkic, który oblicza przyspieszenie i kąty akcelerometru

Krok 6

Tak więc nauczyliśmy się pobierać i przetwarzać dane z analogowego akcelerometru ADXL335 za pomocą Arduino. Teraz możemy wykorzystać akcelerometr w naszych projektach.

Zalecana: