Energiesparen dank Mikrocontroller Entwicklung intelligenter kapazitiver Sensoren

Die Ergänzung eines Industrieprodukts um kapazitive Sensoren kann eine gewaltige Herausforderung sein. Entwickler müssen die Widerstandsfähigkeit und das Reaktionsvermögen des Sensors beibehalten, die Stromaufnahme minimieren und andere Prioritäten beachten. Wir zeigen, wie es geht.

Zwar können kapazitive Sensoren mit festen Funktionen einige Dinge beim Design erleichtern, doch handelt es sich dabei selten um reine Drop-in-Lösungen; sie müssen nach wie vor von Seiten der Entwickler konfiguriert und kalibriert werden. Außerdem hindern Lösungen mit festen Funktionen die Entwickler daran, dem Sensor zusätzliche Funktionen in einem System zuzuweisen, die zur Senkung der Stromaufnahme, zur Verringerung der Leiterplattenabmessungen sowie zur Reduzierung der Materialkosten beitragen können.

Kapazitive Sensorlösungen auf Basis von universellen 8-bit-Mikrocontrollern (MCUs) können die Entwickler bei jedem Schritt durch den Entwicklungsprozess unterstützen. Sie versetzen sie in die Lage, mithilfe von Firmware-Bibliotheken für die kapazitive Sensortechnik Projekte zu generieren sowie mit einer intuitiven und leistungsfähigen integrierten Entwicklungsumgebung (IDE) Eigenschaften hinzuzufügen, zu debuggen und schließlich die Leistung der kapazitiven Sensorik iunter Verwendung von Capacitive-Sensing-Visualisierungs-Tools zu überprüfen.

Kapazitive Sensortechnologien messen die Kapazität einer Elektrode, die mit dem Eingang des Sensors verbunden ist. Bei der Elektrode handelt es sich häufig um ein auf eine Leiterplatte (PCB) implementiertes Teil aus massivem Kupfer von ungefähr 10 mm Durchmesser, das von der Masse der Leiterplatte isoliert ist. Manchmal wird eine dünne Abdeckung hergestellt, meist aus Kunststoff oder Glas, mit der Leiterplatte verklebt, und das resultierende System kann als Berührungs-(Touch-)Schnittstelle dienen, bei der keine mechanischen Taster verwendet werden müssen. Wenn ein Anwender den Bereich der über der Elektrode befindlichen Abdeckung berührt, beeinflusst die Kapazität des menschlichen Körpers die kapazitive Kopplung der Elektrode und führt zu einer Kapazitätsänderung, die vom kapazitiven Sensor auf dem Chip gemessen wird. Innerhalb der Reihe der Abtastwerte wird diese Kapazitätsänderung erkannt und die Änderung als eine »Berührung« eingestuft.

Grundlagen des Designs von kapazitiven Sensoren

Weil alle kapazitiven Sensortechniken das Ziel haben, eine relativ kleine Änderung in einem Analogsignal zu erfassen, dabei jedoch in einem Mixed-Signal-System arbeiten, das potenziell elektrisch verrauscht ist, kann die Entwicklung einer robusten und zuverlässigen Sensorschnittstelle eine große Herausforderung darstellen. Über die Hardware-Betrachtungen hinaus, die sich mit dem Leiterplattenlayout sowie dem Design der Elektrode befassen, müssen die Verarbeitungsprozesse Zustandsvariablen aktualisieren und gleichzeitig dynamisch auf Ereignisse auf Systemebene reagieren. Touch-Sensor-Strategien schließen normalerweise einen Basiswert mit ein, der gleich dem erwarteten Ausgang des kapazitiven Sensors ist, wenn sich die Elektrode im unberührten Zustand befindet, sowie darüber hinaus die Einstellung von einem oder mehr Schwellenwerten relativ zur Basis. Die Verarbeitung vergleicht diese Schwellenwerte mit dem Sensorausgang und legt fest, wann Berührungs- und Auslöse-Ereignisse aufgetreten sind. Zusätzlich zu diesen Arbeitsschritten muss die Firmware so entwickelt werden, das sie möglichst effizient arbeitet, um Code-Größe und durchschnittliche Stromaufnahme zu minimieren.

Zur Erleichterung der schwierigen Firmware-Entwicklung haben viele Anbieter von kapazitiven Sensoren Bausteine mit festen Funktionen im Angebot. Sie bestehen aus einer integrierten Schaltung, welche die Kapazität abfragt und Touch-Qualifikationen entweder über eine serielle Schnittstelle oder über Logikzustände des Port-Pins ausgibt. Diese Produkte mögen zwar wegen ihrer Benutzerfreundlichkeit für Entwickler attraktiv erscheinen, jedoch kann das Fehlen von programmierbaren Flash-Speichern und einem eingeschränkten anpassbaren Leistungsumfang dazu zwingen, mehr Funktionen auf Host-Prozessoren mit höherer Leistungsaufnahme zu verlagern. Beispielsweise könnte ein Baustein mit festen Funktionen (FFD, Fixed-Function Device), der in stark gestörten Umgebungen gegenüber falsch positiven Touch-Ereignissen anfällig wird, einen Host-Prozessor dazu zwingen, Touch-Qualifikations-Informationen vom FFD zu ignorieren und stattdessen die Rohdaten des FFDs auszulesen und eigene Berührungsqualifikations-Algorithmen zu entwickeln. Ähnlich wird ein FFD, der irrtümlich häufige Touch-Event-Signale an einen Host-Prozessor sendet, den Prozessor veranlassen, von seinem stromsparenderen Zustand aufzuwachen, um Touch-Events auszuwerten und damit die Durchschnittsstromaufnahme eines Systems in die Höhe treiben.

Ein für kapazitive Sensoren freigegebener Mikrocontroller wie die 8-bit-MCU »EFM8SB1« kombiniert – wenn er in Verbindung mit einer Firmware-Bibliothek für kapazitive Sensortechnik verwendet wird – die Nutzerfreundlichkeit eines Bausteins mit festen Funktionen mit der Flexibilität einer universellen Mixed-Signal-MCU. Die vorkompilierte Bibliothek bietet Touch-Qualifikations-Algorithmen, eine Pflege der Zustandsvariablen sowie eine einfache Anwender-Programmierschnittstelle (API) zur Abfrage von Touch-Event-Informationen, während es der verbleibende Flash-Speicher und die zahlreiche Peripherie auf dem Chip den Entwicklern ermöglichen, den Mikrocontroller um weitere Eigenschaften zu ergänzen. Eine Cap-Sense-Firmware-Bibliothek für die 8-bit-MCU nutzt die Power-Management-Einheit (PMU) des Bausteins sowie eine Echtzeituhr auf dem Chip und versetzt den Entwickler so in die Lage, eine Betriebsarten-umschaltende MCU zu schaffen, die in den meisten Anwendungsfällen eine durchschnittliche Stromaufnahme von weniger als 1 µA erzielen kann.

Vereinfachte Cap-Sense-Entwicklung

Eine integrierte Entwicklungsumgebung (IDE), zum Beispiel die Simplicity-Studio-Plattform von Silicon Labs, bietet eine durchgehende Entwicklungsunterstützung für Embedded-System-Designs, die für kapazitive Sensortechnik geeignet sind: von der Konfiguration und dem Import der Firmware-Bibliothek für kapazitive Sensorik bis hin zum systeminternen Debugging und der Echtzeit-Visualisierung des Ausgangs der kapazitiven Sensoren. Viele IDEs enthalten ein Startfenster, das Kacheln abhängig
von der in der Entwicklung eingesetzten MCU dynamisch bestückt, und dieses Fenster kann die Tools aufzeigen, die zur Unterstützung jedes Entwicklungsschritts angeboten werden.

Die Anmerkungen auf dem Startfenser (Launcher, Bild 1) zeigen den grundsätzlichen Entwicklungspfad, den die meisten Anwender verfolgen:

  • Der Konfigurator generiert die Capacitive-Sensing-Bibliothek und erlaubt es Entwicklern, Hardware-Peripherie zu konfigurieren.
  • Die IDE bietet eine Code-Entwicklungs- und Debug-Umgebung, in der ein Firmware-Projekt mit zusätzlichen Features ausgestattet werden kann.
  • Ein in die IDE eingebautes Energy-Profiler-Tool bietet von einem Projekt, das auf eine Starterkit-Evaluierungsplatine heruntergeladen wurde, Stromaufnahme-Messungen in Echtzeit.
  • Ein Capacitive-Profiler-Tool zeigt sowohl Laufzeit-Rohwerte, Capacitive-Sensing-Daten als auch von Algorithmen abgeleitete Werte wie Touch-Status, Baselines und Schwellenwerte an.

Konfiguration von kapazitiven Sensoren

Die Entwicklung eines Projekts beginnt mit dem Konfigurator-Tool (Bild 2), mit dem die User in einem Fenster eine grafische Schnittstelle sowie Eigenschaften erhalten. In diesem Tool können Kunden Port-Pins als Eingänge für kapazitive Sensoren zuordnen und Einstellungen der Bibliothek konfigurieren, beispielsweise die Abtastdauer und die Stromspar-Funktion. Wenn die gewählten Konfigurationen eines Kunden die Implementierung anderer Konfigurationseinstellungen erforderlich machen, listet die Ansicht »Problemperspektiven« die entsprechenden Warnungen und Fehler auf. Man braucht nur auf diese Angaben zu klicken, um zu den spezifischen Einstellungen zu gelangen, die geändert werden müssen.

Im Zuge der Konfiguration durch den Anwender werden in einem Projekt-Explorer-Fenster entsprechende Dateien generiert und organisiert. Ein Klick auf eine dieser Dateien veranlasst die Konfigurator-Perspektive zum Umschalten auf die IDE-Perspektive. Die User können jederzeit zum Konfigurator zurückkehren und Änderungen sowie Ergänzungen einer Konfiguration vornehmen, indem sie auf die Configurator-Datei klicken, die auch im Projekt-Explorer-Fenster erscheint.

Entwicklung von Code in der IDE

Ein umfassende, Eclipse-basierte IDE bietet sämtliche Eigenschaften, die Entwickler von einer Entwicklungsumgebung erwarten, einschließlich Tools zur Code-Komplettierung und Formatierung. Die IDE kann für tiefe Integration sowohl in die Debug-Schaltung auf den Evaluierungsplatinen als auch im USB-Debug-Adapter sorgen und auf diese Weise für vollständigen Lese/Schreib-Zugriff auf MCU-Register und Variable ermöglichen.

Wenn Entwickler die Capacitive-Sensing-Firmware-Bibliothek in ihre Projekte mit einbinden, bietet der Konfigurator ein Build-fertiges Projekt, das freigegebene Sensoren abtastet sowie Touches und sogar Ausgangsinformationen durch die serielle Schnittstelle qualifiziert. Damit können Kunden ein Projekt ohne zusätzliche Entwicklung in der IDE generieren. Das bedeutet: Wenn ein User die kapazitiven Sensoren auf einer Leiterplatte austesten möchte, kann er die IDE dazu verwenden, das Image zu bauen und herunterzuladen, ohne dass er irgendeine Codierung benötigt.

Charakterisierung der Sensor-Leistung

Sobald der Code auf die 8-bit-MCU heruntergeladen ist, kann der Entwickler den Energy-Profiler und den Capacitive-Sense-Profiler der IDE dazu verwenden, nachzuschauen, wie die gewählten Konfigurationen sowie irgendwelche zusätzliche, in der IDE geschaffenen Eigenschaften die Stromaufnahme und die Leistung der kapazitiven Sensoren beeinflussen. Für kapazitive Sensorapplikationen ist der Capacitive Sense Profiler (Bild 3) besonders nützlich, weil er die Untersuchung der Leistung im System selbst erlaubt, und zwar in vollem Umfang, mit Produktumgebungen und anderen später festgelegten Entwicklungssystemkomponenten.

Der Profiler unterstützt zum Beispiel Berechnungen der Standardabweichung und des Signal-Rausch-Verhältnisses zur Kennzeichnung der Board-Eigenschaften. Außerdem erlaubt das Tool den Export der erfassten Daten in eine Textdatei zur weitergehenden Untersuchung in anderen Programmen wie beispielsweise in Microsoft Excel.

Flexibilität beim Entwicklungs-Workflow

Eine der Herausforderungen bei der Entwicklung von kapazitiven Sensoren ist die Verwaltung eines Projekts durch einen iterativen Entwicklungsprozess, bei dem ein Anwender ein Projekt aufbaut, die Leistung testet und dann zur Entwicklung zurückkehrt, um diese weiter zu optimieren. Die in Silicon Labs’ Simplicity Studio-Plattform enthaltenen Tools sind zur Unterstützung dieser Arten der Arbeitsflusszyklen ausgelegt.

Zum Beispiel könnte ein Entwickler ein kapazitives Sensorprojekt schaffen, das für dünnere Abdeckungen von 1/16 Zoll (1,56 mm) entwickelt wurde, dann das Projekt bauen und dessen Leis¬tungsfähigkeit im Capacitive Sense Profiler der IDE testen. Wenn sich die Anforderungen an das Produkt verändern, wobei die Dicke der Abdeckung auf 1/8 Zoll (3,18 mm) zunimmt, braucht der Entwickler nur auf die Konfigurator-Datei für dieses Projekt zu klicken und die Einstellungen der Touch-Schwellenwerte nachzustellen. Nach diese Änderung muss der Entwickler lediglich das Projekt neu aufbauen und herunterladen: Die Leistungsfähigkeit mit der dickeren Abdeckung lässt sich in Echtzeit über den Profiler betrachten.

Die Ergänzung eines Projekts im Zuge der Entwicklung um andere Firmware-Eigenschaften ist ein weiteres Beispiel einer iterativen Entwicklung. Angenommen, ein Entwickler hat ein Projekt mit kapazitiven Sensoren geschaffen und mit Hilfe der Diagnosetools der IDE getes¬tet, dass alle Anforderungen an Leistungsfähigkeit und Stromaufnahme für das Projekt erfüllt sind. Anschließend beginnt der Entwickler an der seriellen Schnittstelle zu arbeiten, die andere Komponenten auf Bassis des Eingangs der kapazitiven Sensoren steuert. Diese neue Komponente könnte an die Stromaufnahme und das Ansprechverhalten der kapazitiven Sensoren neue Ansprüche stellen. Mit dem Simplicity Studio lässt sich diese neue Komponente der Code-Basis des Projekts hinzufügen, ohne dass der Link zwischen Source-Code und dem Konfigurations-Tool unterbrochen werden muss. Ist das Projekt fertiggestellt, stellt der Entwickler möglicherweise fest, dass die Funktionalität des neuen Bauelements eine Modifikation der kapazitiven Sensorkomponente verlangt. Zum Beispiel könnte es erforderlich sein, dass das System über einen längeren Zeitraum in der aktiven Betriebsart verbleiben und nach einer Berührung der Taste länger scannen muss, als zunächst konfiguriert wurde, weil die serielle Schnittstelle mit dem Rest des Systems aktiv bleiben und optimal auf Eingangswerte reagieren muss. Der Entwickler kann daraufhin den Konfigurator aufrufen, den Zeitraum einstellen, in dem das System wach bleiben muss, ehe es zwischen Touch-Sessions in einen stromsparenden Schlafzustand fällt, und dann den Code neu aufbauen.

Beispiel für eine Tastenfolge

Die Fähigkeit, Code zu generieren und die Menge des kapazitiven Sensorcodes auf unterer Ebene, die der Entwickler schreiben muss, zu minimieren, führt zu vielen Anwendungsfällen, bei denen die abtastende MCU um anwendungsspezifische Abtast-Eigenschaften erweitert werden kann. Diese Fälle unterscheiden universelle MCU-Lösungen zur Unterstützung von kapazitiven Sensorfähigkeiten von Lösungen mit festen Funktionen, bei denen die gesamte anwendungsspezifische Funktionalität an Prozessoren mit höherem Energiebedarf im System übertragen werden muss. Eine Tastensequenz ist ein Beispiel für die Vorteile, die eine universelle MCU in kapazitiven Sensorlösungen bietet.

In vielen Produkten mit Bedienfeldern muss der Endanwender eine Tastenfolge oder ein Passwort eingeben, um die Produktfunktionalität zu entriegeln. In einem System, das einen Baustein mit festen Funktionen einsetzt, müsste der Hauptprozessor beim ersten Tastendruck aufwachen, dann in einem aktiven Zustand warten, bis der User die Tastenfolge eingegeben hat und anschließend die Sequenz verarbeiten, um zu bestimmen, ob sie mit dem richtigen Passwort übereinstimmt. Das mag zunächst nicht wie ein signifikanter Zeitraum erscheinen, in dem eine Hochleistungs-MCU aktiv bleiben muss, doch lassen Sie uns das gesamte Leistungsbudget näher betrachten.

Gehen wir einmal davon aus, dass dieses batteriegespeiste Bedienfeld pro Tag im Durchschnitt 100 Anwender-Interaktionen von 15 s empfängt. Die Sitzungen sind durch zwei Phasen gekennzeichnet: eine Validierungsphase, in der die Tastenfolge eingegeben und gegenüber einem Passwort überprüft wird, und eine Reaktionsphase, in der das Bedienfeld Befehle anderswo im System erteilt. In einem Design mit einem Festfunktions-Baustein muss der Hauptprozessor sowohl während der Validierungs- als auch während der Reaktionsphase wach bleiben, die in diesem Beispiel 15 Sekunden pro Sitzung beträgt. In dem Fall, in dem ein 8-bit-Mikrocontroller wie der EFM8SB1 zur Validierung Verwendung findet, braucht der Hauptprozessor nur in der Reaktionsphase, oder ungefähr 7,5 s, wach zu sein. Nehmen wir außerdem an, dass der Hauptprozessor im aktiven Zustand 10 mA aufnimmt, was für viele 32-bit-Prozessoren üblich ist, und die aktive 8-bit-MCU würde 20 µA aufnehmen, was mithilfe des hochentwickelten Power-Management-Zustandsautomaten in der Cap-Sense-Firmwarebibliothek erreichbar ist. In diesem Beispiel soll die Berechnung der Stromaufnahme ein wenig vereinfacht werden, indem der zwischen den Anwender-Interaktions¬sitzungen aufgenommene Strom nicht in die Rechnung mit einfließt.

In den Fällen, in denen es ein FFD erforderlich macht, dass der Hauptprozessor während der Validierung aktiv bleibt, würde die durchschnittliche Stromaufnahme des Systems bei ungefähr 17 µA liegen. In dem Fall, bei dem die stromsparendere 8-bit-MCU für einen Teil der Interaktionssitzung verwendet werden kann, läge die Durchschnittsstromaufnahme bei ungefähr 9 µA. Wenn dieses batteriebetriebene System von einer Knopfzelle wie einer CR2032 gespeist würde, die im Allgemeinen eine Kapazität von 225 mAh hat, würde ein 8-bit-Design auf Basis einer MCU EFM8SB1 nahezu drei Jahre lang ohne einen Batteriewechsel auskommen. Dagegen würde das System mit einem FFD bereits in ungefähr 1,5 Jahren einen Batteriewechsel benötigen.

Intelligentes Design führt zu besseren Produkten

Keine zwei Produktentwicklungen werden die gleichen Anforderungen oder Anwendungsfälle beim Kunden haben. Aus diesem Grund ist es unwahrscheinlich, dass ein einheitlicher »one size fits all«-Baustein mit festen Funktionen ein Design ergibt, das Verantwortlichkeiten in Koordination mit anderen ICs im System auf eine Art und Weise übernimmt, die zu einer optimalen Funktionalität mit minimaler Stromaufnahme führt. Die Verwendung eines universellen 8-bit-Mikrocontrollers, auf dem eine Capacitive-Sensing-Firmware-Bibliothek läuft, ermöglicht es den Entwicklern in enger Zusammenarbeit mit optimierten Entwicklungs-Tools, intelligente Methoden zu finden, um kapazitive Sensorik in ihre Designs einzubinden und gleichzeitig andere Ziele und Prioritäten in ihrem System darauf abzustimmen.

Über den Autor:

Parker Dorris ist Senior Applications Engineer für Mikrocontroller-Produkte bei Silicon Labs.