====== Risssiumulator16153 ======
Ein Simulator für Risse in historischen Bauwerken ;-)
Bzw. ein Messaufbau für Sensoren für Abstandsmessung zur Überwachung von entsprechenden Rissen.
Der Rissimulator16153 und die entsprechenden „Sensoren in einer Aufputzdose“ sind Teil des Projekts [[MünsterMonitoring]].
===== Aufbau =====
* Abstandsmessung:
* [[https://de.wikipedia.org/wiki/Elektrooptische_Entfernungsmessung|ToF-Sensor]] [[https://www.st.com/en/imaging-and-photonics-solutions/vl6180x.html|VL6180X]] für Abstand und Umgebungshelligkeit; [[https://www.st.com/content/ccc/resource/sales_and_marketing/promotional_material/flyer/ae/ee/16/e1/6e/61/41/ec/flvl6180x0914_lr.pdf/files/flvl6180x0914_lr.pdf/jcr:content/translations/en.flvl6180x0914_lr.pdf|Broschüre]], [[https://www.st.com/resource/en/datasheet/vl6180x.pdf|Datenblatt]]
* Verbaut auf Breakout Board von [[https://www.pololu.com/product/2489|pololu]]
* Polulu VL6180X [[https://github.com/pololu/vl6180x-arduino|Arduino Library]]
* Klima-Messung
* [[https://www.bosch-sensortec.com/bst/products/all_products/bme280|Bosch BME280]] für Temperatur, Luftfeuchte und Lutdruck; [[https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280-DS002.pdf|Datenblatt]]
* (Nicht optimal) verbaut auf Breakout Board Marke „AliExpress“.
* Ardafruit BME280 [[https://github.com/adafruit/Adafruit_BME280_Library| Arduino Library]]
* Montage
* Reflektor montiert auf [[https://www.amazon.de/gp/product/B004FI114C/|Makro/Stereo-Einstellschlitten]] (Acrylglas-Block 15 x 50 x 50 mm)
* Distanz-Sensor fixiert an Basis des Einstellschlittens (Acrylglas-Block 15 x 50 x 40 mm)
* Alles zusammen mit Platine, Akku etc. auf einem Holzsockel
==== Fotos ====
=== Prototyp 1 ===
{{:risssimulatur16153-1.jpeg?direct&175|}} {{:risssimulatur16153-2.jpeg?direct&175|}} {{:risssimulatur16153-3.jpeg?direct&175|}} {{:risssimulatur16153-4.jpeg?direct&175|}} {{:risssimulatur16153-5.jpeg?direct&175|}}
=== Prototyp 2 (aktuell) ===
{{:16153v2-1.jpeg?direct&175|}} {{16153v2-2.jpeg?direct&175|}}
Codename: Risssi (mit drei 's')
==== Messwerte ====
Folgende Messwerte sollen erhoben werden
| ^ VL6180X ^ BME280 ^ Platine ^
^ Distanz | x | | |
^ Umgebungshelligkeit | x | | |
^ Temperatur | | x | |
^ Rel. Luftfeuchte | | x | |
^ Luftdruck | | x | |
^ Batteriespannung | | | x |
===== Modell =====
* Riss im Münster.
* Spielt Längenausdehnung der bestehenden Rissmarken oder unserem Messaufbau eine Rolle?
* Temperatruabhängigkeit? [[https://www.muepro.de/service/Digitale-Services/berechnungsprogramme/Online-Berechnungsprogramme/laengenausdehnung.html|Bsp.-Rechnungen]] mit 10 cm Länge und einem Temperaturunterschied von 15 K (bspw. -5 bis 20 °C):
* Baustahl: 3 µm
* Kupfer: 4,5 µm
* PVC: 200 µm = 0,2 mm; alpha = 0,07 mm/m K
* Plexiglas (PMMA, auch Acrylglas): 0,2 mm; alpha = 0,07 mm/m K
* Datenblatt und Broschüre VL6180X, Abstandsmessung:
* [[https://de.wikipedia.org/wiki/Oberfl%C3%A4chenemitter|VCSEL]] @850 nm + [[https://de.wikipedia.org/wiki/Avalanche-Photodiode#Einzelphotonenz%C3%A4hlung|SPAD]], „[…] the VL6180X precisely measures the time the light takes to travel to the nearest object and reflect back to the sensor (Time-of-Flight).“
* Genauigkeit von 1 mm + Rauschen von max. 2 mm (bei Standard-Betriebsbedingungen mit 23 °C, 2,8 V Betriebsspannung, dunkel).
* Optimale Betriebsbedingungen: -10 .. +60 °C, 2,7 .. 2,9 V Betriebsspannung.
* Es [[https://hackaday.io/project/47141-sub-mm-accuracy-from-the-vl6180-tof-sensor|scheint so]], dass man mit dem VL6180X auch im 1/10-mm-Bereich messen kann. → Wir zeichnen also soweit 2 Nachkommastellen, also 100-stel mm, auf.
* Temperatureinflüsse, weitere Klimawerte? → Müssen wir uns anschauen.
* Vgl. bei Gelegenheit [[https://de.wikipedia.org/wiki/Luftdichtekorrektion|Luftdichtekorrektion]].
==== Einflussgrößen und Messunsicherheit ====
* Messgröße: Länge
* ... des Abstandes Sensor zu gegenüberliegendem Plättchen.
* gemessen mit dem VL6180X, s.o.
* Einflussgrößen (aktuelle Annahmen):
* Temperatur.
* Umgebungslicht: Allgemeine Beleuchtungsstärke? Direkte Lichteinstrahlung in den Sensor?
* Versorgungsspannung.
* Evtl. weitere Einflussgrößen:
* Materialausdehnung(en).
* Messunsicherheit:
* Für den VL6180X wird im Datenblatt (s.o.) eine Genauigkeit von 1 mm und ein Rauschen von 2 mm angegeben. → Kann dies durch Messwiederholungen verbessert werden?
===== Laborbuch =====
//Neueste Einträge oben; Zeitstempel jeweils Start eines neuen Experiments.//
==== 2019-12-02 0759: manuelle Temperatur-Kalibrierung ====
* Sensor/Distanz-Messung scheint sehr anfällig für plötzliche Temperaturstürze (am aktuellen Messort z.B. typisch durch Lüften im Zimmer).
* Bisher war die automatische Kalibrierung auf Temperatur auf dem Standardwert belassen (alle 255 Messungen), siehe Datenblatt Kapitel //2.7.4 Manual/autoVHV calibration//
* Nun zu Beginn jeder Messung (Reihe aus 50 direkt aufeinander folgenden Messungen) manuelle getriggerte Temperatur-Kalibrierung; siehe [[https://github.com/jaqPi/lora-ulm-muenster-monitor/commit/813697448ac0608884f5420126ae8c66b0595b2a|Commit]] im Quellcode.
==== 2019-11-23 1122: neuer Aufbau ====
* Sensor und Reflektor nun an/aus Acrylglasblöcken, die fest an Eintellschlitten bzw. dessen Basis fixiert sind.
* 2019-11-24 1056: Reflektor mit dickerem Papier tapeziert.
* 2019-11-29 0800-1100: Ausflug des Risssimulator16153 in die Münsterbauhütte.
==== 2019-11-17 1030: Start neuer Messreihe ====
* Start neuer Messreihe mit verschraubtem ToF-Sensor
* Werte der letzten 24h sind zu ignorieren
* → „Holz schaffat z'viel“ = Ausdehnung des Holzes abhängig von der Luftfeuchte viel zu groß.
==== 2019-11-17 0030: ToF-Sensor verschraubt und Ambient Light ====
* ToF-Sensor nun fest verschraubt, um erneutes Ablösen des Klebebands zu verhindern
* Messung des Ambient Lights (vergleichbare Messart wie Distanz) mit aufgenommen
==== 2019-11-12 2321: platine01 sendet erste Daten ====
* Aufbau: wie unten
* Abstand: fix.
* nicht ganz: Doppelseitiges Klebeband war – wie schon erwartet – nicht wirlich geeignet, um den Sensor am Holz zu befestigen; der Sensor hat sich immer wieder gelöst. Wir suchen nach genügend kleinen Schrauben (Größe ~ M1).
* Standort: fix.
* TODO beschreiben
* Messwertermittlung: 50 Messwiederholungen @10Hz, errechnung von mean std dev.
* Messintervall: 15 Minuten
* Übertragung und Speicherung: -> TTN -> influxdb.
==== 2019-11-10 1738: erste Versuche ====
* Aufbau:
* [[https://www.pololu.com/product/2489|VL6180X Time-of-Flight Distance Sensor]].
* [[https://github.com/pololu/vl6180x-arduino|Arduino Library]].
* Münsterplatine.
* Messwerte direkt per Serial/USB auf den Laptop.
* Abstand Sensor zu Gegenseite jeweils pro Messreihe unangetastet.
* uint8_t readRangeSingle(void)
* Messreihe 1:
sSingle = c(29,27,28,27,25,27,27,28,26,25,28,28,28,28,26,28,27,26,26,27,27,28,26,27,27,26,28,27,28,26,28,26,26,28,27,27,26,29,27,26,26,26,26,26,28,27,26,27,26,26,26,28,27,26,26,27,27,27,28,26,27,27,27,28,27,26,26,27,26,26,28,27,28,27,28,27,27,26,28,28,29,26,27,27,26,27,27,27,26,28,27,27,26,25,28,28,29,27,26,27,27,30,28,27,27,26,27,27,28,26,30,28,27,26,27,29,28,26,26,26,28,29,27,27,28,27,27,26,29,25,25,28,25,26,28,27,27,26,27,28,28,26,28,25,27,28,28,26,28,26,28,25,25,26,27,27,27,27,27,26,28,27,28,27,27,26,27,27,27,28,27,27,25,27,27,27,26,28,27,28,27,26,28,26,27,27,27,27,28,27,24,26,28,27,27,26,28,26,27,27,25,29,28,26,27,27,27,27,27,27,28,26,26,26,27,27,27,27,27,26,27,26,26,27,27,26,28,28,26,25,27,25,26,26,27,25,29,27,28,27,27,28,27,27,26,28,26,25,26,28,28,27,27,26,26,26,26,26,27,27,27,26,27,27,27,27,27,26,27,27,28,28,27,26,28,27,27,25,26,27,26,27,27,27,28,26,28,27,27,27,28,27,28,27,27,26,26,27,26,27,27,27,28,26,26,26,26,26,26,26,26,27,27,28,26,28,25,27,27,26,27,27,27,27,26,27,28,24,28,28,26,28,26,27,27,27,25,26,27,27,27,28,29,27,29,27,27,27,27,27,27,27,28,25,28,27,29,28,27,27,27,27,26,27,27,28,27,27,27,27,26,28,27,28,27,28,24,27,27,27,28,25,25,27,26,27,26,28,25,28,29,29,27,25,28,27,28,27,26,28)
summary(sSingle)
Min. 1st Qu. Median Mean 3rd Qu. Max.
24.00 26.00 27.00 26.91 28.00 30.00
sd(sSingle)
[1] 0.9691481
{{ :risssensor16153-plot_ssingle.png?600 |}}
* uint8_t readRangeContinuous(void)
* Messreihe 1:
sContinuous = c(27,28,30,28,27,27,27,27,27,27,28,28,29,29,27,28,26,27,26,26,28,26,26,27,26,27,28,29,27,26,28,27,27,27,27,26,26,26,27,28,28,26,28,27,29,29,27,27,27,27,27,27,27,28,26,27,27,27,25,26,29,25,27,26,28,27,27,28,27,26,26,27,27,26,29,27,26,26,28,29,25,27,26,28,27,27,28,27,28,27,27,26,27,27,28,27,26,27,26,27,27,26,26,26,27,25,29,26,26,27,26,27,28,27,27,26,26,27,27,28,26,27,27,26,27,26,27,27,27,26,27,26,26,28,27,27,27,28,25,27,27,27,27,25,26,26,27,27,26,28,26,26,26,26,26,28,26,27,25,28,27,28,27,27,26,29,27,27,27,25,28,28,24,27,28,27,28,25,25,26,27,26,28,28,27,26,26,25,28,28,28,27,27,27,27,27,25,26,25,26,27,27,26,27,28,27,26,27,28,27,28,27,25,26,26,26,28,27,27,26,27,28,26,26,26,27,27,27,27,28,27,28,27,27,28,28,27,27,26,26,27,28,26,27,28,28,26,26,26,28,27,28,26,27,27,27,27,28,28,27,28,28,29,27,27,29,27,29,26,29,25,27,27,29,28,26,27,29,26,28,27,26,27,26,26,27,27,27,27,26,27,26,27,26,28,28,26,27,28,28,28,25,26,27,26,28,28,26,27,27,29,27,26,26,29,29,28,28,27,27,27,28,27,27,27,27,28,26,28,27,29,28,27,27,27,28,25,29,28,28,28,26,27,25,26,26,28,28,26,28,26,28,28,28,28,27,27,28,28,27,27,28,29,26,29,27,25,26,27,27,28,28,28,27,27,27,28,27,28,27,28,26,28,27,28,26,27,27,26,27,29,26,27,28,27,26,27,28,28,28)''
summary(sContinuous)
Min. 1st Qu. Median Mean 3rd Qu. Max.
24.00 26.00 27.00 27.02 28.00 30.00
sd(sContinuous)
[1] 0.9782599
{{ :risssensor16153-plot_scontinuous.png?600 |}}
* Messreihe 2:
sContinuousFast = c(29,28,27,30,27,28,27,28,27,27,28,28,26,29,28,29,29,29,28,28,28,28,28,28,28,26,28,28,27,28,27,27,28,27,28,28,27,29,29,27,29,28,27,28,26,28,27,30,28,27,27,27,28,27,29,27,27,28,26,27,26,29,27,28,27,29,29,28,27,27,27,27,28,27,27,28,29,27,26,27,27,27,28,26,28,27,27,28,29,27,28,29,27,26,28,26,28,28,28,28,28,28,26,28,27,28,28,29,28,28,26,28,26,28,28,28,27,26,27,28,29,27,29,31,28,26,27,27,28,28,28,28,30,28,28,26,26,29,29,26,27,27,27,28,25,26,27,29,27,27,28,28,29,28,28,27,28,27,29,27,25,28,27,27,27,28,28,28,27,27,27,27,27,26,27,27,28,28,27,27,29,28,27,27,27,28,27,28,27,25,26,27,28,27,27,29,29,29,27,27,30,28,28,29,27,29,28,28,27,28,28,28,27,27,29,28,28,29,26,26,27,27,28,30,28,28,28,27,26,26,30,27,28,28,29,26,27,27,30,30,28,28,28,30,29,27,29,27,27,27,28,28,29,28,27,28,26,27,27,28,28,27,29,27,26,27,30,28,27,27,27,28,29,28,28,28,28,27,28,28,27,29,28,27,27,28,28,27,26,27,27,27,27,28,26,28,28,26,28,27,28,27,28,29,27,27,26,27,28,28,28,28,28,27,28,29,27,28,28,27,27,26,28,26,29,26,28,29,27,27,29,28,28,26,28,30,27,28,28,28,28,26,30,30,27,27,27,29,28,29,28,27,27,28,28,28,29,29,28,29,29,29,28,29,27,26,29,27,28,27,28,26,27,29,26,28,28,27,28,27,27,27,28,27,26,26,27,26,27,27,29,29,26,27,29,28,29,28,26,27)''
summary(sContinuousFast)
Min. 1st Qu. Median Mean 3rd Qu. Max.
25.00 27.00 28.00 27.63 28.00 31.00
sd(sContinuousFast)
[1] 1.004972
{{ :risssensor16153-plot_scontinuous2.png?600 |}}
===== Datenanalyse mit Rolf =====
install.packages("tidyverse")
library(tidyverse)
# Daten laden, z.B. sSingle von oben:
summary(sSingle)
df_sSingle = data.frame(sSingle)
plot = ggplot(df_sSingle, aes(sSingle))
plot + geom_bar()