Nexus 5X Lagesensor (IMU) mit Matlab/Simulink

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

→ zurück zum Hauptartikel: Signalverarbeitende Systeme

Autor: Jan Drupka
Betreuer: Prof. Schneider
Sensor: Bosch Sensortec BMI160

Aufgabenstellung

An dieser Stelle wird die Aufgabenstellung beschrieben.

Einleitung

Dieser Artikel ist eine Vorlage für einen Wiki-Artikel. Tipp: Kopieren Sie den gesamten Quelltext und ändern Sie ihn so, dass er Ihr Projekt beschreibt.

Google Nexus 5X

Abb. 1: Google Nexus 5X (Weiß)

Das Google Nexus 5X ist ein von Google entwickeltes und von LG hergestelltes Android-Smartphone. Es wurde von ab Oktober 2015 etwa ein Jahr lang gleichzeitig mit dem Schwestermodell, dem Nexus 6P, im Google Store angeboten. Der Nachfolger des Nexus 5X ist das Google Pixel. Das aktuelle Google-Smartphone ist das Google Pixel 2. Weitere Informationen zum Nexus 5X selbst sind unter anderem dazugehörigen im Wipedia-Artikel zu finden.[1].

Der BMI160 wurde im Nexus 5X verbaut, um Beschleunigungen und die Lage im Raum zu erfassen. Eingesetzt werden die Informationen aus dem Sensor sehr vielseitig, von Basisfunktionen wie der Drehung des Bildschirminhalts zur Drehung des Smartphones, bis zu komplexen Anwendungen wie der Navigation, wenn kein GPS-Signal verfügbar ist.

Die untenstehende Abbildung (Abb. 3) zeigt die Vorderseite des Mainboards, der Hauptplatine des Nexus 5X. Am oberen Rand, links neben der runden Aussparung in der Platine, ist das Fach für die SIM-Karte zu sehen, das sich beim Betrachten des Displays im Hochformat oben auf der linken Seite des Smartphones befindet. Auf der linken Seite ist die USB-C-Buchse zu sehen, die sich beim Betrachten des Displays im Hochformat in der Mitte der unteren Seite des Smartphones befindet. Ohne das Display und den Touchscreen würde man die Platine also um 90 Grad nach links gedreht sehen, wenn man die Displayseite im Hochformat betrachtet. Bei dem größeren der beiden dominierenden Bauelemente handelt es sich um den Samsung K3QF3F30BM-QGCF 2 GB LPDDR3 Arbeitsspeicher, unter welchen der Qualcomm Snapdragon 808 als Prozessor des Nexus 5X geschichtet wurde. Der kleinere der beiden größten integrierten Schaltungen (ICs) ist der Toshiba THGBMFG7C2LBAIL 16 GB eMMC 5.0 Flashspeicher. Rot eingezeichnet ist auf der untenstehenden Abbildung der ST Microelectronics STM32F411CE 32-bit 100 MHz ARM Cortex-M4 RISC Mikrocontroller, der im Nexus 5X unter anderem die Aufgabe des Sensor-Hubs übernimmt.

Die Position des Bosch Sensortec BMI160 wurde in keiner kostenlos verfügbaren Quelle gefunden. Der Autor vermutet den Sensor an der grün eingezeichneten Position auf der Vorderseite des Mainboards. Für diese Vermutung sprechen mehrere Punkte:

Abb. 2: Achsendefinition des BMI160 für Android-Geräte
  1. Die Größe des Bauelements
  2. Die Farbe und Oberflächenstruktur des Bauelements
  3. Die Beschriftung des Bauelements (Labeling) mit drei Buchstaben in der ersten Zeile (z.B. CCC), zwei Buchstaben in der zweiten Zeile (z.B. VL) und dem Punkt, der den ersten Kontakt-Pin zeigt. [2]
  4. Die Position oben rechts im Gerät entspräche der Position des Sensor in der Abbildung von Bosch Sensortec, die die Achsen für Android-Geräte definiert. (Abb. 2)


Abb: 3: Nexus 5X Mainboard

Bosch Sensortec BMI160

Abb. 4: Der Bosch Sensortec BMI160

Mit dem BMI160 brachte Bosch Sensortec im März 2015 eine hochintegrierte, inertiale Messeinheit (IMU) mit geringem Stromverbrauch (typischerweise 950 μA unter voller Last[3]) auf den Markt, die einen Beschleunigungssensor und ein Gyroskop in einem LGA-Gehäuse mit 14 Pins (Kontaktflächen) vereint. Die 14 Pins sind in Abb. 5 zu erkennen. Alle für die Stromversorgung, die Erzeugung und Erfassung von Messwerten, die Signalvorverarbeitung, die Analog-Digital-Umsetzung, die Zwischenspeicherung, die Interpretation, die Generierung von Unterbrechungsanforderungen und die Ausgabe in flexiblen Bussystemen benötigten Elemente sind hier in einem ASIC Die vereint. Der Sensor verfügt über flüchtigen und nichtflüchtigen, persistenten, programmierbaren Datenspeicher. Gleichzeitig ist der Sensor 60% kleiner, als sein Vorgänger, der BMI055. Der BMI160 machte Bosch Sensortec zum Marktführer im Bereich der mikro-elektro-mechanische Systeme (MEMS). Im iPhone X befindet sich eine speziell für Apple weiterentwickelte Version des Sensors, die auch als Nachfolger interpretiert werden könnte.[4]

Abb. 5: Größenvergleich von BMI160 mit einem Eincentstück

Das LGA-Gehäuse ist 2,5 mm hoch, 3 mm breit und 0,8 mm tief. Das Gewicht des Sensors beträgt 100 mg. [5] Der thermische Funktionsbereich liegt zwischen -40 °C und 85 °C. Der breite Spannungsversorgungsbereich von 1,62 V bis 3,6 V bietet Flexibilität. Die im BMI160 ebenfalls integrierte Stromverwaltungseinheit (PMU) kann so konfiguriert werden, dass der Stromverbrauch des Sensors noch weiter sinkt. So kann etwa das Gyroskop deaktiviert werden, wenn das Smartphone still liegt.[6] Hergestellt wird der BMI160 auf einem Standard-20cm-Silicium-Wafer. Die mechanischen Elemente werden aus 20 µm poly-Si hergestellt.[7]

Inertiale Messeinheit

Die inertiale Messeinheit (IMU) beschreibt die Kombination mehrerer Inertialsensoren wie zum Beispiel die Kombination eines Beschleunigungssensors und eines Gyroskops wie es beim BMI160 der Fall ist. Neben den Strapdown-IMU, die fest mit ihrer Umgebung (hier: Smartphone) verbunden sind, gibt es auch IMU mit stabiler Plattform. Diese sind im Aufbau Kreiselinstrumenten nachempfunden und kardanisch aufgehängt. Ein solcher Aufbau ist sehr genau, für den Einsatz im Smartphone jedoch mechanisch viel zu komplex, zu groß, zu empfindlich und zu teuer. Die Sensoren im BMI160 sind reine MEMS.

Land Grid Array

Das Land Grid Array (LGA) beschreibt ein SMD-Verbindungssystem für ICs. SMD steht hier für „Surface-mounted device“ und somit die Oberflächenmontage. Im Gegensatz zu älteren ICs, die noch in Gehäusen der Art Dual in-line package (DIP) zur Durchsteckmontage gefertigt wurden, werden SMD-ICs wie der BMI160 mit LGA-Gehäuse nur noch auf die Platine gelegt, auf die bereits vorher Lötpaste aufgetragen wurde, und dann mittels Reflow-Lötens an diese herangezogen und mit ihr verbunden. Das LGA hat seinen Namen von der Unterseite dersolchen SMD-ICs, die Kontaktflächen in Form eines schachbrettartigen Feldes aufweisen.

Aufbau des BMI160

Auf dem untenstehenden Blockdiagramm (Abb. 6) ist der innere Aufbau und der Datenfluss im BMI160 zu sehen. Folgend werden die verschiedenen Elemente beschrieben, die auf der Abbildung wiederzufinden sind.

  • PMU

Die integrierte Stromverwaltungseinheit kann nachträglich programmiert werden und ermöglicht es, den Stromverbrauch des BMI160 weiter zu senken. Auch kann die integrierte Stromverwaltungseinheit genutzt werden, um dem Sensor für besonders anspruchsvolle Anwendungen ausreichend Strom zur Verfügung zu stellen.

  • Sensortime
    • Der BMI160 verfügt über einen eigenen Zeitgeber. Sensortime beschreibt hier einen durchlaufenden Zähler mit einer Auflösung von 39 μs. Der aktuelle Zeitstempel kann jederzeit aus einem Register ausgelesen werden. Alle anderen Sensor-Events und Registereinträge im Speicher und der FIFO-Engine werden mit diesem Register synchronisiert. Der Zeitgeber läuft unabhängig von der PMU. Auch wenn alle anderen Elemente des BMI160 abgeschaltet werden, läuft Sensortime weiter.[8] Die hardwareseitigen Zeitstempel können auch für die Fusion von Sensordaten genutzt werden.[9]
  • Beschleunigungssensor
  • Gyroskop
  • Für jeden Sensor jeweils ein ADU
    • Sowohl die Messwerte aus dem Beschleunigungssensor, als auch die Messwerte aus dem Gyroskop werden direkt im eigenen ADU in digitale Signale umgesetzt. Eine Signalvorverarbeitung ist dem untenstehenden Blockdiagramm nicht entnehmbar.
  • Digitale Signalverarbeitung (Digital Signal Conditioning)
    • Digital Signal Conditioning (Filtering, Amplifying, Electrical Isolation, Excitation, Linearization)
  • Register für Sensortime und Sensordaten (Sensor Data and Sensortime Register)
    • nichtvolatiler Speicher
  • FIFO Engine
    • volatiler Speicher
    • Der integrierte 1024 byte FIFO Zwischenspeicher unterstützt Anwendungen mit niedrigem Stromverbrauch und verhindert Datenverluste in Systemen, die nicht in Echtzeit arbeiten. Die Architektur des Speichers ermöglicht eine flexible Zuweisung dessen zum Beschleunigungssensor, Gyroskop und externen Sensoren, die mit dem Bussystem über den BMI160 angesteuert werden. Bei einer typischen Anwendung, die nur auf die integrierten Sensoren zurückgreift, reichen die 1024 byte für Daten aus dreiviertel eines Sekunde.
  • Step Counter
    • Android 5.0 (Lollipop) kompatibler Schrittzähler mit einem Stromverbrauch von nur 5 μA
  • Interrupt Engine
    • Legacy Interrupts
    • Step Detection und Significant Motion Interrupts
      • Step Detector interrupt 20 μA
  • Primäre digitale Schnittstelle
    • Als I²C oder SPI programmierbar
  • Sekundäre digitale Schnittstelle
    • Als SPI für OIS oder für externen Sensor, z.B. Magnetometer


Abb. 6: Blockdiagramm zur Darstellung Aufbaus und des Datenflusses im Sensor [10]

Signalverarbeitungskette

Signalvorverarbeitung

Analog-Digital-Umsetzer

Verschiedene Analog-Digital-Umsetzer und ihre hauptsächlichen Anwendungsfelder

Bussystem

Digitale Signalverarbeitung

Weg des digitalen Signals

  • Bosch Sensortec BMI160
  • ST Microelectronics STM32F411CE 32-bit 100 MHz ARM Cortex-M4 RISC Mikrocontroller
  • Qualcomm Snapdragon 808
  • Samsung K3QF3F30BM-QGCF 2 GB LPDDR3
  • Matlab Mobile
  • Qualcomm Snapdragon 808
  • Qualcomm QCA6174 802.11ac Wi-Fi 2x2 MIMO Combo SoC
  • Wi-Fi-Modul des Laptops
  • Matlab

Darstellung der Ergebnisse

Matlab/Simulink

 
for i=1:10 
%     try
%         image = CAMERA_DumpFrame(s);       
%     catch err
%         error('MATLAB:RWTHMindstormsNXT:Sensor:unknown', 'An unknown Error occured while fetching the image. Please check that the Camera is connected and try again');
%     end
    image = CAMERA_GetImage(com);
    handle = imshow(image);
    %pause(0.1)
    currTime(i) = toc(startTime);
    disp(['Aktuelle Zeit: ',num2str(currTime(i))])
    %imwrite(image,sprintf('NXTCamImage%03d.png',i));
    %imwrite(img,fullfile(workingDir,sprintf('HexBug%03d.png',n)));
    % ca. alle 4.8 Sekunden ein Bild
end;

YouTube Video

Zusammenfassung

Was ist das Ergbnis? Das Ergebnis dieses Artikels ist eine Vorlage, mit der Nutzer des Wikis schnell und leicht eigene Artikel verwirklichen können. Diese Vorlage ist Bestandteil der Anleitungen aus den How-To's.

Ausblick

Was kann/muss noch verbessert werden?




Inhalt

Die Gliederung des Inhalts hängt stark von Ihrem individuellen Projekt ab. Benutzen Sie einen leicht nachvollziehbaren roten Faden und gliedern Sie nach gesundem Menschenverstand!

Unterabschnitt

  1. Nutzen Sie Aufzählungen
    • mit verschiedenen Schachtelungen
    • und so weiter
  2. zweite Ebene
    • mit erneuter Unterebene

Bilder

Bauen Sie Bilder ein, am besten mit darin gekennzeichneten Stellen, die Sie dann im Text erklären.

Tabellen

Eine tolle Tabelle ist hier dargestellt.

Spalte 1 Spalte 2 Spalte 3
blabla sowieso sowieso
test sowieso test1

Formatierung

Nutzen Sie zur Formatierung Beispiele, z. B. aus dem weltbekannten Wikipedia selbst (das ist die gleiche Syntax!) oder anderer Hilfeseiten wie z. B. [11].

Quelltext

Details siehe: Quelltext_einbinden.

Bei lang= muss die richtige Sprache eingetragen werden (matlab, c,...).

Literaturverzeichnis

  1. „Nexus 5X“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 2. April 2018, 20:50 UTC. (zuletzt abgerufen am 3. Juli 2018)
  2. Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 105
  3. Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer, S. 1
  4. MEMS IMU/COMBO: Bosch’s 6-Axis IMU in the Apple iPhone X: Available sample
  5. Mouser Electronics: BMI160 (zuletzt abgerufen am 04.07.2019)
  6. Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer, S. 1
  7. MEMS IMU/COMBO: Bosch Sensortec BMI160: Available sample
  8. Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 16
  9. Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 2
  10. Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 12
  11. Hilfeseite des Wikimedia-Projekts



→ zurück zum Hauptartikel: Signalverarbeitende Systeme