Nexus 5X Lagesensor (IMU) mit Matlab/Simulink
→ 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
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 Hauptprozessor (CPU) 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. Der Cortex-M4 ist ein Mikroprozessor, der von seinem Entwickler, ARM, mit "efficient digital signal control" beschrieben wird.[2] ST Microelectronics gehört zu den Lizenznehmern, die den Cortex-M4 herstellen dürfen. Das Sensor-Hub übernimmt im Nexus 5X die Einordnung, Integration und Verarbeitung der Daten verschiedener Sensoren. Der Cortex-M4 entlastet so den Snapdragon 808, den Hauptprozessor des Smartphones. Der Stromverbrauch des Cortex-M4 ist deutlich niedriger, als der Stromverbrauch des Snapdragon 808. Über das Sensor-Hub können die Sensoren weiterhin überwacht werden, wenn sich der CPU im Ruhezustand befindet. Dadurch wird der Stromverbrauch des gesamten Geräts gesenkt. Außerdem werden auf dem CPU Ressourcen für andere Anwendungen freigegeben.[3]
Die Position des Bosch Sensortec BMI160 auf dem Mainboard (Abb. 3) konnte keiner kostenlos verfügbaren Quelle entnommen werden. Der Autor vermutet den Sensor an der grün eingezeichneten Position auf der Vorderseite des Mainboards. Für diese Vermutung sprechen mehrere Punkte:
- Die Größe des Bauelements
- Die Farbe und Oberflächenstruktur des Bauelements
- 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. [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)
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[5]) 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.[6]
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. [7] 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.[8] Hergestellt wird der BMI160 auf einem Standard-20cm-Silicium-Wafer. Die mechanischen Elemente werden aus 20 µm poly-Si hergestellt.[9]
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 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.[11] Die hardwareseitigen Zeitstempel können auch zur Fusion von Sensordaten genutzt werden.[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.
Gyroskop
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. Wie beim Beschleunigungssensor auch, handelt es sich beim Gyroskop des BMI160 um ein MEMS. Die Entwicklung von MEMS-Sensoren ermöglichte erst den Einsatz von IMU in Smartphones. Sie sind kleiner, günstiger und benötigen weniger Energie als ihre klassischen Pendants.
Das grundlegende Prinzip eines MEMS-Gyroskops beruht auf der Coriolisbeschleunigung.[14] Die Coriolisbeschleunigung ist die Beschleunigung, die der bewegte Körper durch die Corioliskraft erfährt. Die Corioliskraft wird auch als Corioliseffekt bezeichnet[15] und ist ebenfalls eine Trägheitskraft.[16] Die Corioliskraft lenkt einen bewegten Körper quer zu seiner Bewegungsrichtung ab, wenn er sich relativ zu einem rotierenden Bezugssystem bewegt. Das relative Bezugssystem ist in diesem Fall das Smartphone.
Auch beim Gyroskop wird die Auswirkung der Kraft auf eine Testmasse gemessen. Die Testmasse ist in einem Rahmen gefedert aufgehängt, der wiederum ebenfalls gefedert aufgehängt ist. In der nebenstehenden Abbildung (Abb. 8) ist die Testmasse orange eingefärbt. Die Testmasse schwinkt so innerhalb der gefederten Rahmens orthogonal zu dem gefederten Rahmen selbst. Der gefederte Rahmen ist in der Abbildung gelb eingefärbt. Wie auch beim Beschleunigungssensor wird die Bewegung der einzelnen Elemente durch die Veränderung der elektrischen Kapazität der Zwischenräume zu den festen, ungefederten Bezugselektroden erfasst. Diese sind in der Abbildung blau eingefärbt und sowohl im Rahmen der Testmasse, als auch außerhalb des gefederten Rahmens positioniert, um beide Bewegungsachsen zu erfassen.
Wie auch der Beschleunigungssensor besteht das gesamte Gyroskop 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) ist ein volatiler Speicher im BMI160, bei dem diejenigen Elemente zu erst ausgegeben werden, die zuerst eingegeben wurden. Diese Speicherarchitektur wird auch als Warteschlange bezeichnet und eignet sich als Zwischenspeicher bzw. Puffer von Sensorsignalen. Im BMI160 sorgt die FIFO-Engine dafür, dass das erste Sensorsignal auch zuerst verarbeitet wird. Der integrierte 1024 byte FIFO Zwischenspeicher unterstützt Anwendungen mit niedrigem Stromverbrauch. Sensordaten können zunächst gesammelt werden, bevor sie an das Sensor-Hub weitergeleitet werden. Auch verhindert der Speicher Datenverluste in Systemen, die nicht in Echtzeit arbeiten. Die Architektur des Speichers ermöglicht eine flexible Zuweisung zum Beschleunigungssensor, Gyroskop und externen Sensoren, die mit dem BMI160 über das Bussystem ausgelesen werden können. Bei einer typischen Anwendung, die nur auf die integrierten Sensoren des BMI160 zurückgreift, reicht die Speicherkapazität von 1024 Bytes für Daten aus dreiviertel einer Sekunde.
Die Nutzung eines FIFO Zwischenspeichers bietet folgende Vorteile:[17]
- Verringerung des Stromverbrauchs oder höhere Datenrate
- Speichern von Verläufen
- Verhinderung von Datenverlusten
- Glättung des Signals
- Schneller Datenzugriff für Filter oder Überabtastung
- Zwischenspeicher für Datenpufferung
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
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
- Nutzen Sie Aufzählungen
- mit verschiedenen Schachtelungen
- und so weiter
- 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. [18].
Quelltext
Details siehe: Quelltext_einbinden.
Bei lang= muss die richtige Sprache eingetragen werden (matlab, c,...).
Literaturverzeichnis
- ↑ Seite „Nexus 5X“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 2. April 2018, 20:50 UTC. (zuletzt abgerufen am 3. Juli 2018)
- ↑ Seite „ARM Cortex-M4“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 15. August 2017, 16:53 UTC. (zuletzt abgerufen am 6. Juli 2018)
- ↑ Seite „Sensor hub“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 11. Mai 2018, 05:31 UTC. (zuletzt abgerufen am 6. Juli 2018)
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 105
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer, S. 1
- ↑ MEMS IMU/COMBO: Bosch’s 6-Axis IMU in the Apple iPhone X: Available sample
- ↑ Mouser Electronics: BMI160 (zuletzt abgerufen am 04.07.2019)
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer, S. 1
- ↑ MEMS IMU/COMBO: Bosch Sensortec BMI160: Available sample
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 12
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 16
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 2
- ↑ Seite „Beschleunigungssensor“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 14. Mai 2018, 09:10 UTC. (zuletzt abgerufen am: 5. Juli 2018)
- ↑ channel-e Magazin für Elektronik: MEMS-Gyroskop für genaue Drehratenmessungen in rauen Umgebungen bei hohen Temperaturen, 10.07.2016 (zuletzt abgerufen am 05.07.2018)
- ↑ Technische Hochschule Mittelhessen: 4.1. Coriolis Effekt, 19.09.2001 (zuletzt abgerufen am 06.07.2018)
- ↑ Seite „Corioliskraft“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 12. Juni 2018, 00:51 UTC. (zuletzt abgerufen am 06.07.2018)
- ↑ ST Microelectronics: DT001 Design tip: Benefits in using FIFO buffer embedded in ST MEMS sensors, Dezember 2013 (zuletzt abgerufen am 06.07.2018)
- ↑ Hilfeseite des Wikimedia-Projekts
→ zurück zum Hauptartikel: Signalverarbeitende Systeme