Signalaufbereitung im IoT MCU für analoge Signalketten in kompakten Designs

Wie wird ein IoT-Projekt erfolgreich?

Viele Designs für das Internet der Dinge (IoT) sind darauf angewiesen, dass die verwendeten analogen Schaltkreise den individuellen Anforderungen einer Anwendung hinsichtlich Signalaufbereitung für Sensoren und Aktuatoren, Stromregelung und weiterer Funktionalitäten gerecht werden.

Obwohl dedizierte Signalketten-ICs diesen Anforderungen entsprechen können, erfordern Designs mit engem Budgetrahmen und räumlichen Beschränkungen eine Lösung, um diese Funktionalitäten mit weniger Bauteilen bereitzustellen und dennoch weiterhin die Leistungsanforderungen zu erfüllen.

Aufgrund dieser Anforderungen wurden Mikrocontroller entwickelt, die die Beschaffenheit dieser Sensor- und Aktuatorschnittstelle vereinfacht haben, indem analoge Peripheriegeräte wie Analog-Digital-Wandler (ADCs) und Komparatoren integriert wurden. Bis vor Kurzem jedoch mussten Entwickler üblicherweise nach wie vor analoge Bauteile hinzufügen, um die Signalaufbereitung oder den Ausgangspuffer bereitzustellen, den die meisten Designs erforderten.

Durch diese zusätzlichen analogen Schaltkreise zur Signalaufbereitung auf einem Mikrocontroller können Entwickler diese Komponenten nunmehr auf effiziente Weise konfigurieren. Dadurch können sie durch die Abänderung weniger Codezeilen den verschiedensten Anforderungen hinsichtlich der analogen Schnittstellen für Wearables und andere IoT-Geräte gerecht werden.

In diesem Artikel werden die Anforderungen bezüglich der Aufbereitung des analogen Frontend-Signals für verbundene IoT-Geräte behandelt. Anschließend wird eine Klasse von Mikrocontrollern mit hochintegrierter, analoger Funktionalität vorgestellt und auf ihre Anwendung eingegangen.

Verbinden eines Sensors mit einer MCU

Sensordesigns erfordern üblicherweise einen oder zwei Verstärker zur Aufbereitung der Ausgangssignale von Transducern, bevor diese den A-D-Wandlereingang des Mikrocontrollers erreichen. Komplexere Geräte wie Pulsoximeter zur Herzfrequenzmessung erfordern mehrere Signalketten, um die Wellenformen der LED-Anregung zu erzeugen, das Ausgangssignal der Photodiode umzuwandeln und schlussendlich die Pulsdaten zu extrahieren (Bild 1). Selbst die einfache Stromschleife, die in industriellen Anwendungen routinemäßig zur Verbindung von Sensoren mit programmierbaren Logik-Controllern verwendet wird, erfordert zusätzliche Komponenten, um den Ausgangsstrom zu treiben und zu regeln. Indem sie jedoch die internen analogen Komponenten der MCU MSP430FR2355 von Texas Instruments verwenden, können Entwickler eine kompaktere Version dieser Designs implementieren, wobei sie hierfür üblicherweise lediglich einige wenige zusätzliche passive Komponenten benötigen.

Integrierte analoge Komponenten

Basierend auf einem proprietären 16-bit-RISC-Prozessorkern bietet die MCU MSP430FR2355 von Texas Instruments sämtliche Funktionen, die für viele IoT-Gerätedesigns üblicherweise benötigt werden. Als ein Mitglied der FRAM-Familie MSP430 von TI integriert die MSP430FR2355 32 KB ferroelektrischen Ultra-Low-Power-RAM (FRAM). Der gut für IoT-Designs geeignete FRAM bietet die Vorteile der Nichtflüchtigkeit von Flash-Speichern sowie die Schreibgeschwindigkeit und Lebensdauer eines RAM. Somit können Entwickler die RAM-ähnlichen Leistungseigenschaften des FRAM nutzen, um Daten und Programmcode im aktiven Betrieb zu speichern, und sich gleichzeitig auf die Nichtflüchtigkeit des FRAM verlassen, um Werte im Ruhemodus oder anderen Betriebsmodi zur Senkung des Stromverbrauchs beizubehalten. Die MSP430FR2355 unterstützt mehrere

Energiesparmodi, die den für diese Designs typischen Anforderungen hinsichtlich eines niedrigen Energiebedarfs gerecht werden.Außerdem wird die MSP430FR2355 mit verschiedenen integrierten analogen Peripheriegeräten wie einem 12-kanaligen 12-bit-Analog-Digital-Wandler, analogen Komparatoren mit integrierten Digital-Analog-Wandlern und mehreren On-Chip-Referenzspannungen den Anforderungen von IoT-Schnittstellen gerecht. Die herausstechendste analoge Funktion der MCU MSP430FR2355 stellen jedoch die vier SAC-Module (Smart Analog Combo) dar, die Entwickler per Programmierung konfigurieren können, um ihren speziellen Anforderungen gerecht zu werden.

Jedes SAC-Modul verfügt über einen 12-bit-DAC, einen Rail-to-Rail-Operationsverstärker und ein Netzwerk aus Rückkoppelwiderständen, das aus dem Operationsverstärker (OPV) einen Verstärker mit programmierbarer Verstärkung (PGA) macht. Dedizierte Register für jede Komponente regeln seine Konfiguration und den Betriebsmodus. Beispielsweise können Entwickler die Bits 0:1 in das OA-Register (SACxOA) eines SAC-Moduls (SACx) laden, um den positiven Eingang des OPV als externe Quelle, als den DAC-Ausgang oder als eine gepaarte SAC-Quelle (s. u.) festzulegen.

/Select external source for both positive and negative

inputs

SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL,

SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL);

    //Select low speed and low power mode

SAC_OA_selectPowerMode(SAC0_BASE, SAC_OA_POWER_MODE_LOW_

SPEED_LOW_POWER)

// Enable OA

SAC_OA_enable(SAC0_BASE);

// Enable SAC

SAC_enable(SAC0_BASE);

Listing 1: Zur Implementierung eines Allzweckverstärkers benötigen Entwickler nur einige wenige Aufrufe der Treiberbibliothek von Texas Instruments, um die OA-Eingänge des SAC-Moduls zu initialisieren (SAC_OA_init), um den Betriebsmodus (SAC_OA_selectPowerMode) (in diesem Fall den Low-Power-Modus) festzulegen und abschließend den OPV und das SAC-Modul selbst zu aktivieren. (Codequelle: Texas Instruments)

Die Treiberbibliothek von TI abstrahiert diese Bit-Manipulationen in intuitive API-Aufrufe. Entwickler benötigen auf diese Weise nur wenige Zeilen Code (Listing 1), um ein SAC-Modul als einen Allzweckverstärker zu programmieren, der einen Verstärker zur Sensorsignalaufbereitung vollständig ersetzen kann. So werden weniger Bauteile benötigt und das Design kann kompakter gehalten werden (Bild 2). Um als Funktionsgenerator verwendet werden zu können, müssen mehr Komponenten des SAC-Moduls verwendet werden (Bild 3). In diesem Fall steuert der Entwickler die Wellenform, indem er per Programmcode Daten in das dedizierte Datenregister (SACxDAT) lädt, das den Ausgang des internen DAC festlegt. Der DAC-Ausgang wiederum liefert die Referenzspannung für den OPV. In dieser Konfiguration würden Entwickler die Treiberstärke für den OPV erhöhen, indem sie für die Bits 0:1 (MSEL) im PGA-Register (SACxPGA) den Puffermodus (01b) festlegen, der einem potentialfreien Eingang entspricht. Um diesen Betriebsmodus zu konfigurieren, benötigen Entwickler im Vergleich zur oben beschriebenen allgemeinen Konfiguration nur ein paar API-Aufrufe mehr (Listing 2).

//Select internal shared reference as DAC reference voltage

SAC_DAC_selectRefVoltage(SAC0_BASE,

SAC_DAC_SECONDARY_REFERENCE);

//Select the load trigger for DAC data latch

//DAC always loads data from DACDAT at the positive edge

of Timer output TB2.1

SAC_DAC_selectload(SAC0_BASE, SAC_DAC_LOAD_DEVICE_SPECI-

IC_0);

//Enable DAC Interrupt

SAC_DAC_interruptEnable(SAC0_BASE);

//Write data to DAC Data Register SACxDAT

//DAC_data is an unsigned int type variable defined by

user SAC_DAC_setData(SAC0_BASE, DAC_data);

//Enable DAC

SAC_DAC_enable(SAC0_BASE);

//Select internal DAC for positive input and PGA source

for negative input

SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_DAC,

          SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);

//Select Buffer Mode

SAC_PGA_setMode(SAC0_BASE, SAC_PGA_MODE_BUFFER);

//Enable OA

SAC_OA_enable(SAC0_BASE);

   //Enable SAC

SAC_enable(SAC0_BASE);

Listing 2: Zur Konfiguration eines SAC-Moduls als Funktionsgenerator sind neben den API-Aufrufen zur Verwendung als Allzweckverstärker nur ein paar zusätzliche API-Aufrufe erforderlich.

Mehrere Stufen

Häufig benötigen Entwickler zur Signalaufbereitung oder Signalausgabe Ketten, die aus mehreren Verstärkern bestehen. Entwickler von Sensorsystemen verwenden üblicherweise Verstärkerkaskaden, um das Ausgangssignal des Transducers zu puffern und dieses gepufferte Signal anschließend zu verstärken, damit es mit dem Endwert des ADC am Ende der Signalkette übereinstimmt. Ebenso benötigen Entwickler von Ausgangsschnittstellen häufig Verstärkerkaskaden, um Wellenformen zu erzeugen und Gate-Treiber zu steuern. Für eine Stromschleifenschnittstelle etwa können sie ein SAC-Modul verwenden, das als DAC konfiguriert ist, um die modulierende Signalspannung bereitzustellen. Ein zweites SAC-Modul, das als OPV konfiguriert ist, wandelt die Signalspannung mit einem externen Transistor in einen Strom um (Bild 4).

Die MCU MSP430FR2355 bietet eine sogar noch effizientere Methode zur Kaskadierung von Verstärkern. Für Designs, die keine zusätzlichen externen Komponenten erfordern, können Entwickler auf die integrierten Leiterbahnen zurückgreifen, die die SAC-Module intern in zwei Paare aufteilen. Hierbei ist SAC0 intern mit SAC2 verbunden und SAC1 mit SAC3.

Diese Verbindung kommt in Sensorsystemen wie Rauchmeldern zum Einsatz, bei denen der Stromausgang einer Photodiode zur Umwandlung in einen Spannungspegel gewandelt werden muss. Entwickler können diese Signalkette über gepaarte SAC-Module mit nur wenigen Zeilen Code implementieren (Listing 3). In diesem Fall ist SAC2 als ein Transimpedanzverstärker konfiguriert, um den Ausgangsstrom der Photodiode in eine Spannung umzuwandeln, die vom gepaarten SAC0-Modul für einen nachgeschalteten ADC verstärkt wird (Bild 5). Wie aus Listing 3 ersichtlich ist, wird die interne Verbindung zwischen SAC2 und SAC0 ganz einfach über den API-Aufruf (SAC_OA_init) zur Initialisierung von SAC0 (SAC0_BASE) hergestellt, wobei der PGA als negative Eingangsquelle für den OPV (SAC_OA_NEGATIVE_INPUT_SOURCE_PGA) und der gepaarte OPV als positive Eingangsquelle (SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA) verwendet werden.

Mit diesem Ansatz können Entwickler beinahe sämtliche analogen Ein- und Ausgangsschaltkreise implementieren, die für IoT-Designs und Wearables benötigt werden. Beispielsweise können sie die SAC-Module der MCU MSP430FR2355 verwenden, um komplexe analoge Designs wie das in Bild 1 gezeigte Pulsoximeter erheblich kompakter zu gestalten (Bild 6). Außer den LEDs, der Photodiode und den zugehörigen Widerständen wird lediglich die MCU benötigt, um dieselbe Funktionalität bereitzustellen.

Zur Evaluierung der Verwendung der MCU MSP430FR2355 und ihrer SAC-Module können Entwickler das LaunchPad-Entwicklungskit MSP-EXP430FR2355 von Texas Instruments verwenden. Diese für eine schnellere Prototyperstellung entwickelte Karte umfasst ein vollständiges System auf Basis der MSP430FR2355 mit einem Lichtsensor, LEDs und Tasten zur Interaktion mit einfachen Beispielanwendungen. Eine Debug-Sonde zur Software-Entwicklung ist ebenfalls vorhanden.

Ein Grove-Steckverbinder ermöglicht den Zugriff auf eine Vielzahl von Add-Ons und ein TI-BoosterPack-Steckverbinder gestattet die problemlose Erweiterung der Basisplattform um HF-BoosterPacks für Wireless-Konnektivität. Des Weiteren stellt TI diverse Software-Beispielanwendungen zur Verfügung, die umgehend auf dem LaunchPad-Kit ausgeführt werden können. Neben der Ausführung der LaunchPad-Karte demonstriert die Beispiel-Software grundlegende Designmuster wie die in Listing 3 gezeigte Methode zur Verbindung von SAC-Modulen.

//Configure Op-Amp functionality

GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3,

                                                                    GPIO_PIN1 | GPIO_PIN3 | GPIO_PIN2,
                                                                    GPIO_TERNARY_MODULE_FUNCTION);

//Select external source for both positive and negative inputs

SAC_OA_init(SAC2_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL,

                       SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL);

//Select low speed and low power mode

SAC_OA_selectPowerMode(SAC2_BASE, SAC_OA_POWER-MODE_LOW_SPEED_LOW_POWER);

SAC_OA_enable(SAC2_BASE);                        // Enable SAC2 OA

SAC_enable(SAC2_BASE);                               // Enable SAC2

//Select external source for both positive and negative inputs

SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA,

                       SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);

SAC_OA_enable(SAC0_BASE);                         // Enable SAC0 OA

SAC_enable(SAC0_BASE);                                // Enable SAC0

Listing 3: Entwickler können eine zweistufige Signalkette einfach dadurch erstellen, dass sie ein Paar der SAC-Module der MCU MSP430FR2355 initialisieren und angeben, dass der Eingang der nachgeschalteten Stufe den gepaarten OPV als Eingang verwendet (SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA).

Fazit

Geräte, die mit der realen Welt interagieren, benötigen üblicherweise analoge Schnittstellen. In vielen Designs für Wearables und IoT-Geräte stehen die zur Implementierung dieser Schnittstellen zusätzlich erforderlichen Komponenten jedoch im Widerspruch zu den Anforderungen im Hinblick auf kompaktere Designs und eine geringere Anzahl von Bauteilen.

Durch Konfiguration von in die MCU MSP430FR2355 von Texas Instruments integrierten, analogen Komponenten können Entwickler eine Signalkette mit der für diese Designs erforderlichen Funktionalität implementieren, wobei häufig nur wenige zusätzliche passive Komponenten benötigt werden.