Nexus 5X Lagesensor (IMU) mit Matlab/Simulink: Unterschied zwischen den Versionen
K (Nummern von Abbildungen angepasst) |
|||
(126 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
→ zurück zum Hauptartikel: [[SigSys_SoSe2018| Signalverarbeitende Systeme]] | → zurück zum Hauptartikel: [[SigSys_SoSe2018| Signalverarbeitende Systeme]] | ||
'''Autor:''' Jan Drupka <br/> | '''Autor:''' [[Benutzer:Jan Drupka| Jan Drupka]] <br/> | ||
'''Betreuer:''' [[Benutzer:Ulrich Schneider| Prof. Schneider]] <br/> | '''Betreuer:''' [[Benutzer:Ulrich Schneider| Prof. Schneider]] <br/> | ||
'''Sensor:''' [https://www.bosch-sensortec.com/bst/products/all_products/bmi160 Bosch Sensortec BMI160] | '''Sensor:''' [https://www.bosch-sensortec.com/bst/products/all_products/bmi160 Bosch Sensortec BMI160] | ||
== Aufgabenstellung == | == Aufgabenstellung == | ||
* Lesen Sie den Sensor mit MATLAB/Simulink aus (MATLAB/Simulink Toolbox). | |||
* Beschreiben, untersuchen und verstehen Sie Ihre Signalverarbeitungskette. | |||
== Google Nexus 5X == | == Google Nexus 5X == | ||
[[Datei:Nexus_5X.jpeg|thumb|Google Nexus 5X (Weiß)]] | [[Datei:Nexus_5X.jpeg|thumb|Abb. 1: Google Nexus 5X (Weiß)]] | ||
Das Google Nexus 5X ist ein von [https://de.wikipedia.org/wiki/Google_LLC Google] entwickeltes und von [https://de.wikipedia.org/wiki/LG_Electronics 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.<ref>[https://de.wikipedia.org/wiki/Nexus_5X | Das Google Nexus 5X ist ein von [https://de.wikipedia.org/wiki/Google_LLC Google] entwickeltes und von [https://de.wikipedia.org/wiki/LG_Electronics 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.<ref>[https://de.wikipedia.org/wiki/Nexus_5X Seite „Nexus 5X“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 2. April 2018, 20:50 UTC. (zuletzt abgerufen am 3. Juli 2018)]</ref>. | ||
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 [https://de.wikipedia.org/wiki/Global_Positioning_System GPS]-Signal verfügbar ist. | 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 [https://de.wikipedia.org/wiki/Global_Positioning_System GPS]-Signal verfügbar ist. | ||
Die untenstehende Abbildung 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 | 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 [https://de.wikipedia.org/wiki/Integrierter_Schaltkreis integrierten Schaltungen (ICs)] ist der Toshiba THGBMFG7C2LBAIL 16 GB eMMC 5.0 Flashspeicher. | ||
Die Position des Bosch Sensortec BMI160 | 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.<ref>[https://de.wikipedia.org/w/index.php?title=ARM_Cortex-M4&oldid=168179493 Seite „ARM Cortex-M4“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 15. August 2017, 16:53 UTC. (zuletzt abgerufen am 6. Juli 2018)]</ref> 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.<ref>[https://en.wikipedia.org/w/index.php?title=Sensor_hub&oldid=840642373 Seite „Sensor hub“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 11. Mai 2018, 05:31 UTC. (zuletzt abgerufen am 6. Juli 2018)]</ref> | ||
[[Datei:Android_Achsendefinition_beim_BMI160.png|thumb|Achsendefinition des BMI160 für Android-Geräte]] | |||
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: | |||
[[Datei:Android_Achsendefinition_beim_BMI160.png|thumb|Abb. 2: Achsendefinition des BMI160 für Android-Geräte]] | |||
# Die Größe des Bauelements | # Die Größe des Bauelements | ||
# Die Farbe und Oberflächenstruktur 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. <ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 105</ref> | # 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. <ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 105</ref> | ||
# Die Position oben rechts im Gerät entspräche der Position des Sensor in der Abbildung, die die Achsen definiert. (Abb. | # 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) | ||
[[Datei:Nexus_5X_Mainboard.jpeg|center|framed|x500px|Nexus 5X Mainboard]] | [[Datei:Nexus_5X_Mainboard.jpeg|center|framed|x500px|Abb. 3: Nexus 5X Mainboard]] | ||
== Bosch Sensortec BMI160 == | |||
[[Datei:BMI160.png|thumb|Abb. 4: Der Bosch Sensortec BMI160]] Mit dem BMI160 brachte Bosch Sensortec im März 2015 eine hochintegrierte, [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Inertiale_Messeinheit_.28IMU.29 inertiale Messeinheit (IMU)] mit geringem Stromverbrauch (typischerweise 950 μA unter voller Last<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer, S. 1</ref>) auf den Markt, die einen Beschleunigungssensor und ein Gyroskop in einem [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Land_Grid_Array_.28LGA.29 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 [https://de.wikipedia.org/wiki/Interrupt Unterbrechungsanforderungen] und die Ausgabe in flexiblen Bussystemen benötigten Elemente sind hier in einem [https://de.wikipedia.org/wiki/Anwendungsspezifische_integrierte_Schaltung ASIC] [https://de.wikipedia.org/wiki/Die_(Halbleitertechnik) 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 [https://en.wikipedia.org/wiki/Microelectromechanical_systems mikro-elektro-mechanische Systeme (MEMS)]. Im [https://de.wikipedia.org/wiki/IPhone_X iPhone X] befindet sich eine speziell für [https://de.wikipedia.org/wiki/Apple Apple] weiterentwickelte Version des Sensors, die auch als Nachfolger interpretiert werden könnte.<ref>[http://www.systemplus.fr/reverse-costing-reports/boschs-6-axis-imu-in-the-apple-iphone-x/ MEMS IMU/COMBO: Bosch’s 6-Axis IMU in the Apple iPhone X: Available sample]</ref> [[Datei:Mehrere_Bosch_Sensortec_BMI160_neben_einem_Eincentstück.png|thumb|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. <ref>[https://www.mouser.de/ProductDetail/Bosch-Sensortec/BMI160?qs=Lj1LZLjqIN1DEsUDgjehlg%3d%3d Mouser Electronics: BMI160 (zuletzt abgerufen am 04.07.2019)]</ref> 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 ([https://en.wikipedia.org/wiki/Power_Management_Unit 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.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer, S. 1</ref> Hergestellt wird der BMI160 auf einem Standard-20cm-Silicium-[https://de.wikipedia.org/wiki/Wafer Wafer]. Die mechanischen Elemente werden aus 20 µm [https://en.wikipedia.org/wiki/Polycrystalline_silicon poly-Si] hergestellt.<ref>[http://www.systemplus.fr/reverse-costing-reports/bosch-sensortec-bmi160/ MEMS IMU/COMBO: Bosch Sensortec BMI160: Available sample]</ref> | |||
=== 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 [https://de.wikipedia.org/wiki/Dual_in-line_package 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 [https://de.wikipedia.org/wiki/Reflow-L%C3%B6ten 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 === | === Aufbau des BMI160 === | ||
[[Datei:BMI160 Block Diagramm.png|center|framed|x500px|Blockdiagramm zur Darstellung Aufbaus und des Datenflusses im Sensor <ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 12</ref>]] | Auf dem untenstehenden Blockdiagramm (Abb. 6) ist der innere Aufbau und der Datenfluss im BMI160 zu sehen. | ||
[[Datei:BMI160 Block Diagramm.png|center|framed|x500px|Abb. 6: Blockdiagramm zur Darstellung Aufbaus und des Datenflusses im Sensor <ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 12</ref>]] | |||
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.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 16</ref> Die hardwareseitigen Zeitstempel können auch zur Fusion von Sensordaten genutzt werden.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 2</ref> | |||
==== Beschleunigungssensor ==== | |||
[[Datei:MEMS_Beschleunigungssensor.gif|thumb|350px|Abb. 7: 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. 7) 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)<ref>[https://de.wikipedia.org/w/index.php?title=Beschleunigungssensor&oldid=177411154 Seite „Beschleunigungssensor“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 14. Mai 2018, 09:10 UTC. (zuletzt abgerufen am: 5. Juli 2018)]</ref>. 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 ==== | |||
[[Datei:MEMS_Gyroskop.gif|thumb|350px|Abb. 8: 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. 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.<ref>[https://www.channel-e.de/designcorner/artikel/article/mems-gyroskop-fuer-genaue-drehratenmessungen-in-rauen-umgebungen-bei-hohen-temperaturen.html 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)]</ref> Die Coriolisbeschleunigung ist die Beschleunigung, die der bewegte Körper durch die Corioliskraft erfährt. Die Corioliskraft wird auch als Corioliseffekt bezeichnet<ref>[https://homepages.thm.de/~hg7394/sns/Kraft1/Coriolis_Effekt.htm Technische Hochschule Mittelhessen: 4.1. Coriolis Effekt, 19.09.2001 (zuletzt abgerufen am 06.07.2018)]</ref> und ist ebenfalls eine Trägheitskraft.<ref>[https://de.wikipedia.org/w/index.php?title=Corioliskraft&oldid=178233885 Seite „Corioliskraft“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 12. Juni 2018, 00:51 UTC. (zuletzt abgerufen am 06.07.2018)]</ref> 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) findet, abgeleitet vom Datenblatt des BMI160<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 12</ref>, auf einem Prozessor innerhalb des Sensors statt. Die digitale Signalverarbeitung wird in [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Digitale_Signalverarbeitung_2 5.4 Digitale Signalverarbeitung] genauer thematisiert. | |||
==== Register ==== | |||
Das Register (in der Abbildung: Sensor Data and Sensortime Register) ist ein Speicher im BMI160, der unmittelbar mit dem internen Prozessor und der primären digitalen Schnittstelle des BMI160 verbunden ist. Das Register ist zum Teil volatil und zum Teil nichtvolatil.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 43</ref> Aus dem Register kann stets die aktuelle Sensorzeit abgerufen werden. Auch werden in dem Register Sensordaten sowie die Programmierung der [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Sonstige PMU] und der primären und sekundären Schnittstelle gespeichert. Die akquirierten Messdaten der internen und externen Sensoren können zusätzlich in der integrierten [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#First_In_.E2.80.93_First_Out_Engine FIFO-Engine] gespeichert werden, auf welche über die primäre Schnittstelle schneller zugegriffen werden kann. Im Datenblatt des BMI160 ist eine Karte des Registers zu finden, auf der die einzelnen Registeradressen zugeordnet und definiert sind.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 45</ref> | |||
==== 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:<ref>[https://www.st.com/content/ccc/resource/technical/document/design_tip/38/08/c6/4f/f4/a1/47/01/DM00102380.pdf/files/DM00102380.pdf/jcr:content/translations/en.DM00102380.pdf ST Microelectronics: DT001 Design tip: Benefits in using FIFO buffer embedded in ST MEMS sensors, Dezember 2013 (zuletzt abgerufen am 06.07.2018)]</ref> | |||
* Verringerung des Stromverbrauchs oder höhere Datenrate | |||
* Speichern von Verläufen | |||
* Verhinderung von Datenverlusten | |||
* Glättung des Signals | |||
* Schneller Datenzugriff für Filter oder [https://de.wikipedia.org/wiki/%C3%9Cberabtastung Überabtastung] | |||
* Zwischenspeicher für Datenpufferung | |||
==== Schrittzähler ==== | |||
Der interne Schrittzähler (in der Abbildung: Step Counter) erkennt die Schritte und signifikante Bewegungen des Trägers des Nexus 5X und zählt diese. Die Erkennung und Zählung der Schritte erzeugt im BMI160 einen zusätzlichen Stromverbrauch von jeweils 5 μA. Der Schrittzähler kann wie folgt konfiguriert werden<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 28</ref>: | |||
* Normaler Modus (Standardwert) | |||
* Sensitiver Modus (kann für leichte und kleine Personen aktiviert werden) | |||
* Robuster Modus (kann bei vielen falsch-positiven Aktivierungen genutzt werden) | |||
Die Einstellung des Schrittzählers erfolgt mithilfe des [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Register Registers]. Die genannten Funktionen sind Android 5.0 (Lollipop) kompatibel. | |||
==== Interrupt Engine ==== | |||
Die Interrupt Engine ist ein sehr wichtiger Bestandteil des Sensors, da sie die [https://de.wikipedia.org/wiki/Interrupt Unterbrechungsanforderungen] generiert. | |||
Es können folgende Interrupts generiert werden<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 25 ff.</ref>: | |||
* Erkennung jeglicher Bewegung (Beschleunigungssensor) | |||
* Erkennung signifikanter Bewegung (Beschleunigungssensor) | |||
* Schritterkennung | |||
* Erkennung einer implusiven Bildschirmberührung oder -doppelberührung (Beschleunigungssensor) | |||
* Lagererkennung (Beschleunigungssensor) | |||
* Freifallerkennung (Beschleunigungssensor) | |||
* Erkennung besonders hoher G-Kräfte (Beschleunigungssensor) | |||
* Erkennung eines Stillstands (Beschleunigungssensor) | |||
* Erkennung der horizontalen Lage (Beschleunigungssensor) | |||
* PMU Trigger (Gyroskop) | |||
* Verfügbarkeit neuer Daten | |||
* Interrupts, die von der FIFO-Engine ausgelöst werden (Beschleunigungssensor, Gyroskop und externe Sensoren) | |||
Die Generierung eines Interrupts bei der Erkennung signifikanter Bewegungen und der Schritterkennung erzeugen bei dem BMI160 einen zusätzlichen Stromverbrauch von 20 μA. | |||
==== Primäre digitale Schnittstelle ==== | |||
Die primäre digitale Schnittstelle (in der Abbildung: Primary Digital Interface) ist als I²C- oder SPI-Datenbus programmierbar. Dabei agiert der BMI160 im [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Bussystem Bussystem] als Slave zum Sensor-Hub. | |||
==== Sekundäre digitale Schnittstelle ==== | |||
[[Datei:BMI160_-_Beispiele_sekundäres_Register.png|thumb|Abb. 9: Beispiele für die mögliche Nutzung der Schnittstellen des BMI160]] | |||
Die sekundäre Schnittstelle (in der Abbildung: Secondary Digital Interface) kann sowohl für einen externen Sensor, z.B. einen Magnetsensor (via I²C), als auch als OIS-Schnittstelle (via SPI) konfiguriert werden. OIS steht hier für optical image stabilization (zu Deutsch: optische Bildstabilisierung). | |||
Wird die sekundäre Schnittstelle für einen Magnetsensor konfiguriert, agiert der BMI160 im Bussystem als Master und der Magnetsensor als Slave. Agiert der BMI160 als Master, fragt er das Signal vom Magnetsensor automatisch ab und stellt es über die primäre Schnittstelle an den Anwendungsprozessor bzw. das Sensor-Hub zur Verfügung. Wird die sekundäre Schnittstelle zur optischen Bildstabilisierung genutzt, agiert die externe (nicht im Gehäuse des BMI160 verbaute) OIS-Kontrolleinheit im Bussystem als Master und der BMI160 selbst als Slave.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 84</ref> | |||
Für den jeweiligen Einsatz der sekundären Schnittstelle muss über über das [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Register Register] das dazugehörige [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Bussystem Bussystem] ausgewählt werden. Die nebenstehende Abbildung (Abb. 9) veranschaulicht die mögliche Nutzung der Schnittstellen mit zwei Beispielen. | |||
==== 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 [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Analog-Digital-Umsetzer 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. 6) nicht entnehmbar. | |||
== Signalverarbeitungskette == | == 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 === | === Signalvorverarbeitung === | ||
Über das verwendete [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Bussystem Bussystem] werden ausschließlich bereits digitalisierte und verarbeitete Daten übertragen. Die Signalvorverarbeitung ist dem Blockdiagramm (Abb. 6) 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 === | === Analog-Digital-Umsetzer === | ||
[[Datei:Verschiedene_Analog-Digital-Umsetzer_und_ihre_hauptsächlichen_Anwendungsfelder.png|thumb|Verschiedene Analog-Digital-Umsetzer und ihre hauptsächlichen Anwendungsfelder]] | [[Datei:Verschiedene_Analog-Digital-Umsetzer_und_ihre_hauptsächlichen_Anwendungsfelder.png|thumb|Abb. 10: Verschiedene Analog-Digital-Umsetzer und ihre hauptsächlichen Anwendungsfelder]] | ||
=== | |||
=== | Im Allgemeinen ist ein Analog-Digital-Umsetzer (ADU) ein elektronisches Bauteil zum Digitalisieren eines analogen Signals. Im BMI160 digitalisiert der ADU die Veränderung der elektrischen Kapazität in den MEMS-Sensoren. Das resultierende digitale Signal kann folgend weiterverarbeitet und gespeichert werden. Es gibt verschiedene Verfahren, mit denen analoge Rohsignale oder vorverarbeitete Daten digitalisiert werden können. | ||
== | |||
Der ADU wird im Datenblatt des BMI160 nicht thematisiert.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 4 ff.</ref> | |||
Welcher ADU im BMI160 eingesetzt werden, kann mit den zur Verfügung stehenden Informationen und Mitteln nicht direkt bestimmt werden. Es kann lediglich eine begründete Hypothese für den verwendeten ADU aufgestellt werden. Dabei werden verschiedene Faktoren wie die Auflösung, die Bandbreite, der Stromverbrauch und die Maße des Sensors berücksichtigt. | |||
Vermutet wird ein ADU auf Basis der sukzessiven Approximation.<ref>[http://www.vias.org/mikroelektronik/adc_succapprox.html Angewandte Mikroelektronik: Sukzessive Approximation, 05.12.2010 (zuletzt abgerufen am 06.07.2018)]</ref> Die sukzessive Approximation ist seit den 1970ern populär und wird auch als Wiegeverfahren bezeichnet.<ref>[http://www.analog.com/en/analog-dialogue/articles/the-right-adc-architecture.html Kester, Walt, AnalogDialogue: Which ADC Architecture Is Right for Your Application?, Juni 2005 (zuletzt abgerufen am 06.07.2018)]</ref> In der Literatur ist wird das Verfahren häufig mit SAR abgekürzt. Die Abkürzung leitet sich vom "Successive-approximation-register" ab. | |||
==== Gründe für die sukzessive Approximation ==== | |||
Es sprechen mehrere Gründe für das für das Verfahren der sukzessive Approximation (successive approximation register, SAR). SAR-ADU repräsentieren die Mehrheit des Marktes von ADU mit mittlerer (8 bit) bis hoher (16 bit) Auflösung. Sie können in kleinem Formfaktor gefertigt werden, weshalb sie gerne in batteriebetriebenen, mobilen Geräten eingesetzt werden.<ref>[https://www.maximintegrated.com/en/app-notes/index.mvp/id/1080 Maxim Integrated: TUTORIAL 1080: Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs, 02.10.2001 (zuletzt abgerufen am 06.07.2018)]</ref> Auch ermöglichen SAR-ADU hohe Bandbreiten bei niedrigem Stromverbrauch.<ref>[https://www.maximintegrated.com/en/app-notes/index.mvp/id/1080 Maxim Integrated: TUTORIAL 1080: Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs, 02.10.2001 (zuletzt abgerufen am 06.07.2018)]</ref> Daher ist das Hauptanwendungsfeld des SAR die Datenerfassung mittels wenig Strom verbrauchender integrierter Schaltungen.<ref>[http://www.analog.com/en/analog-dialogue/articles/the-right-adc-architecture.html Kester, Walt, AnalogDialogue: Which ADC Architecture Is Right for Your Application?, Juni 2005 (zuletzt abgerufen am 06.07.2018)]</ref> (Abb. 10) Die Geschwindigkeit des SAR ist schnell, bis herunter zu einigen µs. Dabei bleibt die Umsetzungszeit konstant.<ref>Schneider, Ulrich: Signalverarbeitende Systeme: Analog-Digital-Umsetzer (ADU), S. 43</ref> | |||
==== Ausschluss von alternativen ADU ==== | |||
Ein Flash-Wandler wird ausgeschlossen, da dieser für jede Spannungsstufe einen Komparator benötigt. Da sowohl der Beschleunigungssensor, als auch das Gyroskop eine Auflösung von 16 bit aufweisen und jede Messeinheit ihre eigene dedizierte ADU hat, müssten in dem Gehäuse insgesamt 131.071 Komparatoren verbaut sein. Der Aufwand wäre viel zu groß und zu kostenaufwendig. Auch könnte der geringe Stromverbrauch damit unmöglich realisiert werden. | |||
Ein Zeitbasisumsetzer wird ausgeschlossen, da dieser bei der Auflösung zu langsam wäre. Die Daten des Beschleunigungssensors werden mit 1600 Hz, die Daten des Gyroskops mit 6400 Hz abgefragt. Ein Zeitbasisumsetzer würde dem nicht nachkommen können. | |||
Der Dual-Slope-Umsetzer sollte aus demselben Grund wie der Zeitbasisumsetzer ausgeschlossen werden können. | |||
Ein ADU auf Basis eines Delta-Sigma-Verfahrens wird zunächst ausgeschlossen, da die Verwendung eines solchen in MEMS in aktuellen wissenschaftlichen Publikationen<ref>[https://ieeexplore.ieee.org/document/8246036/ Hussain, Arshad; Hanif, Mehwish: Active-pasisve delta-sigma modulator ADC for MEMS accelecrometers, 04.01.2018, DOI: 10.1109/RAEE.2017.8246036 (zuletzt abgerufen am 06.07.2018)]</ref> diskutiert wird und der Sensor bereits seit Anfang 2015 auf dem freien Markt erhältlich ist. Hauptanwendungsfelder der Delta-Sigma-Verfahren sind industrielle Präszisionsmessungen und Geräteausstattungen sowie die Digitalisierung von Audiosignalen.<ref>[http://www.analog.com/en/analog-dialogue/articles/the-right-adc-architecture.html Kester, Walt, AnalogDialogue: Which ADC Architecture Is Right for Your Application?, Juni 2005 (zuletzt abgerufen am 06.07.2018)]</ref> | |||
for | |||
</ | |||
== | === Bussystem === | ||
Anders als eine Verbindung, die ein Element über eine oder mehrere Leitungen mit nur einem anderen Element kommunizieren lässt, ermöglicht ein Bussystem die Verbindung mehrerer Elemente über einen Leitungssatz bzw. Kabelstrang. Ein Bussystem ist bidirektional, es erlaubt also die Kommunikation in beide Richtungen. Bussysteme haben das Ziel, eine bidirektionale Kommunikation mit möglichst wenigen Leitungen zu versorgen. Je weniger Leitungen benötigt werden, desto günstiger und schneller ist eine Platine herzustellen. Ein Kabelstrang wird außerdem leichter. | |||
Da der BMI160 selbst ein [https://de.wikipedia.org/wiki/Mikrocontroller Mikrocontroller] ist und keine technischen Details über die digitale Signalverarbeitung innerhalb des Sensor vorliegen, kann die Frage nach einem Bussystem zwischen Sensor und Mikrocontroller nicht sicher beantwortet werden. | |||
Die Schnittstellen des BMI160 lassen jedoch ausschließlich die Kommunikation über Bussysteme zu. Die primäre digitale Schnittstelle kann für den Betrieb im I²C- oder SPI-Bussystem konfiguriert werden. In beiden Fällen agiert der BMI160 im Bussystem als Slave zum Sensor-Hub. | |||
Beide Systeme haben Vor- und Nachteile. Der SPI-Bus ist einfach zu implementieren und gut geeignet für die Kommunikation in kleinen Systemen. Es besteht jedoch keine Kontrolle über die Flankensteilheit der Signale und keine Fehlerabsicherung. Der I²C-Bus ordnet jedem angeschlossenen Element eine einzigartige Adresse zu. Der Bustakt wird vom Master (hier: Sensor-Hub) vorgegeben. Der I²C-Bus ist jedoch sehr anfällig für Störgeräusche. Die Auswahl des für die primäre Schnittstelle des BMI160 genutzten Bussystems sollte sich also nach dem Anwendungsgebiet richten.<ref>[http://gedankenlyrik.bplaced.net/www/studium/seminararbeit_2008.pdf Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.31 f. (zuletzt abgerufen am 06.07.2018)]</ref> Für den Einsatz des BMI160 im Nexus 5X vermutet der Autor den SPI-Bus, da dieser fast ausschließlich auf Leiterplatinen anzutreffen ist und dort seine Vorteile ausspielen kann. Außerhalb von Leiterplatinen ist der SPI-Bus kaum anzutreffen, da er auf zu langen Leiterbahnen unbrauchbar wird.<ref>[http://gedankenlyrik.bplaced.net/www/studium/seminararbeit_2008.pdf Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.6 (zuletzt abgerufen am 06.07.2018)]</ref> | |||
==== I²C-Bus ==== | |||
Der I²C-Bus ist ein Zweidrahtbussystem. Das bedeutet, dass für die Kommunikation nur zwei Leitungen benötigt werden. Hinzu kommen die nicht mitgezählten Leitungen für die Spannungsversorgung und Masse.<ref>[http://gedankenlyrik.bplaced.net/www/studium/seminararbeit_2008.pdf Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.5 (zuletzt abgerufen am 06.07.2018)]</ref> I²C gilt als Industriestandard für Steuerungs- und Überwachungslösungen und steht für "Inter-Integrated | |||
Circuit" (zu Deutsch: interne integrierte Schaltung). Entwickelt, patentiert und lizensiert wurde bzw. wird der I²C-Bus von [https://de.wikipedia.org/wiki/NXP_Semiconductors Philips Semiconductors]. Das Bussystem arbeitet nach dem Master-Slave-Prinzip. Der Master gibt den Takt an, die Slaves reagieren auf den Master. Sie können selbst keine Datenübertragung einleiten. (Die [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Interrupt_Engine Interrupt-Engine] des BMI160 kann beim Sensor-Hub des Nexus 5X jedoch eine Datenabfrage auslösen) Die beiden Datenleitungen werden mit SDA (Serial Data) und SCL (Serial Clock) abgekürzt. Erste überträgt die eigentlichen Daten, zweite die Taktimpulse. | |||
Der I²C-Bus kann auch für einige Meter lange Leitungen eingesetzt werden. | |||
<ref>[http://gedankenlyrik.bplaced.net/www/studium/seminararbeit_2008.pdf Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.14 ff. (zuletzt abgerufen am 06.07.2018)]</ref> | |||
==== SPI-Bus ==== | |||
Der SPI-Bus ist kein "echtes Zweidrahtbussystem". Beim SPI-Bus werden vier Leitungen zur Kommunikation genutzt. Zwei Leitungen werden für Daten, eine dritte für den Takt, der zur Synchronisation an jedes Element weitergeleitet wird, genutzt. Die vierte Leitung wird als Slave-Select- oder Chip-Select-Leitung bezeichnet und dient dem Selektieren des jeweiligen Slave-Elements. SPI steht für "Serial Periphal Interface" und ist ein "lockerer" Standard, d.h. kein offizieller Standard. Beim SPI-Bus ist nur die Funktionsweise der Hardware spezifiziert. Der SPI-Bus kann lizenzfrei genutzt werden, da er nie patentiert wurde. Er arbeitet so wie der I²C-Bus nach dem Master-Slave-Prinzip.<ref>[http://gedankenlyrik.bplaced.net/www/studium/seminararbeit_2008.pdf Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.5 ff. (zuletzt abgerufen am 06.07.2018)]</ref> | |||
=== Digitale Signalverarbeitung === | |||
Formell beginnt die digitale Signalverarbeitung direkt nach dem ADU, da es dann kein analoges Signal mehr gibt. | |||
Die digitale Signalverarbeitung wird im Datenblatt des BMI160 nicht thematisiert.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 4 ff.</ref> Es sind jedoch keine weiteren Verarbeitungsschritte notwendig, da bereits eine ganzheitliche digitale Signalverarbeitung im BMI160 selbst erfolgt. Die im BMI160 angewendeten Filter konnten keiner kostenlos verfügbaren Quelle entnommen werden. Dem gezeigten Blockdiagramm (Abb. 6) ist jedoch zu entnehmen, dass eine [http://193.175.248.52/wiki/index.php/Nexus_5X_Lagesensor_(IMU)_mit_Matlab/Simulink#Digitale_Signalverarbeitung digitale Signalverarbeitung] innerhalb des Sensors direkt nach der Digitalisierung der Analogsignale stattfindet. Die aus den Messwerten resultierende Kurve ist verstärkt, glatt und rauschfrei. Sowohl Drift, als auch Offset wurden bereits vom Hersteller (Bosch Sensortec) oder vom OEM (LG) herausprogrammiert. Die in der untenstehenden Abbildung (Abb. 11) zu sehenden Zacken sind mit der niedrigen Abfragerate von einem Hertz zu begründen. | |||
Die | |||
[[Datei:BMI160_-_Rollen.jpeg|center|framed|x500px|Abb. 11: Erfassung des Rollens des Nexus 5X mit dem Bosch Sensortec BMI160 über Matlab]] | |||
Da bei dem vorliegenden Sensor auf kein Analoges Signal zugegriffen werden kann, keine Daten über den analogen Messbereich vorliegen und keine Daten über den ADU vorliegen, müssen die gefragte Auflösung und die Empfindlichkeit des Sensors der Dokumentation des Sensors entnommen werden.<ref>Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer</ref> | |||
{| class="wikitable" | |||
|- | |||
{| class=" | ! Sensor !! Auflösung !! Empfindlichkeit | ||
! | |||
! | |||
|- | |- | ||
| | | Beschleunigungssensor || 16 bit (digital) || ±2g: 16384LSB/g<br />±4g: 8192LSB/g<br />±8g: 4096LSB/g<br />±16g: 2048LSB/g | ||
| | |||
| | |||
|- | |- | ||
| | | Gyroskop || 16 bit (digital) || ±125°/s: 262.4 LSB/°/s<br />±250°/s: 131.2 LSB/°/s<br />±500°/s: 65.6 LSB/°/s<br />±1000°/s: 32.8 LSB/°/s<br />±2000°/s: 16.4 LSB/°/s | ||
| | |||
| | |||
|} | |} | ||
=== | ==== 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 === | |||
Wie in dem YouTube-Video zu sehen ist, wurde eine Testmessung auf einem möglichst geraden Untergrund durchgeführt. Das Ziel war es, einen wahren Wert von 0° zu erreichen. Als Gerät zur Referenzmessung wurde ein iPhone X eingesetzt. Ein genaueres Referenzmessgerät stand leider nicht zur Verfügung. Als Messreihe wurden die zehn ersten Messwerte auf der möglichst geraden Oberfläche herangezogen. | |||
-0,017° | |||
-0,027° | |||
-0,037° | |||
-0,04° | |||
-0,059° | |||
-0,071° | |||
-0,08° | |||
-0,102° | |||
-0,113° | |||
-0,131° | |||
Die daraus resultierende Standardabweichung beträgt 0,038600662. Der Verlauf der Messwerte wurde so interpretiert, dass sich der Sensor noch "einpendelte" und dann bei etwa -0,2° zum Stillstand kam. Es handelt sich hier also nicht um einen Drift. Entweder war die Oberfläche nicht ideal gerade, oder der Sensor hat einen leichten Offset. Erstes wird stark vermutet. | |||
Mithilfe der berechneten Standardabweichung und der Konstante aus der [https://de.wikipedia.org/wiki/Studentsche_t-Verteilung#Tabelle_einiger_t-Quantile Tabelle der t-Quantile] (2,26) konnten die Messunsicherheit und der Vertrauensbereich für diese Messreihe bestimmt werden. Dafür wurden die Werte in folgende Formel eingesetzt: <math>u_A = \bar x \pm \frac{t(n-1)}{\sqrt n}\cdot s</math>. | |||
Die Berechnete Messunsicherheit beträgt 0,027586. | |||
Der Vertrauensbereich <math>u_A</math> liegt also bei -0,0677 ± 0,027586. | |||
== Auslesen und Darstellen der Sensordaten mit Matlab == | |||
<source line lang="matlab" style="font-size:small"> | |||
% Die im SVN hochgeladene Datei verfügt über einen vollständigen Header und zusätzliche Anweisungen! | |||
%****************************************** | |||
% Vorbereitung * | |||
%******************************************/ | |||
close all; % Schließung aller offenen Diagramme | |||
clear all; % Bereinigung des Arbeitsspeichers (Matlab Workspace) | |||
clear m; % Alte mobiledev-Objekte sträuben sich gegen das clear all | |||
delete m; % Komplettes Entfernen eines möglichen alten mobiledev-Objekts | |||
clc; % Bereinigung der Kommandozeile | |||
%****************************************** | |||
% Initialisierung der Datenerfassung * | |||
%******************************************/ | |||
m = mobiledev; % Erstellet das mobiledev-Objekt "m", das die Sensordaten mithilfe | |||
% des Add-Ons und der App aus dem Smartphone auslesen kann | |||
if m.Connected == 1 | |||
fprintf("Verbindung steht! \n\n"); | |||
else | |||
fprintf("Keine Verbindung zum Nexus 5X... \n\n"); | |||
end | |||
m.AccelerationSensorEnabled = 1; % Aktiviert den Beschleunigungssensor | |||
m.AngularVelocitySensorEnabled = 0; % Aktiviert das Gyroskop | |||
m.MagneticSensorEnabled = 0; % Deaktiviert die Abfrage des Magnetsensors | |||
m.OrientationSensorEnabled = 1; % Aktiviert den virtuellen Lagesensor | |||
m.PositionSensorEnabled = 0; % Deaktiviert die Abfrage des virtuellen Positionssensors | |||
m.SampleRate = "low"; % Legt die Abfragerate fest | |||
% low = 1 Hz, | |||
% medium = 10 Hz | |||
% high = 100 Hz | |||
m.Logging = 1; % Schaltet das Loggen der Daten im mobiledev-Objekt ein bzw. aus | |||
disp(m) % Liest das mobiledev-Objekt aus | |||
%********************************************************************************** | |||
% Darstellung der Sensordaten in "Echtzeit" * | |||
% (Übertragung aus technischen Gründen verzögert) * | |||
% Nicht vergessen: "Start Sending" drücken! * | |||
%********************************************************************************** | |||
% Zu untersuchende Richtung hier auswählen: * | |||
richtung = 3; | |||
% 1 = azimuth (Yaw bzw. Gierung zum magnetischen Nordpol von -180° bis 180°), * | |||
% 2 = pitch (Nicken von -90° bis 90°), * | |||
% 3 = roll (Rollen von -180° bis 180°) * | |||
%**********************************************************************************/ | |||
DlgH = figure; % Einfache Matlab UI zur Unterbrechung der Messung | |||
H = uicontrol('Style', 'PushButton', ... | |||
'String', 'Break', ... | |||
'Callback', 'delete(gcbf)'); % Einstellungsmöglichkeiten zur Weiterentwicklung | |||
x = 0; % Startpunkt der X-Achse | |||
while (ishandle(H)) | |||
b = round(m.orientation(richtung),0); % Runden der Werte auf ganze Zahlen | |||
disp(b); % Ausgabe des Wertes in der Kommandozeile | |||
x = [x,b]; | |||
plot (x) | |||
xlabel("Messpunkte") | |||
if richtung == 1 | |||
axis ([0 inf -180 180]) | |||
yticks([-180 -90 0 90 180]) | |||
ylabel("Azimuth in Grad") | |||
elseif richtung == 2 | |||
axis ([0 inf -90 90]) | |||
yticks([-90 -45 0 45 90]) | |||
ylabel("Nicken in Grad") | |||
else | |||
axis ([0 inf -180 180]) | |||
yticks([-180 -90 0 90 180]) | |||
ylabel("Rollen in Grad") | |||
end | |||
grid | |||
drawnow | |||
end | |||
</source> | |||
== YouTube Video == | |||
Das Video stellt die Erfassung der zehn Messwerte zur Bestimmung der Messunsicherheit und das Auslesen und Darstellen der Messwerte mit Matlab dar. | |||
https://youtu.be/FsuGrGvHPt4 | |||
== Zusammenfassung == | |||
Die Aufgabenteile "Lesen Sie den Sensor mit MATLAB/Simulink aus (MATLAB/Simulink Toolbox)" und "Beschreiben, untersuchen und verstehen Sie Ihre Signalverarbeitungskette" wurden erfolgreich erfüllt. Mithilfe eines Shuttleboards und eines externen BMI160 hätten auch analoge Signale ausgewertet werden können. | |||
== Ausblick == | |||
Was kann/muss noch verbessert werden? | |||
== Literaturverzeichnis == | == Literaturverzeichnis == |
Aktuelle Version vom 1. April 2020, 15:24 Uhr
→ zurück zum Hauptartikel: Signalverarbeitende Systeme
Autor: Jan Drupka
Betreuer: Prof. Schneider
Sensor: Bosch Sensortec BMI160
Aufgabenstellung
- Lesen Sie den Sensor mit MATLAB/Simulink aus (MATLAB/Simulink Toolbox).
- Beschreiben, untersuchen und verstehen Sie Ihre Signalverarbeitungskette.
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. 7) 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) findet, abgeleitet vom Datenblatt des BMI160[17], auf einem Prozessor innerhalb des Sensors statt. Die digitale Signalverarbeitung wird in 5.4 Digitale Signalverarbeitung genauer thematisiert.
Register
Das Register (in der Abbildung: Sensor Data and Sensortime Register) ist ein Speicher im BMI160, der unmittelbar mit dem internen Prozessor und der primären digitalen Schnittstelle des BMI160 verbunden ist. Das Register ist zum Teil volatil und zum Teil nichtvolatil.[18] Aus dem Register kann stets die aktuelle Sensorzeit abgerufen werden. Auch werden in dem Register Sensordaten sowie die Programmierung der PMU und der primären und sekundären Schnittstelle gespeichert. Die akquirierten Messdaten der internen und externen Sensoren können zusätzlich in der integrierten FIFO-Engine gespeichert werden, auf welche über die primäre Schnittstelle schneller zugegriffen werden kann. Im Datenblatt des BMI160 ist eine Karte des Registers zu finden, auf der die einzelnen Registeradressen zugeordnet und definiert sind.[19]
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:[20]
- 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 interne Schrittzähler (in der Abbildung: Step Counter) erkennt die Schritte und signifikante Bewegungen des Trägers des Nexus 5X und zählt diese. Die Erkennung und Zählung der Schritte erzeugt im BMI160 einen zusätzlichen Stromverbrauch von jeweils 5 μA. Der Schrittzähler kann wie folgt konfiguriert werden[21]:
- Normaler Modus (Standardwert)
- Sensitiver Modus (kann für leichte und kleine Personen aktiviert werden)
- Robuster Modus (kann bei vielen falsch-positiven Aktivierungen genutzt werden)
Die Einstellung des Schrittzählers erfolgt mithilfe des Registers. Die genannten Funktionen sind Android 5.0 (Lollipop) kompatibel.
Interrupt Engine
Die Interrupt Engine ist ein sehr wichtiger Bestandteil des Sensors, da sie die Unterbrechungsanforderungen generiert.
Es können folgende Interrupts generiert werden[22]:
- Erkennung jeglicher Bewegung (Beschleunigungssensor)
- Erkennung signifikanter Bewegung (Beschleunigungssensor)
- Schritterkennung
- Erkennung einer implusiven Bildschirmberührung oder -doppelberührung (Beschleunigungssensor)
- Lagererkennung (Beschleunigungssensor)
- Freifallerkennung (Beschleunigungssensor)
- Erkennung besonders hoher G-Kräfte (Beschleunigungssensor)
- Erkennung eines Stillstands (Beschleunigungssensor)
- Erkennung der horizontalen Lage (Beschleunigungssensor)
- PMU Trigger (Gyroskop)
- Verfügbarkeit neuer Daten
- Interrupts, die von der FIFO-Engine ausgelöst werden (Beschleunigungssensor, Gyroskop und externe Sensoren)
Die Generierung eines Interrupts bei der Erkennung signifikanter Bewegungen und der Schritterkennung erzeugen bei dem BMI160 einen zusätzlichen Stromverbrauch von 20 μA.
Primäre digitale Schnittstelle
Die primäre digitale Schnittstelle (in der Abbildung: Primary Digital Interface) ist als I²C- oder SPI-Datenbus programmierbar. Dabei agiert der BMI160 im Bussystem als Slave zum Sensor-Hub.
Sekundäre digitale Schnittstelle
Die sekundäre Schnittstelle (in der Abbildung: Secondary Digital Interface) kann sowohl für einen externen Sensor, z.B. einen Magnetsensor (via I²C), als auch als OIS-Schnittstelle (via SPI) konfiguriert werden. OIS steht hier für optical image stabilization (zu Deutsch: optische Bildstabilisierung).
Wird die sekundäre Schnittstelle für einen Magnetsensor konfiguriert, agiert der BMI160 im Bussystem als Master und der Magnetsensor als Slave. Agiert der BMI160 als Master, fragt er das Signal vom Magnetsensor automatisch ab und stellt es über die primäre Schnittstelle an den Anwendungsprozessor bzw. das Sensor-Hub zur Verfügung. Wird die sekundäre Schnittstelle zur optischen Bildstabilisierung genutzt, agiert die externe (nicht im Gehäuse des BMI160 verbaute) OIS-Kontrolleinheit im Bussystem als Master und der BMI160 selbst als Slave.[23]
Für den jeweiligen Einsatz der sekundären Schnittstelle muss über über das Register das dazugehörige Bussystem ausgewählt werden. Die nebenstehende Abbildung (Abb. 9) veranschaulicht die mögliche Nutzung der Schnittstellen mit zwei Beispielen.
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. 6) 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. 6) 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
Im Allgemeinen ist ein Analog-Digital-Umsetzer (ADU) ein elektronisches Bauteil zum Digitalisieren eines analogen Signals. Im BMI160 digitalisiert der ADU die Veränderung der elektrischen Kapazität in den MEMS-Sensoren. Das resultierende digitale Signal kann folgend weiterverarbeitet und gespeichert werden. Es gibt verschiedene Verfahren, mit denen analoge Rohsignale oder vorverarbeitete Daten digitalisiert werden können.
Der ADU wird im Datenblatt des BMI160 nicht thematisiert.[24]
Welcher ADU im BMI160 eingesetzt werden, kann mit den zur Verfügung stehenden Informationen und Mitteln nicht direkt bestimmt werden. Es kann lediglich eine begründete Hypothese für den verwendeten ADU aufgestellt werden. Dabei werden verschiedene Faktoren wie die Auflösung, die Bandbreite, der Stromverbrauch und die Maße des Sensors berücksichtigt.
Vermutet wird ein ADU auf Basis der sukzessiven Approximation.[25] Die sukzessive Approximation ist seit den 1970ern populär und wird auch als Wiegeverfahren bezeichnet.[26] In der Literatur ist wird das Verfahren häufig mit SAR abgekürzt. Die Abkürzung leitet sich vom "Successive-approximation-register" ab.
Gründe für die sukzessive Approximation
Es sprechen mehrere Gründe für das für das Verfahren der sukzessive Approximation (successive approximation register, SAR). SAR-ADU repräsentieren die Mehrheit des Marktes von ADU mit mittlerer (8 bit) bis hoher (16 bit) Auflösung. Sie können in kleinem Formfaktor gefertigt werden, weshalb sie gerne in batteriebetriebenen, mobilen Geräten eingesetzt werden.[27] Auch ermöglichen SAR-ADU hohe Bandbreiten bei niedrigem Stromverbrauch.[28] Daher ist das Hauptanwendungsfeld des SAR die Datenerfassung mittels wenig Strom verbrauchender integrierter Schaltungen.[29] (Abb. 10) Die Geschwindigkeit des SAR ist schnell, bis herunter zu einigen µs. Dabei bleibt die Umsetzungszeit konstant.[30]
Ausschluss von alternativen ADU
Ein Flash-Wandler wird ausgeschlossen, da dieser für jede Spannungsstufe einen Komparator benötigt. Da sowohl der Beschleunigungssensor, als auch das Gyroskop eine Auflösung von 16 bit aufweisen und jede Messeinheit ihre eigene dedizierte ADU hat, müssten in dem Gehäuse insgesamt 131.071 Komparatoren verbaut sein. Der Aufwand wäre viel zu groß und zu kostenaufwendig. Auch könnte der geringe Stromverbrauch damit unmöglich realisiert werden.
Ein Zeitbasisumsetzer wird ausgeschlossen, da dieser bei der Auflösung zu langsam wäre. Die Daten des Beschleunigungssensors werden mit 1600 Hz, die Daten des Gyroskops mit 6400 Hz abgefragt. Ein Zeitbasisumsetzer würde dem nicht nachkommen können.
Der Dual-Slope-Umsetzer sollte aus demselben Grund wie der Zeitbasisumsetzer ausgeschlossen werden können.
Ein ADU auf Basis eines Delta-Sigma-Verfahrens wird zunächst ausgeschlossen, da die Verwendung eines solchen in MEMS in aktuellen wissenschaftlichen Publikationen[31] diskutiert wird und der Sensor bereits seit Anfang 2015 auf dem freien Markt erhältlich ist. Hauptanwendungsfelder der Delta-Sigma-Verfahren sind industrielle Präszisionsmessungen und Geräteausstattungen sowie die Digitalisierung von Audiosignalen.[32]
Bussystem
Anders als eine Verbindung, die ein Element über eine oder mehrere Leitungen mit nur einem anderen Element kommunizieren lässt, ermöglicht ein Bussystem die Verbindung mehrerer Elemente über einen Leitungssatz bzw. Kabelstrang. Ein Bussystem ist bidirektional, es erlaubt also die Kommunikation in beide Richtungen. Bussysteme haben das Ziel, eine bidirektionale Kommunikation mit möglichst wenigen Leitungen zu versorgen. Je weniger Leitungen benötigt werden, desto günstiger und schneller ist eine Platine herzustellen. Ein Kabelstrang wird außerdem leichter.
Da der BMI160 selbst ein Mikrocontroller ist und keine technischen Details über die digitale Signalverarbeitung innerhalb des Sensor vorliegen, kann die Frage nach einem Bussystem zwischen Sensor und Mikrocontroller nicht sicher beantwortet werden.
Die Schnittstellen des BMI160 lassen jedoch ausschließlich die Kommunikation über Bussysteme zu. Die primäre digitale Schnittstelle kann für den Betrieb im I²C- oder SPI-Bussystem konfiguriert werden. In beiden Fällen agiert der BMI160 im Bussystem als Slave zum Sensor-Hub.
Beide Systeme haben Vor- und Nachteile. Der SPI-Bus ist einfach zu implementieren und gut geeignet für die Kommunikation in kleinen Systemen. Es besteht jedoch keine Kontrolle über die Flankensteilheit der Signale und keine Fehlerabsicherung. Der I²C-Bus ordnet jedem angeschlossenen Element eine einzigartige Adresse zu. Der Bustakt wird vom Master (hier: Sensor-Hub) vorgegeben. Der I²C-Bus ist jedoch sehr anfällig für Störgeräusche. Die Auswahl des für die primäre Schnittstelle des BMI160 genutzten Bussystems sollte sich also nach dem Anwendungsgebiet richten.[33] Für den Einsatz des BMI160 im Nexus 5X vermutet der Autor den SPI-Bus, da dieser fast ausschließlich auf Leiterplatinen anzutreffen ist und dort seine Vorteile ausspielen kann. Außerhalb von Leiterplatinen ist der SPI-Bus kaum anzutreffen, da er auf zu langen Leiterbahnen unbrauchbar wird.[34]
I²C-Bus
Der I²C-Bus ist ein Zweidrahtbussystem. Das bedeutet, dass für die Kommunikation nur zwei Leitungen benötigt werden. Hinzu kommen die nicht mitgezählten Leitungen für die Spannungsversorgung und Masse.[35] I²C gilt als Industriestandard für Steuerungs- und Überwachungslösungen und steht für "Inter-Integrated Circuit" (zu Deutsch: interne integrierte Schaltung). Entwickelt, patentiert und lizensiert wurde bzw. wird der I²C-Bus von Philips Semiconductors. Das Bussystem arbeitet nach dem Master-Slave-Prinzip. Der Master gibt den Takt an, die Slaves reagieren auf den Master. Sie können selbst keine Datenübertragung einleiten. (Die Interrupt-Engine des BMI160 kann beim Sensor-Hub des Nexus 5X jedoch eine Datenabfrage auslösen) Die beiden Datenleitungen werden mit SDA (Serial Data) und SCL (Serial Clock) abgekürzt. Erste überträgt die eigentlichen Daten, zweite die Taktimpulse.
Der I²C-Bus kann auch für einige Meter lange Leitungen eingesetzt werden. [36]
SPI-Bus
Der SPI-Bus ist kein "echtes Zweidrahtbussystem". Beim SPI-Bus werden vier Leitungen zur Kommunikation genutzt. Zwei Leitungen werden für Daten, eine dritte für den Takt, der zur Synchronisation an jedes Element weitergeleitet wird, genutzt. Die vierte Leitung wird als Slave-Select- oder Chip-Select-Leitung bezeichnet und dient dem Selektieren des jeweiligen Slave-Elements. SPI steht für "Serial Periphal Interface" und ist ein "lockerer" Standard, d.h. kein offizieller Standard. Beim SPI-Bus ist nur die Funktionsweise der Hardware spezifiziert. Der SPI-Bus kann lizenzfrei genutzt werden, da er nie patentiert wurde. Er arbeitet so wie der I²C-Bus nach dem Master-Slave-Prinzip.[37]
Digitale Signalverarbeitung
Formell beginnt die digitale Signalverarbeitung direkt nach dem ADU, da es dann kein analoges Signal mehr gibt.
Die digitale Signalverarbeitung wird im Datenblatt des BMI160 nicht thematisiert.[38] Es sind jedoch keine weiteren Verarbeitungsschritte notwendig, da bereits eine ganzheitliche digitale Signalverarbeitung im BMI160 selbst erfolgt. Die im BMI160 angewendeten Filter konnten keiner kostenlos verfügbaren Quelle entnommen werden. Dem gezeigten Blockdiagramm (Abb. 6) ist jedoch zu entnehmen, dass eine digitale Signalverarbeitung innerhalb des Sensors direkt nach der Digitalisierung der Analogsignale stattfindet. Die aus den Messwerten resultierende Kurve ist verstärkt, glatt und rauschfrei. Sowohl Drift, als auch Offset wurden bereits vom Hersteller (Bosch Sensortec) oder vom OEM (LG) herausprogrammiert. Die in der untenstehenden Abbildung (Abb. 11) zu sehenden Zacken sind mit der niedrigen Abfragerate von einem Hertz zu begründen.
Da bei dem vorliegenden Sensor auf kein Analoges Signal zugegriffen werden kann, keine Daten über den analogen Messbereich vorliegen und keine Daten über den ADU vorliegen, müssen die gefragte Auflösung und die Empfindlichkeit des Sensors der Dokumentation des Sensors entnommen werden.[39]
Sensor | Auflösung | Empfindlichkeit |
---|---|---|
Beschleunigungssensor | 16 bit (digital) | ±2g: 16384LSB/g ±4g: 8192LSB/g ±8g: 4096LSB/g ±16g: 2048LSB/g |
Gyroskop | 16 bit (digital) | ±125°/s: 262.4 LSB/°/s ±250°/s: 131.2 LSB/°/s ±500°/s: 65.6 LSB/°/s ±1000°/s: 32.8 LSB/°/s ±2000°/s: 16.4 LSB/°/s |
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
Wie in dem YouTube-Video zu sehen ist, wurde eine Testmessung auf einem möglichst geraden Untergrund durchgeführt. Das Ziel war es, einen wahren Wert von 0° zu erreichen. Als Gerät zur Referenzmessung wurde ein iPhone X eingesetzt. Ein genaueres Referenzmessgerät stand leider nicht zur Verfügung. Als Messreihe wurden die zehn ersten Messwerte auf der möglichst geraden Oberfläche herangezogen.
-0,017° -0,027° -0,037° -0,04° -0,059° -0,071° -0,08° -0,102° -0,113° -0,131°
Die daraus resultierende Standardabweichung beträgt 0,038600662. Der Verlauf der Messwerte wurde so interpretiert, dass sich der Sensor noch "einpendelte" und dann bei etwa -0,2° zum Stillstand kam. Es handelt sich hier also nicht um einen Drift. Entweder war die Oberfläche nicht ideal gerade, oder der Sensor hat einen leichten Offset. Erstes wird stark vermutet.
Mithilfe der berechneten Standardabweichung und der Konstante aus der Tabelle der t-Quantile (2,26) konnten die Messunsicherheit und der Vertrauensbereich für diese Messreihe bestimmt werden. Dafür wurden die Werte in folgende Formel eingesetzt: .
Die Berechnete Messunsicherheit beträgt 0,027586. Der Vertrauensbereich liegt also bei -0,0677 ± 0,027586.
Auslesen und Darstellen der Sensordaten mit Matlab
% Die im SVN hochgeladene Datei verfügt über einen vollständigen Header und zusätzliche Anweisungen!
%******************************************
% Vorbereitung *
%******************************************/
close all; % Schließung aller offenen Diagramme
clear all; % Bereinigung des Arbeitsspeichers (Matlab Workspace)
clear m; % Alte mobiledev-Objekte sträuben sich gegen das clear all
delete m; % Komplettes Entfernen eines möglichen alten mobiledev-Objekts
clc; % Bereinigung der Kommandozeile
%******************************************
% Initialisierung der Datenerfassung *
%******************************************/
m = mobiledev; % Erstellet das mobiledev-Objekt "m", das die Sensordaten mithilfe
% des Add-Ons und der App aus dem Smartphone auslesen kann
if m.Connected == 1
fprintf("Verbindung steht! \n\n");
else
fprintf("Keine Verbindung zum Nexus 5X... \n\n");
end
m.AccelerationSensorEnabled = 1; % Aktiviert den Beschleunigungssensor
m.AngularVelocitySensorEnabled = 0; % Aktiviert das Gyroskop
m.MagneticSensorEnabled = 0; % Deaktiviert die Abfrage des Magnetsensors
m.OrientationSensorEnabled = 1; % Aktiviert den virtuellen Lagesensor
m.PositionSensorEnabled = 0; % Deaktiviert die Abfrage des virtuellen Positionssensors
m.SampleRate = "low"; % Legt die Abfragerate fest
% low = 1 Hz,
% medium = 10 Hz
% high = 100 Hz
m.Logging = 1; % Schaltet das Loggen der Daten im mobiledev-Objekt ein bzw. aus
disp(m) % Liest das mobiledev-Objekt aus
%**********************************************************************************
% Darstellung der Sensordaten in "Echtzeit" *
% (Übertragung aus technischen Gründen verzögert) *
% Nicht vergessen: "Start Sending" drücken! *
%**********************************************************************************
% Zu untersuchende Richtung hier auswählen: *
richtung = 3;
% 1 = azimuth (Yaw bzw. Gierung zum magnetischen Nordpol von -180° bis 180°), *
% 2 = pitch (Nicken von -90° bis 90°), *
% 3 = roll (Rollen von -180° bis 180°) *
%**********************************************************************************/
DlgH = figure; % Einfache Matlab UI zur Unterbrechung der Messung
H = uicontrol('Style', 'PushButton', ...
'String', 'Break', ...
'Callback', 'delete(gcbf)'); % Einstellungsmöglichkeiten zur Weiterentwicklung
x = 0; % Startpunkt der X-Achse
while (ishandle(H))
b = round(m.orientation(richtung),0); % Runden der Werte auf ganze Zahlen
disp(b); % Ausgabe des Wertes in der Kommandozeile
x = [x,b];
plot (x)
xlabel("Messpunkte")
if richtung == 1
axis ([0 inf -180 180])
yticks([-180 -90 0 90 180])
ylabel("Azimuth in Grad")
elseif richtung == 2
axis ([0 inf -90 90])
yticks([-90 -45 0 45 90])
ylabel("Nicken in Grad")
else
axis ([0 inf -180 180])
yticks([-180 -90 0 90 180])
ylabel("Rollen in Grad")
end
grid
drawnow
end
YouTube Video
Das Video stellt die Erfassung der zehn Messwerte zur Bestimmung der Messunsicherheit und das Auslesen und Darstellen der Messwerte mit Matlab dar. https://youtu.be/FsuGrGvHPt4
Zusammenfassung
Die Aufgabenteile "Lesen Sie den Sensor mit MATLAB/Simulink aus (MATLAB/Simulink Toolbox)" und "Beschreiben, untersuchen und verstehen Sie Ihre Signalverarbeitungskette" wurden erfolgreich erfüllt. Mithilfe eines Shuttleboards und eines externen BMI160 hätten auch analoge Signale ausgewertet werden können.
Ausblick
Was kann/muss noch verbessert werden?
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)
- ↑ 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. 43
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 45
- ↑ ST Microelectronics: DT001 Design tip: Benefits in using FIFO buffer embedded in ST MEMS sensors, Dezember 2013 (zuletzt abgerufen am 06.07.2018)
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 28
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 25 ff.
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 84
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 4 ff.
- ↑ Angewandte Mikroelektronik: Sukzessive Approximation, 05.12.2010 (zuletzt abgerufen am 06.07.2018)
- ↑ Kester, Walt, AnalogDialogue: Which ADC Architecture Is Right for Your Application?, Juni 2005 (zuletzt abgerufen am 06.07.2018)
- ↑ Maxim Integrated: TUTORIAL 1080: Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs, 02.10.2001 (zuletzt abgerufen am 06.07.2018)
- ↑ Maxim Integrated: TUTORIAL 1080: Understanding SAR ADCs: Their Architecture and Comparison with Other ADCs, 02.10.2001 (zuletzt abgerufen am 06.07.2018)
- ↑ Kester, Walt, AnalogDialogue: Which ADC Architecture Is Right for Your Application?, Juni 2005 (zuletzt abgerufen am 06.07.2018)
- ↑ Schneider, Ulrich: Signalverarbeitende Systeme: Analog-Digital-Umsetzer (ADU), S. 43
- ↑ Hussain, Arshad; Hanif, Mehwish: Active-pasisve delta-sigma modulator ADC for MEMS accelecrometers, 04.01.2018, DOI: 10.1109/RAEE.2017.8246036 (zuletzt abgerufen am 06.07.2018)
- ↑ Kester, Walt, AnalogDialogue: Which ADC Architecture Is Right for Your Application?, Juni 2005 (zuletzt abgerufen am 06.07.2018)
- ↑ Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.31 f. (zuletzt abgerufen am 06.07.2018)
- ↑ Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.6 (zuletzt abgerufen am 06.07.2018)
- ↑ Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.5 (zuletzt abgerufen am 06.07.2018)
- ↑ Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.14 ff. (zuletzt abgerufen am 06.07.2018)
- ↑ Thomas, Maike: Seminararbeit: Die Zweidrahtbussysteme I²C-Bus und SPI-Bus: Eigenschaften, Protokolle, Anwendungen im Vergleich der beiden Systeme, 25.09.2008, S.5 ff. (zuletzt abgerufen am 06.07.2018)
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Data Sheet, S. 4 ff.
- ↑ Bosch Sensortec, BMI160: Small, low power inertial measurement unit: Product Flyer
→ zurück zum Hauptartikel: Signalverarbeitende Systeme