Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| test-and-measurement:analog-discovery-pro-5250:transistor-tester [2022/08/17 15:15] – [Testing] Arthur Brown | test-and-measurement:analog-discovery-pro-5250:transistor-tester [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== High Voltage Transistor Tester with the Analog Discovery Pro 5250 ====== | ||
| + | |||
| + | <WRAP center round todo 60%> | ||
| + | This page is under construction. | ||
| + | </ | ||
| + | |||
| + | <WRAP group> | ||
| + | While you can use the [[test-and-measurement: | ||
| + | </ | ||
| + | ---- | ||
| + | |||
| + | ===== Inventory ===== | ||
| + | <WRAP group> | ||
| + | === Hardware === | ||
| + | * [[test-and-measurement: | ||
| + | * [[https:// | ||
| + | * 2x 10W 51Ω ceramic resistors | ||
| + | |||
| + | === Software === | ||
| + | * WaveForms SDK (installed with [[software: | ||
| + | * [[https:// | ||
| + | * a text editor of your choice | ||
| + | **Note:** //In this demo, the Python package created in the [[test-and-measurement: | ||
| + | </ | ||
| + | ---- | ||
| + | |||
| + | ===== Connecting the Transistor to the ADP5250 ===== | ||
| + | <WRAP group>< | ||
| + | In this test, the drain current versus the drain-source voltage of the selected MOSFET will be plotted for varying gate-source voltages. Connect the gate of the transistor to the waveform generator and the source to the ground. | ||
| + | |||
| + | To limit the maximum drain current to the maximum output current of the supplies, a $R=\frac{V}{I}=\frac{V_{+}-V_{-}}{I}=\frac{25V+25V}{0.5A}=100Ω$ resistor is needed in series with the transistor. | ||
| + | |||
| + | The maximum output current of the ADP5250 on the +25V and -25V supplies is 500mA, so the maximum power dissipated by the resistor, in the case of an ideal switch instead of the MOSFET (with 0Ω resistance), | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | |||
| + | <WRAP group>< | ||
| + | Connect the ampere meter of the DMM in series with the resistors. As the ampere meter and the voltmeter use the same reference, which is already connected to the drain, connect the positive lead of the voltmeter to the source of the MOSFET. The measured voltage will be inverted, but the results can be multiplied with -1 from software. | ||
| + | |||
| + | <WRAP center round important 80%> | ||
| + | Use the high scale ampere meter on the DMM! | ||
| + | </ | ||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | |||
| + | ===== Writing the Script ===== | ||
| + | <WRAP group> | ||
| + | The full script can be downloaded {{ : | ||
| + | </ | ||
| + | |||
| + | <WRAP group>< | ||
| + | Import the necessary packages into your script and define the measurement parameters. | ||
| + | </ | ||
| + | from WF_SDK import device, supplies, wavegen, dmm # import instruments | ||
| + | import time # needed for delays | ||
| + | import matplotlib.pyplot as plt # needed for plotting | ||
| + | |||
| + | """ | ||
| + | |||
| + | # parameters | ||
| + | Vd_resolution = 500 # drain voltage resolution in mV | ||
| + | Vd_limit = 40 # maximum drain voltage in V | ||
| + | Vg_resolution = 2 # gate voltage resolution in V | ||
| + | Vg_limit = 12 # maximum gate voltage in V | ||
| + | delay_time = 0.1 # time between samples in seconds | ||
| + | transistor = " | ||
| + | </ | ||
| + | |||
| + | <WRAP group>< | ||
| + | Connect to the device, initialize the digital multimeter and generate the lists of voltages which will be generated in the following. Also create empty lists for the results. | ||
| + | </ | ||
| + | # connect to the device | ||
| + | device_handle, | ||
| + | |||
| + | # check for connection errors | ||
| + | device.check_error(device_handle) | ||
| + | |||
| + | """ | ||
| + | |||
| + | # initialize the scope | ||
| + | dmm.open(device_handle) | ||
| + | |||
| + | # generate voltages list | ||
| + | Vd = range(0, int((Vd_limit | ||
| + | Vg = range(Vg_resolution * 1000, int((Vg_limit + Vg_resolution) * 1000), int(Vg_resolution * 1000)) | ||
| + | |||
| + | # convert from mV to V | ||
| + | Vd = [element / 1000 for element in Vd] | ||
| + | Vg = [element / 1000 for element in Vg] | ||
| + | |||
| + | # create empty lists for the results | ||
| + | Vds = [[] for _ in Vg] | ||
| + | Id = [[] for _ in Vg] | ||
| + | </ | ||
| + | |||
| + | <WRAP group>< | ||
| + | Step through the list of gate-source voltages. Output every voltage on the waveform generator. | ||
| + | |||
| + | For every gate-source voltage, step through the list of drain voltages, outputting each on the +25V supply. After the voltage change is commanded, wait a bit for the supply voltage to settle, then use the digital multimeter to measure the drain-source voltage and the drain current. Don't forget to invert the voltage. | ||
| + | </ | ||
| + | try: | ||
| + | index = 0 | ||
| + | for gate_voltage in Vg: | ||
| + | # set the gate voltage | ||
| + | print(" | ||
| + | wavegen.generate(device_handle, | ||
| + | for drain_voltage in Vd: | ||
| + | print(" | ||
| + | # set the drain voltage | ||
| + | if drain_voltage > 25: | ||
| + | supplies.switch_25V(device_handle, | ||
| + | else: | ||
| + | supplies.switch_25V(device_handle, | ||
| + | |||
| + | # delay | ||
| + | time.sleep(delay_time) | ||
| + | |||
| + | # measure the drain-source voltage | ||
| + | Vds[index].append((-1) * dmm.measure(device_handle, | ||
| + | |||
| + | # measure the drain current | ||
| + | Id[index].append(dmm.measure(device_handle, | ||
| + | index += 1 | ||
| + | except: | ||
| + | pass | ||
| + | |||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | <WRAP group>< | ||
| + | When the measurement is finished, close every instrument and disconnect from the device. | ||
| + | </ | ||
| + | # reset the scope | ||
| + | dmm.close(device_handle) | ||
| + | |||
| + | # reset the wavegen | ||
| + | wavegen.close(device_handle) | ||
| + | |||
| + | # reset the power suplpies | ||
| + | supplies.switch_25V(device_handle, | ||
| + | supplies.close(device_handle) | ||
| + | |||
| + | # close the connection | ||
| + | device.close(device_handle) | ||
| + | </ | ||
| + | |||
| + | <WRAP group>< | ||
| + | Finally, plot the results. | ||
| + | </ | ||
| + | # plot results | ||
| + | for index in range(len(Vg)): | ||
| + | try: | ||
| + | plt.plot(Vds[index], | ||
| + | except: | ||
| + | pass | ||
| + | plt.xlabel(r" | ||
| + | plt.ylabel(r" | ||
| + | plt.legend() | ||
| + | plt.title(transistor) | ||
| + | plt.show() | ||
| + | </ | ||
| + | ---- | ||
| + | |||
| + | ===== Testing ===== | ||
| + | <WRAP group>< | ||
| + | Turn on the ADP5250 and start the script. Wait for it to finish. You can save the plotted results by clicking on the respective button. Compare your results to the one presented in the datasheet of the transistor. | ||
| + | |||
| + | <WRAP center round important 80%> | ||
| + | The resistors and the MOSFET might get hot! Don't let the setup unsupervised!!! | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | {{ : | ||
| + | </ | ||
| + | ---- | ||
| + | |||
| + | ===== Next Steps ===== | ||
| + | <WRAP group> | ||
| + | For more guides on how to use your Digilent Test & Measurement Device, return to the device' | ||
| + | |||
| + | For information on the Transistor Tester Adapter, check out its [[test-and-measurement: | ||
| + | |||
| + | For technical support, please visit the [[https:// | ||
| + | </ | ||

