LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

Uruchamianie zautomatyzowanego testu akcelerometru MEMS przy wykorzystaniu analizatora Digital Discovery i języka Python

Akcelerometr MEMS to układ, który może mierzyć przyspieszenie w jednej lub kilku osiach. Można go również wykorzystać do wykrycia położenia urządzenia względem grawitacji Ziemi. Akcelerometry można znaleźć w rozwiązaniach przemysłowych i mobilnych, przyrządach lotniczych, a także systemach naprowadzania taktycznego. Podczas prototypowania systemów akcelerometry można testować za pomocą analizatora Digital Discovery od firmy Digilent.

Digilent Digital Discovery to analizator stanów logicznych, analizator protokołów i generator przebiegów podłączany do USB. Cyfrowe porty wejścia i wyjścia można podłączyć do obwodu za pomocą prostych sond przewodowych lub przewodów używanych przy płytce prototypowej. W bardziej zaawansowanych projektach do tego celu można wykorzystać szybki adapter Digital Discovery High Speed Adapter i połączenia skręcone. Przy wsparciu bezpłatnego oprogramowania WaveForms, Digital Discovery można skonfigurować jako:

  1. 24-kanałowy cyfrowy analizator logiczny (1,2…3,3V CMOS, do 800 MS/s (przy użyciu adaptera High-Speed)),
  2. 16-kanałowy generator przebiegów (1,2…3,3 V CMOS, 100 MS/s),
  3. 16-kanałowe wirtualne cyfrowe porty wejścia/wyjścia: przyciski, przełączniki, diody LED itp. – idealne do testowania stanów logicznych
  4. Programowalny zasilacz 1,2…3,3 V / 100mA. To samo napięcie zasila bufory wejścia analizatora stanów logicznych oraz bufory wejścia/wyjścia generatora przebiegów. Pozwala to utrzymać zgodność poziomu logicznego z testowanym obwodem.
  5. Analizator magistral cyfrowych (SPI, I2C, UART, I2S, CAN, porty równoległe).

Środowisko WaveForms

WaveForms posiada przyjazny dla użytkownika interfejs na komputer i laptopa, który przypomina tradycyjny sprzęt stacjonarny. Oprogramowanie jest kompatybilne z systemami Windows, Linux, MAC i Raspberry Pi 4. Pakiet WaveForms Software Development Kit (SDK) zapewnia biblioteki i przykłady w Pythonie, C ++ i innych językach, dzięki czemu zaawansowani użytkownicy mogą budować niestandardowe aplikacje lub automatyzować testy.

Do testów potrzebne będą:

  • Przystawka Digilent Digital Discovery,
  • Oprogramowanie Waveforms,
  • Komputer z portem USB do uruchamiania oprogramowania,
  • Środowisko Python z interpreterem Python 2.7 i biblioteką matplotlib,
  • Akcelerometr z interfejsem I2C – w tym przykładzie użyto układu LIS35DE wmontowanego w moduł KAmodMEMS2.

Połączenie układu testowego

    1. Połącz masę i zasilanie czujnika odpowiednio z pinami GND i VIO na Digital Discovery, a następnie połącz wyprowadzenia interfejsu I2C modułu KAmodMEMS2 z Digital Discovery:
      1. pin CS z Vdd,
      2. pin SDO do GND,
      3. linie SDA i SCL odpowiednio z DIO33 i DIO32.

    2. Wczytaj pakiet WaveForms SDK,
    3. Użyj skryptu w języku Python, aby włączyć zasilanie 3,3 V z Digital Discovery do modułu KAmodMEMS2, a także skonfigurować interfejs I2C. Aby skonfigurować przykład demonstracyjny, użytkownik musi ustawić częstotliwość roboczą magistrali i wybrać które piny Digital Discovery powinny zostać użyte.
# set I2C frequency and pins
dwf.FDwfDigitalI2cRateSet(hdwf, c_double(1e5)) # 100kHz
dwf.FDwfDigitalI2cSclSet(hdwf, c_int(32-24)) # SCL = DIO-32
dwf.FDwfDigitalI2cSdaSet(hdwf, c_int(33-24)) # SDA = DIO-33
    1. Aby odczytać dane i zaktualizować wykresy, należy użyć skryptu Python dopóki otwarte jest okno wydruku. Każda operacja odczytu z modułu KAmodMEMS2 jest operacją zapisu i odczytu na magistrali I2C. Adres urządzenia jest ustawiony na czas całej operacji, a WaveForms SDK automatycznie zarządza bitem R/W. Do zapisywania i odczytywania danych służą dwie tablice, a użytkownik określa, ile bajtów należy zapisać, a także odczytać. W opisywanym teście zapisywany jest tylko jeden bajt. Adres rejestru łączony jest z maską bitów sprawiającą, że czujnik zwiększa adres rejestru po odczytaniu każdego bajtu z magistrali. Następnie z kolejnych rejestrów, poczynając od rejestru OUTX, odczytywanych jest 5 bajtów. Odczytane dane zawierają 3 bajty z danymi przyspieszenia na osiach X, Y i Z reprezentowanymi w kodzie uzupełnień do dwóch (U2) i dwa bajty puste.
dwf.FDwfDigitalI2cWriteRead(hdwf, c_int(address << 1), (c_ubyte*1)(LIS35DEreg.REG_OUTX | LIS35DEreg.READ_INC), c_int(1), rgRX, c_int(5), byref(iNak))

    1. Należy uruchomić skrypt i przetestować moduł KAmodMEMS2. Górna część okna pokazuje przyspieszenie XYZ z czujnika w czasie rzeczywistym jako funkcję czasu. Natomiast dolna część prezentuje rzeczywiste przyspieszenie w osiach X i Y jako niebieską gwiazdkę (*).

Sposób wykonania projektu krok po kroku oraz kod źródłowy znajdują się na stronie Digilent Wiki.

Autor: Kamami.pl