Utilizzare un modulo PCR per sviluppare rapidamente sensori basati su radar precisi e a basso consumo
Contributo di Editori nordamericani di DigiKey
2019-05-14
La tecnologia dei sensori 3D ad alta risoluzione si è rivelata cruciale in numerose applicazioni, dalle interfacce utente basate sui gesti ai sistemi di assistenza alla guida (ADAS). Tra le alternative ai sensori 3D, la tecnologia radar offre funzioni e caratteristiche prestazionali che non sono disponibili con approcci più convenzionali. Tuttavia, non è facile per gli sviluppatori mantenere precisione elevata e consumi energetici bassi e il percorso di apprendimento per l'implementazione di sistemi di sensori radar è arduo.
Utilizzando una tecnologia avanzata chiamata radar coerente pulsato (PCR), Acconeer ha sviluppato un sensore radar integrato che offre sia l'alta precisione che il basso consumo energetico necessari per i prodotti intelligenti e altre applicazioni emergenti.
Questo articolo descrive l'approccio PCR di Acconeer e presenta un modulo radar e la relativa piattaforma di sviluppo basata sulla sua tecnologia. Viene poi mostrato come utilizzare la piattaforma per iniziare a progettare una tecnologia sofisticata di sensori radar in un'ampia gamma di sistemi, compresi i prodotti intelligenti alimentati a batteria.
Perché il radar?
La tecnologia di rilevamento basata su radar è in grado di fornire una risoluzione in scala millimetrica ad alte frequenze di aggiornamento. Può garantire alle applicazioni dati estremamente accurati su distanza e movimento che servono per rilevare con precisione oggetti e posizioni, misurare le distanze e altro ancora. Tuttavia, quando si incorpora la tecnologia radar in progetti di prodotti intelligenti, ci si trova di fronte alla scelta tra bassi consumi e alta precisione. Mentre si cerca di applicare questa tecnologia in progetti con una disponibilità di potenza limitata, i requisiti delle applicazioni spingono verso una precisione anche a livelli energetici ridotti.
Tecnologia radar avanzata
Un approccio alternativo ai progetti radar convenzionali offre una soluzione che combina la precisione della sofisticata tecnologia del radar coerente con il basso consumo energetico offerto dai sistemi radar pulsati. I progetti di sistemi radar pulsati spengono il trasmettitore tra un impulso e l'altro, riducendo di conseguenza il consumo energetico ma a scapito della precisione. Per contro, i sistemi radar coerenti trasmettono un treno continuo di impulsi, utilizzando misurazioni di fase precise dei segnali di ritorno per fornire misure altamente accurate ma al costo di un elevato consumo energetico.
Acconeer combina queste tecniche nella tecnologia PCR utilizzata nel suo sensore radar A111. Come il radar pulsato, la tecnologia PCR mantiene la radio spenta tra una trasmissione e l'altra ma, come nei sistemi coerenti, le trasmissioni sono dei burst di impulsi, o sweep, con una fase iniziale nota (Figura 1).
Figura 1: Il dispositivo radar coerente pulsato A111 di Acconeer raggiunge un'elevata precisione con bassi consumi trasmettendo wavelet lunghe o brevi con una frequenza di ripetizione degli impulsi (PRF), una frequenza centrale (fRF) e una durata degli impulsi (tpulse) controllate attentamente. (Immagine per gentile concessione di Acconeer)
Regolando parametri come la durata degli impulsi (tpulse), gli sviluppatori possono ottimizzare i segnali per diverse applicazioni. Ad esempio, possono ridurre tpulse per generare le wavelet più corte necessarie per risolvere piccoli movimenti delle singole dita in un'applicazione di interfaccia utente controllata dai gesti. Possono invece aumentare tpulse per generare le wavelet lunghe ad alta energia necessarie per superare gli ostacoli in un'applicazione di parcheggio autonomo.
Nonostante fossero attratti dai vantaggi tecnici della PCR, pochi sviluppatori senza una significativa esperienza in tecnologia radar potevano disporre del tempo necessario per implementare da soli questa tecnologia. Oltre alle sfide insite nella progettazione di un efficiente stadio front-end a onde millimetriche (mmWave), dovevano affrontarne una ancora più grande: convertire i dati di ampiezza e di fase acquisiti dei segnali radar riflessi in misurazioni utili di distanza e movimento.
Progettati per superare queste sfide, il dispositivo radar A111 basato su PCR di Acconeer e il relativo kit di sviluppo software (SDK) estrapolano i dettagli di basso livello dell'elaborazione dei segnali radar, fornendo dati in forme che possono essere assimilate più facilmente dalle applicazioni.
Il front-end PCR integrato semplifica lo sviluppo
A111 di Acconeer semplifica gli aspetti hardware dell'implementazione della tecnologia PCR e offre un sensore radar completo che integra un front-end radar mmWave con un'antenna-in-package (AIP) in un contenitore flip-chip chip-scale (fcCSP) di 5,2x5,5x0,88 mm (Figura 2).
Figura 2: A111 di Acconeer che integra una radio a onde millimetriche (mmWave), un sottosistema digitale, temporizzazione e gestione del consumo energetico per offrire una soluzione front-end completa per il rilevamento radar utilizzando la tecnologia radar coerente pulsata. (Immagine per gentile concessione di Acconeer)
Oltre al sottosistema a radiofrequenza (RF) mmWave, A111 comprende un sottosistema digitale con aree di memoria dedicate al programma e ai dati per la gestione del sottosistema radio mmWave. Sottosistemi separati forniscono funzioni di temporizzazione del circuito ad aggancio di fase (PLL) e di gestione del consumo energetico, tra cui reset all'accensione (PoR) e regolatori a bassa caduta di tensione (LDO) separati per i molteplici domini di potenza del dispositivo.
In virtù della sua risoluzione temporale dell'ordine di picosecondi, in genere entro i due metri il dispositivo riesce a misurare la distanza con una precisione millimetrica. Inoltre, il suo basso consumo energetico ne consente l'impiego anche nei dispositivi alimentati a batteria. Grazie all'elevato livello di integrazione del sensore A111, per implementare il rilevamento radar nei progetti agli sviluppatori servono solo pochi componenti in più, oltre a un microcontroller host (Figura 3). A111 è in grado di funzionare senza un'apertura per i suoi segnali radar, quindi può essere incorporato in prodotti intelligenti senza compromettere i requisiti esistenti di protezione dalle infiltrazioni.
Figura 3: Dal momento che integra tutti i sottosistemi digitali e a radiofrequenza necessari per un front-end radar, A111 consente agli sviluppatori di implementare il rilevamento radar con solo pochi componenti aggiuntivi oltre al microcontroller host. (Immagine per gentile concessione di Acconeer)
A111 funziona come un'interfaccia periferica seriale (SPI) convenzionale con ingresso dati seriali (MOSI), uscita seriale (MISO), clock (SPI_CLK) e porte di selezione del segnale slave (SS). Il pin ENABLE di A111 consente agli sviluppatori di utilizzare il microcontroller per accendere o spegnere il dispositivo, mentre il pin INTERRUPT consente di utilizzare A111 per informare il microcontroller quando le misurazioni sono pronte.
Utilizzando ENABLE per spegnere A111 tra una trasmissione sweep di impulsi e l'altra, è possibile ridurne il consumo energetico a 66 µA (tipico). Invece, mentre A111 esegue una serie di sweep e misurazioni, gli sviluppatori possono mettere il microcontroller host in uno stato di sospensione a basso consumo utilizzando l'istruzione wait-for-interrupt (WFI) disponibile nei processori basati su Arm® Cortex®-M per risvegliarlo quando A111 ha completato le sue operazioni ed emette un interrupt.
I progettisti possono aggiungere la propria sorgente di clock di precisione o affidarsi al circuito del clock interno del dispositivo, che richiede solo un oscillatore a cristallo esterno, come ad esempio TSX-3225 di EPSON. Il dispositivo opera con un'unica alimentazione da 1,8 V per RF (VIO_1 e VIO_2) e digitale (VIO_3). In alternativa, per applicazioni che consumano di più è possibile utilizzare fonti di alimentazione separate. I pin VIO_Na e VIO_Nb mostrati nella Figura 3 sono collegati all'interno del dispositivo e Acconeer consiglia di collegarli esternamente anche sulla scheda.
Concepito esclusivamente come dispositivo front-end radar, A111 non memorizza permanentemente alcun firmware, ma si affida al microcontroller host per caricare tutto il software del sensore e gestire l'avvio, la configurazione, l'acquisizione sweep e l'elaborazione dei segnali del sensore A111. Di conseguenza, occorre scegliere con molta attenzione il microcontroller abbinato. Acconeer fa notare che in genere, per gestire operazioni relativamente statiche come la misurazione della distanza o il rilevamento del movimento di base, è sufficiente un microcontroller basato su Arm Cortex-M4 come STM32L476 di STMicroelectronics o NRF52840 di Nordic Semiconductor. Per applicazioni più dinamiche, come il rilevamento del movimento respiratorio o l'inseguimento di oggetti, Acconeer consiglia un microcontroller basato su Arm Cortex-M7 come ATSAME70 di Microchip Technology. Nel suo modulo radar XM112 Acconeer abbina il dispositivo PCR A111 con un ATSAME70.
Il modulo XM112 di Acconeer combina il sensore radar A111 con un microcontroller ATSAME70 di Microchip Technology per fornire un sottosistema radar completo. Gli sviluppatori possono usare XM112 assieme alla scheda di breakout XB112 per iniziare da subito a valutare A111 e realizzare applicazioni software basate su PCR. In alternativa, per aggiungere ai loro progetti personalizzati un sottosistema PCR autonomo, possono semplicemente inserire il modulo di 24x16 mm a 30 pin nelle proprie PCB. Per eseguire il rilevamento radar, possono controllare il modulo XM112 tramite una connessione seriale con i loro sistemi di sviluppo oppure eseguire il software direttamente sul microcontroller host ATSAME70 XM112.
Interfaccia software
Indipendentemente dalla configurazione dei sistemi hardware, le misurazioni radar vengono controllate programmaticamente tramite l'interfaccia di programmazione di applicazioni (API) del software del sistema radar (RSS) Acconeer. L'API RSS funge da unica interfaccia software per lavorare con A111. A causa della complessità dei requisiti di progettazione, calibrazione ed elaborazione, Acconeer non supporta l'accesso ai registri A111 attraverso le tipiche transazioni SPI. Tutte le operazioni passano invece attraverso l'RSS che fornisce la funzionalità del rivelatore A111. A loro volta, questi rivelatori si basano su servizi di livello inferiore tramite API per accedere a diversi tipi di dati pre-elaborati da A111. Questi servizi includono:
- Servizio Envelope che fornisce informazioni sull'ampiezza dei dati del sensore
- Servizio Power Bin che fornisce informazioni sull'ampiezza in intervalli di campo predefiniti (bin)
- Servizio IQ che fornisce dati modulati IQ, permettendo di utilizzare le misurazioni di fase e ampiezza per generarne di più accurate rispetto a quanto è possibile ottenere con i servizi Envelope e Power Bin.
All'interno di questi servizi, gli sviluppatori possono usufruire di funzioni speciali per la gestione energetica, il miglioramento della portata, l'autocalibrazione e altro ancora.
Per la gestione energetica, possono mettere il dispositivo in una delle quattro modalità di alimentazione che riducono il consumo energetico abbassando la frequenza di aggiornamento del sensore. La funzione di miglioramento della portata consente di eseguire lunghi sweep che in alcune condizioni estendono il campo di misurazione fino a 7 metri. Infine, la funzione di autocalibrazione consente di ridurre il consumo energetico associato al ciclo di calibrazione che si verifica all'avvio del dispositivo. Nei progetti alimentati a batteria per IoT, ad esempio, i dispositivi possono essere abitualmente messi in modalità di sospensione o anche spenti durante periodi prolungati di inattività.
In molti casi, non serve eseguire l'autocalibrazione all'inizio di ogni ciclo di riattivazione perché spreca solo energia. Gli sviluppatori possono invece archiviare in una memoria non volatile i valori di un ciclo di calibrazione iniziale e utilizzarli per eseguire misurazioni affidabili durante i periodi di risveglio successivi.
Per lo sviluppo del codice di produzione, gli ingegneri possono scaricare l'intero pacchetto di distribuzione software che insieme all'SDK Acconeer fornisce il codice sorgente dell'applicazione campione. L'SDK include file di intestazione e librerie RSS precompilate per i microcontroller Arm Cortex-M4 e Arm Cortex-M7 in distribuzioni separate specifiche per i microcontroller.
Gli esempi di codice in linguaggio C dell'SDK illustrano il modello di progettazione di base per utilizzare l'API RSS per eseguire misurazioni radar in applicazioni di produzione. Per qualsiasi tipo di misurazione, questo schema di progettazione parte inizializzando il sistema e l'RSS, chiamando tre routine in sequenza:
acc_driver_hal_init()
, che inizializza la scheda e i GPIOacc_driver_hal_get_implementation()
, che istanzia una struttura C, acc_hal_t, che contiene le proprietà del sensore e della scheda, e i puntatori agli handler runtime per l'allocazione della memoria, i semafori e altro ancora.acc_rss_activate_with_hal()
, che attiva l'utility Radar System Services (RSS)
Da questo punto, una misurazione tipica implica la creazione di un oggetto chiamato configurazione che contiene i parametri associati al sensore e alla misurazione interessata. Quella configurazione viene poi utilizzata per richiamare una funzione API RSS al fine di creare il rivelatore o il servizio desiderato. Il codice di esempio illustra l'applicazione di questo schema di progettazione in un modulo, example_detector_distance_peak.c, per creare e lavorare con un rivelatore di picco della distanza. In quel modulo, la routine main()
(Listato 1) esegue l'inizializzazione e l'attivazione di RSS prima di creare una configurazione (acc_detector_distance_peak_configuration_create()
) e di usarla per creare un rivelatore di picco (distance_peak_detect_with_blocking_calls()
).
Copy
int main(void)
{
acc_detector_distance_peak_status_t detector_status;
printf("Acconeer software version %s\n", ACC_VERSION);
printf("Acconeer RSS version %s\n", acc_rss_version());
if (!acc_driver_hal_init())
{
return EXIT_FAILURE;
}
acc_hal_t hal = acc_driver_hal_get_implementation();
if (!acc_rss_activate_with_hal(&hal))
{
return EXIT_FAILURE;
}
//Create the detector configuration
acc_detector_distance_peak_configuration_t distance_configuration = acc_detector_distance_peak_configuration_create();
if (distance_configuration == NULL)
{
fprintf(stderr, "\nacc_service_distance_configuration_create() failed");
return EXIT_FAILURE;
}
//Run distance peak detection in blocking mode
detector_status = distance_peak_detect_with_blocking_calls(distance_configuration);
if (detector_status != ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{
fprintf(stderr, "Running distance peak detector in blocking mode failed");
acc_detector_distance_peak_configuration_destroy(&distance_configuration);
acc_rss_deactivate();
return EXIT_FAILURE;
}
detector_status = distance_peak_detect_with_blocking_calls_with_estimated_threshold(distance_configuration);
if (detector_status != ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{
fprintf(stderr, "Running distance peak detector in blocking mode with estimated threshold failed");
acc_detector_distance_peak_configuration_destroy(&distance_configuration);
acc_rss_deactivate();
return EXIT_FAILURE;
}
acc_detector_distance_peak_configuration_destroy(&distance_configuration);
acc_rss_deactivate();
return EXIT_SUCCESS;
}
Listato1: Il codice di esempio incluso nella distribuzione del kit di sviluppo software di Acconeer dimostra il modello di progettazione di base per utilizzare l'interfaccia di programmazione di applicazioni (API) RSS (Radar System Services) di Acconeer per eseguire misurazioni con il sensore A111 di Acconeer. (Codice per gentile concessione di Acconeer)
In questa applicazione campione, le misurazioni effettive del picco della distanza sono eseguite nella routine distance_peak_detect_with_blocking_calls()
. Questa routine utilizza a sua volta la funzione API RSS acc_detector_distance_peak_get_next()
per recuperare i dati effettivi della misurazione dal dispositivo A111 (Listato 2). In questo caso, il codice inserisce la routine di misurazione acc_detector_distance_peak_get_next()
in un anello, decrementando un contatore, detection_runs
, finché non esegue 100 misurazioni.
Copy
detector_status = acc_detector_distance_peak_activate(handle);
if (detector_status == ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{
uint_fast8_t detection_runs = 100;
while (detection_runs > 0)
{
reflection_count = 10;
detector_status = acc_detector_distance_peak_get_next(handle,
reflections,
&reflection_count,
&result_info);
if (detector_status == ACC_DETECTOR_DISTANCE_PEAK_STATUS_SUCCESS)
{
printf("Distance detector: Reflections: %u. Seq. nr: %u. (%u-%u mm): %s\n",
(unsigned int)reflection_count,
(unsigned int)result_info.sequence_number,
(unsigned int)(start_m * 1000.0f),
(unsigned int)(end_m * 1000.0f),
format_distances(reflection_count, reflections, metadata.free_space_absolute_offset));
}
else
{
fprintf(stderr, "reflection data not properly retrieved\n");
}
detection_runs--;
}
Listato 2: Quando eseguono misurazioni con il sensore A111 di Acconeer, gli sviluppatori lavorano esclusivamente tramite l'interfaccia di programmazione di applicazioni (API) RSS (Radar System Services) di Acconeer, richiamando routine RSS come acc_detector_distance_peak_get_next()
che gestiscono i dettagli di basso livello come mostrato in questo frammento. (Codice per gentile concessione di Acconeer)
Gli sviluppatori possono implementare i propri rivelatori, utilizzando le chiamate di servizio in un modello di progettazione simile per l'inizializzazione, l'attivazione RSS, la creazione della configurazione e l'istanziazione del servizio. Ad esempio, per utilizzare il servizio Envelope richiamerebbero acc_service_envelope_configuration_create()
per creare la configurazione necessaria e la utilizzerebbero poi come parametro quando richiamano acc_service_create()
per istanziare un oggetto servizio.
Esplorando il codice di esempio in linguaggio C, gli sviluppatori possono maturare rapidamente esperienza utilizzando l'API RSS per realizzare applicazioni radar specializzate con rivelatori personalizzati. Per aiutarli ad acquisire più velocemente familiarità con il rilevamento basato su radar in generale e con i servizi RSS in particolare, Acconeer fornisce anche un codice di esempio nel suo repository del software Python Exploration Kit.
Progettato per funzionare con l'SDK Acconeer e con kit di valutazione come XM112, Python Exploration Kit aiuta gli sviluppatori a sfruttare i vantaggi della produttività di Python per lavorare con i servizi RSS e i rivelatori. Oltre agli esempi di base, il kit fornisce un codice campione per implementare applicazioni di misurazione molto sofisticate che includono il rilevamento della respirazione nei soggetti addormentati, l'utilizzo di informazioni di fase per tracciare i relativi movimenti, il rilevamento di ostacoli in avvicinamento e altro ancora.
Conclusione
La tecnologia di rilevamento radar può fornire misurazioni estremamente accurate per applicazioni di distanza e movimento. Tuttavia, la precisione potrebbe comportare un elevato consumo energetico, senza contare la complessità del processo di progettazione. Utilizzando la tecnologia chiamata radar coerente pulsato (PCR), il sensore radar integrato A111 di Acconeer offre sia l'alta precisione che il basso consumo energetico richiesti per i prodotti intelligenti e altre applicazioni emergenti. Il kit di sviluppo software (SDK) abbinato riduce la complessità dell'elaborazione del segnale radar, fornendo il tipo di dati di livello superiore richiesti dall'applicazione.
Abbinando l'SDK a una scheda di sviluppo basata su A111, gli ingegneri possono rapidamente acquisire esperienza nella tecnologia di rilevamento radar e implementare velocemente applicazioni sofisticate in grado di rilevare oggetti e tracciare il movimento con una risoluzione millimetrica.

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.