Drucksensor mit Matlab/Simulink: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(31 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
==Aufgabenstellung== | ==Aufgabenstellung== | ||
In dem Fach "Signalverarbeitende Systeme" aus dem Studiengang "Business and Systemsengineering" der Hochschule Hamm-Lippstadt obliegt jedem Studierenden die Aufgabe sich semesterbegleitend mit einem ausgewählten Sensor | In dem Fach "Signalverarbeitende Systeme" aus dem Studiengang "Business and Systemsengineering" der Hochschule Hamm-Lippstadt obliegt jedem Studierenden die Aufgabe, sich semesterbegleitend mit einem ausgewählten Sensor auseinanderzusetzen. In diesem Zusammenhang soll der jeweilige Sensor im Laufe der Ausarbeitung mit MATLAB/Simulink ausgelesen und im Anschluss im HSHL Wiki sinnvoll und verständlich dokumentiert werden. | ||
==Der Sensor und seine Funktionsweise== | ==Der Sensor und seine Funktionsweise== | ||
Bei dem dPressure 500 Sensor für Lego Mindstorms NXT handelt es sich um einen analogen Silizium-Drucksensor, mit dem verschiedene Druckschwankungen gemessen werden können. Dieser Sensor arbeitet mit einem Mikroprozessor, welcher die A/D-Wandlung unterstützt und | Bei dem dPressure 500 Sensor für Lego Mindstorms NXT handelt es sich um einen analogen Silizium-Drucksensor, mit dem verschiedene Druckschwankungen gemessen werden können. Dieser Sensor arbeitet mit einem Mikroprozessor, welcher die A/D-Wandlung unterstützt und folgende technische Daten aufweist:<ref name="Datenblatt des Drucksensors"> [https://www.nxp.com/docs/en/data-sheet/MPX5500.pdf ''MPX 5500 Series''] Seite 1 </ref> | ||
[[Datei:P1_und_p2_DS.PNG|thumb|250px|right|Abb. 1: dPressure 500]] | [[Datei:P1_und_p2_DS.PNG|thumb|250px|right|Abb. 1: dPressure 500<ref name="dPressure 500"> https://www.generationrobots.com/de/401375-drucksensor-dpressure-500-fur-lego-mindstorms-nxt-roboter.html] Abgerufen am 02.06.2018</ref>]] | ||
{| class="wikitable" | {| class="wikitable" | ||
Zeile 32: | Zeile 32: | ||
|} | |} | ||
[[Datei:Funktionsweise.PNG|thumb|250px|right|Abb. 2: Die Funktionsweise des Sensors]] | [[Datei:Funktionsweise.PNG|thumb|250px|right|Abb. 2: Die Funktionsweise des Sensors <ref name="dPressure 500 Layout"> https://circuits4you.com/2016/05/13/water-level-measurement-arduino/] Abgerufen am 03.06.2018</ref>]] | ||
In der Messtechnik gibt es je nach Messverfahren unterschiedliche Drucksensoren. Der dPressure500 gehört zu dem Typen des kapazitiven Differenzdrucksensors. | In der Messtechnik gibt es je nach Messverfahren unterschiedliche Drucksensoren. Der dPressure500 gehört zu dem Typen des kapazitiven Differenzdrucksensors. Dies bedeutet, dass hierbei die Differenz zweier Absolutdrücke p1 und p2 gemessen wird und diese miteinander verglichen werden. Aus diesem Grund besitzt der Sensor zwei separate Druckanschlüsse und arbeitet im Vergleich zu vielen anderen Drucksensoren ausschließlich in einem positiven Bereich, wobei p1 den Druck darstellt, der im Vergleich zu p2 verändert wird und p2 immer konstant bleibt (p1≥p2). In diesem Fall liegt der Messbereich zwischen 0kPa und 500kPa.<ref name = 'Sensoren für die Prozess- und Fabrikautomation: Funktion - Ausführung'>Stefan Hesse: https://books.google.de/books?id=s0FerR_omKsC&pg=PA192&dq=Differenzdrucksensor&hl=de&sa=X&ved=0ahUKEwiEmKXJpoPcAhUOMuwKHY59B0kQ6AEIODAD#v=onepage&q=Differenzdrucksensor&f=false] S. 191f. </ref> | ||
Außerdem besitzt dPressure500 demzufolge zwei Messkammer, die durch eine Siliziummembran hermetisch voneinander getrennt sind. Die Funktionsweise hierbei ist wie bei einem Plattenkondensator mit einem variablen Elektrodenabstand. Die Siliziummembran und die Gegenelektrode stellen an dieser Stelle die beiden Elektroden des Kondensators dar | Außerdem besitzt dPressure500 demzufolge zwei Messkammer, die durch eine Siliziummembran hermetisch voneinander getrennt sind. Die Funktionsweise hierbei ist wie bei einem Plattenkondensator mit einem variablen Elektrodenabstand. Die Siliziummembran und die Gegenelektrode stellen an dieser Stelle die beiden Elektroden des Kondensators dar, wobei die Luft dazwischen das Dielektrikum ist. Erhöht sich der Druck p1, biegt sich die Membran durch und der Abstand zwischen den Elektroden und dadurch die Kapazität des Kondensators wird verringert. Durch die Veränderung des Abstandes wird auch der Stromfluss und somit die Ausgangsspannung Vout als das Rohsignal beeinflusst. Dessen Messbereich liegt zwischen 0V und 5V. Die Biegung der Membran bzw. der Abstand zwischen dem Siliziummembran und der Gegenelektrode ist also in diesem Zusammenhang ein Maß für die Größe des Differenzdruckes (s. '''Abb. 2''').<ref name="Datenblatt des Drucksensors"> [https://www.nxp.com/docs/en/data-sheet/MPX5500.pdf ''MPX 5500 Series''] Seite 1 </ref> <ref name = 'Handbuch Kraftfahrzeugelektronik: Grundlagen - Komponenten - Systeme'>Henning Wallentowitz: https://books.google.de/books?id=yMjcMIdGceoC&printsec=frontcover&dq=Handbuch+Kraftfahrzeugelektronik:+Grundlagen+-+Komponenten&hl=de&sa=X&ved=0ahUKEwiU3NmFsIPcAhWOGuwKHRg9Bp4Q6AEIJzAA#v=onepage&q&f=false] S. 517f. </ref> | ||
Zeile 43: | Zeile 43: | ||
==Vorverarbeitung== | ==Vorverarbeitung== | ||
[[Datei:Kennlinie_des_Sensors.PNG|thumb|300px|right|Abb. 3: Kennlinie des Sensors]] | [[Datei:Kennlinie_des_Sensors.PNG|thumb|300px|right|Abb. 3: Kennlinie des Sensors <ref name="Datenblatt des Drucksensors"> [https://www.nxp.com/docs/en/data-sheet/MPX5500.pdf ''MPX 5500 Series''] Seite 4 </ref>]] | ||
Aus der Funktionsweise des Sensors dPressure500 kann entnommen werden, dass die Messwerte in Form von Spannung Vout in der Signalverarbeitungskette direkt an Arduino übertragen werden. Diese Werte müssen dann durch eine Funktion in die Druckeinheit Pascal umgewandelt werden. Das Verhältnis zwischen der Ausgangsspannung Vout und dem Druck kPa wird anhand von einer Kennlinie wie folgt dargestellt (s. '''Abb. 3'''). | Aus der Funktionsweise des Sensors dPressure500 kann entnommen werden, dass die Messwerte in Form von Spannung Vout in der Signalverarbeitungskette direkt an Arduino übertragen werden. Diese Werte müssen dann durch eine Funktion in die Druckeinheit Pascal umgewandelt werden. Das Verhältnis zwischen der Ausgangsspannung Vout und dem Druck kPa wird anhand von einer Kennlinie wie folgt dargestellt (s. '''Abb. 3''').<ref name="Datenblatt des Drucksensors"> [https://www.nxp.com/docs/en/data-sheet/MPX5500.pdf ''MPX 5500 Series''] Seite 4 </ref> | ||
Zeile 62: | Zeile 62: | ||
==Analog-Digital-Umsetzer== | ==Analog-Digital-Umsetzer== | ||
[[Datei:10-Bit_SAR-Wandler.PNG|thumb|200px|right|Abb. 4: 10-Bit SAR-Wandler]] | [[Datei:10-Bit_SAR-Wandler.PNG|thumb|200px|right|Abb. 4: 10-Bit SAR-Wandler <ref name = ' Mikrocontroller: Grundlagen der Hard- und Software der Mikrocontroller'>Herbert Bernstein: https://books.google.de/books?id=hG7dBgAAQBAJ&pg=PA287&dq=flussdiagramm+sukzessive+approximation&hl=de&sa=X&ved=0ahUKEwjj3fDuuIPcAhWxM-wKHUioAfAQ6AEIOTAD#v=onepage&q=flussdiagramm%20sukzessive%20approximation&f=false] S. 287f. </ref>]] | ||
Der Drucksensor dPressure 500 wird zur Signalverarbeitung mit einem der sechs analogen Pins des Arduino Uno (A0-A5) verbunden. Damit werden die analogen Signale in Form von Spannung gemessen und danach digitalisiert. Grundsätzlich haben die analogen Signale im Vergleich zu digitalen Signalen einen Vorteil, indem sie sehr viele Werte zwischen einem hohen und niedrigen Pegel annehmen können. Beim Arduino UNO liegt der maximale Pegel bei 5 V und der niedrigste bei 0V. Außerdem arbeitet der Arduino mit dem ATMEGA328P-MU Mikrocontroller, bei dem die Auflösung des ADCs 10-Bit (1024 Messwerte) beträgt. Das Auslesen einer Messung am Eingang dauert ca. 0,0001 Sekunden, | Der Drucksensor dPressure 500 wird zur Signalverarbeitung mit einem der sechs analogen Pins des Arduino Uno (A0-A5) verbunden. Damit werden die analogen Signale in Form von Spannung gemessen und danach digitalisiert. Grundsätzlich haben die analogen Signale im Vergleich zu digitalen Signalen einen Vorteil, indem sie sehr viele Werte zwischen einem hohen und niedrigen Pegel annehmen können. Beim Arduino UNO liegt der maximale Pegel bei 5 V und der niedrigste bei 0V. Außerdem arbeitet der Arduino mit dem ATMEGA328P-MU Mikrocontroller, bei dem die Auflösung des ADCs 10-Bit (1024 Messwerte) beträgt. Das Auslesen einer Messung am Eingang dauert ca. 0,0001 Sekunden, sodass maximal 10.000 Messungen pro Sekunde verarbeitet werden können.<ref name="analoge Signale"> [https://edu.books.sensebox.de/de/grundlagen/analoge_signale.html | ||
] Arduino </ref> | |||
Die eben erwähnten Werte zwischen 0 V und 5 V werden von dem integrierten 10-Bit Analog Digital Wandler (ADC) in Integer Werte zwischen 0 bis 1023 umgewandelt. Ein Signal kann hierbei eine Auflösung von 4,9mV aufnehmen: | Die eben erwähnten Werte zwischen 0 V und 5 V werden von dem integrierten 10-Bit Analog Digital Wandler (ADC) in Integer Werte zwischen 0 bis 1023 umgewandelt. Ein Signal kann hierbei eine Auflösung von 4,9mV aufnehmen: | ||
Zeile 71: | Zeile 72: | ||
Der Analog Digital Wandler arbeitet bei dem eingebauten Microcontroller mit der sukzessiven Approximation. Dabei | Der Analog Digital Wandler arbeitet bei dem eingebauten Microcontroller mit der sukzessiven Approximation. Dabei wird von einer schrittweisen Annährung des eingehenden Signals mittels der Ausgangsspannung eines DA-Wandlers gesprochen. Hierbei wird also die analoge Eingangsspannung (unendlicher Wertebereich) so lange mit der Referenzspannung verglichen bis das richtige Ergebnis identifiziert und digital (endlicher Wertebereich) dargestellt wird.<ref name="sukzessive Approximation"> https://www.itwissen.info/SAR-successive-approximation-register-SAR-Verfahren.html] Abgerufen am 16.06.2018</ref> | ||
Solch ein ADU besteht aus einem DA-Wandler, SAR-Datenregister, einer elektronischen Schaltung für die digitale Steuerelektronik und einem separaten Komparator. SAR steht für Seccessive Approximation Register | Solch ein ADU besteht aus einem DA-Wandler, SAR-Datenregister, einer elektronischen Schaltung für die digitale Steuerelektronik und einem separaten Komparator. SAR steht für Seccessive Approximation Register, worin am Ende des Vorgangs der ermittelte Digitalwert des DA-Wandlers dargestellt wird. Der Komparator dagegen vergleicht dabei die erzeugte Referenzspannung vom DA-Wandler mit der Eingangsspannung. <ref name="sukzessive Approximation"> https://www.itwissen.info/SAR-successive-approximation-register-SAR-Verfahren.html] Abgerufen am 16.06.2018</ref> | ||
Zeile 78: | Zeile 79: | ||
[[Datei:3-Bit_SAR-Wandler.PNG|thumb|300px|right|Abb. 5: 3-Bit SAR-Wandler]] | [[Datei:3-Bit_SAR-Wandler.PNG|thumb|300px|right|Abb. 5: 3-Bit SAR-Wandler]] | ||
Im folgenden Beispiel wird die „sukzessive Approximation“ anhand von einem verhältnismäßig übersichtlichen 3-Bit-Wandler genauer erklärt (s. '''Abb. 5 u. 6'''). | Im folgenden Beispiel wird die „sukzessive Approximation“, anhand von einem verhältnismäßig übersichtlichen 3-Bit-Wandler genauer erklärt (s. '''Abb. 5 u. 6'''). | ||
Da es sich um einen 3-Bit-Wandler handelt, können an dieser Stelle | Da es sich um einen 3-Bit-Wandler handelt, können an dieser Stelle acht Messwerte dargestellt werden. Es wird angenommen, dass sich der Pegel der Messwerte der zu vermessenden Eingangsspannung zwischen 0 V und 7 V befindet und die digitale Darstellung der Messwerte ausschließlich in ganzen Zahlen erfolgt. So ergibt sich hierfür die folgende Binärtabelle: | ||
[[Datei:3-Bit_Flussdiagramm.PNG|thumb|300px|right|Abb. 6: 3-Bit Flussdiagramm mit Eingangsspannung von 6 V]] | [[Datei:3-Bit_Flussdiagramm.PNG|thumb|300px|right|Abb. 6: 3-Bit Flussdiagramm mit Eingangsspannung von 6 V <ref name = ' Mikrocontroller: Grundlagen der Hard- und Software der Mikrocontroller'>Herbert Bernstein: https://books.google.de/books?id=hG7dBgAAQBAJ&pg=PA287&dq=flussdiagramm+sukzessive+approximation&hl=de&sa=X&ved=0ahUKEwjj3fDuuIPcAhWxM-wKHUioAfAQ6AEIOTAD#v=onepage&q=flussdiagramm%20sukzessive%20approximation&f=false] S. 287f. </ref>]] | ||
{| class="wikitable" | {| class="wikitable" | ||
Zeile 104: | Zeile 105: | ||
|} | |} | ||
Abbildung 5 veranschaulicht über ein Flussdiagramm die erwähnte schrittweise Annährung des eingehenden Signals in Form von Ue. Dabei finden insgesamt drei Vergleiche statt. Die zu vermessene Spannung wird als erstes mit dem MSB (Most Significant Bit) auf den Binärwert 100 gesetzt. Darauf hin wird im DA-Wandler die entsprechende Ausgangsspannung erzeugt, die mit der eigentlichen Messspannung im Komparator verglichen wird. Hier | Abbildung 5 veranschaulicht über ein Flussdiagramm die erwähnte schrittweise Annährung des eingehenden Signals in Form von Ue. Dabei finden insgesamt drei Vergleiche statt. Die zu vermessene Spannung wird als erstes mit dem MSB (Most Significant Bit) auf den Binärwert 100 gesetzt. Darauf hin wird im DA-Wandler die entsprechende Ausgangsspannung erzeugt, die mit der eigentlichen Messspannung im Komparator verglichen wird. Hier geht es darum, ob die Messspannung größer oder kleiner als die Vergleichsspannung (Uv) ist. Da es im gegebenen Fall größer ist, wird das MSB in der SAR-Einheit gesetzt und es kommt zum nächsten Schritt und somit zum nächsten Vergleich. In diesem und im letzten Schritt wiederholt sich dieser Vorgang bis am Ende eine Binärzahl 110 übrigbleibt. Diese steht für 6 V und wird abschließend in dem SAR-Datenregister dargestellt. | ||
[[Datei:Schaltkreis_des_Sensors.PNG|thumb|300px|right|Abb. 7: Der Schaltkreis des Sensors]] | [[Datei:Schaltkreis_des_Sensors.PNG|thumb|300px|right|Abb. 7: Der Schaltkreis des Sensors <ref name="Datenblatt des Drucksensors"> [https://www.nxp.com/docs/en/data-sheet/MPX5500.pdf ''MPX 5500 Series''] Seite 4 </ref>]] | ||
'''LC-Filter''' | '''LC-Filter''' | ||
Wie | |||
Die LC-Bandpässe werden grundsätzlich durch den Einsatz von zwei magnetisch gekoppelten Parallelschwingkreisen umgesetzt. Diese sind in dem Schaltkreis in Form von IPS (Inductive Power Supply = Drahtlose Energieübertragung) dargestellt. | Wie aus der Abbildung 7 entnommen werden kann, besteht der Schaltkreis des Sensors laut dem Datenblatt aus Kondensatoren und Spulen. Dies ist ein Merkmal dafür, dass ein LC-Filter verwendet wurde. Durch solch einen Filter kann eine Verbesserung der Flankensteilheit erreicht werden. Die Flankensteilheit beschreibt hierbei, wie stark der Filter beim erreichen der Grenzfrequenz reagiert. Dabei gilt es, je höher die Flankensteilheit, desto höher die Filterwirkung.<ref name="Flankensteilheit"> https://de.wikipedia.org/wiki/Flankensteilheit] Abgerufen am 01.07.2018</ref> | ||
Die LC-Bandpässe werden grundsätzlich durch den Einsatz von zwei magnetisch gekoppelten Parallelschwingkreisen umgesetzt. Diese sind in dem Schaltkreis in Form von IPS (Inductive Power Supply = Drahtlose Energieübertragung) dargestellt.<ref name="LC-Filter"> http://elektronik-kurs.net/elektrotechnik/lc-filter/] Abgerufen am 01.07.2018</ref> | |||
Zeile 122: | Zeile 124: | ||
==Bussystem== | ==Bussystem== | ||
In diesem Projekt wird der Sensor dPressure 500 direkt | In diesem Projekt wird der Sensor dPressure 500 direkt mit einem Arduino Uno Board verbunden. Dieser kommuniziert über drei der auf dem Arduino Uno eingebauten GPIO Pins. Die GPIOs sind allgemein die Lötpunkte in Form einer Stiftleiste und sind die Schnittstellen zu anderen Systemen oder Schaltungen. Außerdem ist das Verhalten dieser GPIOs unabhängig von den Eingabe- oder Ausgabekontakten und sind durch logische Programmierung frei bestimmbar. An dieser Stelle lässt sich sagen, dass ein konkretes Bussystem nicht erkennbar ist. | ||
==Digitale Signalverarbeitung== | ==Digitale Signalverarbeitung== | ||
Vor der Erläuterung der gesamten Signalverarbeitung vom Sensor bis hin zum MATLAB, muss zunächst geklärt werden welche Hardware und Software für dieses Projekt benutzt wurden: | Vor der Erläuterung der gesamten Signalverarbeitung vom Sensor bis hin zum MATLAB, muss zunächst geklärt werden, welche Hardware und Software für dieses Projekt benutzt wurden: | ||
Zeile 137: | Zeile 139: | ||
• dPressure 500 | • dPressure 500 | ||
• | • Lego Mindstorms Kabel | ||
• Wire Jumper | • Wire Jumper | ||
Zeile 154: | Zeile 156: | ||
Für den dPressure 500 | Für den dPressure 500 wird der Ansatz verfolgt, die Kommunikation zwischen dem Sensor und MATLAB, mithilfe von Arduino Uno zu gewährleisten. Der Sensor besitzt einen NXT Anschluss. Dies ist insofern praktisch, da es direkt mit dem Arduino Uno über die GPIO Pins verbunden werden kann. Da das Lego Mindstorms Kabel einen inkompatiblen Anschluss für den Arduino UNO besitzt, wurde ein Ende des Lego Mindstorms Kabels abgeschnitten und nur die benötigten Anschlüsse mit zusätzlichen Jumpern zusammengelötet. Damit wurde ermöglicht, dass der Sensor direkt über die GPIO Pins an Arduino angeschlossen werden kann. | ||
Laut dem Datenblatt des Sensors werden für die digitale Signalverarbeitung nur drei von den sechs vorhandenen Pins benötigt (s. Abb. 2). Diese werden mit den GPIO Pins des Arduinos wie folgt verbunden: | Laut dem Datenblatt des Sensors werden für die digitale Signalverarbeitung nur drei von den sechs vorhandenen Pins benötigt ('''s. Abb. 2'''). Diese werden mit den GPIO Pins des Arduinos wie folgt verbunden: | ||
[[Datei:Der_Schaltplan.PNG|thumb|400px|right|Abb. 8: Der Schaltplan]] | [[Datei:Der_Schaltplan.PNG|thumb|400px|right|Abb. 8: Der Schaltplan]] | ||
Zeile 177: | Zeile 179: | ||
|} | |} | ||
Am Arduino befindet sich außerdem eine USB Typ-B Buchse. Darüber wird direkt über einen USB A/B Kabel der Arduino mit dem Laptop verbunden. | Am Arduino befindet sich außerdem eine USB Typ-B Buchse. Darüber wird direkt über einen USB A/B Kabel der Arduino mit dem Laptop verbunden. Die Auflösung in kPa, die der Arduino ausgeben kann beträgt: | ||
<math> \frac{500kPa}{1023} = 0,488kPa. </math> | |||
Zeile 229: | Zeile 232: | ||
[[Datei:Die_manuelle_Messmethode.PNG|thumb|200px|right|Abb. 10: Die manuelle Messmethode]] | [[Datei:Die_manuelle_Messmethode.PNG|thumb|200px|right|Abb. 10: Die manuelle Messmethode]] | ||
Um zu überprüfen, ob der Sensor überhaupt misst und die digitale Signalverarbeitung vom Sensor bis hin zu der Ausgabe im MATLAB richtig funktionieren, | Um zu überprüfen, ob der Sensor überhaupt misst und die digitale Signalverarbeitung vom Sensor bis hin zu der Ausgabe im MATLAB richtig funktionieren, wird zunächst eine Testmessung durchgeführt. Hierzu wurde eine manuelle Messmethode angewendet. Hierbei wurde der Schlaucht an dem Sensor, der sich an dem Druckanschluss p1 ('''s. Abb. 8''') befindet, mit einer 12ml Spritze befestigt. Über diese Spritze kann auf die angeschlossene Kammer bestimmter Druck ausgeübt werden. Dieser hängt von der ausgeübten Kraft F und der gedrückten Fläche A ab. | ||
<math> \frac{F}{A} = p. </math> | <math> \frac{F}{A} = p. </math> | ||
Zeile 258: | Zeile 261: | ||
[[Datei:PAP_zu_einer_Versuchsreihe.PNG|thumb|70px|left|Abb. 11: PAP zu einer Versuchsreihe]] | [[Datei:PAP_zu_einer_Versuchsreihe.PNG|thumb|70px|left|Abb. 11: PAP zu einer Versuchsreihe]] | ||
Zur Bestimmung der Messunsicherheit und des Vertrauensintervalls, wurde mit der eben erwähnten Methodik gemessen. Dennoch handelt es sich hierbei nicht um eine Echtzeitmessung, sondern um vielen Einzelmessungen. Insgesamt wurden 30 Messungen je fünf Versuchsreihen durchgeführt. Die Vorgehensweise jeder einzelnen Versuchsreihe ist in der Abbildung 11 dargestellt und der dazu gehörige Baustein der „Messbedingung umsetzen“ besteht aus den folgenden | Zur Bestimmung der Messunsicherheit und des Vertrauensintervalls, wurde mit der eben erwähnten Methodik gemessen. Dennoch handelt es sich hierbei nicht um eine Echtzeitmessung, sondern um vielen Einzelmessungen. Insgesamt wurden 30 Messungen je fünf Versuchsreihen durchgeführt. Die Vorgehensweise jeder einzelnen Versuchsreihe ist in der Abbildung 11 dargestellt und der dazu gehörige Baustein der „Messbedingung umsetzen“ besteht aus den folgenden fünf Schritten: | ||
Zeile 272: | Zeile 275: | ||
5. Den Schlauch und die Spritze trennen | 5. Den Schlauch und die Spritze trennen | ||
Zeile 290: | Zeile 291: | ||
| style="font-weight:bold;" | Mittelwert in kPa | | style="font-weight:bold;" | Mittelwert in kPa | ||
| style="font-weight:bold;" | Standartabweichung | | style="font-weight:bold;" | Standartabweichung | ||
| style="font-weight:bold;" | Messunsicherheit | | style="font-weight:bold;" | Messunsicherheit in kPa | ||
| style="font-weight:bold;" | Vertrauensbereich | | style="font-weight:bold;" | Vertrauensbereich | ||
|- | |- | ||
Zeile 350: | Zeile 351: | ||
|} | |} | ||
Auf der Suche nach den negativen Einflüssen auf die Messergebnisse wurde bei diesem Projekt das Ishikawa-Diagramm betrachtet. Darüber hinaus wurden folgende Einflüsse identifiziert: | Auf der Suche nach den negativen Einflüssen auf die Messergebnisse wurde bei diesem Projekt das Ishikawa-Diagramm betrachtet. Darüber hinaus wurden folgende Einflüsse identifiziert:<ref name="Ishikawa-Diagramm"> [https://de.wikipedia.org/wiki/Ursache-Wirkungs-Diagramm] Wikipedia Eintrag: Ursachen-Wirkungs-Diagramm </ref> | ||
'''Negative Einflüsse auf die Messergebnisse''' | '''Negative Einflüsse auf die Messergebnisse''' | ||
Zeile 356: | Zeile 357: | ||
1. Messobjekt | 1. Messobjekt | ||
Als Messobjekt dient eine Spritze. Diese hat eine analoge Skala, die die restliche Luft in der Spritze in Form von ml hergibt. Aus diesem Grund ist es nicht möglich eine exakt gleiche Menge an Luft einzustellen, da das untere Ende des Kolbens größer als die analogen Markierungen sind. | Als Messobjekt dient eine Spritze. Diese hat eine analoge Skala, die die restliche Luft in der Spritze in Form von ml hergibt. Aus diesem Grund ist es nicht möglich eine exakt gleiche Menge an Luft einzustellen, da das untere Ende des Kolbens größer als die analogen Markierungen sind. So befindet sich fast immer das Messergebnis minimal über oder unter der angenommenen Luftmenge. | ||
2. Messgerät | 2. Messgerät | ||
Die Auflösung des | Die Auflösung des Arduinos beträgt 4,88mV. Dies bedeutet, dass etwa in Schritten von 0,5kPa das Ergebnis angezeigt werden kann. Für alle Werte dazwischen ist die Auflösung zu klein und wird somit ab- oder aufgerundet. Aus diesem Grund ist der Arduino für sehr kleine Druckwerte (0-10kPa) nicht geeignet. | ||
3. Methode | 3. Methode | ||
Der Druck ist von dem Volumen, in dem der Druck gemessen werden soll, abhängig. Dies bedeutet, dass das Volumen von der Kammer des Sensors bis zum Anfang des Kolbens genau gleich sein muss, wie das gleiche Volumen des Referenzmessgerätes. Da dies aber nicht möglich ist zu berechnen, können hierbei geringe Einflüsse auf die Messergebnisse einwirken. | Der Druck ist von dem Volumen, in dem der Druck gemessen werden soll, abhängig. Dies bedeutet, dass das Volumen von der Kammer des Sensors bis zum Anfang des Kolbens genau gleich sein muss, wie das gleiche Volumen des Referenzmessgerätes. Da dies aber nicht möglich ist zu berechnen, können hierbei geringe Einflüsse auf die Messergebnisse einwirken.<ref name="Wikipedia">[https://de.wikipedia.org/wiki/Thermische_Zustandsgleichung_idealer_Gase] Wikipedia Eintrag: Thermische Zustandsgleichung idealer Gase</ref> | ||
==Video== | ==Video== | ||
Das Video ist unter dem folgenden Link zu finden: | |||
[https://www.youtube.com/watch?v=CrlHIVwEgrA&feature=youtu.be Vorstellung und Testmessung des Drucksensors dPresseure 500] | |||
==Quellenverweise== | ==Quellenverweise== | ||
<references/> | <references /> | ||
---- | |||
→ zurück zum Hauptartikel: [[SigSys_SoSe2018| Signalverarbeitende Systeme Sommersemester 2018]] |
Aktuelle Version vom 8. August 2018, 20:25 Uhr
Sensor: dPressure 500
Autor: Ilja Scheremeta Betreuer: Prof. Schneider
Aufgabenstellung
In dem Fach "Signalverarbeitende Systeme" aus dem Studiengang "Business and Systemsengineering" der Hochschule Hamm-Lippstadt obliegt jedem Studierenden die Aufgabe, sich semesterbegleitend mit einem ausgewählten Sensor auseinanderzusetzen. In diesem Zusammenhang soll der jeweilige Sensor im Laufe der Ausarbeitung mit MATLAB/Simulink ausgelesen und im Anschluss im HSHL Wiki sinnvoll und verständlich dokumentiert werden.
Der Sensor und seine Funktionsweise
Bei dem dPressure 500 Sensor für Lego Mindstorms NXT handelt es sich um einen analogen Silizium-Drucksensor, mit dem verschiedene Druckschwankungen gemessen werden können. Dieser Sensor arbeitet mit einem Mikroprozessor, welcher die A/D-Wandlung unterstützt und folgende technische Daten aufweist:[1]
Merkmal | Werte |
---|---|
Messbereich | von 0kPa (Vakuum) bis 500kPa (70psi) |
Messbereich (Rohsignal) | von 0V bis 5V |
Messbare Schwankungen | 0,25kPa (0,05psi) |
Genauigkeit | +/- 2,5% |
Mittlere Antwortzeit | 1ms |
Betriebsversorgungsspannung | 4,75V bis 5,25V |
Betriebsversorgungsstrom | 7mA |
Betriebstemperatur | 0°C bis 85°C |
In der Messtechnik gibt es je nach Messverfahren unterschiedliche Drucksensoren. Der dPressure500 gehört zu dem Typen des kapazitiven Differenzdrucksensors. Dies bedeutet, dass hierbei die Differenz zweier Absolutdrücke p1 und p2 gemessen wird und diese miteinander verglichen werden. Aus diesem Grund besitzt der Sensor zwei separate Druckanschlüsse und arbeitet im Vergleich zu vielen anderen Drucksensoren ausschließlich in einem positiven Bereich, wobei p1 den Druck darstellt, der im Vergleich zu p2 verändert wird und p2 immer konstant bleibt (p1≥p2). In diesem Fall liegt der Messbereich zwischen 0kPa und 500kPa.[4]
Außerdem besitzt dPressure500 demzufolge zwei Messkammer, die durch eine Siliziummembran hermetisch voneinander getrennt sind. Die Funktionsweise hierbei ist wie bei einem Plattenkondensator mit einem variablen Elektrodenabstand. Die Siliziummembran und die Gegenelektrode stellen an dieser Stelle die beiden Elektroden des Kondensators dar, wobei die Luft dazwischen das Dielektrikum ist. Erhöht sich der Druck p1, biegt sich die Membran durch und der Abstand zwischen den Elektroden und dadurch die Kapazität des Kondensators wird verringert. Durch die Veränderung des Abstandes wird auch der Stromfluss und somit die Ausgangsspannung Vout als das Rohsignal beeinflusst. Dessen Messbereich liegt zwischen 0V und 5V. Die Biegung der Membran bzw. der Abstand zwischen dem Siliziummembran und der Gegenelektrode ist also in diesem Zusammenhang ein Maß für die Größe des Differenzdruckes (s. Abb. 2).[1] [5]
Vorverarbeitung
Aus der Funktionsweise des Sensors dPressure500 kann entnommen werden, dass die Messwerte in Form von Spannung Vout in der Signalverarbeitungskette direkt an Arduino übertragen werden. Diese Werte müssen dann durch eine Funktion in die Druckeinheit Pascal umgewandelt werden. Das Verhältnis zwischen der Ausgangsspannung Vout und dem Druck kPa wird anhand von einer Kennlinie wie folgt dargestellt (s. Abb. 3).[1]
Analog-Digital-Umsetzer
Der Drucksensor dPressure 500 wird zur Signalverarbeitung mit einem der sechs analogen Pins des Arduino Uno (A0-A5) verbunden. Damit werden die analogen Signale in Form von Spannung gemessen und danach digitalisiert. Grundsätzlich haben die analogen Signale im Vergleich zu digitalen Signalen einen Vorteil, indem sie sehr viele Werte zwischen einem hohen und niedrigen Pegel annehmen können. Beim Arduino UNO liegt der maximale Pegel bei 5 V und der niedrigste bei 0V. Außerdem arbeitet der Arduino mit dem ATMEGA328P-MU Mikrocontroller, bei dem die Auflösung des ADCs 10-Bit (1024 Messwerte) beträgt. Das Auslesen einer Messung am Eingang dauert ca. 0,0001 Sekunden, sodass maximal 10.000 Messungen pro Sekunde verarbeitet werden können.[7] Die eben erwähnten Werte zwischen 0 V und 5 V werden von dem integrierten 10-Bit Analog Digital Wandler (ADC) in Integer Werte zwischen 0 bis 1023 umgewandelt. Ein Signal kann hierbei eine Auflösung von 4,9mV aufnehmen:
Der Analog Digital Wandler arbeitet bei dem eingebauten Microcontroller mit der sukzessiven Approximation. Dabei wird von einer schrittweisen Annährung des eingehenden Signals mittels der Ausgangsspannung eines DA-Wandlers gesprochen. Hierbei wird also die analoge Eingangsspannung (unendlicher Wertebereich) so lange mit der Referenzspannung verglichen bis das richtige Ergebnis identifiziert und digital (endlicher Wertebereich) dargestellt wird.[8]
Solch ein ADU besteht aus einem DA-Wandler, SAR-Datenregister, einer elektronischen Schaltung für die digitale Steuerelektronik und einem separaten Komparator. SAR steht für Seccessive Approximation Register, worin am Ende des Vorgangs der ermittelte Digitalwert des DA-Wandlers dargestellt wird. Der Komparator dagegen vergleicht dabei die erzeugte Referenzspannung vom DA-Wandler mit der Eingangsspannung. [8]
Beispiel für die sukzessive Approximation
Im folgenden Beispiel wird die „sukzessive Approximation“, anhand von einem verhältnismäßig übersichtlichen 3-Bit-Wandler genauer erklärt (s. Abb. 5 u. 6). Da es sich um einen 3-Bit-Wandler handelt, können an dieser Stelle acht Messwerte dargestellt werden. Es wird angenommen, dass sich der Pegel der Messwerte der zu vermessenden Eingangsspannung zwischen 0 V und 7 V befindet und die digitale Darstellung der Messwerte ausschließlich in ganzen Zahlen erfolgt. So ergibt sich hierfür die folgende Binärtabelle:
Binärdarstellung | Spannung in V |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
Abbildung 5 veranschaulicht über ein Flussdiagramm die erwähnte schrittweise Annährung des eingehenden Signals in Form von Ue. Dabei finden insgesamt drei Vergleiche statt. Die zu vermessene Spannung wird als erstes mit dem MSB (Most Significant Bit) auf den Binärwert 100 gesetzt. Darauf hin wird im DA-Wandler die entsprechende Ausgangsspannung erzeugt, die mit der eigentlichen Messspannung im Komparator verglichen wird. Hier geht es darum, ob die Messspannung größer oder kleiner als die Vergleichsspannung (Uv) ist. Da es im gegebenen Fall größer ist, wird das MSB in der SAR-Einheit gesetzt und es kommt zum nächsten Schritt und somit zum nächsten Vergleich. In diesem und im letzten Schritt wiederholt sich dieser Vorgang bis am Ende eine Binärzahl 110 übrigbleibt. Diese steht für 6 V und wird abschließend in dem SAR-Datenregister dargestellt.
LC-Filter
Wie aus der Abbildung 7 entnommen werden kann, besteht der Schaltkreis des Sensors laut dem Datenblatt aus Kondensatoren und Spulen. Dies ist ein Merkmal dafür, dass ein LC-Filter verwendet wurde. Durch solch einen Filter kann eine Verbesserung der Flankensteilheit erreicht werden. Die Flankensteilheit beschreibt hierbei, wie stark der Filter beim erreichen der Grenzfrequenz reagiert. Dabei gilt es, je höher die Flankensteilheit, desto höher die Filterwirkung.[9] Die LC-Bandpässe werden grundsätzlich durch den Einsatz von zwei magnetisch gekoppelten Parallelschwingkreisen umgesetzt. Diese sind in dem Schaltkreis in Form von IPS (Inductive Power Supply = Drahtlose Energieübertragung) dargestellt.[10]
Bussystem
In diesem Projekt wird der Sensor dPressure 500 direkt mit einem Arduino Uno Board verbunden. Dieser kommuniziert über drei der auf dem Arduino Uno eingebauten GPIO Pins. Die GPIOs sind allgemein die Lötpunkte in Form einer Stiftleiste und sind die Schnittstellen zu anderen Systemen oder Schaltungen. Außerdem ist das Verhalten dieser GPIOs unabhängig von den Eingabe- oder Ausgabekontakten und sind durch logische Programmierung frei bestimmbar. An dieser Stelle lässt sich sagen, dass ein konkretes Bussystem nicht erkennbar ist.
Digitale Signalverarbeitung
Vor der Erläuterung der gesamten Signalverarbeitung vom Sensor bis hin zum MATLAB, muss zunächst geklärt werden, welche Hardware und Software für dieses Projekt benutzt wurden:
Hardware
• Laptop
• Arduino UNO
• dPressure 500
• Lego Mindstorms Kabel
• Wire Jumper
• USB A/B Kabel
Software
• Microsoft Windows 10
• Matlab R2017a
• Fritzing
Für den dPressure 500 wird der Ansatz verfolgt, die Kommunikation zwischen dem Sensor und MATLAB, mithilfe von Arduino Uno zu gewährleisten. Der Sensor besitzt einen NXT Anschluss. Dies ist insofern praktisch, da es direkt mit dem Arduino Uno über die GPIO Pins verbunden werden kann. Da das Lego Mindstorms Kabel einen inkompatiblen Anschluss für den Arduino UNO besitzt, wurde ein Ende des Lego Mindstorms Kabels abgeschnitten und nur die benötigten Anschlüsse mit zusätzlichen Jumpern zusammengelötet. Damit wurde ermöglicht, dass der Sensor direkt über die GPIO Pins an Arduino angeschlossen werden kann. Laut dem Datenblatt des Sensors werden für die digitale Signalverarbeitung nur drei von den sechs vorhandenen Pins benötigt (s. Abb. 2). Diese werden mit den GPIO Pins des Arduinos wie folgt verbunden:
Pin | Funktion | Farbe des Jumpers |
---|---|---|
1 | Vout | weiß |
2 | Ground | schwarz |
3 | Vcc | grün |
4 | keine | |
5 | keine | |
6 | keine |
Am Arduino befindet sich außerdem eine USB Typ-B Buchse. Darüber wird direkt über einen USB A/B Kabel der Arduino mit dem Laptop verbunden. Die Auflösung in kPa, die der Arduino ausgeben kann beträgt:
MATLAB Simulation
Nun wird mithilfe von MATLAB eine Verbindung zum Sensor hergestellt. Hierzu wird zunächst das Package „MATLAB Support Package for Arduino Hardware“ benötigt. So bald es installiert ist, wird die Kommunikation zwischen MATLAB und dem Sensor hergestellt. Dieser Schritt erfolgt zum größten Teil automatisch und wird lediglich durch den Befehlt a = arduino im Editor unterstützt. Im zweiten Schritt wird ein Code geschrieben mit dem auf einzelne Messwerte in der Einheit Druck (kPa) und (PSI) zugegriffen werden kann. Abschließend wird ein Code generiert, mit dem eine live Datenübertragung der Messwerte stattfindet. Der Code zu den eben erwähnten Schritten sieht wie folgt aus:
%% mit Arduino verbinden
a = arduino; %Verbindung des Arduinos mit MATLAB
%% Einzelmessung von kPa und PSI
v = readVoltage(a,'A0') %%in Volt
n = (0: 0.0049: 500); %%kPa
kPa = (v - 0.2)/0.009; %%Volt in kPa umrechnen
PSI= kPa*(0.145037738); %%Volt in PSI umrechnen
fprintf('Einzelmessung:\n %.1f kPa\n %.1f PSI\n',kPa,PSI)
%% Messwerte live auslesen
Messzeit = 500; %%Intervall der Messzeit in ds
init_time =1; %%Startzeit
x = 0; %%Start Druck
while (init_time < Messzeit) %%Funktion plotten
b=((readVoltage(a, 'A0'))-0.2)/0.009;
x=[x,b];
plot(x);
grid on
init_time=init_time+1;
xlabel('Zeit in Dezisekunden');
drawnow
end
Testmessung
Um zu überprüfen, ob der Sensor überhaupt misst und die digitale Signalverarbeitung vom Sensor bis hin zu der Ausgabe im MATLAB richtig funktionieren, wird zunächst eine Testmessung durchgeführt. Hierzu wurde eine manuelle Messmethode angewendet. Hierbei wurde der Schlaucht an dem Sensor, der sich an dem Druckanschluss p1 (s. Abb. 8) befindet, mit einer 12ml Spritze befestigt. Über diese Spritze kann auf die angeschlossene Kammer bestimmter Druck ausgeübt werden. Dieser hängt von der ausgeübten Kraft F und der gedrückten Fläche A ab.
Bei dieser Messung wurde als erstes der Kolben der Spritze am Anschlag positioniert. Daraufhin wurde der Sensor mit der Spritze über den Schlauch verbunden. Nach dem Start der Software, wurde in dem eingegebenen Zeitintervall von 500ds der Kolben nach unten gedrückt und kurz darauf bis auf 10ml losgelassen. Dieser Vorgang wurde so lange durchgeführt bis die eingestellte Zeit abgelaufen ist. Die Ergebnisse zu dieser Messung sind in der Abbildung 9 zu sehen. Der Link zu dem Video dieser Messung ist unter der Überschrift „Video“ verlinkt.
Darstellung der Ergebnisse
Zur Bestimmung der Messunsicherheit und des Vertrauensintervalls, wurde mit der eben erwähnten Methodik gemessen. Dennoch handelt es sich hierbei nicht um eine Echtzeitmessung, sondern um vielen Einzelmessungen. Insgesamt wurden 30 Messungen je fünf Versuchsreihen durchgeführt. Die Vorgehensweise jeder einzelnen Versuchsreihe ist in der Abbildung 11 dargestellt und der dazu gehörige Baustein der „Messbedingung umsetzen“ besteht aus den folgenden fünf Schritten:
Vorgehensweise bei "Messbedingung umsetzen"
1. Den Kolben bis zum Anschlag bringen
2. Den Schlauch des Sensors und die Spritze verbinden
3. Den Kolben auf festgelegte Marke drücken
4. Ergebnis notieren
5. Den Schlauch und die Spritze trennen
Die Messbedingungen, so wie die Messergebnisse sind aus der folgenden Tabelle zu entnehmen:
Messergebnisse
Messreihe | Bedingung | Anzahl Messungen | Referenzwert in kPa | Druck in kPa min | Druck in kPa max | Mittelwert in kPa | Standartabweichung | Messunsicherheit in kPa | Vertrauensbereich |
1 | Anschlag bis 12ml | 30 | 6,61 | 6,51 | 7,06 | 6,87 | 0,275 | 0,55 | 6,87 ± 0,55 |
2 | Anschlag bis 11ml | 30 | 15,12 | 15,2 | 16,3 | 15,47 | 0,428 | 1,1 | 15,47 ± 1,1 |
3 | Anschlag bis 10ml | 30 | 24,9 | 25,52 | 26,6 | 25,85 | 0,424 | 1,08 | 25,85 ± 1,08 |
4 | Anschlag bis 9ml | 30 | 36,77 | 36,93 | 38,01 | 37,63 | 0,44 | 1,1 | 37,63 ± 1,1 |
5 | Anschlag bis 8ml | 30 | 51,2 | 51,59 | 52,67 | 52,02 | 0,346 | 1,08 | 52,02 ± 1,08 |
Auf der Suche nach den negativen Einflüssen auf die Messergebnisse wurde bei diesem Projekt das Ishikawa-Diagramm betrachtet. Darüber hinaus wurden folgende Einflüsse identifiziert:[11]
Negative Einflüsse auf die Messergebnisse
1. Messobjekt
Als Messobjekt dient eine Spritze. Diese hat eine analoge Skala, die die restliche Luft in der Spritze in Form von ml hergibt. Aus diesem Grund ist es nicht möglich eine exakt gleiche Menge an Luft einzustellen, da das untere Ende des Kolbens größer als die analogen Markierungen sind. So befindet sich fast immer das Messergebnis minimal über oder unter der angenommenen Luftmenge.
2. Messgerät
Die Auflösung des Arduinos beträgt 4,88mV. Dies bedeutet, dass etwa in Schritten von 0,5kPa das Ergebnis angezeigt werden kann. Für alle Werte dazwischen ist die Auflösung zu klein und wird somit ab- oder aufgerundet. Aus diesem Grund ist der Arduino für sehr kleine Druckwerte (0-10kPa) nicht geeignet.
3. Methode
Der Druck ist von dem Volumen, in dem der Druck gemessen werden soll, abhängig. Dies bedeutet, dass das Volumen von der Kammer des Sensors bis zum Anfang des Kolbens genau gleich sein muss, wie das gleiche Volumen des Referenzmessgerätes. Da dies aber nicht möglich ist zu berechnen, können hierbei geringe Einflüsse auf die Messergebnisse einwirken.[12]
Video
Das Video ist unter dem folgenden Link zu finden:
Vorstellung und Testmessung des Drucksensors dPresseure 500
Quellenverweise
- ↑ 1,0 1,1 1,2 1,3 1,4 MPX 5500 Series Seite 1 Referenzfehler: Ungültiges
<ref>
-Tag. Der Name „Datenblatt des Drucksensors“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert. Referenzfehler: Ungültiges<ref>
-Tag. Der Name „Datenblatt des Drucksensors“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert. Referenzfehler: Ungültiges<ref>
-Tag. Der Name „Datenblatt des Drucksensors“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert. - ↑ https://www.generationrobots.com/de/401375-drucksensor-dpressure-500-fur-lego-mindstorms-nxt-roboter.html] Abgerufen am 02.06.2018
- ↑ https://circuits4you.com/2016/05/13/water-level-measurement-arduino/] Abgerufen am 03.06.2018
- ↑ Stefan Hesse: https://books.google.de/books?id=s0FerR_omKsC&pg=PA192&dq=Differenzdrucksensor&hl=de&sa=X&ved=0ahUKEwiEmKXJpoPcAhUOMuwKHY59B0kQ6AEIODAD#v=onepage&q=Differenzdrucksensor&f=false] S. 191f.
- ↑ Henning Wallentowitz: https://books.google.de/books?id=yMjcMIdGceoC&printsec=frontcover&dq=Handbuch+Kraftfahrzeugelektronik:+Grundlagen+-+Komponenten&hl=de&sa=X&ved=0ahUKEwiU3NmFsIPcAhWOGuwKHRg9Bp4Q6AEIJzAA#v=onepage&q&f=false] S. 517f.
- ↑ 6,0 6,1 Herbert Bernstein: https://books.google.de/books?id=hG7dBgAAQBAJ&pg=PA287&dq=flussdiagramm+sukzessive+approximation&hl=de&sa=X&ved=0ahUKEwjj3fDuuIPcAhWxM-wKHUioAfAQ6AEIOTAD#v=onepage&q=flussdiagramm%20sukzessive%20approximation&f=false] S. 287f.
- ↑ [https://edu.books.sensebox.de/de/grundlagen/analoge_signale.html ] Arduino
- ↑ 8,0 8,1 https://www.itwissen.info/SAR-successive-approximation-register-SAR-Verfahren.html] Abgerufen am 16.06.2018
- ↑ https://de.wikipedia.org/wiki/Flankensteilheit] Abgerufen am 01.07.2018
- ↑ http://elektronik-kurs.net/elektrotechnik/lc-filter/] Abgerufen am 01.07.2018
- ↑ [1] Wikipedia Eintrag: Ursachen-Wirkungs-Diagramm
- ↑ [2] Wikipedia Eintrag: Thermische Zustandsgleichung idealer Gase
→ zurück zum Hauptartikel: Signalverarbeitende Systeme Sommersemester 2018