Nexus 5X Lagesensor (IMU) mit Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 50: Zeile 50:


==== Beschleunigungssensor ====
==== Beschleunigungssensor ====
[[Datei:MEMS_Beschleunigungssensor.gif|right|500px|Abb. 6: Funktionsprinzip eines MEMS Beschleunigungssensors]]
[[Datei:MEMS_Beschleunigungssensor.gif|right|300px|Abb. 6: Funktionsprinzip eines MEMS Beschleunigungssensors]]
Der Beschleunigungssensor (in der Abbildung: Accel) misst die Beschleunigung des BMI160 und somit des gesamten Smartphones. Das grundlegende Prinzip eines Beschleunigungssensors basiert auf der Messung der Trägheitskraft, die sich auf eine Testmasse auswirkt.
Der Beschleunigungssensor (in der Abbildung: Accel) misst die Beschleunigung des BMI160 und somit des gesamten Smartphones. Das grundlegende Prinzip eines Beschleunigungssensors basiert auf der Messung der Trägheitskraft, die sich auf eine Testmasse auswirkt.



Version vom 6. Juli 2018, 07:36 Uhr

→ 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.

Abb. 7: Blockdiagramm zur Darstellung Aufbaus und des Datenflusses im Sensor [8]

Folgend werden verschiedene Elemente beschrieben, die auch auf der Abbildung wiederzufinden sind.

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.[9] Die hardwareseitigen Zeitstempel können auch zur Fusion von Sensordaten genutzt werden.[10]

Beschleunigungssensor

Abb. 6: Funktionsprinzip eines MEMS Beschleunigungssensors
Abb. 6: Funktionsprinzip eines MEMS Beschleunigungssensors

Der Beschleunigungssensor (in der Abbildung: Accel) misst die Beschleunigung des BMI160 und somit des gesamten Smartphones. Das grundlegende Prinzip eines Beschleunigungssensors basiert auf der Messung der Trägheitskraft, die sich auf eine Testmasse auswirkt.

Auch bei dem im BMI160 verbauten Beschleunigungssensor wird das grundlegende Prinzip angewandt. Da es sich hier jedoch um ein mikro-elektro-mechanische System (MEMS) handelt, sind die Elemente des Sensors miniaturisiert. In der nebenstehenden Abbildung (Abb. 6) wird die Testmasse orange dargestellt. Es handelt sich dabei um eine gefederte Masse, die zwischen nur wenige μm breiten "Stabfedern" aufgehängt ist (in der Abbildung: Springs). Die gefederte Testmasse ist mit stäbchenartigen Auslegern versehen, die zwischen den festen, ungefederten Bezugselektroden (in der Abbildung: fixed plates) schwingen können. Die festen Bezugselektroden sind in der Abbildung grün eingefärbt. Schwinkt die Testmasse aufgrund einer Beschleunigung zwischen den Bezugselektroden, verändert sich auch die elektrischen Kapazität (in der Abbildung: C1 und C2) der Zwischenräume. Der gesamte Messbereich entspricht einer Kapazitätsänderung von etwa einem Picofarad (10*10^-13 Farad)[11]. Die Elektronik zur Auswertung dieser Kapazitätsänderung befindet sich so wie der Analog-Digital-Umsetzer zusammen mit dem Beschleunigungssensor im BMI160.

Der gesamte Beschleunigungssensor besteht aus mono- und polykristallinem Silicium.

Gyroskop

Abb. 6: Funktionsprinzip eines MEMS Gyroskops

Das Gyroskop (in der Abbildung: Gyro) misst die Drehbewegungen des BMI160 und somit des gesamten Smartphones. Gyroskope gehören wie Beschleunigungssensoren zur Gruppe der Inertialsensoren.

Funktionsweise[12]


  • Beschleunigungssensor
    • Der Beschleunigungssensor (in der Abbildung: Accel) misst die Beschleunigung des BMI160 und somit des gesamten Smartphones. Das grundlegende Prinzip eines Beschleunigungssensors basiert auf der Messung der Trägheitskraft, die sich auf eine Testmasse auswirkt.
    • Auch bei dem im BMI160 verbauten Beschleunigungssensor wird das grundlegende Prinzip angewandt. Da es sich hier jedoch um ein mikro-elektro-mechanische System (MEMS) handelt, sind die Elemente des Sensors miniaturisiert. In der nebenstehenden Abbildung (Abb. 6) wird die Testmasse orange dargestellt. Es handelt sich dabei um eine gefederte Masse, die zwischen nur wenige μm breiten "Stabfedern" aufgehängt ist (in der Abbildung: Springs). Die gefederte Testmasse ist mit stäbchenartigen Auslegern versehen, die zwischen den festen, ungefederten Bezugselektroden (in der Abbildung: fixed plates) schwingen können. Die festen Bezugselektroden sind in der Abbildung grün eingefärbt. Schwinkt die Testmasse aufgrund einer Beschleunigung zwischen den Bezugselektroden, verändert sich auch die elektrischen Kapazität (in der Abbildung: C1 und C2) der Zwischenräume. Der gesamte Messbereich entspricht einer Kapazitätsänderung von etwa einem Picofarad (10*10^-13 Farad)[13]. Die Elektronik zur Auswertung dieser Kapazitätsänderung befindet sich so wie der Analog-Digital-Umsetzer zusammen mit dem Beschleunigungssensor im BMI160.
    • Der gesamte Beschleunigungssensor besteht aus mono- und polykristallinem Silicium.

Digitale Signalverarbeitung

Die Verarbeitung des digitalen Signals (in der Abbildung: Digital Signal Conditioning) [...]

Register

Das Register für die Sensorzeit und die Sensordaten (in der Abbildung: Sensor Data and Sensortime Register) [...]

  • nichtvolatiler Speicher

First In – First Out Engine

Die First In – First Out Engine (in der Abbildung: 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.

Schrittzähler

Der Schrittzähler (in der Abbildung: 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

Die sekundäre digitale Schnittstelle (in der Abbildung: Secondary Digital Interface) kann sowohl zur optischen Bildstabilisierung, als auch zu Auslesen eines externen Sensors (z.B. Magnetometer) konfiguriert werden. Für den jeweiligen Einsatz der sekundären Schnittstelle muss das dazugehörige Bussystem ausgewählt werden.

Sonstige

Die integrierte Stromverwaltungseinheit (PMU) wird auf dem Blockdiagramm nicht dargestellt. Sie kann nachträglich programmiert werden und ermöglicht es, den Stromverbrauch des BMI160 weiter zu senken. Auch kann sie genutzt werden, um dem Sensor für besonders anspruchsvolle Anwendungen ausreichend Strom zur Verfügung zu stellen.

Zusätzlich verfügt der BMI160 für jeden Sensor, d.h. sowohl für den Beschleunigungssensor, als auch für das Gyroskop, über jeweils einen Analog-Digital-Umsetzer (in der Abbildung: ADC). Alle Messwerte werden somit noch innerhalb des BMI160 direkt in digitale Signale umgesetzt. Eine Signalvorverarbeitung ist dem Blockdiagramm (Abb. 7) nicht entnehmbar.

Signalverarbeitungskette

Der Sensor liefert keine Rohsignale. Über die digitalen Schnittstellen werden nur bereits verarbeitete Signale ausgegeben. Auch auf diese hat der Autor mit den zur Verfügung stehenden Mitteln keinen direkten Zugriff, sodass der BMI160 nicht direkt ausgelesen werden kann.

Signalvorverarbeitung

Über das verwendete Bussystem werden ausschließlich bereits digitalisierte und verarbeitete Daten übertragen. Die Signalvorverarbeitung ist dem Blockdiagramm (Abb. 7) nicht entnehmbar und findet im Sensor selbst statt, noch bevor die Messdaten an das Sensor-Hub weitergegeben werden. Da kein Zugriff auf die Rohsignale möglich ist, kann in diesem Fall auch keine weitere Vorverarbeitung umgesetzt werden.

Analog-Digital-Umsetzer

Abb. 8: Verschiedene Analog-Digital-Umsetzer und ihre hauptsächlichen Anwendungsfelder

Bussystem

Digitale Signalverarbeitung

Die angewendeten Filter wurden in keiner kostenlos verfügbaren Quelle identifiziert.

  • Digital Signal Conditioning (Filtering, Amplifying, Electrical Isolation, Excitation, Linearization)

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. [14].

Quelltext

Details siehe: Quelltext_einbinden.

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

Literaturverzeichnis



→ zurück zum Hauptartikel: Signalverarbeitende Systeme