Gruppe 2.1: Tasten

Einleitung

Wir realisierten die Bedienung unseres Nachttisches. Hierfür installierten wir kapazitive Tasten, die mithilfe eines Microcontrollers gesteuert werden.  Insgesamt gibt es acht Tasten: Menü, Wecker an/aus, Snooze, Enter und vier Pfeiltasten. Wir leiten die Tasten an die Steuerungsgruppe weiter.
Zudem erzeugen wir ein Lautstärke- und Helligkeitssignal für die anderen Gruppen mithilfe der PWM des Microcontrollers und der Filter. Die Steuerung hierfür erfolgt ebenfalls über die Pfeiltasten, wenn das Menü nicht aktiv ist.

Funktionsweise

Wie zuvor erwähnt haben wir den Nachttisch mit kapazitiven Tasten ausgestattet, d.h. die Eingabe erfolgt nicht über einen Schaltkonktakt, sondern es wird der Körper aktiv in den Schaltkreis mit einbezogen. Der Vorteil hierbei ist, dass störanfällige Bauteile entfallen. Wir probierten mehrere Verfahren aus um diese zu realisieren und entschieden uns letztendlich für die nachfolgende Variante, da sie den geringsten Schaltungsaufwand mit sich bringt. In der folgenden Grafik ist die schematische Beschaltung einer Taste abgebildet. Die Taste ist eine Metallfläche, die mit dem Finger zusammen eine Kapazität bildet.

ProLab_Taste_Ladevorgang_Schematic_Allgemein

Allgemeine Beschaltung einer Taste

Um nun zu testen, ob die Taste betätigt wird, sind nachstehende Schritte nötig.
Zunächst werden die Taste und die Referenzkapazität entladen. Hierzu werden alle betroffenen Leitungen auf Masse gelegt. Anschließend beginnen wir die Referenzkapazität über die Taste zu laden, wofür die mittlere Leitung hochohmig wird, sodass der Strom durch beide Kapazitäten fließen muss. Da die Taste eine geringere Kapazität als die Referenzkapazität aufweist, wird diese voll aufgeladen, während die Referenz lediglich zu einem Bruchteil geladen wird. Ist die Taste nun geladen, fließt kein Strom mehr. Dies ermöglicht es, aus der Ladung der Referzkapazität und der Anzahl der Zyklen zu analysieren ob die Taste betätigt wurde oder nicht. Nun wird die Taste wieder entladen, ohne dass sich die Referenzkapazität ebenfalls mit entlädt. Gleichzeitig wird gemessen in wie weit die Referenz geladen ist. Dies geschieht über eine Spannungsmessung.
%Ablauf Laden und Entladen Tasten

Vorbereitung der Taste

Vorbereitung der Taste

Laden der Taste

Laden der Taste

Entladen der Taste

Entladen der Taste

Stellt sich hierbei heraus, dass die Referenz noch nicht vollkommen aufgeladen ist, so beginnt der Vorgang erneut mit der Aufladung der Taste. Dies wiederholt sich so lange, bis die Spannung über der Referenz dem Sollwert entspricht. Mit Q = C U ergibt sich eine Aussage über die Menge der Ladung.
Hierbei werden die Anzahl der Ladezyklen mitgezählt, um später den Zustand der Taste ermitteln zu können. Nachfolgend wird der Ablauf der zyklischen Aufladung und deren Zählung dargestellt.

Aufladevorgang einer Taste

Aufladevorgang einer Taste

Um zu bestimmen, ob die Taste berührt wurde, war es nötig einen komplexen Algorithmus zu entwickeln, da die Zyklen je nach Umwelt variieren können. Ein umfassendes Blockschaltbild dessen ist in der nächsten Abbildung zu sehen.
Als erstes wird aus den letzten 64 Messwerten der Mittelwert bestimmt. War nun die Taste nicht gedrückt, wird geprüft, ob der Messwert unterhalb des Mittelwerts abzüglich eines Toleranzwerts ist. Wenn das zutrifft, wird die Taste gedrückt. Um die Taste zu entprellen, (daher um zu verhindern, dass die Taste aufgrund von Rauschen kurzzeitig als gedrückt angenommen wird) wird nun ein Zähler dekrementiert. Erreicht der Zähler den festgelegten Minimalwert, so wird die Taste als gedrückt an die Ausgabe weitergeleitet.
Wenn die Taste nun gedrückt ist, wird geprüft, ob der Messwert über dem Mittelwert plus Toleranzschranke liegt. Nun wird der Zähler für jeden größeren Wert indekrementiert, daher hochgezählt. Wird der Maximalwert des Zählers erreicht, dann sagen wir, dass die Taste nicht mehr gedrückt wird.
Am Ende wird der Messwert zu den anderen alten Messwerten in den Buffer geschrieben.
Gilt die Bedingung für gedrückte, bzw. gelöste Tasten nicht mehr, so wird Zähler wieder zurück gesetzt. Auch das entprellt die Tasten.

Algorithmus zur Tastenauswertung

Algorithmus zur Tastenauswertung

Da des Weiteren für Lautstärke und Helligkeitseinstellung zwei analoge Signale verarbeitet werden müssen, realisierten wir über den Microcontroller eine Pulsweitenmodulation. Das erhaltene Signal muss dabei mit einem Tiefpass geglättet werden, der wiederum aktiv sein muss, damit er belastet werden kann. In diesem Fall handelte es sich insbesondere um einen Sallen Key- Tiefpass, da er eine Spannungsverstärunkung von 1 aufweist und demzufolge die Spannung beibehält. Er besteht aus einem OPV und mehreren elektrischen Widerständen und Kondensatoren. Darüber hinaus kann er mit geringem schaltungstechnischen Aufwand realisiert werden.
Die hierbei verwendete Schaltung simulierten wir anschließend und ist in folgender Abbildung dargestellt.

Tiefpassfilter für das PWM

Tiefpassfilter für das PWM

Die Pulsweite kann direkt über die Pfeiltasten gesteuert werden. Hierbei wird intern eine Variable hoch-/ heruntergezählt, solange die Taste gedrückt wird.

Kommunikation mit anderen Gruppen

Da unsere Platine nicht direkt mit dem Bus verbunden ist, werden alle Signale zunächst an die Steuerungsgruppe gereicht. Der Steuerungsgruppe leiten wir zudem die Tasten weiter. Hierbei werden die Pfeiltasten nur übertragen, wenn sich die Steuerung nicht im Menümodus befindet. Das wird über eine separate Leitung realisiert. Andernfalls werten wir die Pfeiltasten selber aus und steuern damit das Helligkeits- und Lautstärkesignal, welches wir wiederum für andere Gruppen auf dem Bus zur Verfügung stellen. Wenn eine Taste gedrückt wird, wird zudem die Tastentonleitung auf High gelegt. Diese Leitung führt ebenfalls auf den Bus.

Dimensionierung des PWM-Filters

Um die Pulsweitenmodulation realisieren zu können, mussten einige Rahmenbedingungen bestimmt werden. Für ein möglichst glattes Ausgangssignal soll der Filter bei einer geringstmöglichen Grenzfrequenz arbeiten. Eine hohe Steilheit ist ebenfalls von Vorteil. Wir wählten eine Frequenz von \(0,5Hz\). Dabei ergab sich das Problem, dass sich bei der Berechnung sehr große Bauteilwerte ergaben, sodass die Anfangsbedingungen besonders geschickt festgelegt werden mussten. Um die Freiheitsgrade einzuschränken, sollten beide Widerstände den gleichen Wert betragen, in unserem Fall ist dieser 1,5MOhm. Mit einer Polgüte von QP=60% haben wir Bauteilwerte von C1=150nF und C_2=220nF ermittelt.

Dimensionierung der Referenzkapazitäten

Leider konnten wir keine Formel zur Berechnung der Referenzkapazität ermitteln. Da unsere Zählvariablen 8-Bit betragen, waren uns hier Grenzen gesetzt. Deshalb mussten wir für jede Taste experimentell die Kapazität bestimmen. Wir fanden bei zwei Tasten (Menü und Wecker an/ aus) 100nF, für die Entertaste 15nF, für Snooze und Links 47nF, sowie 33nF für den Rest. Die vorgesehen Elkos haben wir nicht benutzt, da sie zu groß waren.

Anhang

Schaltplan

Unsere Platine sieht so aus:

Tasten_schTasten_brd

 

Bauteilliste

1 ATMega 32A-AU
1 Dual OPV 2,7V
1 SMD- LED, blau
1 SMD- Widerstand 1k
2 SMD- Widerstand 10k
4 SMD- Widerstand 1,5M
1 SMD Elko 100 μF
2 SMD Kondensator 150nF
2 SMD Kondensator 220nF
2 SMD- Vielschicht- Keramikkondensator 22pF
9 SMD- Vielschicht- Keramikkondensator 100nF
2 SMD- Vielschicht- Keramikkondensator 47nF
3 SMD- Vielschicht- Keramikkondensator 33nF
1 SMD- Vielschicht- Keramikkondensator 15nF
1 SMD- Quarz 16000000MHz
Von Ferdinand Campe, Sascha Rösler, Nicola Kummero