HiTechnic NXT IRSeeker V2 mit Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(81 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 47: Zeile 47:


- EV3 Brick
- EV3 Brick
- HiTechnic NXT IR Seeeker V2


- Lochrasterplatte
- Lochrasterplatte
Zeile 59: Zeile 57:


- Matlab/Simulink
- Matlab/Simulink
= Testaufbau =
In der Abbildung 1 ist der Testaufbau für die Signalverarbeitung dargestellt. Die 6 Kabel des Sensors sind passend an die GND, SCL, SDA, 5V und dem analogen Pin A0 angeschlossen. Nun wird mithilfe von Matlab/Simulink die Daten, die der Arduino von dem Sensor bekommt ausgelesen.
<gallery widths="250" heights="500">
File:Unbenannt.JPG |Abb.1: Testaufbau
</gallery>


= Signalverarbeitung =
= Signalverarbeitung =
Zeile 71: Zeile 62:


== Auswahl des Primärsensors ==
== Auswahl des Primärsensors ==
Der NXT IRSeeker ist ein multi-Infrarot Detektor, welcher Infrarotsignale von Quellen aus der Umgebung erkennt, wie zum Beispiel dem IRBall Fußball, Infrarot Fernbedienungen und das Sonnenlicht. Der Sensor besitzt 2 verschiedene Modi, dem modulierten AC-Modus und dem unmodulierten DC-Modus. Im AC-Modus filtert der Sensor die meisten anderen IR-Signale heraus, um zum Beispiel die Interferenz von Licht und Sonnenschein zu reduzieren. Der Sensor ist auf Rechtecksignale mit 1200Hz abgestimmt. Mit einer speziell entworfenen Linse und fünf internen Detektoren hat er eine 240-Grad Ansicht. Das Gehäuse mit einer gekrümmten Endkappe und mit einem konstanten Radius erhöht die Richtungsleistung durch Minimierung der Verzerrung, der in den Sensor eintretenden Lichtsignale.
Der NXT IRSeeker ist ein multi-Infrarot Detektor, welcher Infrarotsignale von Quellen aus der Umgebung erkennt, wie zum Beispiel dem IRBall Fußball, Infrarot Fernbedienungen und das Sonnenlicht. Der Sensor besitzt 2 verschiedene Modi, dem modulierten AC-Modus und dem unmodulierten DC-Modus. Im AC-Modus filtert der Sensor die meisten anderen IR-Signale heraus, um zum Beispiel die Interferenz von Licht und Sonnenschein zu reduzieren. Der Sensor ist auf Rechtecksignale mit 1200 Hz abgestimmt. Mit einer speziell entworfenen Linse und fünf internen Detektoren hat er eine 240-Grad-Ansicht. Das Gehäuse mit einer gekrümmten Endkappe und mit einem konstanten Radius erhöht die Richtungsleistung durch Minimierung der Verzerrung, der in den Sensor eintretenden Lichtsignale.


Der Sensor liefert als Rohsignale die Signalrichtung und die Signalstärke zurück, wodurch die relative Entfernung und der Standpunkt des Ziels leicht lokalisiert werden kann. In der Abbildung 2 sind die Infrarotrichtungswerte dargestellt. Ist der Wert 1 so befindet sich das Ziel links hinten, bei einem Wert von 5 befindet es sich genau voraus und bei einem Wert von 9 befindet es sich rechts hinten.
Der Sensor liefert als Rohsignale die Signalrichtung und die Signalstärke zurück, wodurch die relative Entfernung und der Standpunkt des Ziels leicht lokalisiert werden können. In der Abbildung 2 sind die Infrarotrichtungswerte dargestellt. Ist der Wert 1 so befindet sich das Ziel links hinten, bei einem Wert von 5 befindet es sich genau voraus und bei einem Wert von 9 befindet es sich rechts hinten.


<gallery class="center" widths="250" heights="250" perrow="2" caption="Sensor IR Seeker">
<gallery class="center" widths="250" heights="250" caption="Sensor IR Seeker">
File:SeekerV2-2.jpg|Abb.2: Seeker V2-2
File:SeekerV2-2.jpg|Abb.1: Seeker V2-2
File:Suchbereiche.jpg| Abb.3: Suchbereiche
File:Suchbereiche.jpg| Abb.2: Suchbereiche
</gallery>
</gallery>


== Signalvorverarbeitung ==
== Signalvorverarbeitung ==
In diesem Signalverarbeitungsbeispiel ist keine direkte Vorverarbeitung der Signale notwendig. Der Sensor nimmt bestimmte Signalstärken des Infrarotlichts auf und legt somit und wandelt diese entsprechend mit einem A/D Wandler in einer digitales Wort, welches für die Richtung von dem Signal zwischen 0 und 9 liegt und was für die Signalstärke des Infrarotlichts zwischen 0 und 255 liegt, da es einen Wertebereich von 8 Bit hat.
In diesem Signalverarbeitungsbeispiel ist keine direkte Vorverarbeitung der Signale notwendig. Der Sensor nimmt bestimmte Signalstärken des Infrarotlichts auf und legt somit und wandelt diese entsprechend mit einem A/D Wandler in ein digitales Wort, welches für die Richtung von dem Signal zwischen 0 und 9 liegt und was für die Signalstärke des Infrarotlichts zwischen 0 und 255 liegt, da es einen Wertebereich von 8 Bit hat.


== Analog-Digital-Umsetzer ==
== Analog-Digital-Umsetzer ==
Übliche NXT A/D Wandler
Übliche A/D Wandler für Sensoren sind zum Beispiel die Sigma-Delta Wandler. Zunächst wird das Signal grob gemessen und der dabei entstandene Messfehler wird integriert. Der Aufbau des Sigma Delta Wandlers ist in der Abbildung 3 dargestellt. Das Herzstück dieses A/D Wandlers ist der Regelkreis bestehend aus einem Integrierer dem ein Komparator(Quantizer) folgt. Da der Komparator nur die logischen Werte "0" und "1" annehmen kann und andererseits im Mittel die Differenz aus 1 Bit DAC Signal und Eingangssignal gerade Null ergeben muss, entspricht der Mittelwert des 1 Bit DAC Signals gleich dem Eingangssignal. Das Ausgangssignal der Rückkopplungsschleife (1-Bit-Signal) wird von einem Digitalfilter verarbeitet. Am Prinzip ändert sich nichts, wenn anstatt des Digitalfilters ein Analogfilter verwendet wird. Dieser A/D- Wandler wandelt das Signal Bitweise in einer hohen Taktfrequenz ab.


== Bussystem ==
<gallery class="center" widths="450" heights="250" >
Das vorherrschende Bussystem bei der Benutzung eines Arduinos und eines EV3 ist der I^2C-Bus. Der I^2C-Bus ein serieller synchroner Zweidrahtbus.Dieser Bus findet in der heutigen Zeit in Industriesteuerungen und Embeddes Systems Einsatz. Er hat einen einfachen Aufbau, niedirge Kosten und eine Übertragungsrate bis zu 3,4 MBit/s.
File:AD Wandler Sigma Delta.JPG|Abb.3: Sigma-Delta Wandler
Damit ein Bit gültig ist, muss der SCL High sein. Der SDA Port darf sich währendessen nicht ändern. Um eine 1 zu übertragen müssen SCL und SDA High sein und um eine 0 zu übertragen muss SDA Low und DCL High sein.
</gallery>


<gallery widths="250" heights="250" perrow="2" caption="Funtionsweise I2C">
== Bussystem I2C ==
File:I2C Bituebertragung.png|Abb.2: I2C Bituebertragung
Das vorherrschende Bussystem bei der Benutzung eines Arduinos und eines EV3 ist der I2C-Bus. Der I2C-Bus ein serieller synchroner Zweidrahtbus.Dieser Bus findet in der heutigen Zeit in Industriesteuerungen und Embedded Systems Einsatz. Er hat einen einfachen Aufbau, niedrige Kosten und eine Übertragungsrate bis zu 3.4 MBit/s.
Damit ein Bit gültig ist, muss der SCL High sein. Der SDA Port darf sich währendessen nicht ändern. Um eine 1 zu übertragen, müssen SCL und SDA High sein und um eine 0 zu übertragen muss SDA Low und DCL High sein.
Wenn ein Byte verschickt wird, wird erst das MSB (Most Significant Bit) bis hin zum LSB (Least Significant Bit) übertragen.
 
<gallery class="center" widths="250" heights="250" caption="Funktionsweise I2C">
File:I2C Bituebertragung.png|Abb.4: I2C Bitübertragung
File:I2C Bestaetigung.png| Abb.5: I2C Bestätigung
</gallery>
</gallery>
In dem Beispiel der Abbildung 4 soll das Byte 01101101 übertragen werden. Der Empfänger quittiert den Erhalt der Daten mit einer Bestätigung (oder auch Acknowledgment). Nach acht Datenbits und folglich auch acht Taktimpulsen wird eine Bestätigung erzeugt.Der Empfänger zieht SDA auf Low, bis der Master den neunten Taktimpuls generiert hat. Nach dieser Bestätigung kann ein weiteres Byte übertragen werden. Wird keine Bestätigung verschickt, wird kein weiteres Byte übertragen.


== Digitale Signalverarbeitung ==
== Digitale Signalverarbeitung ==
In diesem kapitel werden 3 Lösungsansätze zur Signalverarbeitung des HiTechnic Ir Seeker dargestellt. Zu Beginn wird der Sensor mit dem EV3 Brick verbunden und in der passenden EV3 Software angesprochen. Anschließend wird der Sensor an einen Arduino angeschlossen und ein Programm von der Arduino IDE gestartet. Abschließend soll dieses Programm in Simulink übertragen werden.  
In diesem Kapitel werden 3 Lösungsansätze zur Signalverarbeitung des HiTechnic IR Seeker dargestellt. Zu Beginn wird der Sensor mit dem EV3 Brick verbunden und in der passenden EV3 Software angesprochen. Anschließend wird der Sensor an einen Arduino angeschlossen und ein Programm von der Arduino IDE gestartet. Abschließend soll dieses Programm in Simulink übertragen werden.  


=== EV3 ===
=== EV3 ===
Für die Erstellung des Programms auf dem EV3-Brick muss zuerst eine Bibliothek von der Internetseite: http://www.hitechnic.com/downloadnew.php?category=38 geladen werden, damit der NXT IR Seeker, der für die NXT Software erstellt ist in der EV3 Umgebung verwendet werden kann. Nun wird der geladene Baustein eingefügt und eine Schleife um ihn angelegt. Das Programm ist in der Abbildung 4 dargestellt. Die beiden gleiferten Werte des Sensors werden nun an jeweils einen Ausgabebaustein verschaltet und somit ausgegeben.
Für die Erstellung des Programms auf dem EV3-Brick muss zuerst eine Bibliothek von der Internetseite: http://www.hitechnic.com/downloadnew.php?category=38 geladen werden, damit der NXT-IR-Seeker, der für die NXT-Software erstellt ist, in der EV3-Umgebung verwendet werden kann. Nun wird der geladene Baustein eingefügt und eine Schleife um ihn angelegt. Das Programm ist in der Abbildung 4 dargestellt. Die beiden gelieferten Werte des Sensors werden nun an jeweils einen Ausgabebaustein verschaltet und somit ausgegeben.
Startet man nun den Brick kann man unter Port View den Port an dem der sensor angeschlossen ist einsehen. Dort sind Werte von 0 bis 9 angebildet, welche die Zone, aus der das Infrarotlicht erkant wird, darstellt.
Startet man nun den Brick, kann man unter Port-View den Port, an dem der Sensor angeschlossen ist, einsehen. Dort sind Werte von 0 bis 9 angebildet, welche die Zone, aus der das Infrarotlicht erkannt wird, darstellt.


<gallery widths="700" heights="300">
<gallery class="center" widths="700" heights="300">
File:EV3 Programm.JPG|Abb.4: EV3 Programm
File:EV3 Programm.JPG|Abb.6: EV3 Programm
</gallery>
</gallery>


=== Arduino ===
=== Arduino ===
Mithilfe des Versuchsaufbaus aus der Abbildung 1 ist eine Verbindung mit dem Sensor nicht möglich. Der Sensor ist an die passenden Ports des Arduinos angeklemmt, liefert jedoch keine Werte. Die I^2C Adresse des Ports kann nicht gefunden werden. Daher liegt ein anderes Problem vor.  Der gleiche Messaufbau mit dem NXT Compass sesnor liefet die richtigen Werte. Das Problem könnte sein, dass die Spannung von 5V nicht ausreicht, um den Sensor zu betreiben. Sichgerstellt wurde auch, dass der Sensor einwandfrei funtioniert.
In der Abbildung 7 ist der Testaufbau für die Signalverarbeitung dargestellt. Die 6 Kabel des Sensors sind passend an die GND, SCL, SDA, 5V und dem analogen Pin A0 angeschlossen. Nun wird mithilfe von Matlab/Simulink die Daten, die der Arduino von dem Sensor bekommt, ausgelesen.
Mithilfe dieses Versuchsaufbaus ist eine Verbindung nicht möglich. Der Sensor ist an die passenden Ports des Arduinos angeklemmt, liefert jedoch keine Werte. Die I2C Adresse des Ports kann nicht gefunden werden. Daher liegt ein anderes Problem vor.  Der gleiche Messaufbau, mit dem NXT-Kompass-Sensor liefert die richtigen Werte. Das Problem könnte sein, dass die Spannung von 5 V nicht ausreicht, um den Sensor zu betreiben. Sichergestellt wurde auch, dass der Sensor einwandfrei funktioniert.
 
<gallery class="center" widths="250" heights="500">
File:Unbenannt.JPG |Abb.7: Testaufbau
</gallery>


=== Simulink ===
=== Simulink ===
In den beiden Abbildungen 5 und 5 sind 2 Simulunk Projekte dargstellt.  
In der Abbildung 8 ist das Simulink Projekt dargestellt. Links befindet sich der Infrared-Sensor-Block, der mit dem EV3-Brick verbunden ist und der folglicherweise mit dem Computer und mit Simulink verbunden ist. In der Abbildung 9 ist dargestellt, wie man diesen Block einstellen kann. Zuerst wird angegeben, mit welchem Port der Sensor am Brick angeschlossen ist. Des Weiteren kann eingestellt werden, welche Daten man auslesen möchte. In diesem Fall wird "Proximity" und "Heading" ausgelesen. Proximity ist die Signalstärke und Heading ist die Zone (1-9) in dem sich das Infrarotobjekt befindet. Bevor das Ergebnis der Signalstärke im Display angezeigt werden kann, wird es mit dem Moving-Average-Filter gefiltert, um große Signalsprünge zusammenzufassen und somit das Signal etwas zu glätten. Die Zone, in der sich das Objekt befindet, wird ohne Filterung ausgegeben.  
<gallery class="center" widths="500" heights="250" perrow="2" caption="Simulink Projekte">
File:Simulink projekt.JPG|Abb.5: Simulink EV3 Toolbox
<gallery class="center" widths="450" heights="300" caption="Simulink Simulation">
File:Simulink projekt.JPG|Abb.6: Simulink Arduino Toolbox
File:Simulink projekt Fertig.JPG|Abb.8: Simulink Projekt
File:Einstellung IR Seeker.JPG|Abb.9: Einstellung IR Seeker
</gallery>
</gallery>


Zeile 118: Zeile 123:


=== EV3 Brick ===
=== EV3 Brick ===
In diesem Kapitel wird das Ergebis der Simulation mit dem EV3 Brick dargestellt.
In diesem Kapitel wird das Ergebnis der Simulation mit dem EV3-Brick dargestellt. Wie in der Abbildung 3 zu sehen, ist der Sensor zum Licht gewand jedoch ein bisschen gegen den Uhrzeigersinn gedreht. Auf dem Display des Bricks ist eine 6 zu erkennen, welche für die Zone 6 steht. Die Bedeutung der Zone 6 ist im Oberen erklärt. Somit lässt sich sagen, dass mithilfe des Bricks eine Datenverarbeitung des Sensors möglich ist. Dieses Verhalten gilt es nun im Weiteren in Simulink zu übertragen. Der Videolink unten führt zu dem aufgenommenen Video auf Youtube.


<gallery widths="250" heights="500">
Videolink: https://www.youtube.com/watch?v=14MhE2JpehY&feature=youtu.be
File:EV3 Ergebnis.JPG| Abb.7: EV3 Ergebnis
 
<gallery class="center" widths="250" heights="500">
File:EV3 Ergebnis.JPG| Abb.10: EV3-Ergebnis
</gallery>
</gallery>
Videolink


=== Arduino ===
=== Arduino ===
Mithilfe des Arduino lässt sich kein Ergebnis erzielen. Der Sensor lässt sich nicht mit den gelieferten 5V des Arduino betreiben und somit konnten die Daten des I2C-Busses nicht ausgelesen werden.


=== Matlab/Simulink ===
=== Matlab/Simulink ===
In Simulink lässt sich mithilfe der EV3-Toolbox ebenfalls der Sensor auslesen. Jedoch lieferte das Programm keine geeigneten Werte, die hier dargestellt werden können. Beim Kompilieren des Projektes treten Fehler mit den geladenen Dateien der Toolbox auf, die nicht ermittelt und  behoben werden konnten.


= Zusammenfassung =
= Zusammenfassung =
Zusammenfassend lässt sich sagen, dass eine Signalverarbeitung des Sensors möglich ist. Die Signalverarbeitung in EV3 erwies sich als problemlos durchzuführen. Hingegen traten bei der Signalverarbeitung in Matlab/Simulink einige Fehler auf. Bei diesem Projekt konnte viel über Sensoren, A/D-Wandler und über die gesamte Signalverarbeitung gelernt werden. Hinzu wurden die Erkenntnisse in der Elektrotechnik und in der Informatik vertieft.


= Ausblick =
= Ausblick =
Da das Programm an sich in Simulink erstellt ist, gilt es in Zukunft die Fehler beim Kompilieren des Projektes zu beheben. Die EV3-Toolbox bietet eine schnelle Sensorsignalverarbeitung. Das Ergebnis des Projektes muss anschließend lediglich in einer geeigneten Art und Weise dargestellt werden.


= Quellen =
= Quellen =
I^2C: https://rn-wissen.de/wiki/index.php?title=I2C
I^2C: https://rn-wissen.de/wiki/index.php?title=I2C


A/D Wandler:  
A/D Wandler: http://www.beis.de/Elektronik/DeltaSigma/DeltaSigma_D.html


EV3 Software: http://www.hitechnic.com/downloadnew.php?category=38
EV3 Software: http://www.hitechnic.com/downloadnew.php?category=38


EV3 Brick: https://shop.lego.com/de-AT/Intelligenter-EV3-Stein-45500
----
----
→ zurück zum Hauptartikel: [[SigSys_SoSe2018| Signalverarbeitende Systeme]]
→ zurück zum Hauptartikel: [[SigSys_SoSe2018| Signalverarbeitende Systeme]]

Aktuelle Version vom 29. August 2018, 14:47 Uhr

Sensor: HiTechnic NXT IRSeeker V2


Autoren: Marius Schaffer

Betreuer: Prof. Schneider

Aufgabe

Signalerfassung und Aufbereitung eines NXT Sensors

Schritte zur Signalberarbeitung

1. Auswahl eines Primärsensors

  1. Wie funktioniert der Sensor?
  2. Welche Rohsignale liefert der Sensor?

2. Signalvorverarbeitung

  1. Sollen Messwerte oder vorverarbeitete Daten übertragen werden?
  2. Wie lässt sich eine Vorverarbeitung umsetzen?
  3. Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?

3. Analog-Digital-Umsetzer

  1. Wie werden die analogen Signale umgesetzt?
  2. Welcher ADU kommt zum Einsatz?
  3. Welche Gründe sprechen für diesen ADU? Alternativen?

4. Bussystem

  1. Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt?  
  2. Wenn ja, wie funktioniert dieses Bussystem?

5. Digitale Signalverarbeitung

  1. Welche Verarbeitungsschritte sind notwendig?
  2. Welche Filter werden angewendet?
  3. Bestimmen Sie Auflösung, Empfindlichkeit und Messunsicherheit des Sensors.

6. Darstellung der Ergebnisse

  1. Welche Fehler treten in welchem Verarbeitungsschritt auf?
  2. Stellen Sie die Messunsicherheit bzw. das Vertrauensintervall dar.

Einleitung

In diesem Artikel wird dargestellt, wie mit einem HiTechnic NXT Infrarot Sensor eine vollständige Signalverarbeitung durchgeführt wird. Diese Signalverarbeitung wird in Matlab/Simulink durchgeführt.

Verwendete Bauteile

- Arduino Mega 2560

- HiTechnic NXT IRSeeker V2

- 2 x 100 kOhm Widerstände

- NXT Kabel

- EV3 Brick

- Lochrasterplatte

Verwendete Software

- EV3 Lobby

- Arduino IDE

- Matlab/Simulink

Signalverarbeitung

In diesem Kapitel wird zuerst der Sensor erklärt und anschließend die Signalverarbeitung dargestellt. Hinzu wird das Busssystem, die Art der Wandlung vom analogen zu dem digitalen Signal sowie das ergebnis der Signalverarbeitung dargetsellt.

Auswahl des Primärsensors

Der NXT IRSeeker ist ein multi-Infrarot Detektor, welcher Infrarotsignale von Quellen aus der Umgebung erkennt, wie zum Beispiel dem IRBall Fußball, Infrarot Fernbedienungen und das Sonnenlicht. Der Sensor besitzt 2 verschiedene Modi, dem modulierten AC-Modus und dem unmodulierten DC-Modus. Im AC-Modus filtert der Sensor die meisten anderen IR-Signale heraus, um zum Beispiel die Interferenz von Licht und Sonnenschein zu reduzieren. Der Sensor ist auf Rechtecksignale mit 1200 Hz abgestimmt. Mit einer speziell entworfenen Linse und fünf internen Detektoren hat er eine 240-Grad-Ansicht. Das Gehäuse mit einer gekrümmten Endkappe und mit einem konstanten Radius erhöht die Richtungsleistung durch Minimierung der Verzerrung, der in den Sensor eintretenden Lichtsignale.

Der Sensor liefert als Rohsignale die Signalrichtung und die Signalstärke zurück, wodurch die relative Entfernung und der Standpunkt des Ziels leicht lokalisiert werden können. In der Abbildung 2 sind die Infrarotrichtungswerte dargestellt. Ist der Wert 1 so befindet sich das Ziel links hinten, bei einem Wert von 5 befindet es sich genau voraus und bei einem Wert von 9 befindet es sich rechts hinten.

Signalvorverarbeitung

In diesem Signalverarbeitungsbeispiel ist keine direkte Vorverarbeitung der Signale notwendig. Der Sensor nimmt bestimmte Signalstärken des Infrarotlichts auf und legt somit und wandelt diese entsprechend mit einem A/D Wandler in ein digitales Wort, welches für die Richtung von dem Signal zwischen 0 und 9 liegt und was für die Signalstärke des Infrarotlichts zwischen 0 und 255 liegt, da es einen Wertebereich von 8 Bit hat.

Analog-Digital-Umsetzer

Übliche A/D Wandler für Sensoren sind zum Beispiel die Sigma-Delta Wandler. Zunächst wird das Signal grob gemessen und der dabei entstandene Messfehler wird integriert. Der Aufbau des Sigma Delta Wandlers ist in der Abbildung 3 dargestellt. Das Herzstück dieses A/D Wandlers ist der Regelkreis bestehend aus einem Integrierer dem ein Komparator(Quantizer) folgt. Da der Komparator nur die logischen Werte "0" und "1" annehmen kann und andererseits im Mittel die Differenz aus 1 Bit DAC Signal und Eingangssignal gerade Null ergeben muss, entspricht der Mittelwert des 1 Bit DAC Signals gleich dem Eingangssignal. Das Ausgangssignal der Rückkopplungsschleife (1-Bit-Signal) wird von einem Digitalfilter verarbeitet. Am Prinzip ändert sich nichts, wenn anstatt des Digitalfilters ein Analogfilter verwendet wird. Dieser A/D- Wandler wandelt das Signal Bitweise in einer hohen Taktfrequenz ab.

Bussystem I2C

Das vorherrschende Bussystem bei der Benutzung eines Arduinos und eines EV3 ist der I2C-Bus. Der I2C-Bus ein serieller synchroner Zweidrahtbus.Dieser Bus findet in der heutigen Zeit in Industriesteuerungen und Embedded Systems Einsatz. Er hat einen einfachen Aufbau, niedrige Kosten und eine Übertragungsrate bis zu 3.4 MBit/s. Damit ein Bit gültig ist, muss der SCL High sein. Der SDA Port darf sich währendessen nicht ändern. Um eine 1 zu übertragen, müssen SCL und SDA High sein und um eine 0 zu übertragen muss SDA Low und DCL High sein. Wenn ein Byte verschickt wird, wird erst das MSB (Most Significant Bit) bis hin zum LSB (Least Significant Bit) übertragen.

In dem Beispiel der Abbildung 4 soll das Byte 01101101 übertragen werden. Der Empfänger quittiert den Erhalt der Daten mit einer Bestätigung (oder auch Acknowledgment). Nach acht Datenbits und folglich auch acht Taktimpulsen wird eine Bestätigung erzeugt.Der Empfänger zieht SDA auf Low, bis der Master den neunten Taktimpuls generiert hat. Nach dieser Bestätigung kann ein weiteres Byte übertragen werden. Wird keine Bestätigung verschickt, wird kein weiteres Byte übertragen.

Digitale Signalverarbeitung

In diesem Kapitel werden 3 Lösungsansätze zur Signalverarbeitung des HiTechnic IR Seeker dargestellt. Zu Beginn wird der Sensor mit dem EV3 Brick verbunden und in der passenden EV3 Software angesprochen. Anschließend wird der Sensor an einen Arduino angeschlossen und ein Programm von der Arduino IDE gestartet. Abschließend soll dieses Programm in Simulink übertragen werden.

EV3

Für die Erstellung des Programms auf dem EV3-Brick muss zuerst eine Bibliothek von der Internetseite: http://www.hitechnic.com/downloadnew.php?category=38 geladen werden, damit der NXT-IR-Seeker, der für die NXT-Software erstellt ist, in der EV3-Umgebung verwendet werden kann. Nun wird der geladene Baustein eingefügt und eine Schleife um ihn angelegt. Das Programm ist in der Abbildung 4 dargestellt. Die beiden gelieferten Werte des Sensors werden nun an jeweils einen Ausgabebaustein verschaltet und somit ausgegeben. Startet man nun den Brick, kann man unter Port-View den Port, an dem der Sensor angeschlossen ist, einsehen. Dort sind Werte von 0 bis 9 angebildet, welche die Zone, aus der das Infrarotlicht erkannt wird, darstellt.

Arduino

In der Abbildung 7 ist der Testaufbau für die Signalverarbeitung dargestellt. Die 6 Kabel des Sensors sind passend an die GND, SCL, SDA, 5V und dem analogen Pin A0 angeschlossen. Nun wird mithilfe von Matlab/Simulink die Daten, die der Arduino von dem Sensor bekommt, ausgelesen. Mithilfe dieses Versuchsaufbaus ist eine Verbindung nicht möglich. Der Sensor ist an die passenden Ports des Arduinos angeklemmt, liefert jedoch keine Werte. Die I2C Adresse des Ports kann nicht gefunden werden. Daher liegt ein anderes Problem vor. Der gleiche Messaufbau, mit dem NXT-Kompass-Sensor liefert die richtigen Werte. Das Problem könnte sein, dass die Spannung von 5 V nicht ausreicht, um den Sensor zu betreiben. Sichergestellt wurde auch, dass der Sensor einwandfrei funktioniert.

Simulink

In der Abbildung 8 ist das Simulink Projekt dargestellt. Links befindet sich der Infrared-Sensor-Block, der mit dem EV3-Brick verbunden ist und der folglicherweise mit dem Computer und mit Simulink verbunden ist. In der Abbildung 9 ist dargestellt, wie man diesen Block einstellen kann. Zuerst wird angegeben, mit welchem Port der Sensor am Brick angeschlossen ist. Des Weiteren kann eingestellt werden, welche Daten man auslesen möchte. In diesem Fall wird "Proximity" und "Heading" ausgelesen. Proximity ist die Signalstärke und Heading ist die Zone (1-9) in dem sich das Infrarotobjekt befindet. Bevor das Ergebnis der Signalstärke im Display angezeigt werden kann, wird es mit dem Moving-Average-Filter gefiltert, um große Signalsprünge zusammenzufassen und somit das Signal etwas zu glätten. Die Zone, in der sich das Objekt befindet, wird ohne Filterung ausgegeben.

Darstellung der Ergebnisse

EV3 Brick

In diesem Kapitel wird das Ergebnis der Simulation mit dem EV3-Brick dargestellt. Wie in der Abbildung 3 zu sehen, ist der Sensor zum Licht gewand jedoch ein bisschen gegen den Uhrzeigersinn gedreht. Auf dem Display des Bricks ist eine 6 zu erkennen, welche für die Zone 6 steht. Die Bedeutung der Zone 6 ist im Oberen erklärt. Somit lässt sich sagen, dass mithilfe des Bricks eine Datenverarbeitung des Sensors möglich ist. Dieses Verhalten gilt es nun im Weiteren in Simulink zu übertragen. Der Videolink unten führt zu dem aufgenommenen Video auf Youtube.

Videolink: https://www.youtube.com/watch?v=14MhE2JpehY&feature=youtu.be

Arduino

Mithilfe des Arduino lässt sich kein Ergebnis erzielen. Der Sensor lässt sich nicht mit den gelieferten 5V des Arduino betreiben und somit konnten die Daten des I2C-Busses nicht ausgelesen werden.

Matlab/Simulink

In Simulink lässt sich mithilfe der EV3-Toolbox ebenfalls der Sensor auslesen. Jedoch lieferte das Programm keine geeigneten Werte, die hier dargestellt werden können. Beim Kompilieren des Projektes treten Fehler mit den geladenen Dateien der Toolbox auf, die nicht ermittelt und behoben werden konnten.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass eine Signalverarbeitung des Sensors möglich ist. Die Signalverarbeitung in EV3 erwies sich als problemlos durchzuführen. Hingegen traten bei der Signalverarbeitung in Matlab/Simulink einige Fehler auf. Bei diesem Projekt konnte viel über Sensoren, A/D-Wandler und über die gesamte Signalverarbeitung gelernt werden. Hinzu wurden die Erkenntnisse in der Elektrotechnik und in der Informatik vertieft.

Ausblick

Da das Programm an sich in Simulink erstellt ist, gilt es in Zukunft die Fehler beim Kompilieren des Projektes zu beheben. Die EV3-Toolbox bietet eine schnelle Sensorsignalverarbeitung. Das Ergebnis des Projektes muss anschließend lediglich in einer geeigneten Art und Weise dargestellt werden.

Quellen

I^2C: https://rn-wissen.de/wiki/index.php?title=I2C

A/D Wandler: http://www.beis.de/Elektronik/DeltaSigma/DeltaSigma_D.html

EV3 Software: http://www.hitechnic.com/downloadnew.php?category=38


→ zurück zum Hauptartikel: Signalverarbeitende Systeme