Poti an ADC: "Fixieren" von ADC-Daten?

analog

Neues Mitglied
16. Juli 2011
26
0
1
62
Bad König
Sprachen
  1. ANSI C
Hallo,

habe das folgende Problem: Will mit einem (später auch mit mehreren Potis) MIDI-Daten einstellen können (Bau eines Musiksequenzers). Die MIDI-Daten liegen im Bereich 0 - 127, der ADC liefert 0- 1023, ich teile also durch 8 ... im Prinzip kein Problem!

Jetzt kommt's: Natürlich "flattern" die ADC-Rohdaten ein bisschen ... typischerweise +/- 2. Vermutlich ist das normales Rauschen bzw. Mess-Ungenauigkeit. Wenn ich durch 8 teile, flattert es dann naturgemäß schon weniger, aber natürlich gibt es an den Übergängen zwischen den MIDI-Werten immer mal einen Sprung. Drehe ich das Poti beispielsweise in Stellung MIDI-40 bis fast MIDI-41, dann zeigt die Anzeige gerade noch die 40 an, aber manchmal springt sie auch schon auf die 41 und wieder zurück. Bei (fast allen) professionellen Geräten beobachte ich das (gottseidank) nicht: Ein Wert, einmal eingestellt, bleibt zuverlässig stehen ...

Gibt es eine Art Software-Standardlösung für dieses Problem? Müsste wohl irgendwas mit Hysterese o. ä. zu tun haben. Das Ganze erinnert mich auch ein bisschen an das Problem, das man in einfacherer (weil binärer Form) bei der Software-Entprellung von Tastern hat.

Danke schon mal für den einen oder anderen Tipp?

LG Andreas
 
Hm, eine Hysterese wäre möglich, würde ja aber quasi das Messergebnis verfälschen. Denn müsstest du ja beispielsweise um von 40 zu 42 zu kommen erst über 50 gehen.

Wäre aber leicht einzubinden. Einfach den alten Wert speichern und dann wenn ein Neuer ankommt checken ob er um sagen wir 5 abweicht. Wenn ja alten Wert aktualisieren und neuen Wert verarbeiten, sonst nicht.

Ich würde auch mal versuchen einen Durchschnittswert zu bilden. Also z. B. 16 Ergebnisse zu sammeln, Ergebnis / 16, und dann verarbeiten. Der ADC ist ja relativ fix.

Da du die ADC Werte aber eh schon durch 8 teilst wundert es mich dass da noch etwas schwankt. Ist der Kondensator am VREF dran? Ist die Betriebsspannung sauber? Wie ist der Poti angeschlossen? Als Spannungsteiler VCC - GND oder offen? Ist noch etwas dazwischen (wie OpAmp)? Schaltest du die ADC Kanäle schon um? Ich hatte mal das Problem dass nach dem Umschalten die erste Messung nicht ganz so zuverlässig war.
 
Thomas hat eigentlich das wesentliche bereits angedeutet.

Fast alle AVR besitzen einen 10-Bit-ADC, mir ist nur der ATtiny5/10 bekannt, der nur 8 Bit hat. Allerdings kannst Du das Messergebnis auch linksorientiert in die beiden Ergebnisregister ausrichten lassen, und dann nur das Highbyte davon verwerten - kannst Du im Datenblatt unter ADC -> Register Description -> ADCH/L nachlesen.

Dann gibt es diverse Empfehlungen um Rauschen zu minimieren
  • Versorgung des analogen Bereiches (AVcc) über einen Tiefpaß (und getrennt vom digitalen Bereich)
  • AGnd über Single Point Connection
  • kurze Signalwege
  • Aus AVcc versorgte I/Os während einer Conversion nicht schalten
  • Digitale Input Puffer der Eingänge Abschalten
  • Durch den AVR selbst verursachtes Rauschen vermindern, indem der (bis auf die ADC-Clock) weitgehend "eingeschläfert" bzw "gestoppt" wird -> ADC-Noisereduction-Sleepmode
Steht im Datenblatt üblicherweise unter ADC -> Noise Canceller -> Noise Cancelling Techniques
Das alles wird Dein Problem aber nicht komplett lösen können - Du hast halt analoge "Werte" (quasi unendlich viele, unendlich hoch aufgelöst), die Du in wenige, schwach aufgelöste diskrete Werte digitalisieren willst. Dadurch hast Du immer Grenzen zwischen Deinen Werten, wo das hin und herkippt. Selbst, wenn nur das LSB zappelt, kann das sich durch die binären Überläufe bis zum MSB hin auswirken, dh. wenn alle Bits dazwischen bereits 1 oder 0 sind, zappelt auch das MSB.
Zur angesprochenen Mittelwertbildung, das kann man bei Deinem konkreten Fall eleganter machen:
Du addierst einfach 25=32 10-Bit-Ergebnisse auf. Dann stehen im Highbyte bereits die oberen 7 Bit.;)
Allerdings wirst Du auch da "kippende" Ergebnisse haben, um das zu vermeiden, kommst Du um die Hysterese nicht rum. Dann ist es allerdings besser (->Thomas bereits angedeutet), die Hysterese mit der vollen Auflösung zu prüfen (bzw mit den nicht mehr zappelnden Bits).
 
Das ändert doch aber auch nichts am Problem, es geht ja hier nicht um Ausreisser oder stark schwankende Messwerte. Wenn das Messergebnis genau an einer Grenzschwelle zwischen zwei diskret unterschiedlichen Zielwerten rauscht, kippt doch der Median ebenso. Wenn Du jedesmal abwechselnd 127 und 128 als Ergebnis erhälst (also eigentlich nur das LSB zappelt), zappelt Bit6 mit. Daran ändert auch das konventionelle arithmetische Mittel nichts. Weil eben immer zu einem der beiden möglichen Werte hinentschieden werden muß.
Beim Median ist es der "in die Mitte sortierte" Wert, hier also der häufigere der beiden möglichen Werte. Das kann dann also auch wieder abwechselnd 127 oder 128 sein.

Der ADC erfaßt 10 Bit, Andreas interessieren nur die oberen sieben. Ob man nun lediglich die letzten 3 wegläßt, rundet oder auch mittelt, ändert nichts, wenn der Wert genau an den Schwellen rauscht. (also zwischen 0bxxxxxxx111 und (0bxxxxxxx111+0b0000000001) schwankt.
 
Danke erstmal für Eure Antworten und für Euer Interesse an meinem Problem. Hatte zunächst Angst, dass ich mich mit einer völlig banalen Frage lächerlich mache. Scheint aber doch 'ne echte Kopfnuss zu sein?!
Ich hatte mir schon überlegt, ob ich aus dem Original-DAC-Wert durch eine kleine Rechnung zwei gegeneinander um 90 Grad phasenverschobene "Informationskanäle" gewinne und das Problem dann analog zur Auswertung eines Rotary-Encoders behandle. Die Phasenverschiebung brächte dann die Hysterese ins Spiel, ohne die es wohl kaum gehen dürfte.

LG Andreas
 
Mit der Hysterese ist das ja so, daß eben nicht jede Veränderung am Eingang als neuer Messwert verwertet wird, sondern nur wenn die Abweichung hinreichend groß ist. Bei Dir zappeln ja nur ein/zwei Bits (was sich allerdings auch auf die höherwertigen Bits addiert - deswegen reicht irgendeine Mittelwertbildung oder Teilen (Rechtsschieben) nicht aus. Vielmehr ist die Differenz zwischen altem und neuen Wert als Kriterium heranzuziehen. Ist die größer als das Zappeln, hast Du 'n neuen Wert. Sinnigerweise verwendest Du für die Differenzbestimmung die vollen 10 Bit (vor der Reduktion auf die benötigten 7 Bit).

Unter Assembler würde ich das in etwa so angehen:
Der ADC ermittelt das Ergebnis linksorientiert.
Dieses wird einmal rechtsgeschoben (also die oberen 7 Bit im highbyte, die letzten 3 Bit linksorientiert im lowbyte).
Das ganze wird vom letzten Wert (der ebenso gespeichert wurde) abgezogen (SUB, SBC).
Kam es dabei zu einem Überlauf (also war der neue größer als der alte), wird das Ergebnis negiert (COM, NEG, SBCI).
Damit hast Du den Betrag der Differenz - überschreitet einen kritischen Wert (Rauschen/Zappeln), kann der alte Wert durch den neuen überschrieben werden (alle 10 Bit), sonst nicht.

Dein Programm wertet lediglich das obere der beiden Bytes aus, das mit den 7 höherwertigen Bits.

Anmerkung: War jetzt nur so 'ne erste Idee, Möglicherweise geht das mit dem Betrag der Differenz auch einfacher über'ne Fallunterscheidung - wenn neu>alt (CP, CPC) rechne neu-alt, sonst alt-neu... der Rest bleibt ... unter C (Hochsprache wird Dich das eh nicht so interessieren, mit der Idee kommst Du trotzdem mit?
 
Leicht Off-Topic:

Was mich jetzt mal interessieren würde: Warum nimmst du nicht einfach Rotary-Encoder?
Machen das die (neueren, digitalen) Synthesizer nicht auch so?
Da hättest du höchstens bei der Auswertung Probleme, aber für C gibts da ja schon zig fertige Lösungen.


Was LotadaC sagte stimmt, hatte ich nicht bedacht. Durchschnittswert hilft dir in dem Fall auch nicht weiter (es würde das Problem höchstens etwas lindern, wenn überhaupt).
 
Das mit dem Encoder hat er ja selbst bereits in #6 angedeutet...
Mittelwerte und so können einige Bytefolgen erschlagen, andere aber nicht. -> Linderung1
Außerdem verringert sich dadurch ja effektiv die Samplefrequenz (um die in die Mittelung einfließenden Samples) -> gefühlte Linderung2

Trotzdem lassen sich Bytefolgen finden, bei denen das auch nach der Mittelung zappelt.

Der Ansatz mit der Hysterese legt quasi 'ne Schwelle fest, bis zu der Änderungen ignoriert werden. Diese muß logischerweise über dem Rauschen und unter dem Nutzsignal liegen. Würde man das auf das bereits auf 7 Bit reduzierte ADC-Ergebnis (also den fertigen Wert) anwenden, also Änderungen um 1 Bit ignorieren, würde das Ergebnis bei einer Änderung immer um mindestens 2 Springen.
Es stehen dem ADC aber 10 Bit zur Verfügung, bezogen auf die zu verwertenden 7Bit hätte man also achtel eines "Bit" für die Differenzbildung und die Ignorierschwelle. (Allerdings muß man sich dann auch immer die vollen 10 Bit des letzten/noch gültigen Ergebnisses merken. Deswegen Left adjusted und eins rechtsgeschoben -> das obere Byte enthält die gewünschten 7Bit, das untere die achtel-Subbits).
 
Hallo zusammen,

also ich würde einfach erst einmal die Sache mit der Mittelwertbildung machen, zum Austesten, es sind keine 10 Zeilen Code, ist schnell zu lösen. :)

Es ist auch nicht tragisch, wenn man das 10Bit Ergebnis dafür verwendet. Allgemein nach dem Start der ersten Single-Wandlung nach Aktivierung des ADC Moduls oder nach dem Umschalten eines ADC Kanals immer das erste Wandlungsergebnis wegschmeißen, erst dann summieren.

Danach schauen, inwieweit noch Störungen auftreten und dann ggf. weiter mit einer kleinen Hysterese arbeiten (bezogen auf den Mittelwert mit 10Bit. Wenn der "Potiwert", der für das weitere Programm benötigt wird, nicht eine Auflösung von 10bit haben muss, wird man die Störungen so sicher gut unterdrücken können).

Dirk :ciao:
 
Hallo,

ich hätte noch folgende Lösung anzubieten:

Mittelwert über eine bestimmte Anzahl von Messungen bilden (z.B. 8 Messungen)
neuer Wert wir erst ermittelt, wenn Abweichung zum Mittelwert > 4 (Triggerschwelle)

Bei dieser Lösung ist das Bitmuster völlig egal, über die Triggerschwelle und die Anzahl der Messungen kannst du die Empfindlichkeit anpassen.

Grundsätzlich würde ich aber eine Lösung mit Encodern vorziehen, da eine exakte Auswertung von Analogsignalen immer aufwendiger und fehleranfälliger ist.

Gruss
gp177
 
Jungs, ich komm ja gar nicht hinterher ...

ich werde es so ausprobieren, wie LotadaC in #7 vorgeschlagen hat, aber morgen fängt nach den Osterferien erstmal wieder die Schule an, seufz ...
Mittelwertbildung alleine löst das Problem nicht, sondern verringert nur die "Zappelwahrscheinlichkeit", Null wird sie dadurch nicht ...
Warum keine Rotary-Encoder? Ich/wir haben bisher nur mit Rotary-Encodern gearbeitet, sie sind in der Tat die eleganteste, aber manchmal eben auch die aufwendigste Lösung: Nachteil, dass man eine separate Anzeige braucht (LED-Bar, irgendeine Art von Display). Das fällt manchmal nicht ins Gewicht, aber wenn wir 12/24/36 Einsteller brauchen (weil alle Einstellungen auf einen Blick erkennbar sein müssen), wird das ein Wahnsinnsaufwand. Vorteil natürlich, dass man die Daten aus evtl. vorhandenen "Preset"-Speichern direkt in die Auswertesoftware laden kann. Bei Potis ist dann ja immer das Problem, dass aktuelle Potistellung und aus dem Speicher geladene Preset-Werte nicht übereinstimmen und es nach dem Laden eines Presets entweder Parametersprünge gibt oder man sich mit Kunstgriffen wie dem sog. "Abholmodus" weiterhelfen muss.

Im konkreten Fall geht es um ein Projekt, das ein bisschen "Vintage"-Charakter haben soll, eine trotzdem moderne Variante des Korg SQ-10, eines der ersten Sequenzer überhaupt (3 Kanäle bzw. Spuren mit je 12 Steps), guckt mal da: http://www.vintagesynth.com/korg/sq10.php
Auf die Idee bin ich gekommen, weil der neue SQ-1 (http://www.thomann.de/de/korg_sq_1.htm) doch eher wie ein Kinderspielzeug aussieht ... ich will das, was einer meiner Kumpels mal "Die Erotik der Maschine" genannt hat, grins ...
Da kann das (wenn auch sicher pfiffige und preiswerte) SQ-1-Kistchen nicht mithalten.

LG und schönen Abend noch

Andreas
 
Sorry, ich war diese Woche ziemlich im Stress ... konnte es erst vorgestern ausprobieren. Fazit: es funktioniert nun. Wir vermutet bringt die Mittelwertbildung aber nichts. Es muss mit dem "Betrag einer Minimaldifferenz" gearbeitet werden, dessen Überschreiten als echte Potibewegung gezählt wird.
Gleichzeitig ergibt sich dadurch aber ein neues Problem: Nach dem Aus- und Wiedereinschalten kann sich auch ohne zwischenzeitliche Änderung der Potistellung eine Differenz von +/- 1 des MIDI-Werts ergeben. Das ist immer noch ein kleiner Schönheitsfehler. Am einfachsten ist es wohl, wenn man die aktuellen Daten beim Ausschalten im EEPROM ablegt. Dann merkt man auch, ob im ausgeschalteten Zustand an den Potis gedreht wurde. Kann man das irgendwie automatisieren oder muss ich eine Extra-Speichertaste einbauen? Also mit irgendeiner Form von Brown-Out-Erkennung arbeiten mit der Maßgabe, dass der Saft gerade noch reicht um die Daten automatisch ins EEPROM hinüberzuretten? Habt Ihr sowas schon mal gemacht?

Gruß und schönes WE noch

Andreas
 
Wo wertest Du denn die Differenz aus? Noch mit 10bit ADC-Auflösung, oder nach dem "teilen" auf 7bit? Irgendwie ist mir das Problem selbst nicht ganz klar - wenn eine hinreichend große Differenz vorliegt, soll er das doch mitbekommen.
Oder meinst Du, daß der letzte Wert beim Reset nicht initialisiert ist?
Beim Start einfach eine Messung für den Initialwert machen (Vorwert), und dann in die Schleife die die neuen Werte erfaßt, mit der Differenzbildung?
Zur EEPROM-Sache:
insbesondere zum Schreiben brauchst Du bei einigen Controllern verhältnismäßig viel Spannung - schau mal ins Datenblatt des Controllers ganz hinten bei den Erratas, da steht das manchmal...
Hmm... das über den BOD selbst zu machen... kann ich mir nicht vorstellen, daß das reicht. BOD erfaßt ja die interne Vcc, also wenn die bereits hinreichend eingebrochen ist. Dann müßte erstmal der BOD-Reset durchlaufen, Du könntest BORF abfragen, und versuchen die noch im SRAM befindlichen Werte ins EEPROM zu übertragen. Erstend kostet das zu viel Zeit, und zweitens müßte dazu der BOD ja irgendwie wieder freigegeben werden, während die Spannung eigentlich noch weiter fällt.
Scheint ein Holzweg zu sein...

Eher so:
Irgendwo bei der Spannungsversorgung (Schalt-/Linearregler etc) wird bereits die Spannung abgegriffen, dann kommt 'ne Schottkydiode und dahinter 'n hinreichend großer Speicherkondensator, der Deine eigentliche Schaltung und (zumindest) den Controller versorgt.
Die vorn abgegriffene Spannung landet über einen sinnigen Spannungsteiler am Controller, am ADC oder besser noch am AC, welcher beim Unterschreiten eines Schwellwertes einen Interrupt triggert.
Geht also vorn die Spannung runter, wird der Controller noch'ne Zeitlang aus dem Speicher versorgt, löst aber den IRQ aus, wo Du erstmal ggf alle stromverbrauchenden Externa abschalten lassen kannst, und dann Deine Sicherung ins EEPROM machen kannst. Da dieses nicht beliebig oft beschrieben werden kann, solltest Du vorher auslesen, ob der zu schreibende Wert vielleicht zufällig schon/noch drinnsteht - bei nur 127 diskreten Möglichkeiten, kann das ja durchaus sein...
 
Was LotadaC sagte ist schon eine gute Idee.
Ich würde es nur etwas anders machen (ohne externe Beschaltung).
Einfach einen Timer nutzen (man könnte auch den WatchDog hierfür missbrauchen) um zeitliche Interrupts zu bekommen, sagen wir alle 1-2 Sekunden. Darin die Werte in den EEPROM schreiben. Aber wie LotadaC schon sagte: Erst überprüfen ob das Schreiben überhaupt nötig ist da der Speicher sonst fix flöten geht.
 
Hmm...
Das ist doch aber in Hinsicht auf die zulässigen EEPROM-Schreibzyklen eher ungünstig. Also wenn dann im Worstcase alle 2s alternierende Bytes in die Speicherzelle geschrieben werden...
Eigentlich will er doch beim Abschalten den geltenden Wert im EEPROM hinterlegen, und beim Anschalten von dort laden.
Problem ist also, das "Abschalten" rechtzeitig zu erkennen, um dann noch die Daten (das Byte) zu sichern. Bei Bedarf.
Da der AVR aber nicht irgendwie definiert heruntergefahren wird (bzw er sich eben selbst darum kümmern muß), sondern einfach die Spannungsversorgung abgeschaltet wird, muß man eben darauf reagieren.
 
Joah, hast Recht, im Worst Case würden alle 2sec neu geschrieben. Aber ja nur wenn man am Poti rum fummelt. Aus der Sicht ist dene Lösung natürlich eleganter (wenn auch etwas kritischer, da wenn der Puffer Kondensator zu klein wird und die Spannung unter die sinkt die der EEPROM zum Beschreiben braucht...)

Meine Lösung wäre etwas eher in Richtung Hau-Ruck. Belastet den Speicher mehr, ja, dafür ganz ohne weitere Komponenten. Aber mal so ausgerechnet... Der Speicher überlebt mindestens 100.000 Schreibzyklen. Bei 2 Sekunden Intervallen und nonstop am Poti rotieren würde das - wenn ich mich nicht verrechnet habe - 2,3 Tage dauern bis das Limit erreicht ist. Ich wage es zu bezweifeln dass der / die Potis so oft bewegt werden, sollte also lange halten. Man muss ja auch nicht immer das selbe Byte im Speicher beschreiben. Gehen wir mal von 256 Bytes an Speicher aus und nur einem Poti wären das statt 2,3 Tage schon 1,6 Jahre intensive 24h/7d Dauernutzung ;)

Muss man wissen welcher Weg einem lieber ist :)
 
Dann mußt Du aber beim Reset immer wissen, welche Adresse jetzt die aktuelle ist. Ok, da könnte man jetzt vielleicht 'ne Lösung konstruieren die davon ausgeht, daß erstmal überall 0xFF steht, und von vorn beginnend den ersten mit 0xFF überschreibt (bzw beim laden den letzten lädt, der nicht 0xFF enthält. weichen alle ab, wird die letzte Adresse geladen und der gesamte Speicher ausser der ersten Adresse mit 0xFF beschrieben (dort stattdessen der vorherige Inhalt der letzten Adresse)). 0xFF kann dann natürlich kein Nutz-Byte sein...

Andererseits sollen ja später Zustände von mehreren Potis gespeichert werden...

(wie gesagt, ich verstehe den eigentlichen Grund nicht, machbar ist das so natürlich).
Ob 'ne Diode und'n Spannungsteiler nun wirklich so'n Schaltungsaufwand darstellen, muß er selbst entscheiden, 'n Speicherelko sollte ja eh am Controller sein. Wie groß der dann dimensioniert ist....

egal...
 
Sag ich ja, muss jeder selber wissen und für sich entscheiden :)
Kennst mich ja, ich verkabel so ungerne ^^

Mit dem Speicher würde ich das so ähnlich machen wie du gesagt hast.
Wieder angenommen 1 Poti (also 1 Byte, Werte 0x00-0x7F), 256 Bytes EEPROM.
1 Byte im Ram (oder Register) reservieren für die aktuelle Speicheradresse.
Bei Power-On rückwärts durch den EEPROM lesen bis entweder Adresse = 0 oder Wert != 0xFF. Adresse speichern.
Bei neuem Wert prüfen ob Adresse = Maximum. Wenn ja: EEPROM komplett löschen, Adresse auf 0 und speichern. Sonst Adresse erhöhen und speichern. Fertig.
Würde nur 1 Byte Ram schlucken, bissl CPU beim Starten und beim Überlauf (Erase).

Klappt natürlich auch mit mehr Speicher und Potis, jetzt nur der Einfachheit halber exemplarisch erzählt.
 
Danke erst einmal für das rege Interesse ...

@LotadaC #17: Natürlich werte ich die Differenz der "Originaldaten" (10 Bit) aus, alles andere ergäbe keinen Sinn. Einrasten auf einen neuen MIDI-Wert ist nur möglich, wenn der Betrag aus ADCneu-ADCalt einen gewissen Wert überschreitet. Dabei ist ADCneu der aktuell ermittelte 10-Bit-Wert des ADC, ADCalt ist der beim Einrasten in einen neuen MIDI-Wert gespeicherte ADC-Wert.
Daraus resultiert das folgende Problem (ich glaube, ich sollte das nochmal deutlicher erklären ... hoffentlich klappt's):

Im Zappelbereich zwischen zwei benachbarten MIDI-Werten rastet der "Auswertemechanismus" auf einen der beiden möglichen MIDI-Werte ein, das hängt auch von der Vorgeschichte der Potibewegung ab. Beim Ab- und wieder Einschalten ist diese Vorgeschichte vergessen, und es könnte zufällig auch der andere MIDI-Wert gewählt werden.

Wir hatten uns zwar schon darauf geeinigt, dass der Vergleich mit einer üblichen Hysterese (also auch mit Schmitt-Triggern etc.) ein bissel hinkt, aber im Prinzip ist es ähnlich. Auch der Output eines ST ist von der Vorgeschicte seines Input abhängig, nicht nur vom aktuellen Input. Starte ich eine Schaltung mit ST neu, müsste ich ebenfalls den alten Output gespeichert haben, um bei sonst unveränderten Bedingungen mit dem alten Status weitermachen zu können?!

Ich hoffe, ich hab das Problem jetzt besser erklärt ...

Grüße

Andreas
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)