Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

Driving Ultrasonic Transducer

Other Parts Discussed in Thread: TDC1000, TDC7200

Because my system needs higher power for the ultrasonic transducer, I need to drive the transducer with higher voltage.

I came up with following ideas driving transducer with 10V peak to peak voltage.

a) High = 10V, Low = 0 V

b) High = 5V, Low = 0V

Method a) works with negative connection tied to ground, and positive connection oscillating between 0V and 10V.

Method b) works without negative connection tied to ground. Rather, both negative and positive connection is driven with 5V high and 0V low oscillation, but with 180 degree phase shifted resulting in POS-NEG oscillating between (-5V ~ +5V). 

Is there difference between the two methods? Or Does it depend on transducers?

Thank you.

  • Steve,
    Sorry but we're really transducer experts here. My understanding is you can view the transducer either way. The issue with driving it via Method B is unless you protect the LNA input (RX1/2) you will overload the TDC1000 inputs.

    I'd suggest you look at the TDC1000-GASEVM schematic of the TDC1000-BSTEVM for an example of input protection.
    www.ti.com/.../sniu026a.pdf

    Best regards,
  • We refer to "method a" as single-ended excitation of transducer and to "method b" as the differential excitation method, please see the application note SNAA284 " Analog Electronics Design to Improve Performance of Ultrasonic Gas Flow Meter" for more details.
    www.ti.com/.../technicaldocuments

    Differential driving of ultrasonic transducers (and differentially receiving of the signal) is advantageous but not always possible if in the application one end of the transducer is grounded; e.g. in some brass type ultrasonic flow meter sensors, one end of each transducer is grounded to the pipe, and hence, the differential method is not possible.
  • Hi Bahram,

    I am working with a gas sensor that has a piezo electric sensor attached at each end. The gas enters through one barb at one end and leave through the other end. I am evaluating the TDC1000/TDC7200 and TDC1000-GASEVM boards as an alternate way to measure the gas flow and concentration through our  sensor. This sensor is basically a short plastic tube, 1 inch long with the barbs closer to the ends where the piezo-electric pieces are inserted. This is a 40KHz  sensor and each end has two connections/leads epoxied into the piezo material.  The goal is being able to measure the gas flow circulating through the tube as well as the concentration of the gas. You can visualize the two barbs pointing upwards, one for the gas coming  in and the other one for the gas going out.  I hooked the sensor up to the TDC1000-GASEVM board. The left side of the sensor has two leads so I connected them to TX1/RX1. And the right side I connected them to TX2/RX2. I believe this is MODE 2 connection?  I tried to run it with a configuration based on this post:  http://e2e.ti.com/support/sensor/ultrasonic/f/991/p/430539/1546847?keyMatch=TDC1000-GASEVM 

     Which Mode will this be to configure in the GUI? 

    2. Can the booster TDC1000-BST board be altered so a it can take a differential input?  I noticed there is this guide: SNAA28A. Based on this it makes me think that the TDC1000-GASEVM board wasn't designed for a differential excitation input.  Is this correct? if so then we need to implement the circuit suggested in that report to be able to use the differential excitation method.  Right?  is there another way to accomplish this with the  TDC1000-GASEVM board ? What mode will take a differential input?

    I appreciate your help with these questions.

    Thanks!

    Sofia

  • Hi,

    First make sure you are seeing the TX excitation pulses on the transducer. For this connect TDC1000GASEVM+TDC1000BSTEVM board  (don't have to connect the transducer now) to the PC and start the GUI and once the GUI connects successfully try the following:

    1. Since you are using 40kHz transducer, make sure

    a) JP6 jumper on the board chooses CPU as the clock

    b) In the GUI setup tab, make sure TDC_CLK_SOURCE_SEL is chosen as "CPU_CLK" to correspond to JP6 jumper selection. Then select "CPU_CLK_EN" and leave the CPU_CLK_FREQ as "1.2632MHz". If you probe JP6, jumper you should see 1.2632MHz clock on the scope.

    c) Also, in the setup tab, select TDC-HV Boost Power Enable EN and TDC1000-HV Driver EN1 options as shown in screen shot below.

    d) In the GUI, you go to TDC1000 register tab and select TX_FREQ_DIV of CONFIG0 register as "Divide by 32" (as 1.2632MHz/32 = 39.475kHz).

    e) Select NUM_TX of CONFIG0 as 4 Pulses. Don't worry about TOF measure mode selection now. Also make sure in TDC1000 register tab "CONTINUOUS TRIGGER" switch is GREEN as shown in screen shot below.

    f) When CH_SEL in CONFIG2 is selected as TX1, and you probe TX1 pin (J1) of the TDC1000-BSTEVM, you should see 4 30V pulses (40kHz freq) as shown below

    Let me know if you are able to get this TX excitation pulses working. Then we try the RX section.

    2. BSTEVM cannot support differential excitation. That is something you have to make based on SNAA284 circuit shown.

    Thanks,

    Vishy

  • Thank you Vishy. The configuration you showed above is exactly what I have tried. I am able to measure the CPU_CLK FREQ at the JP6 jumper which is about 1.2632MHz. However, I haven't been able to get the TX excitation pulse to work. Any other configuration parameters I should adjust to generate the TX pulses? What is the yellow pulse shown above?
    I connected a two wire PT1000 rtd as well just to see if I was able to read temperature but not sure if the configuration I shown above is the correct one. under the Temperature tab once I clicked on "Start measure temp" button the values shown on the "TEMP 1 avg value" box are negative values (i.e. -83.0136) which doesn't make sense.
    Thanks!
    Adriana
  • Pls check you see 30V at test point TP2 of the BSTEVM. Also, note in the setup tab, I chose EN1 period of 500us. That's important. Yellow pulse is the start pulse. Thanks.
  • Yes, I did check TP2 and it is at 30V as well as TP3 which is at 3.66V. The EN1 has a period of 500 us. I am not able to even see the start pulse either. I am trying to measure the TX pulse from J1 (connected the probe on the left terminal of J1 and GND on the right terminal of J1) but nothing is being generated yet. Thanks!
  • Adriana,

    You don't need to have sensor hooked up to see the transmit pulses. If you have the EVM setup (GASEVM + BSTEVM) connected to the PC and the GUI successfully connected to the board, then you should be able to see the transmit pulses for the above settings I explained. Please let me know what's your GUI version and Firmware version. Please upload a screen shot of your setup tab and TDC1000 register tab. I assume you are using the latest GUI v1.2.7.1 from the web.

    Thanks,
    Vishy
  • Hi Vishy,  I don't have any sensor connected to the board.  This is the configuration. There are no pulses on Tx1. 

  • In the setup tab, I don't see "TDC1000 HV Boost Power Enable ON" selected. This should be set.

    Also, you can check the TX1 pin (J5.12) on the TDC1000GASEVM board. You should see 4 pulses at 3.6V.  By the way, is your scope probe setup to trigger on the start pulse going high (while a second probe connected to TX1)?

    Thanks,

    Vishy

  •  Opps I must have overlooked that one. Since the clock stopped working I closed the GUI and opened it back in.  which solved the issue with the clock but still no other pulse is present on the board. 

  • a) Please review the TDC1000GASEVM user's guide. Section 13 has TDC1000GASEVM Schematic. Section 15 has BSTEVM Schematic. Both schematics highlight with a big red X all the "Do Not Populate" components. The components you point are DNP and not populated in my board as well.

    b) You need two scope probes: One probe to trigger on the start pulse (TP7 on the blue board)going high while a second probe connected to TX1 (could be J5.10 on blue board or J1.1 on the green board) so you can see the transmit pulses.

    c) You can also check if TRIG is happening every 200ms. Probe JP5 on the blue board to see this. TDC1000 generates the TX pulses on receiving the TRIG.

    Thanks,
    vishy

  • a) I enclose here a "TDC1000GASEVM_TX_TEST.txt" config file. From the GUI, you can load this config file when you start to debug. It automatically sets up all the parameters and registers for  you. If you modify something, you can save and update the file as well. You do config file load and save operations by using "Load Config" and "Save Config" buttons of the TDC1000 (or TDC7200) tab of the GUI. 

    1462.TDC1000GASEVM_TX_TEST.txt
    TDC1000_Config0                         44
    TDC1000_Config1                         41
    TDC1000_Config2                         00
    TDC1000_Config3                         05
    TDC1000_Config4                         5F
    TDC1000_TOF-1                           40
    TDC1000_TOF-0                           1E
    TDC1000_Error_Flags                     00
    TDC1000_Timeout                         23
    TDC1000_Clock_Rate                      01
    TDC1000_Conts_Trigger                   01
    TDC7200_Config1                         02
    TDC7200_Config2                         40
    TDC7200_Interrupt_Status                00
    TDC7200_Interrupt_Mask                  07
    TDC7200_Coarse_Cntr_Ov_H                FF
    TDC7200_Coarse_Cntr_Ov_L                FF
    TDC7200_Clock_Cntr_Ov_H                 FF
    TDC7200_Clock_Cntr_Ov_L                 FF
    TDC7200_Clock_Cntr_Stop_Mask_H          00
    TDC7200_Clock_Cntr_Stop_Mask_L          00
    TRIGGER_UPDATE_FREQ                     0001
    TDC_AVG/STDEV_NUM_ELEMS                 000A
    SAVE_GRAPH_DATA_TO_FILE                 00
    FLOW_MODE_SELECT                        00
    Y-SCALE_CENTER                          0032
    X-SCALE_RANGE                           0032
    MEASURE_RTD1                            00
    SAVE_RESULT_REGR_TO_FILE                00
    GRAPH_MULTI_STOPS                       00
    TDC_SELECT                              00
    TEMP_RTD_SELECT                         00
    TEMP_RTD_MODE                           01
    TEMP_AVG/STDEV_NUM_ELEMS                000A
    SAVE_TEMP_DATA                          00
    GRAPH_YMAX_DATA                         00000000004C4B40
    GRAPH_YMIN_DATA                         0000000000030D40
    TDC1000-HV_DRV_EN1                      01
    TDC1000-HV_DRV_EN2                      00
    HV_DRV_EN1_Period                       01F4
    HV_DRV_EN2_Period                       001E
    ENABLE_POWER_CYCLE                      00
    CLK_FREQ_(1-16MHz)                      1.263200
    CLK_SOURCE_SEL                          03
    CPU_CLK_FREQ                            05
    CPU_CLK_EN                              01
    TDC1000-HV_BST_PWR_EN                   01
    HV_BST_PWR_EN_Period                    0000
    FWD2REV_FLOW_DELAY                      0000
    TDC1000-IMPE_MATCH_EN                   00
    ENABLE_UART_STREAM                      00
    ENABLE_MSP430TIMER_TDC                  00

    b) I enclose below another scope shot

    CH1 Yellow is connected to TP7 (start pulse). 

    CH2 Green is the CPU TRIG (JP5) (following which the START is generated)

    CH3 Purple is J5.12 TX1 pulses before amplification

    CH4 Pink is green board TX1 (J1.1) shows the amplified TX pulses

    You should first see J5.10 TX1 pulses coming properly before seeing amplified TX1 pulses on the green board. 

    Thanks,

    Vishy

  • I post below an updated config file that selects TX pulse freq of 40kHz based on the CPU clock.

    TDC1000GASEVM_TX_TEST_02.txt
    TDC1000_Config0                         84
    TDC1000_Config1                         41
    TDC1000_Config2                         00
    TDC1000_Config3                         01
    TDC1000_Config4                         5F
    TDC1000_TOF-1                           C3
    TDC1000_TOF-0                           FF
    TDC1000_Error_Flags                     00
    TDC1000_Timeout                         23
    TDC1000_Clock_Rate                      01
    TDC1000_Conts_Trigger                   01
    TDC7200_Config1                         02
    TDC7200_Config2                         40
    TDC7200_Interrupt_Status                00
    TDC7200_Interrupt_Mask                  07
    TDC7200_Coarse_Cntr_Ov_H                FF
    TDC7200_Coarse_Cntr_Ov_L                FF
    TDC7200_Clock_Cntr_Ov_H                 FF
    TDC7200_Clock_Cntr_Ov_L                 FF
    TDC7200_Clock_Cntr_Stop_Mask_H          00
    TDC7200_Clock_Cntr_Stop_Mask_L          00
    TRIGGER_UPDATE_FREQ                     0001
    TDC_AVG/STDEV_NUM_ELEMS                 000A
    SAVE_GRAPH_DATA_TO_FILE                 00
    FLOW_MODE_SELECT                        00
    Y-SCALE_CENTER                          0032
    X-SCALE_RANGE                           0032
    MEASURE_RTD1                            00
    SAVE_RESULT_REGR_TO_FILE                00
    GRAPH_MULTI_STOPS                       00
    TDC_SELECT                              00
    TEMP_RTD_SELECT                         00
    TEMP_RTD_MODE                           01
    TEMP_AVG/STDEV_NUM_ELEMS                000A
    SAVE_TEMP_DATA                          00
    GRAPH_YMAX_DATA                         00000000004C4B40
    GRAPH_YMIN_DATA                         0000000000030D40
    TDC1000-HV_DRV_EN1                      01
    TDC1000-HV_DRV_EN2                      00
    HV_DRV_EN1_Period                       01F4
    HV_DRV_EN2_Period                       001E
    ENABLE_POWER_CYCLE                      00
    CLK_FREQ_(1-16MHz)                      1.263200
    CLK_SOURCE_SEL                          03
    CPU_CLK_FREQ                            05
    CPU_CLK_EN                              01
    TDC1000-HV_BST_PWR_EN                   01
    HV_BST_PWR_EN_Period                    0000
    FWD2REV_FLOW_DELAY                      0000
    TDC1000-IMPE_MATCH_EN                   00
    ENABLE_UART_STREAM                      00
    ENABLE_MSP430TIMER_TDC                  00

    Thanks,

    Vishy

  • I corrected J5.12 to J5.10 in the above posting as J5.10 corresponds to TX1 (not J5.12). That's the pin to see 3.6V TX1 pulses.

    Thanks, Vishy
  • how would you connect the transducer to measure air flow?  What mode would you use to measure flow and which one for concentration?

    Thanks!

  • You can connect the two leads from the left side of the sensor (you describe before) between TX1 and GND (J1 block or through hole). Similarly connect the two leads from the right side of the sensor between TX2 and GND (J2). See an example below

    You can start with the enclosed sample config file and try. You have to do a fair amount of experimentation to get the sensor working. I have set it up as Mode 1 to start so you are using the sensor in pitch/catch mode. Look at the START, STOP and COMP_IN signals and experiment by changing the number of TX pulses and echo threshold settings.

    TDC1000GASEVM_RX_TEST.txt
    TDC1000_Config0                         8B
    TDC1000_Config1                         45
    TDC1000_Config2                         01
    TDC1000_Config3                         02
    TDC1000_Config4                         1F
    TDC1000_TOF-1                           A0
    TDC1000_TOF-0                           1E
    TDC1000_Error_Flags                     00
    TDC1000_Timeout                         63
    TDC1000_Clock_Rate                      01
    TDC1000_Conts_Trigger                   01
    TDC7200_Config1                         02
    TDC7200_Config2                         44
    TDC7200_Interrupt_Status                00
    TDC7200_Interrupt_Mask                  07
    TDC7200_Coarse_Cntr_Ov_H                FF
    TDC7200_Coarse_Cntr_Ov_L                FF
    TDC7200_Clock_Cntr_Ov_H                 FF
    TDC7200_Clock_Cntr_Ov_L                 FF
    TDC7200_Clock_Cntr_Stop_Mask_H          00
    TDC7200_Clock_Cntr_Stop_Mask_L          00
    TRIGGER_UPDATE_FREQ                     0001
    TDC_AVG/STDEV_NUM_ELEMS                 000A
    SAVE_GRAPH_DATA_TO_FILE                 00
    FLOW_MODE_SELECT                        01
    Y-SCALE_CENTER                          0032
    X-SCALE_RANGE                           0032
    MEASURE_RTD1                            00
    SAVE_RESULT_REGR_TO_FILE                00
    GRAPH_MULTI_STOPS                       00
    TDC_SELECT                              00
    TEMP_RTD_SELECT                         00
    TEMP_RTD_MODE                           01
    TEMP_AVG/STDEV_NUM_ELEMS                000A
    SAVE_TEMP_DATA                          00
    GRAPH_YMAX_DATA                         00000000004C4B40
    GRAPH_YMIN_DATA                         0000000000030D40
    TDC1000-HV_DRV_EN1                      01
    TDC1000-HV_DRV_EN2                      01
    HV_DRV_EN1_Period                       01F4
    HV_DRV_EN2_Period                       01F4
    ENABLE_POWER_CYCLE                      00
    CLK_FREQ_(1-16MHz)                      1.263200
    CLK_SOURCE_SEL                          02
    CPU_CLK_FREQ                            05
    CPU_CLK_EN                              01
    TDC1000-HV_BST_PWR_EN                   01
    HV_BST_PWR_EN_Period                    0000
    FWD2REV_FLOW_DELAY                      0000
    TDC1000-IMPE_MATCH_EN                   00
    ENABLE_UART_STREAM                      00
    ENABLE_MSP430TIMER_TDC                  00
    TDC1000-TX_DAMP_ENABLE                  00
    TX_DAMP_PERIOD                          001E
    TX_WAIT_PERIOD                          0003
    .

    thanks, Vishy