Använd en PCR-modul för snabbare utveckling av lågeffekts radarbaserade sensor med hög precision

Av Stephen Evanczuk

Bidraget med av DigiKeys nordamerikanska redaktörer

3D-sensorteknik med hög upplösning har utvecklats som en kritisk funktion i tillämpningar på många områden, från gestbaserade användargränssnitt till förarassistanssystem (ADAS). Bland 3D-sensoralternativen finns radarteknik som erbjuder funktioner och prestandaegenskaper som inte är tillgängliga med mer konventionella metoder. Trots detta kan det vara svårt för utvecklare att upprätthålla den höga precision och låga strömförbrukning som krävs, och det när det gäller distribution av radarsensorsystem är inlärningskurvan brant.

Genom att använda en avancerad teknik som kallas PCR (koherent pulsradar), har Acconeer utvecklat en integrerad radarsensor som kombinerar hög precision och låg effektförbrukning, vilket behövs i smarta produkter och andra kommande tillämpningar.

I denna artikel beskrivs Acconeers PCR-metod innan vi går vidare och presenterar en radarmodul med tillhörande utvecklingsplattform som grundar sig på denna teknik. Därefter visar vi hur plattformen ska användas för att börja designa sofistikerad radarsensorteknik för användning i en rad olika system, däribland batteridrivna smarta produkter.

Varför radar?

Radarbaserad avkänningsteknik kan ge millimeterhög upplösning med höga uppdateringsfrekvenser och avge mycket precisa data om avstånd och rörelse vilka behövs för tillämpningar med behov av precisionsdetektering av objekt, områdesmätning, positionsspårning osv. När radarteknik byggs in i smarta produkter, måste dock utvecklare ofta välja mellan låg strömförbrukning eller hög precision. Utvecklare som behöver tillämpa den här tekniken i dina konstruktioner och som har begränsade energibudgetar, gör att tillämpningskraven ökar på behovet av att uppnå samma höga precision även på lägre effektnivåer.

Avancerad radarteknik

Ett alternativt sätt att närma sig konventionella radarkonstruktioner är en lösning där precisionen i sofistikerade koherenta radarmetoder kombineras med de sänkta kraven på effekt i pulsradarsystem. I pulsradarkonstruktioner stängs transmittern av mellan pulserna, vilket sänker effektförbrukningen men precisionen minskar. Som kontrast överför koherenta radarsystem ett kontinuerligt flöde med pulser, och använder precisa fasmätningar av retursignalerna för att kunna mäta med hög precision. Nackdelen är en hög effektförbrukning.

Acconeer kombinerar dessa tekniker i den PCR-teknik som används i radarsensorn A111. I likhet med pulsradar håller PCR-tekniken radion avstängd mellan överföringarna, men liksom i koherenta system är överföringarna skurar av pulser, eller vågor, med en känd startfas (bild 1).

Diagram över Acconeer A111 koherent pulsradarenhet

Bild 1: Acconeer A111 koherenta pulsradarenheter uppnår hög precision vid låg effekt genom att överföra långa eller korta småvågor med noggrant reglerad pulsrepetitionsfrekvens (PRF), centerfrekvens (fRF) och pulsens varaktighet (tpulse). (Bildkälla: Acconeer)

Genom fininställning av parametrar såsom pulsens varaktighet (tpulse) kan utvecklare optimera signalerna för olika tillämpningar. Utvecklare kan till exempel kan reducera tpulse för att generera de kortare småvågor som behövs för att tolka små rörelser från enskilda fingrar i tillämpningar med geststyrda användargränssnitt. Omvänt kan de öka tpulse så att de långa småvågor med hög energi som behövs för att tolka hinder i tillämpningar för självparkerande fordon kan genereras.

Trots de stora tekniska fördelarna med PCR-tekniken är det få utvecklare som inte har stora kunskaper i radarteknik som har råd att lägga den tid som krävs för att implementera den här tekniken på egen hand. Vid sidan av utmaningarna med att designa ett effektivt ///millimeter wave (mmWave) front-end stage skulle utvecklare ställas inför den stora utmaningen med att konvertera den erhållna amplituden och fasdata från de reflekterade radarsignalerna till användbara mätningar av avstånd och rörelse.

Acconeer PCR-baserade A111 radarenhet och tillhörande programutvecklingssats (SDK) är utformade för att möta de här umaningarna, och abstraherar detaljerna på låg nivå av radarsignalbearbetningen, och levererar data i former som kan vara enklare att hantera i tillämpningarna.

En integrerad PCR front-end gör utvecklingen enklare

Maskinvaruaspekterna förenklas vid implementering av PCR-tekniken eftersom Acconeer A111 innehåller en komplett radarsensor med en mmWave radar front-end med ett antennpaket (AIP) i ett fcCSP-paket på 5,2 x 5,5 x 0,88 millimeter (mm) (bild 2).

Schema över Acconeer A111 med integration av en mmWave-radio

Bild 2: Acconeer A111 integrerar en mmWave-radio, ett digitalt delsystem, tidsinställning och strömhantering för att skapa en komplett front-end-lösning för radaravkänning med hjälp av koherent pulsradarteknik. (Bildkälla: Acconeer)

Tillsammans med delsystemet med mmWave-radiofrekvens frequency (RF) innehåller A111 ett digitalt delsystem med dedikerade minnesområden för program och data för hantering av delsystemet med mmWave-radion. Separata delsystem ger faslåst looptidsinställning (PLL) och funktioner för strömhantering som PoR (power-on reset) separata LDO-regulatorer (low dropout) för enhetens effektdomäner.

Med en tidsupplösning på picosekundskalan har enheten typiskt en kapacitet att mäta avstånd med millimeterprecision på avstånd upp till två meter. Samtidigt gör den låga strömförbrukningen att utvecklare kan använda den i batteridrivna enheter. Eftersom A111-sensorns höga grad av integration, behöver utvecklare bara några få ytterligare komponenter utöver en värdmikrostyrenhet för att implementera radaravkänning i sina designer (bild 3). Eftersom A111 kan fungera utan en öppning för radarsignalerna kan utvecklarna bygga in den i smarta produkter utan att äventyra kraven på kapslingsklass.

Schema över Acconeer A111 mikrostyrenhet

Bild 3: Eftersom den integrerar all den radiofrekvens och de digitala delsystem som krävs för en radar front-end, gör A111 att utvecklare kan implementera radaravkänning med endast några få ytterligare komponenter utöver värdmikrostyrenheten. (Bildkälla: Acconeer)

A111-funktionerna som ett konventionellt seriellt perifert enhetsgränssnitt (SPI) med seriell datainmatning (MOSI), seriell utmatning (MISO), klocka (SPI_CLK) och portar för slavurvalssignaler (SS). Med ENABLE-stiftet på A111 kan utvecklare använda mikrostyrenheten för att slå på eller av strömmen till enheten, medan INTERRUPT-stiftet gör att utvecklare kan använda A111 för att meddela mikrostyrenheten när mätningarna är klara.

Genom att använda ENABLE för att stänga av A111 mellan pulssvepningsöverföringarna, kan utvecklare reducera effektförbrukning i A111 till 66 µA (typiskt värde). Omvänt gäller att medan A111 utför en serie med svepningar och mätningar kan utvecklare placera värdmikrostyrenheten i ett lågförbrukande viloläge med hjälp av WFI-instruktionen (wait-for-interrupt) som är tillgänglig på Arm® Cortex®-M-baserade processorer för att väcka mikrostyrenheten när A111 har slutfört sina uppgifter och utfärdar en brytinstruktion.

Konstruktörer kan lägga till egna precisionsklockkällor eller förlita sig på enhetens interna klockkrets som bara kräver en extern kristalloscillator, till exempel EPSON:s TSX-3225. Enheten drivs med en strömförsörjning på 1,8 volt för RF (VIO_1 och VIO_2) och digital (VIO_3). Som alternativ kan utvecklare väja att använda separata försörjningskällor för mer effektkrävande tillämpningar. VIO_Na- och VIO_Nb-stiften som visas i bild 3 är anslutna inuti enheten, och Acconeer rekommenderasr att de även ansluts externt på PC-kortet.

A111 är uteslutande avsedd som en ///radar front-end-enhet och har ingen egen lagring av fast programvara. Den förlitar sig istället på att värdmikrostyrenheten överför all sensorprogramvara samt hanterar sensorinitiering, konfiguration, svepinhämtning och signalbearbetning åt A111. Därav följer att valet av kompletterande mikrostyrenhet blir ett viktigt beslut för konstruktören. Acconeer har noterat att en Arm Cortex-M4-baserad mikrostyrenhet som exempelvis STMicroelectronics STM32L476 eller Nordic Semiconductors NRF52840 normalt sett räcker för hantering av relativt statiska åtgärder som avståndsmätnng eller grundläggande rörelsedetektering. För mer dynamiska tillämpningar, till exempel ///breathing rörelsedetektering eller objektspårning, rekommenderar Acconeer en Arm Cortex-M7-baserad mikrostyrenhet som exempelvis Microchip Technologys ATSAME70. Acconeer parar i det här sammanhanget ihop A111 PCR-enheten med en ATSAME70 i sin XM112-radarmodul.

Acconeer XM112-modulen kombinerar A111-radarsensorn med en ATSAME70-mikrostyrenhet från Microchip Technology för att skapa ett komplett radardelsystem. Utvecklare kan använda XM112 tillsammans med XB112 ///breakout board så att de omedelbart kan börja utvärdera A111 och bygga PCR-baserade programvarutillämpningar. Alternativt kan utvecklare helt enkelt ansluta den 30-stifts 24 mm x 16 mm-modulen till deras egna PCB:er om de vill lägga till ett självförsörjande PCR-delsystem i denas egna designen. För utförande av radaravkänning kan utvecklare styra XM112-modulen genom en seriell anslutning med sina utvecklingssystem eller köra programvara direkt på ATSAME70-mikrostyrenheten som är värd för XM112.

Programvarugränssnitt

Oavsett maskinvarusystemens konfiguration styrs radarmätningarna programmässigt med hjälp av Acconeers API för radarsystemprogramvaran (RSS). RSS API:et utgör det enda programvarugränssnittet för A111. Acconeer har inte stöd för åtkomst till A111-registren genom de typiska SPI-transaktionerna på grund av komplexiteten i design, kalibrering och bearbetningskraven. Alla åtgärder fungerar istället genom RSS vilket ger A111 detekterfunktionerna. Dessa detektorer bygger i sin tur tjänster på lägre nivåer genom API:er för åtkomst till olika typer av förbehandlade data från A111. Tjänsterna omfattar:

  • ///Envelope service som ger information om amplituden i sensordata
  • Power Bin-tjänsten som ger amplitudinformation i fördefinierade områdesintervall (bins)
  • IQ-tjänsten som ger IQ-modulerade data, som gör att det går att använda fas- och amplitudmätningar för att generera mer korrekta mätningar än vad som är möjlighet med enbart amplituden i Envelope- och Power Bin-tjänsterna

Inom dessa tjänster kan utvecklare dra nytta av specialfunktioner för strömhantering, områdesförbättring och självkalibrering för att bara nämna några.

För strömhanteirng kan utvecklare placera enheten i ett av fyra effektlägen, där effektförbrukningen reducerar sensoruppdateringsfrekvensen. Funktionen för områdesförbättring gör att utvecklare kan utföra långa svep som utökar mätområdet upp till 7 meter (m) under vissa förhållanden. Till sist gör självkalibreringsfunktionen det möjligt för utvecklare att minska effektförbrukningen som är förknippad med den kalibreringscykel som inträffar när enheten startar. I batteridrivna deisgner för IoT till exempel, kan enheter rutinmässigt försättas i viloläge eller till och med stängas av under längre perioder med inaktivitet.

I många fall är det onödigt att utföra självkalibrering i början av varje uppvakningscykel, och helt enkelt slöseri med energi. Istället kan utvecklare lagra värden från den inledande kalibreringscykeln i ett icke-flyktigt minne, och sedan använda dessa värden för att utföra mätningar på ett tillförlitligt sätt under senare uppvakningsperioder.

För utveckling av produktskod kan ingenjörer hämta det fullständiga programvarudistributionspaketet som innehåller exempel på tillämpningskällkod tillsammans med Acconeer SDK. I denna SDK finns även huvudfiler tillsammans med förkompilerade RSS-bibliotek för mikrostyrenheterna Arm Cortex-M4 och Arm Cortex-M7 i separata mikrostyrenhetsspecifika distributioner.

Språkkoden för SDK är exempel som illustrerar det grundläggande designmönstret för användning av RSS API:et för att utföra radarmätningar i produktionstillämpningar. För alla typer av mätningar börjar det här designmönstret med initiering av systemet och RSS, och anrop av tre rutiner i följd:

  • acc_driver_hal_init(), som initierar kortet och GPIO:er
  • acc_driver_hal_get_implementation(), som instantierar en C-struktur, acc_hal_t, som innehar sensor- och kortegenskaper samt pekare för runtime-handtag för minnesallokering, semaforer och annat.
  • acc_rss_activate_with_hal(), som aktiverar själva RSS-verktyget (Radar System Services)

Från den här punkten ingår i en typisk mätning att skapa ett objekt, vilket kallas konfiguration, som innehåller parametrarna som är kopplade till sensorn och den specifika mätningen. Denna konfiguration används sedan för att anropa en RSS API-funktion för att skapa önskad detektor eller tjänst. Exempelkoden illustrerar tillämpningen av detta designmönster i en a modul, example_detector_distance_peak.c, för att skapa och arbeta med en avståndstoppdetektor. I den modulen utför först main() routine (Listing 1) initieringen och RSS-aktiveringen innan en konfiguration (acc_detector_distance_peak_configuration_create()) skapas, och därefter används den konfigurationen för att skapa en toppdetektor (distance_peak_detect_with_blocking_calls()).

Kopiera 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; } 

Lista 1: Exempelkod som ingår i Acconeers programvaruutvecklingssats demonstrerar det grundläggande designmönstret för användning av Acconeer Radar System Services (RSS) programmeringsgränssnitt för att utföra mätningar med Acconeer A111-sensorn. (Kodkälla: Acconeer)

I denna exempeltillämpning utförs de faktiska avståndstoppmätningarna i rutinen distance_peak_detect_with_blocking_calls(). Denna ruton använder i sin tur RSS API-funktionen acc_detector_distance_peak_get_next() för att hämta faktiska mätdata från A111-enheten (lista 2). I det här fallet placerar koden mätrutinen acc_detector_distance_peak_get_next() i en loop, minskar en räknare, detection_runs, tills den utför 100 mätningar.

Kopiera 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--; } 

Lista 2: När mätningar görs med Acconeer A111-sensorn arbetar utvecklare uteslutande genom Acconeer Radar System Services (RSS) programmeringsgränssnitt (API), och anropar rutiner såsom acc_detector_distance_peak_get_next() som hanterar detaljer på låg nivå som visas i denna snippet. (Kodkälla: Acconeer)

Utvecklare kan implementera egna detektorer, genom att använda tjänsteanrop i liknande designmönster för initering, RSS-aktivering, konfigurationsskpanade samt ///tjänstinstantiering. Om en utvecklare till exempel vill använda Envelope-tjänsten anropas acc_service_envelope_configuration_create() för att skapa den nödvändiga konfiguraitonen och genom att använda dedn konfigurationen som en parameter i anrop av acc_service_create() för att instantiera ett tjänsteobjekt.

Genom att utforska exempelkoden skrivna i C-språket, kan utvecklare snabbt få erfarenhet av att använda RSS API för att bygga radartillämpningar för specialändamål med anpassade detektorer. Som en hjälp till utvecklare för att snabbare lära känna radarbaserad avkänning i allmänhet och RSS-tjänsterna i synnerhet, erbjuder Acconeer också exempekod i sitt Python Exploration Kit software repository.

Python Exploration Kit är utformat för att fungera med Acconeer SDK och utvärderingssatser som XM112, och hjälper därmed utvecklare att dra nytta av Pythons produktivitetsfördelar för dem som arbetar med RSS-tjänster och detektorer. Vid sidan av de grundläggande exemplen innehåller satsen exempelkod för implementering av mycket sofistikerade mättillämpningar, bland annat detektering av andningsmönster under sömn, användning av fasinformation för att spåra relativa förflyttningar, detektering av föremål som närmar sig annat.

Slutsatser

Radaravkänningsteknik kan ge mycket precisa mätningar i avstånds- och rörelsetillämpningar. Tekniken kräver dock mycket energi för att uppnå önskad precision, och medför vanligen att designprocessen blir mer komplex. Genom att implementera PCR utgör den integrerade radarsensorn Acconeer A111 en kombination av hög precision och låg effektförbrukning vilket krävs i smarta produkter och andra tillämpningar under utveckling. Den kompletterande programvaruutvecklingssatsen (SDK) abstraherar komplexibiteten i radarsignalbehandling, och ger de slags data på högre nivå som krävs på tillämpningsnivån.

Genom att använda denna SDK med ett A111-baserat utvecklingskort kan ingenjörer snabbt få erfarenhet av radaravkänningsteknik och snabbt impelemntera sofistikerade tillämpningar som kan urskilja objekt och spåra rörelser med millimeterupplösning.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Om skribenten

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk har arbetat i mer än 20 år med att skriva för och om elektronikbranschen inom många olika områden som maskinvara, programvara, system och applikationer – inklusive sakernas internet. Han har en kandidatexameni neurovetenskap om artificiella neuronnät och har arbetat inom rymdfartsindustrin med mycket distribuerade säkra system och metoder för acceleration av algoritmer. När han inte skriver artiklar om teknik och konstruktion arbetar han med applikationer för djupinlärning för igenkänningssystem och rekommendationssystem.

Om utgivaren

DigiKeys nordamerikanska redaktörer