Verwendung der Funktionalität eines Mikrocontrollers zur schnellen Implementierung analoger Signalketten in kompakte Designs

Von Stephen Evanczuk

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von Digi-Key

Viele Designs für das Internet der Dinge (IoT) sind darauf angewiesen, dass die verwendeten analogen Schaltkreise den einzigartigen 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 hoch integrierter, analoger Funktionalität vorgestellt und auf ihre Anwendung eingegangen.

Verbinden eines Sensors mit einem Mikrocontroller

Sensordesigns erfordern üblicherweise einen oder zwei Verstärker zur Aufbereitung der Ausgangssignale von Transducern, bevor diese den ADC-Eingang 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 (Abbildung 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.

Schaltbild: MCU MSP430FR2355 von Texas Instruments

Abbildung 1: Da die Benutzer immer mehr hochentwickelte Funktionen in immer kompakteren Produkten erwarten, müssen die Entwickler die Anzahl der verwendeten Bauteile bei der Implementierung komplexer Signalpfade, wie etwa diesem für ein Pulsoximeter, erheblich reduzieren. (Bildquelle: Texas Instruments)

Integrierte analoge Komponenten

Basierend auf einem 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 Niedrigleistungsmodi, 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-Digital-Wandlern (DACs) 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 seinen 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 (Beschreibung siehe unten) festzulegen.

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 (Abbildung 2).

Kopieren
//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)

Schaltbild: MCU MSP430FR2355 von Texas Instruments

Abbildung 2: Entwickler können einen externen Operationsverstärker durch einen in die MCU MSP430FR2355 von Texas Instruments implementierten Operationsverstärker ersetzen, indem Sie eines der vier SAC-Module der MCU verwenden. (Bildquelle: Texas Instruments)

Um als Funktionsgenerator verwendet werden zu können, müssen mehr Komponenten des SAC-Moduls verwendet werden (Abbildung 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).

Schaltbild: Digital-Analog-Wandler des SAC-Moduls von Texas Instruments

Abbildung 3: Entwickler können mithilfe des Digital-Analog-Wandlers und des Operationsverstärkers des SAC-Moduls einen programmierbaren Funktionsgenerator implementieren. (Bildquelle: Texas Instruments)

Kopieren
//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_SPECIFIC_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. (Codequelle: Texas Instruments)

Mehrere Stufen

Häufig benötigen Entwickler zur Signalaufbereitung oder Signalausgabe Ketten, die aus mehreren Verstärkern bestehen. Entwickler von Sensorsystemen etwa 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 Stromschleifen-Schnittstelle etwa können Entwickler 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 (Abbildung 4).

Schaltbild: ein als DAC und ein zweites als OPV konfiguriertes SAC-Modul von Texas Instruments

Abbildung 4: Für eine Stromschleifen-Schnittstelle verwenden Entwickler ein als DAC konfiguriertes SAC-Modul, um die modulierte Signalspannung zu erzeugen, und ein zweites als OPV konfiguriertes SAC-Modul, um einen Transistor anzusteuern, der einen Schleifenstrom ILOOP (I1 + I2) erzeugt. (Bildquelle: Texas Instruments)

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 Transimpedanz-Verstärker konfiguriert, um den Ausgangsstrom der Photodiode in eine Spannung umzuwandeln, die vom gepaarten SAC0-Modul für einen nachgeschalteten ADC verstärkt wird (Abbildung 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.

Kopieren
    //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). (Codequelle: Texas Instruments)

Schaltbild: ein als DAC und ein zweites als OPV konfiguriertes SAC-Modul von Texas Instruments

Abbildung 5: Indem Entwickler die gepaarten Module der MCU MSP430FR2355 so konfigurieren, dass der Transimpedanz-Verstärker (TIA) und der Verstärker mit programmierbarer Verstärkung (PGA) implementiert werden, die in der typischen Signalkette eines Rauchmelders erforderlich sind, können sie externe analoge ICs im Endeffekt überflüssig machen. (Bildquelle: Texas Instruments)

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 Entwickler die SAC-Module der MCU MSP430FR2355 verwenden, um komplexe analoge Designs wie das in Abbildung 1 gezeigte Pulsoximeter erheblich kompakter zu gestalten (Abbildung 6). Außer den LEDs, der Photodiode und den zugehörigen Widerständen wird lediglich die MCU benötigt, um dieselbe Funktionalität bereitzustellen.

Schaltbild: MCU MSP430FR2355 von Texas Instruments und ihre SAC-Module

Abbildung 6: Mit der MCU MSP430FR2355 und ihren SAC-Modulen können Entwickler die Anzahl der Bauteile in Designs wie Pulsoximetern, die mehrere Erregerquellen für den Ausgang und eine mehrstufige Eingangssignalkette benötigen, beträchtlich verringern. (Bildquelle: Texas Instruments)

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 Grove-basierten 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.

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.

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der Digi-Key Electronics oder offiziellen Politik der Digi-Key Electronics wider.

Über den Autor

Stephen Evanczuk

Stephen Evanczuk hat mehr als 20 Jahre Erfahrung im Schreiben für und über die Elektronikindustrie zu einem breiten Spektrum von Themen wie Hardware, Software, Systeme und Anwendungen einschließlich des IoT. Er promoviertein Neurowissenschaften über neuronale Netzwerke und arbeitete in der Luft- und Raumfahrtindustrie an massiv verteilten sicheren Systemen und Methoden zur Beschleunigung von Algorithmen. Derzeit, wenn er nicht gerade Artikel über Technologie und Ingenieurwesen schreibt, arbeitet er an Anwendungen des tiefen Lernens (Deep Learning) zu Erkennungs- und Empfehlungssystemen.

Über den Verlag

Nordamerikanische Fachredakteure von Digi-Key