====== 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()