Utilizzare le funzionalità di un microcontroller per implementare rapidamente catene di segnali analogici in progetti compatti

Di Stephen Evanczuk

Contributo di Editori nordamericani di DigiKey

Molti progetti per Internet delle cose (IoT) sono basati su circuiti analogici preposti a soddisfare i requisiti specifici di applicazioni per il condizionamento del segnale di sensori e attuatori, il controllo della corrente e altre funzionalità. Anche se i circuiti integrati dedicati della catena di segnali possono rispondere a questa esigenza, i progetti con vincoli rigidi di costi e di spazio devono poter fornire questa stessa funzionalità con un numero minore di componenti senza che ciò vada a scapito delle prestazioni.

Per questo sono stati studiati dei microcontroller che hanno semplificato la natura dell'interfaccia di questo sensore e dell'attuatore integrando periferiche analogiche come convertitori analogico/digitale (ADC) e comparatori. Fino a poco tempo fa, tuttavia, solitamente gli ingegneri dovevano aggiungere comunque dei componenti analogici per fornire il condizionamento del segnale o il buffering di uscita richiesto nella maggior parte dei progetti.

L'aggiunta di questi circuiti di condizionamento dei segnali analogici su un microcontroller permette ora agli sviluppatori di configurare in modo efficiente questi componenti per soddisfare una vasta gamma di requisiti di interfaccia analogica per dispositivi indossabili e altri dispositivi IoT intervenendo solo su poche righe di codice.

Questo articolo prenderà in esame la necessità di condizionamento del segnale analogico front-end per dispositivi IoT connessi. Illustrerà poi una classe di microcontroller con funzionalità analogiche altamente integrate e mostrerà come applicarle.

Interfacciare un sensore con un microcontroller

Solitamente, per condizionare i segnali di uscita del trasduttore prima che raggiungano l'ingresso ADC del microcontroller i progetti dei sensori richiedono uno o due amplificatori. Dispositivi più complessi come i pulsossimetri, che monitorano anche la frequenza cardiaca, richiedono più catene di segnali per generare forme d'onda di eccitazione dei LED, convertire l'uscita dei fotodiodi e infine estrarre i dati delle pulsazioni (Figura 1). Anche il semplice circuito ad anello di corrente utilizzato abitualmente per collegare i sensori ai controller logici programmabili in applicazioni industriali ha bisogno di dispositivi aggiuntivi per pilotare e controllare l'uscita di corrente. Tuttavia, utilizzando i componenti analogici interni nell'MCU MSP430FR2355 di Texas Instruments, gli sviluppatori possono implementare versioni più compatte di questi progetti, aggiungendo in genere solo pochi componenti passivi in più.

Schema dell'MCU MSP430FR2355 di Texas Instruments

Figura 1: Gli utenti chiedono prodotti più compatti ma con un maggior numero di funzionalità sofisticate, per cui gli sviluppatori devono ridurre drasticamente il numero dei componenti in percorsi di segnali complessi come questo per i pulsossimetri. (Immagine per gentile concessione di Texas Instruments)

Componenti analogici integrati

L'MCU MSP430FR2355 di Texas Instruments, basato sul core di un processore RISC a 16 bit, offre tutte le funzionalità richieste tipicamente da molti progetti di dispositivi IoT. MSP430FR2355, che fa parte della famiglia di FeRAM MSP430 di TI, integra 32 kB di RAM ferroelettrica (FeRAM) a basso consumo. La FeRAM è particolarmente idonea per i progetti IoT, fornendo sia i vantaggi della memorizzazione non volatile delle memorie flash che la velocità di scrittura e la longevità della RAM. Pertanto, gli sviluppatori possono sfruttarne le qualità di prestazioni simili alla RAM per archiviare dati e codice di programma durante il funzionamento attivo, facendo invece affidamento sulle funzioni non volatili della FeRAM per conservare i valori durante la modalità di sospensione o altri stati operativi necessari per risparmiare energia. MSP430FR2355 supporta diverse modalità a basso consumo studiate per soddisfare i requisiti di basso consumo tipici di questi progetti.

Oltre ai bassi consumi, MSP430FR2355 supporta i requisiti dell'interfaccia IoT con diverse periferiche analogiche integrate fra cui un ADC a 12 canali e 12 bit, comparatori analogici con convertitori digitale/analogico (DAC) integrati e numerosi riferimenti di tensione su chip. La caratteristica analogica più esclusiva dell'MCU MSP430FR2355 è costituita dai suoi quattro moduli Smart Analog Combo (SAC) che gli sviluppatori possono configurare a livello di codice per soddisfare i loro specifici requisiti.

Ogni modulo SAC include un DAC a 12 bit, un amplificatore operazionale (OA) rail-to-rail e un ladder con resistore di retroazione che trasforma l'OA in un amplificatore a guadagno programmabile (PGA). Registri dedicati per ogni componente controllano la sua configurazione e la sua modalità operativa. Ad esempio, gli sviluppatori possono semplicemente caricare bit 0:1 nel registro OA del modulo SAC (SACx) (SACxOA) per impostare l'ingresso positivo dell'OA su una qualche sorgente esterna, sull'uscita DAC o su una sorgente SAC abbinata (descritta sotto).

La libreria dei driver di TI sintetizza queste manipolazioni dei bit in una serie intuitiva di chiamate API. Di conseguenza, servono solo poche righe di codice (Listato 1) per programmare un modulo SAC come amplificatore per uso generale in grado di sostituire pienamente un amplificatore di condizionamento del segnale del sensore. Il risultato sono un minor numero di componenti e dimensioni più ridotte del progetto (Figura 2).

Copy
//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);

(Fonte del codice: Texas Instruments)SAC_OA_initSAC_OA_selectPowerMode

Schema dell'MCU MSP430FR2355 di Texas Instruments

Figura 2: Gli sviluppatori possono sostituire un amplificatore operazionale esterno con uno implementato internamente nell'MCU MSP430FR2355 di Texas Instruments utilizzando uno dei quattro moduli Smart Analog Combo (SAC) dell'MCU. (Immagine per gentile concessione di Texas Instruments)

Per svolgere le funzioni di un generatore di forme d'onda di uscita, un modulo SAC deve coinvolgere un maggior numero dei suoi componenti (Figura 3). In questo caso, lo sviluppatore controlla la forma d'onda caricando a livello di codice i dati nel registro dedicato dei dati (SACxDAT) che imposta l'uscita del DAC interno. A sua volta, l'uscita del DAC fornisce la tensione di riferimento all'OA. In questa configurazione, gli sviluppatori aumenterebbero la forza di pilotaggio dell'OA impostando i bit 0:1 (MSEL) nel registro PGA (SACxPGA) sulla modalità buffer (01b), che corrisponde a un ingresso flottante. Per configurare questa modalità operativa, agli sviluppatori servono solo poche altre chiamate API (Listato 2) rispetto a quelle richieste per la configurazione per uso generale descritta sopra.

Schema del convertitore digitale/analogico del modulo SAC di Texas Instruments

Figura 3: Gli sviluppatori possono implementare un generatore di forme d'onda programmabile utilizzando il convertitore digitale/analogico del modulo SAC e l'amplificatore operazionale. (Immagine per gentile concessione di Texas Instruments)

Copy
//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);

Listato 2: Per configurare un modulo SAC come generatore di forme d'onda, gli sviluppatori hanno bisogno solo di poche chiamate API aggiuntive oltre a quelle richieste per utilizzarlo come amplificatore per uso generale. (Fonte del codice: Texas Instruments)

Stadi multipli

In molti casi, servono condizioni di segnale o catene di uscita costruite con più di un amplificatore. Ad esempio, i progettisti di sistemi di sensori in genere mettono gli amplificatori in cascata per bufferizzare l'uscita del trasduttore e per amplificare poi il segnale bufferizzato in modo che corrisponda alla risposta a fondo scala dell'ADC che si trova alla fine della catena di segnali. Analogamente, gli sviluppatori di interfacce di uscita spesso devono mettere in cascata gli amplificatori per generare forme d'onda e controllare i gate driver. Ad esempio, per costruire l'interfaccia di un circuito di corrente, possono utilizzare un modulo SAC configurato in modalità DAC per fornire la tensione del segnale di modulazione. Configurato in modalità OA, il secondo modulo SAC converte la tensione del segnale in una corrente utilizzando un transistor esterno (Figura 4).

Schema di un modulo SAC di Texas Instruments in modalità DAC e di un secondo SAC in modalità OA

Figura 4: Per costruire l'interfaccia di un circuito di corrente, gli ingegneri usano un modulo SAC in modalità DAC per generare la tensione del segnale modulato e un secondo SAC in modalità OA per pilotare un transistor, generando una corrente di circuito, ILOOP (I1 + I2). (Immagine per gentile concessione di Texas Instruments)

L'MCU MSP430FR2355 offre un metodo ancora più efficiente per gli amplificatori in cascata. Per i progetti che non richiedono componenti esterni aggiuntivi, gli sviluppatori possono sfruttare il routing incorporato che interconnette internamente i moduli SAC in due coppie: SAC0 è collegato internamente a SAC2 e SAC1 a SAC3.

Questa interconnessione trova applicazione in sistemi di sensori come i rilevatori di fumo che devono convertire l'uscita di corrente da un fotodiodo in un livello di tensione. Gli sviluppatori possono implementare questa catena di segnali usando una coppia di moduli SAC con solo poche righe di codice (Listato 3). Qui, SAC2 è configurato come amplificatore a transimpedenza per convertire l'uscita di corrente del fotodiodo in una tensione, che il SAC0 abbinato amplifica per un ADC a valle (Figura 5). SAC_OA_initSAC0_BASESAC_OA_NEGATIVE_INPUT_SOURCE_PGASAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA

Copy
    //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

(Fonte del codice: Texas Instruments)SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA

Schema di un modulo SAC di Texas Instruments in modalità DAC e di un secondo SAC in modalità OA

Figura 5: Gli sviluppatori possono eliminare con successo la necessità di circuiti integrati analogici esterni in un progetto di rivelatore di fumo configurando i moduli SAC abbinati dell'MCU MSP430FR2355 per implementare l'amplificatore a transimpedenza (TIA) e l'amplificatore a guadagno programmabile (PGA) richiesti in una tipica catena di segnali di ingresso di un rilevatore di fumo. (Immagine per gentile concessione di Texas Instruments)

Utilizzando questo approccio, gli sviluppatori possono implementare quasi tutta la serie di circuiti di ingresso e di uscita analogici richiesti nei progetti IoT e di indossabili. Ad esempio, possono usare i moduli SAC MSP430FR2355 per condensare progetti analogici complessi come quello del pulsossimetro riportato in Figura 1 in una versione molto più compatta (Figura 6). A parte i LED, il fotodiodo e i relativi resistori, ai progettisti serve solo l'MCU per offrire la stessa funzionalità.

Schema dell'MCU MSP430FR2355 di Texas Instruments e dei suoi moduli SAC

Figura 6: Gli sviluppatori possono usare l'MCU MSP430FR2355 e i suoi moduli SAC per ridurre drasticamente il numero dei componenti in progetti come quelli dei pulsossimetri che richiedono numerose sorgenti di eccitazione di uscita e una catena di segnali a più stadi. (Immagine per gentile concessione di Texas Instruments)

Per valutare l'uso dell'MCU MSP430FR2355 e dei suoi moduli SAC, gli sviluppatori possono servirsi del kit di sviluppo LaunchPad MSP-EXP430FR2355 di Texas Instruments. Progettata per accelerare la prototipazione, la scheda include un sistema completo basato su MSP430FR2355 con un sensore della luce, LED e pulsanti per interagire con applicazioni di esempio semplici e una sonda di debug integrata per lo sviluppo del software.

Un connettore Grove permette di accedere all'ampia serie di componenti aggiuntivi basati su Grove disponibili, mentre un connettore BoosterPack di TI permette agli sviluppatori di estendere facilmente la piattaforma di base con BoosterPack RF per la connettività wireless. TI offre anche una serie di applicazioni software campione studiate per l'esecuzione immediata sul kit LaunchPad. Oltre alle prove con la scheda LaunchPad, il software di esempio propone schemi di progettazione di base come il metodo per interconnettere i moduli SAC mostrati nello snippet di codice del Listato 3.

Conclusione

Le interfacce analogiche sono comunemente richieste in qualsiasi dispositivo che interagisca con il mondo reale. In molti progetti per dispositivi indossabili e IoT, tuttavia, i componenti supplementari necessari per costruire queste interfacce vanno contro la necessità di progetti più compatti e di riduzione del numero dei componenti.

Configurando i componenti analogici integrati nell'MCU MSP430FR2355 di Texas Instruments, gli sviluppatori possono implementare la funzionalità della catena di segnali richiesta per questi progetti, spesso aggiungendo solo pochi componenti passivi in più.

 
DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk ha più di 20 anni di esperienza come autore sull'industria elettronica e ha scritto su una vasta gamma di argomenti tra cui hardware, software, sistemi e applicazioni, incluso l'IoT. Ha ricevuto un Ph.D. in neuroscienze sulle reti neuronali e ha lavorato nel settore aerospaziale su sistemi di sicurezza ampiamente distribuiti e sui metodi di accelerazione algoritmica. Attualmente, quando non scrive articoli su tecnologia e ingegneria, lavora su applicazioni di deep learning per i sistemi di riconoscimento e di raccomandazione.

Informazioni su questo editore

Editori nordamericani di DigiKey