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.

PGA460: Position Sensing System

Part Number: PGA460
Other Parts Discussed in Thread: , ENERGIA

Hello,

I am looking to use ultrasonic sensors (open-top sensors manufactured by muRata) as a position-determining system. I would like to mount one transducer to an object and use four or five ultrasonic sensors to determine the differences in time-of-flights to determine the location of the object. Would you recommend the usage of the PGA460? It seems that the PGA460 is most often used as a transducer and receiver. In my case, I'd just like to employ one transducer and multiple sensors that measure the difference in pulse arrival between themselves. Any help that you can provide is much appreciated.

Thank you!

Best,

Danny Morrow

  • Hello Danny,

    Yes, you can use a collection of PGA460 devices for a phased array / triangulation implementation. We have used muRata's open-top sensors for our own position-determining testing. The PGA460 does contain a command set for a burst+listen or listen-only mode. In your case, you would only issue the burst+listen command to the single sensor intended to transmit, while the other sensors are instructed to simultaneously listen-only via a broadcast command. The complete command listing is in Table 3 of the PGA460 datasheet.

    You will need to employ a bit of a system workaround to ensure the burst+listen and listen-only sequences are all synchronized. The best implementation is to use two USART (UART or SPI) buses: one bus dedicated to a single PGA460 that is both bursting and listening, and another bus dedicated to the remaining PGA460s intended to listen only. This would allow you to send both commands simultaneously. The PGA460 has a three bit address field, so you can have a total of eight devices on a single bus.
    Alternatively, if you are using a single bus for all PGA460 devices, you will need to first send a broadcast listen only command to all sensors, then immediately follow this command with a single address burst+listen to the transmitting PGA460 only. Some post-process alignment/offset of the burst and listen data will be required.
  • Hi Akeem,

    Thank you so much for your help. I am interested in using the PGA460, but I am concerned about size requirements for my project. Additionally, It seems that the PGA460 would be providing more than I would really need for my project. After all, I am merely looking to determine the time difference between peaks of the transmitted and reflected waves. Would you agree that the PGA460 is overqualified for this purpose? Any guidance you are able to provide is much appreciated. Thanks!

    Best,

    Danny Morrow

  • Hi Danny,
    I wouldn't say the PGA460 is over-qualified - it's only limitation for this type of application is that it is not multi-channeled.
    The PGA460 was designed to both transmit and receive, so I do agree that a receive-only variant of the device would be more efficient in size/cost for your receive-only sensors. The benefit of the PGA460 is that it offloads the post-processing of the echo data to simply return the time-of-flight, amplitude, and width of an echo.

    There are a few workarounds to optimize the size and cost of your solution, but this may hinder the accuracy of the tracking. Instead of allocating a PGA460 to each sensor, you can use one PGA460 and demultiplex the return path of your receive-sensor array. There are then three means of extracting the data:

    1) Run the burst+listen command for each receive sensor independently. This approach will take the longest, but ensure a full set of data is captured for each sensor. Assuming the tracking object is not moving very fast, the offset in accuracy my be negligible by the time all three receive sensors' data is captured. You can find an example of this mux/demux solution at: e2e.ti.com/.../603257

    2) Issue a singe burst+listen command, and use the analog front end output test mode to send the raw amplified data out to an external ADC-MCU. Depending on the known position of the demux, the raw data output will be known to be from receive-sensor 1, 2,or 3. This approach gives you full flexibility on selecting the external ADC's sample rate to limit data dropout as you switch between each sensor throughout the single record cycle. Since the echo data will be on the order of tens of kHz, a sample rate in the MSPS range should be able to capture the equivalent of a complete data set per sensor. The disadvantage to this solution is that the master controller will be required to DSP filter the data.

    3) Leverage the PGA460's USART direct data burst output mode to take advantage of the integrated 1MSPS ADC or DSP output. This solution is similar to option #2, but the entire PGA460 ADC and DSP processing can be taken advantage of. The direct data burst mode can only be used in USART (SPI without chip select) mode. In this mode, the master issues a burst+listen command, immediately sends a continuous 8MHz clock to the PGA460's RX, and the PGA460 will output data at 8-bit 1MSPS or 12-bit 500kSPS. The problem is that the PGA460 does not know you are demuxing data into the device from various sensors. This can make data parsing a challenge since only the 12-bit 500kSPS output has a sample counter (16 bits total: 4 bit counter, 12 bit data). 8-bit 1MSPS has not counter information.

    Let me know if any of these options are of interest, and we can go into more detail. Option #1 is the easiest to implement, but options #2-3 reduce scan-sample time and offer improved tracking accuracy.
  • Hi Akeem,

    Unfortunately, I am not very well-versed with micro-controllers and their inner-workings. I am attempting to learn the basics, but it is a lot! I'm hoping to understand what you've written previously in the coming days/weeks. Any idea where I might be able to learn the very basics of all of this? I'm a mechanical engineering student, so much of this is lost on me.

    Thanks,
    Danny Morrow
  • Hi Danny,
    Because the PGA460 is dependent on a physical sensor, I always recommend to start with the PGA460-Q1 EVM ( www.ti.com/.../boostxl-pga460 ) for some hands-on experience. The EVM & GUI will be able to give you a better idea as to what the PGA460 is capable of, so that when you start on your ultrasonic phased array project, the coding requirements will be more clear. You don't need to have a strong background in embedded processors to use the EVM-GUI.

    However, when you do get started on the custom software development, I do recommend that you look through the PGA460 Software Development Guide ( www.ti.com/.../slaa730 ) for a high-level overview of the PGA460 master controller requirements and flow. Then, you can start looking through the PGA460 Energia Library and Code Example ( www.ti.com/.../slac741 ) to see how this flow is implemented in software. The Energia code can be run on the PGA460-Q1 EVM hardware, so you can use the same hardware for both GUI evaluation and custom code development. I wrote the code in Energia since it is a user-friendly IDE for all types of engineers. The C++ based library is a bit more involved, but you shouldn't have to make heavy edits to these background files.