Hallo Liebe Community! Ich möchte ein Projekt starten, bin im Umgang mit dem Arduino Neuling. Mein Ziel: - Erfassung von Vibrationen von Anlagen - Aufzeichnung in einer Messkurve - Abrufen der erfassten Daten Nun zu meiner Frage: Ist es möglich, durch z.B. einen Vibrationssensor den Rundlauf einer mechanischen Anlage aufzuzeichnen und zu bewerten? Die Aussagekraft soll sein: - Vibrationsbereiche und Messkurve immer gleich: die Anlage funktioniert ordnungsgemäß - Vibrationsbereiche und Messkurve zeichnen Abweichungen auf: die Anlage ist wartungsbedürftig, da z.B. mechanische Lager ausgeschlagen sind etc. Ist das Projekt realistisch? MfG Simon Danke für eure Antworten!
:
Verschoben durch Moderator
Zunächst einmal ist sowas natürlich möglich. Hast du bereits einen Vibrationssensor? Ansonsten kannst du einen Regulären 3-Achsen Beschleunigung Sensor nehmen. Du musst jedoch beachten wie stark das System Vibriert und mit welcher Frequenz.
Da braucht es wohl mehr. Welchen Sensor verwendest Du? Es gibt Sensoren die brauchen einen rausch- und driftarmen Vorverstärker. Grundsätzlich musst Du Dir Gedanken über die Sample Rate machen. Sonst versäumst Du die eine oder andere Spitze. Gegen Einwurf entsprechender Münzen gibt es schöne Systeme mit Alarmierung.
Danke für die schnellen Antworten! Grundsätzlich schön, dass so ein Projekt realistisch ist! Nun zu dem Vibrationssensor: Ich habe gedacht, ich könne einen einfachen LDT0-028 nehmen, durch den ich dann verschiedene Frequenzen aufzeichnen könnte und sie dann z.B. in einer Messkurve in einem Webinterface darstellen könnte. Klingt aber ja so als wäre das nicht so einfach möglich. Wäre schön wenn mir einer von euch sagen könnte, was ich an Bauteilen brauche, muss mich dann anschließend erstmal ausgiebig mit der Programmierung eines Arduinos befassen... Ein fertiges System zu nehmen kommt übrigens nicht in Frage, wird ein Abschlussprojekt. Danke, Gruß Simon
Moin, - Anfang des Jahres (2021) hatte ST Micro ein Webinar ueber "Ultra-wide bandwidth, low-noise, 3-axis digital vibration sensor". Da sind Videos, SW, Datasheets und Beispiele vorhanden. https://www.st.com/en/mems-and-sensors/iis3dwb.html Gruesse Th.
> Klingt aber ja so als wäre das nicht so einfach möglich.
Naja, die Definition von "Einfach" ist halt immer so eine Sache. :-)
Laut Datenblatt geht das Teil wohl so bis 300Hz und liefert
erstaunlich viel Ausgangssignal.
Ich wuerde da fuer den ersten Versuch einen hochomigen Spannungsteiler
vorsehen, dann einen OPV dessen Verstaerkung du aendern kannst und
erstmal auf 1 einstellst, der aber die Impedanz wandelt. Eventuell noch
eine Schutzdiode an den Eingang.
Dann sampelst du mit 1khz und machst in Software eine FFT.
Ansonsten heisst das geheime Zauberwort fuer Google "Ladungsverstaerker"
Olaf
Simon schrieb: > Mein Ziel: > - Erfassung von Vibrationen von Anlagen > - Aufzeichnung in einer Messkurve > - Abrufen der erfassten Daten Soweit ganz einfach. > Nun zu meiner Frage: > Ist es möglich, durch z.B. einen Vibrationssensor den Rundlauf einer > mechanischen Anlage aufzuzeichnen und zu bewerten? Ob es funktioniert, hängt von der jeweiligen Anwendung ab. Du musst dafür einige Messungen machen und begutachten, um Gemeinsamkeiten und Unterschiede bei guten und defekten bzw. beschädigten Maschinen zu finden. Wenn du dann anhand der Messwerte eine gute Maschine/Anlage/Achse von einer Schlechten unterschieden kannst, kannst du bewerten, ob die Rechenleistung des Arduino für die Analyse des Datenstroms ausreicht. Für diese vorbereitenden Messungen ist ausgeschlafenes Equipment nötig, denn du musst ja viel mehr erfassen, als der Ardunio dann später sehen und auswerten wird. Um es überspitzt zu sagen: der Arduino wird später durch ein kleines Guckloch genau auf die interessante Stelle der Maschine und der daran ermittelten Daten schauen, du musst dir vorher aber ein Gesamtbild auch der Umgebung machen, um genau diese richtige Stelle und die optimale Position des Gucklochs zu finden. > Ist das Projekt realistisch? Es ist das übliche Monitoring. In der Regel kann aber ein üblicher Anwender anhand der Kurvenform einer Achsbewegung nicht erkennen, ob diese Kurve gut oder schlecht ist, weil die nötige Information irgendwie irgendwo in der Kurve vergraben ist. STK500-Besitzer schrieb: > Simon schrieb: >> Ist das Projekt realistisch? > Macht jede Wuchtbank. Eine Wuchtbank ist darauf spezialisiert, solchen unrunden Lauf anzuzeigen. Jede andere Erschütterung usw. ist dafür aus dem Messaufbau entfernt. Der Witz hier ist aber, dass "das Projekt" die Unwucht quasi auf dem Feldweg messen und erkennen will...
:
Bearbeitet durch Moderator
Mach dich mal bei den Spezialisten (z.B. Bruel & Kjaer) schlau, was du da so an Empfindlichkeit, Frequenzbereich und Aufzeichnugsdauer zu erwarten hast. Die Daten wirst Du sicher nicht erreichen, aber ein Hinweis, wo du mit deiner Idee stehst - dafür ist das allemal gut... https://www.all-electronics.de/elektronik-entwicklung/so-funktioniert-schwingungsmessung-technik-und-mess-systeme.html oder https://www.mmf.de/vm-doc/schwingungsmessung_1.htm könnte auch hilfreich sein. "Aus dem hohlen Bauch" würde ich sowas keinesfalls designen wollen.
IGBT schrieb: > Grundsätzlich musst Du Dir Gedanken über die Sample Rate machen. Sonst > versäumst Du die eine oder andere Spitze. Die nächste Spitze kommt bestimmt. Also keine Panik, wenn man eine mal nicht mitbekommt. Ob Aliasing stört, ist eine andere Frage.
Webinterface ist mit einem kleinen Arduino aber ein Killerargument. Das schafft ein Arduino aus der AVR Familie sicher nicht, wenn er gleichzeitig Messwerte erfasst und FFT machen soll.
Lothar M. schrieb: > Eine Wuchtbank ist darauf spezialisiert, solchen unrunden Lauf > anzuzeigen. Jede andere Erschütterung usw. ist dafür aus dem Messaufbau > entfernt. Simon schrieb: > - Erfassung von Vibrationen von Anlagen Ich hatte mich etwas kurzgefasst, und meinte eine Untermethode der Unwuchtfeststellung: https://de.wikipedia.org/wiki/Betriebswuchten Als Sensor benutzt man auch gerne Piezo-Keramiken. Ältere Wuchtbänke verwenden induktive Aufnehmer. Die Firmen Schenck und Hofmann sind in Deutschland dafür Marktführer. Ich hatte auch mit einer Firma aus NRW zu tun, die ein Handgerät zur Schwingungsmessung (optional mit zweitem Sensor) anbot. Wie die hieß habe ich leider vergessen. Um die Geräusche von Geräten (Lüfterrauschen etc.) zu messen, werden ziemlich oft Geräte von Bruel&Kjaer verwendet. Das sind aber dann eher Mikrofone.
Ich persönlich würde statt eines Vibrationssensors lieber ein Mikrofon (oder mehrere) verwenden. Ich vermute, dass sich schädliche Änderungen eher im Geräusch als in den Schwingungen ankündigen. So oder so wirst Du um eine FFT-Analyse nicht herumkommen. Aus den Messdaten eine „Messkurve“ abzuleiten und aus der wiederum Veränderungen geht m.E. nicht ohne FFT. Ich würde das Problem folgender Massen angehen: Die Daten mit einem ESP32-Mikrokontroller-Board erfassen und per UDP-Protokoll an einen PC übertragen. Der ESP32 hat WiFi und BlueTooth an Board, arbeitet mit 32 Bit und ist damit sehr Leistungsstark und zudem kompatibel zur Arduino-IDE. Er hat zwei Cores und nennenswert Speicher. Zudem hat er eine Taktfrequnz von nominal 80 MHz und seine AD-Wandler mit 1uS sample-time ziemlich schnell. Mit den zwei Cores kannst Du einen kontinuierlichen Datenstrom aufrecht erhalten. Während auf dem einen Core die Samples laufen kann der zweite Core gleichzeitig die Datenübertragung abwickeln. Die Software für zwei Cores zu erstellen kling kompliziert ist aber im Arduino-IDE überraschend einfach. Die Messdaten direkt auf den PC zu übertragen und erst dort die FFT-Analyse und die Auswertung durchzuführen hat den Vorteil, dass der PC trotz allem schneller ist und Du je nach verwendeter Programmiersprache mehr Möglichkeiten, was Speicher, Auswertung, Webpage, Grafik usw anbelangt, hast. Es existiert eine FFT-Cx-Library, die sehr umfangreich und trotzdem leicht zu handhaben ist. Du musst Dich halt ein wenig mit „bins“ beschäftigen. Hier der Link zu dieser Library: https://heliso.tripod.com/programm/fft/fftdll.htm Stell Dir das Problem nicht zu einfach vor. Die Anlagen werden nicht einheitliche Messdaten liefern. Wenn die Anlage zyklisch wiederkehrende gleiche Arbeitsschritte macht, ist es etwas einfacher. Ist die Reihenfolge der "Arbeitsschritte" aber quasi „chaotisch“ wird es schwierig, da eine schadhafte Veränderung herauszufiltern. Ich fürchte, da wirst Du um ein Faltungs Neuronales Netz nicht herumkommen. Aber lass Dich nicht entmutigen. Wir wachsen mit unseren Aufgaben. Und hier der Code eines Arduino-Sketches für ESP32, der die Spannungswerte, die von einem Mikrophon kommen, digitalisiert und eine FFT-Analyse durchführt. Die Ergebnisse der FFT-Analyse werden per UDP an einen PC übertragen und dort ausgewertet (Spracherkennung). Der Sketch ist getestet und läuft einwandfrei. Trotz UDP werden die Daten schön in Reihenfolge übertragen. TCP/IP hat sich als zu langsam herausgestellt. Core 1 sampelt die Messdaten, Core 0 managed die FFT-Analyse und die Übertragung zum PC. Du kannst den Code abändern und die FFT-Analyse überspringen und die Messdaten direkt an den PC übertragen.
1 | /*
|
2 | #
|
3 | * Dieser Sketch sampelt Daten von einen ADC-Input, führt damit eine FFT-Analyse durch und überträgt das Ergebnis per UDP zu einem Server.
|
4 | // Core 1: Sampling: Core 0: FFT und UDP-Übertragung
|
5 | *
|
6 | */
|
7 | |
8 | #include <WiFi.h> |
9 | #include <WiFiUdp.h> |
10 | |
11 | #include <Wire.h> |
12 | #include "arduinoFFT.h" // Standard Arduino FFT library https://github.com/kosme/arduinoFFT |
13 | arduinoFFT FFT = arduinoFFT(); |
14 | |
15 | const char* ssid = "FlyingDutchman"; |
16 | const char* password = "*********************************"; |
17 | |
18 | const char* host = "192,168,178,24"; |
19 | |
20 | int Verbunden; |
21 | int pingResult; |
22 | |
23 | ////////////////////////////////////////////////////////////////
|
24 | #define SAMPLES 512 // Must be a power of 2
|
25 | #define SAMPLING_FREQUENCY 10000 // Hz, must be 40000 or less due to ADC conversion time. Determines maximum frequency that can be analysed by the FFT Fmax=sampleF/2.
|
26 | #define amplitude 150 // Depending on your audio source level, you may need to increase this value
|
27 | #define LED_GREEN 27
|
28 | #define mitte 2800
|
29 | #define oBufSize 1024
|
30 | |
31 | const int httpPort = 50000; |
32 | const int ownPort = 50000; |
33 | |
34 | unsigned int sampling_period_us; |
35 | unsigned long microseconds; |
36 | byte peak[] = {0,0,0,0,0,0,0,0}; |
37 | double t0_vReal[SAMPLES]; |
38 | double t0_vImag[SAMPLES]; |
39 | double t1_vReal[SAMPLES]; |
40 | double t1_vImag[SAMPLES]; |
41 | unsigned long newTime, oldTime; |
42 | int dominant_value; |
43 | byte oBuf[oBufSize]; |
44 | int erg; |
45 | double maxi; |
46 | int mini; |
47 | byte tp; |
48 | byte indi; |
49 | long sum; |
50 | int ave; |
51 | long th; |
52 | byte swi; |
53 | byte swi2; |
54 | long setPnt; |
55 | byte setActive; |
56 | long zh; |
57 | byte prea[6] = {123,205,007,197,0,0}; |
58 | byte ack[2]; |
59 | long cnt; |
60 | long mwe; |
61 | long z1; |
62 | long z2; |
63 | |
64 | TaskHandle_t Core0TaskHnd ; |
65 | |
66 | /////////////////////////////////////////////////////////////////////////
|
67 | |
68 | WiFiClient client; |
69 | WiFiUDP udp; |
70 | |
71 | void setup() |
72 | {
|
73 | |
74 | xTaskCreatePinnedToCore(CoreTask0,"CPU_0",1200,NULL,1,&Core0TaskHnd,0); |
75 | |
76 | sampling_period_us = round(1000000 * (1.0 / SAMPLING_FREQUENCY)); |
77 | |
78 | Serial.begin(115200); |
79 | delay(10); |
80 | |
81 | // We start by connecting to a WiFi network
|
82 | |
83 | Serial.println(); |
84 | Serial.println(); |
85 | Serial.print("Connecting to "); |
86 | Serial.println(ssid); |
87 | |
88 | WiFi.begin(ssid, password); |
89 | int cnt=0; |
90 | while (WiFi.status() != WL_CONNECTED) { |
91 | delay(500); |
92 | Serial.print("."); |
93 | cnt++; |
94 | if(cnt=10){ |
95 | break; |
96 | }
|
97 | }
|
98 | delay(1000); |
99 | Serial.print("Erneuter Versuch"); |
100 | WiFi.begin(ssid, password); |
101 | while (WiFi.status() != WL_CONNECTED) { |
102 | delay(500); |
103 | Serial.print("."); |
104 | }
|
105 | |
106 | Serial.println(""); |
107 | Serial.println("WiFi connected"); |
108 | Serial.println("IP address: "); |
109 | Serial.println(WiFi.localIP()); |
110 | delay(500); |
111 | Serial.print("connecting to "); |
112 | Serial.println(host); |
113 | Serial.println("Version; FFT_UDP_02"); |
114 | pinMode(LED_GREEN, OUTPUT); |
115 | digitalWrite(LED_GREEN, HIGH); |
116 | int ret = udp.begin(ownPort); |
117 | cnt = 0; |
118 | Serial.println(" "); |
119 | Serial.println("Vers.: Sprache Aufnehmen, FFT und Ergebnis nach PC (MSP32)"); |
120 | Serial.println("Auf PC starten auf Base, Button Start UDP"); |
121 | Serial.println("FFT_UDP_02"); |
122 | Serial.println(" "); |
123 | }
|
124 | |
125 | void loop() |
126 | {
|
127 | sum = 0; |
128 | for (int i = 0; i < SAMPLES; i++) |
129 | {
|
130 | newTime = micros(); |
131 | int we = analogRead(A0); // Using Arduino ADC nomenclature. A conversion takes about 1uS on an ESP32 |
132 | |
133 | // Fill the corresponding Buffer
|
134 | if(tp == 0) |
135 | {
|
136 | t0_vReal[i] = we; |
137 | t0_vImag[i] = 0; |
138 | }
|
139 | else
|
140 | {
|
141 | t1_vReal[i] = we; |
142 | t1_vImag[i] = 0; |
143 | }
|
144 | |
145 | //Update sum for average calculation
|
146 | if(we >= mitte) |
147 | {
|
148 | sum = sum + (we - mitte); |
149 | }
|
150 | else
|
151 | {
|
152 | sum = sum + (mitte - we); |
153 | }
|
154 | |
155 | while ((micros() - newTime) < sampling_period_us) |
156 | { /* do nothing to wait */ |
157 | }
|
158 | }
|
159 | |
160 | zh = micros(); |
161 | //calculate average
|
162 | ave = sum / SAMPLES; |
163 | //Serial.println(ave,DEC);
|
164 | |
165 | if(ave > 210) |
166 | {
|
167 | digitalWrite(LED_GREEN, LOW); |
168 | swi = 0; |
169 | if(swi2 == 0) |
170 | {
|
171 | // Trigger speach
|
172 | //Activate FFT-Processing
|
173 | swi2 = 1; |
174 | setPnt = 0; |
175 | setActive = 1; |
176 | }
|
177 | }
|
178 | else
|
179 | {
|
180 | if(swi == 0) |
181 | {
|
182 | swi = 1; |
183 | th = micros(); |
184 | }
|
185 | else
|
186 | {
|
187 | if(micros() - th > 350000) |
188 | {
|
189 | digitalWrite(LED_GREEN, HIGH); |
190 | swi = 0; |
191 | if(swi2 == 1) |
192 | {
|
193 | // speech end detected
|
194 | swi2 = 0; |
195 | // fill unused OBuf with Zerro
|
196 | setPnt = 0; |
197 | //deactivate FFT-processing
|
198 | setActive = 0; |
199 | }
|
200 | }
|
201 | }
|
202 | }
|
203 | //Serial.println(micros() - zh,DEC);
|
204 | |
205 | //swap buffer-pointer
|
206 | tp = (tp-1) * -1; |
207 | // set indi for data available
|
208 | indi = 1; |
209 | |
210 | //Serial.println(micros() - zh,DEC);
|
211 | }
|
212 | |
213 | void CoreTask0( void * parameter ) |
214 | {
|
215 | for (;;) |
216 | {
|
217 | //-----------------------------------------------------
|
218 | while(indi == 0) |
219 | {
|
220 | vTaskDelay(10); // wait for Sample-Buffer |
221 | }
|
222 | indi = 0; |
223 | if(tp == 0) |
224 | {
|
225 | FFT.Windowing(t1_vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); |
226 | FFT.Compute(t1_vReal, t1_vImag, SAMPLES, FFT_FORWARD); |
227 | FFT.ComplexToMagnitude(t1_vReal, t1_vImag, SAMPLES); |
228 | //peak = FFT.MajorPeak(t1_vReal, SAMPLES, SAMPLING_FREQUENCY);
|
229 | |
230 | for(int i = 0; i < SAMPLES / 2; i++) |
231 | {
|
232 | mwe = t1_vReal[i]; |
233 | |
234 | oBuf[i * 4] = int(mwe / 16777216); |
235 | z1 = mwe % 16777216; |
236 | oBuf[i * 4 + 1] = int(z1 / 65536); |
237 | z2 = z1 % 65536; |
238 | oBuf[i * 4 + 2] = int(z2 / 256); |
239 | oBuf[i * 4 + 3] = int(z2 % 256); |
240 | }
|
241 | udp.beginPacket("192.168.178.24", httpPort); |
242 | udp.write(oBuf, oBufSize); |
243 | int ret = udp.endPacket(); |
244 | }
|
245 | else
|
246 | {
|
247 | FFT.Windowing(t0_vReal, SAMPLES, FFT_WIN_TYP_HAMMING, FFT_FORWARD); |
248 | FFT.Compute(t0_vReal, t0_vImag, SAMPLES, FFT_FORWARD); |
249 | FFT.ComplexToMagnitude(t0_vReal, t0_vImag, SAMPLES); |
250 | //peak = FFT.MajorPeak(t0_vReal, SAMPLES, SAMPLING_FREQUENCY);
|
251 | |
252 | for(int i = 0; i < SAMPLES / 2; i++) |
253 | {
|
254 | mwe = t0_vReal[i]; |
255 | oBuf[i * 4] = int(mwe / 16777216); |
256 | z1 = mwe % 16777216; |
257 | oBuf[i * 4 + 1] = int(z1 / 65536); |
258 | z2 = z1 % 65536; |
259 | oBuf[i * 4 + 2] = int(z2 / 256); |
260 | oBuf[i * 4 + 3] = int(z2 % 256); |
261 | }
|
262 | udp.beginPacket("192.168.178.24", httpPort); |
263 | udp.write(oBuf, oBufSize); |
264 | int ret = udp.endPacket(); |
265 | }
|
266 | |
267 | //-----------------------------------------------------
|
268 | |
269 | cnt++; |
270 | if(cnt > 50) |
271 | {
|
272 | Serial.println(maxi,DEC); |
273 | cnt = 0; |
274 | maxi = 0; |
275 | }
|
276 | }
|
277 | }
|
:
Bearbeitet durch User
Hallo ihr Lieben, danke für die zahlreichen Antworten, ich möchte mich erstmal für die späte Antwort entschuldigen. Nun, ich habe bereits einen ESP32, das passt ja wie die Faust aufs Auge. Grundsätzlich verstehe ich viele Abkürzungen und deren Bedeutung nicht ganz, ich weiß ehrlich gesagt gar nicht wo ich anfangen soll. @Manfred Danke für den Sketch, werde mich heute Abend hinsetzen und versuchen den Code grundsätzlich erstmal zu verstehen. Dann werde ich mir Gedanken machen müssen zu der Materialbeschaffung, habe nun oft gelesen, dass ein Mikrofon am besten geeignet ist, dann werde ich eins bestellen. Ist grundsätzlich jedes Mikrofon dafür geeignet? Ist das Iduino 1485297 geeignet? Gibt es ein besseres? Werde dann erstmal die Materialien bestellen. Habe jetzt ein Breadboard, das wird mir die Arbeit hoffentlich erleichtern. FFT-Analyse: Keine Ahnung was das ist und wie das funktioniert. Muss ich mich befassen und melde mich dann zurück. Ich bin euch echt für jede Hilfe dankbar, ich bin wie gesagt ein absoluter Neuling im Mikrocontroller-Bereich und muss noch viel dazulernen... Gruß, Simon.
Simon H. schrieb: > ich weiß ehrlich gesagt gar nicht wo ich anfangen soll. Das mit den von mir erwähnten Grundlagenuntersuchungen hast du hinter dir? Lothar M. schrieb: >>>> Du musst dafür einige Messungen machen und begutachten, um ... zu wissen, was du überhaupt auswerten willst. > ich habe bereits einen ESP32 Vergiss den Rechner. Der kommt erst viel, viel später. Allem voran brauchst du ein proof-of-concept: kannst du in dem Signal überhaupt irgendwas erkennen? Das kannst du auch am PC mit üblicher Audio-Software mal ausprobieren. > Ist grundsätzlich jedes Mikrofon dafür geeignet? "Grundsätzlich" schon. Aber Grundlagenuntersuchungen sind anerkanntermaßen der völlig falsche Zeitpunkt zum Sparen. Nimm ein Mikrofon, das einen möglichest linearen und möglichst weiten Aufnahmebereich hat. Das Stichwort dazu heißt "Messmikrofon". Und dazu ein USB-Audio-Interface als Soundkarte zum Rechner. Oder gleich eines mit USB-Schnitte: https://www.amazon.de/Omnitronic-USB-Kondensator-Messmikrofon-Pr%C3%A4zises-USB-Messmikrofon-Frequenzgang/dp/B078Y59NPT/ref=sr_1_6?keywords=Messmikrofon > Werde dann erstmal die Materialien bestellen. Falsche Reihenfolge. > FFT-Analyse: Keine Ahnung was das ist und wie das funktioniert. Lass das am Anfang ein Oszilloskop oder den PC machen. Da weißt du sicher, dass es funktioniert. Simon schrieb: > Ist das Projekt realistisch? Eines solltest du wissen: für funktionierende Lösungen haben Unternehmen viele Mannjahre Arbeitszeit von ausgelernten und erfahrenen Ingenieuren und Mathematikern hineingesteckt. Das macht man nicht nebenher völlig ohne grundlegende Untersuchungen und eingehendes Wissen zum Thema "Signalverarbeitung". BTW: Ein Oszi hat den Vorteil, dass der Messbereich wesentlich weiter geht als die Soundkarte des PC...
:
Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.