This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PGA450-Q1: PGA460-Q1 Small Form Factor Transformer Design

Part Number: PGA450-Q1
Other Parts Discussed in Thread: PGA460

Hello,

I implemented PGA460 small factor design in my design and I also added a booster because of my power supply from a LiSocl2 3.6 v battery and after boost i  got 7.3v output for PGA 460 and, I follow the code configuration which I mentioned in code section please find 

////////////////////////// Configuration variables//////////////////////////////////////////////////////////////////////////////////////////////////////////////
byte commMode = 0; // Communication mode: 0=UART, 1=TCI, 2=OneWireUART
byte fixedThr = 2; // set P1 and P2 thresholds to 0=%25, 1=50%, or 2=75% of max; initial minDistLim (i.e. 20cm) ignored
byte xdcr = 1; // set PGA460 to recommended settings for 0=Murata MA58MF14-7N, 1=Murata MA40H1S-R
byte agrTVG = 2; // set TVG's analog front end gain range to 0=32-64dB, 1=46-78dB, 2=52-84dB, or 3=58-90dB
byte fixedTVG = 1; // set fixed TVG level at 0=%25, 1=50%, or 1=75% of max
byte runDiag = 0; // run system diagnostics and temp/noise level before looping burst+listen command
byte edd = 0; // echo data dump of preset 1, 2, or neither
byte burn = 1; // trigger EE_CNTRL to burn and program user EEPROM memory
byte cdMultiplier = 1; // multiplier for command cycle delay
byte numOfObj = 2; // number of object to detect set to 1-8
byte uartAddrUpdate = 0; // PGA460 UART address to interface to; default is 0, possible address 0-7
bool objectDetected = false; // object detected flag to break burst+listen cycle when true
bool demoMode = false; // only true when running UART/OWU multi device demo mode
bool alwaysLong = false; // always run preset 2, regardless of preset 1 result (hard-coded only)
double minDistLim = 0.1; // minimum distance as limited by ringing decay of single transducer and threshold masking
uint16_t commandDelay = 1; // Delay between each P1 and Preset 2 command

ULTRASONIC_boost-pcb-3d.pdf
uint32_t baudRate = 9600; // UART baud rate: 9600, 19200, 38400, 57600, 74800, 115200

and Schematic and layout also attached please find but I can't get the range it's measure only up to 100cm distance Please help if anyone found a mistake in PGA460 configuration or schematic.ULTRASONIC_boost.pdf

  • Yogesh,

    My apologies, but our resident PGA460 expert is out of the office for a few days, so please expect a reply from him next week.
  • Hi Yogesh,

    Your schematic and PCB look good.
    You are using a transformer based design, but have selected on the COM port:
    ...
    byte xdcr = 1; // set PGA460 to recommended settings for 0=Murata MA58MF14-7N, 1=Murata MA40H1S-R
    ...

    The Murata MA40H1S-R settings are for half-bridge direct drive mode, which sets the driver current limit to a value of 50mA (the minimum setting). 50mA is ineffective for transformer driven solutions, which may explain why you can only see upwards of 100cm. Try setting xdcr=0 for the Murata MA58MF14-7N, which is a recommended transformer driven register configuration.

    Also, if you have previously optimized your settings on the EVM, you can add an additional case statement to the defaultPGA460 function in the PGA460_USSC.cpp file to manually import these optimized settings as a hardcoded configuration for you to call through the COM port as xdcr=2 when prompted. There should already be a placeholder for this option that you can update as:

    //*** Custom bulk EE config - BEGIN ***//
    case 2: // user custom
    {
    USER_DATA1 = 0x00;
    USER_DATA2 = 0x00;
    USER_DATA3 = 0x00;
    USER_DATA4 = 0x00;
    USER_DATA5 = 0x00;
    USER_DATA6 = 0x00;
    USER_DATA7 = 0x00;
    USER_DATA8 = 0x00;
    USER_DATA9 = 0x00;
    USER_DATA10 = 0x00;
    USER_DATA11 = 0x00;
    USER_DATA12 = 0x00;
    USER_DATA13 = 0x00;
    USER_DATA14 = 0x00;
    USER_DATA15 = 0x00;
    USER_DATA16 = 0x00;
    USER_DATA17 = 0x00;
    USER_DATA18 = 0x00;
    USER_DATA19 = 0x00;
    USER_DATA20 = 0x00;
    TVGAIN0 = 0xAA;
    TVGAIN1 = 0xAA;
    TVGAIN2 = 0xAA;
    TVGAIN3 = 0x82;
    TVGAIN4 = 0x08;
    TVGAIN5 = 0x20;
    TVGAIN6 = 0x80;
    INIT_GAIN = 0x60;
    FREQUENCY = 0x8F;
    DEADTIME = 0xA0;
    if (comm == 2)
    {
    PULSE_P1 = 0x80 | 0x04;
    }
    else
    {
    PULSE_P1 = 0x04;
    }
    PULSE_P2 = 0x50; //UART_ADDR=2
    CURR_LIM_P1 = 0x55;
    CURR_LIM_P2 = 0x55;
    REC_LENGTH = 0x19;
    FREQ_DIAG = 0x33;
    SAT_FDIAG_TH = 0xEE;
    FVOLT_DEC = 0x7C;
    DECPL_TEMP = 0x4F;
    DSP_SCALE = 0x00;
    TEMP_TRIM = 0x00;
    P1_GAIN_CTRL = 0x09;
    P2_GAIN_CTRL = 0x09;
    break;
    }
    //*** Custom bulk EE config - END ***//

    You can add as many case statements as necessary.

    Also, note that you do not have to burn the EEPROM contents each time you run the COM terminal unless you want to save the latest settings to the device.