nRF9160 detecting antenna to prevent high power draw

Hello,

I have a custom board based on a nRF9160 SiP. It uses a shared antenna for GPS and Cellular, based on this : https://infocenter.nordicsemi.com/index.jsp?topic=%2Fnwp_033%2FWP%2Fnwp_033%2Fnwp_033_intro.html

I use a SMA connector, which is accessible to the end user. The antenna can therefore be removed.

I noticed that the power consumption profile was very different when the antenna is mounted and when the SMA remains "open" (no antenna). Not only the power draw is higher, but it's also very spiky ... which is not appreciated by the battery I use, and causes the device to reset because the voltage drops.

I attached a log, where the device turns on cellular, connects to nRFCloud, sends and read data.Note that in both cases (with and without antenna), the operation succeed because network coverage is good where I am.

I would like to know if this is an expected behavior ?

If so, is there a way to detect whether an antenna is connected or not ? Ideally, I need to detect the antenna presence prior to enabling cellular, but this might no be doable.

Maybe using SNR or something similar ? But I believe this would require the device to be already connected to the network ?

I found this documentation, but my hardware does not implement the required components/traces. https://docs.nordicsemi.com/bundle/nwp_033/page/WP/nwp_033/nwp_033_antenna_detect_magpio.html

Thanks !

Parents Reply Children
  • Hi Øyvind,

    Thanks for your quick response.

    The schematic is very similar to what is suggested.

    The code looks like this. I remove all the error checking to make it more readable.

    - Init() is called once at startup

    - Enable() is called whenever I need to restart/reconfigure the modem (for example, if the GPS was used)

    void CELLULAR_MODEM_Init(void)
    {
    	nrf_modem_lib_init();	
    	
    	// Indicate that the AUX pin is used/redirected for GPS
    	nrf_modem_at_printf("AT%%XANTCFG=1") ;
    		
    	// Setup COEX0 to be set to 1 when the frequency used by the modem is in GNSS range.
    	// Depending on the hardware, this is used to for either :
    	// - Enable the GPS frontend (LNA)
    	// - Enable power supply for an external active GPS antenna	
    	err = nrf_modem_at_printf("AT%%XCOEX0=1,1,1550,1615") ; 	// Using the entire LNA operating frequency range
    
    	lte_lc_init() ;
    }
    
    
    void CELLULAR_MODEM_Enable(void)
    {
    	// Make sure modem is stopped
    	nrf_modem_at_printf("AT+CFUN=0") ;
    
    	// Setup mode: enable LTE-M and NB-IOT. Disable GNSS.
    	nrf_modem_at_printf("AT%%XSYSTEMMODE=1,1,0,0") ;	// No preference: Auto
    		
    	// Start modem 		
    	nrf_modem_at_printf("AT+CFUN=1") ;
    
    	// Enable PSM
    	lte_lc_psm_req(enablePSM);
    
    	// Connect to netwrok
    	 lte_lc_connect_async(lte_handler);
    }

Related