Hi Akeem Whitehead,
I am Umut BAKIR from TURKEY. I am a Senior Computer Engineer in ICterra Inc. I use the double PGA460 module for measuring distance between 25cm - 200 cm on our own electronic board. With my threshold values I successfully get time of flight with an accuracy of ~1 cm greater than 60 cm distances.
But if my object (wall) is near than 60 cm to my transducers, I get the time of flight values so differency , of course wrong values.
I use the monostatic closed top transducer (TR + RCV) 40 kHz. Here is: https://urun.gittigidiyor.com/otomobil-motor-aksesuar/yedek-park-sensoru-gozu-tekli-beyaz-481899786
I communicate with each PGA via different UART ports in MCU on our board. Here is my PGA's eeprom and register values that I used on our own board.
I use only preset 1 for measuring distance. Here is my algorithm
1. I send "B+L with Preset 1" (0x00) command both of the PGA
2. Wait 20 ms (milliseconds)
3. I send get "Ultrasonic measurement result (0x05)" command and get "time of flight value"
4. Calculate distance
--------------------------------------- EEPROM Parameters------------------------------------------------
#define TVGAIN0 0x47 // T0 Start Time: 600us, TO/T1 Delta Time: 1200us
#define TVGAIN1 0x78 // T1/T2 Delta Time: 1200us T2/T3 Delta Time: 1400us
#define TVGAIN2 0xC7 // T3/T4 Delta Time: 4000us T4/T5 Delta Time: 1200us
#define TVGAIN3 0x18 //
#define TVGAIN4 0x64
#define TVGAIN5 0xA4
#define TVGAIN6 0xC0
#define INIT_GAIN 0x00
#define FREQUENCY 0x32
#define DEADTIME 0xF0
#define PULSE_P1 0x08
#define PULSE_P2 0x08
#define CUR_LIM_P1 0x80
#define CUR_LIM_P2 0x80
#define REC_LENGTH 0x88
#define FREQ_DIAG 0x00
#define SAT_FDIAG_TH 0x00
#define FVOLT_DEC 0x00
#define DECPL_TEMP 0x09
#define DSP_SCALE 0x00
#define TEMP_TRIM 0x00
#define P1_GAIN_CTRL 0x00
#define P2_GAIN_CTRL 0x00
#define P1_THR_0 0x67
#define P1_THR_1 0x9A
#define P1_THR_2 0x36
#define P1_THR_3 0x66
#define P1_THR_4 0x66
#define P1_THR_5 0x7B
#define P1_THR_6 0xF7
#define P1_THR_7 0x86
#define P1_THR_8 0x32
#define P1_THR_9 0x94
#define P1_THR_10 0xA5
#define P1_THR_11 0x28
#define P1_THR_12 0x28
#define P1_THR_13 0x28
#define P1_THR_14 0x28
#define P1_THR_15 0x00
#define P2_THR_0 0xAA // T1: 2400 T2: 2400
#define P2_THR_1 0xAA // T3: 2400 T4: 2400
#define P2_THR_2 0xAA // T5: 2400 T6: 2400
#define P2_THR_3 0xAA // T7: 2400 T8: 2400
#define P2_THR_4 0xAA // T9: 2400 T10: 2400
#define P2_THR_5 0xAA // T11: 2400 T12: 2400
#define P2_THR_6 0xCC
#define P2_THR_7 0xAA
#define P2_THR_8 0xAA
#define P2_THR_9 0xAA
#define P2_THR_10 0xAA
#define P2_THR_11 0xAA
#define P2_THR_12 0xAA
#define P2_THR_13 0xAA
#define P2_THR_14 0xAA
#define P2_THR_15 0xAA
---------------------------------------------------------------------------------------------------------------------
I read all of your documents (Software Development Guide, FAQs Guide, Datasheet) and watched all videos about that topic. But I can not solve my problem. Please help me about this issue.
My best regards.