'**************************************************************************** 'Module HP3457 'This module contains I/O subroutines for the HP3457. ' 'The following parameters must be present in param.inc. 'gpibinP%, the GPIB input file number 'gpiboutP%, the GPIB output file number 'hp3457addrP%, the HP3457 GPIB address '**************************************************************************** 'Open the parameter file REM $INCLUDE: 'param.inc' SUB hp3457cmon (c%) '**************************************************************************** 'This routine displays the voltage applied to a specified channel of the 'HP3457 DVM on the front panel. Voltages can be monitored while the 'program is running. ' 'Input: ' c%, the DVM channel to read and display ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '5/23/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Preset the HP3457 PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" 'Set the input source to rear terminal PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TERM REAR" 'Set the channel to read PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";CHAN " + STR$(c%) 'Set the A/D integration time PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";NPLC 10" 'Trigger the reading PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TRIG AUTO" END SUB SUB hp3457ctc (c%, tc!) '**************************************************************************** 'This routine reads the temperature from a thermistor connected to a 'specified channel of the HP3457 DVM. ' 'Input: ' c%, the DVM channel to read ' 'Output: ' tc!, the measured temperature in degrees Celsius ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '6/10/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Preset the HP3457 PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" 'Set the input source to rear terminal PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TERM REAR" 'Set the channel to read PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";CHAN " + STR$(c%) 'Set the number of power line cycles to reject noise (affects resolution) PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";NPLC 10" 'Set the function to measure resistance, autorange, % resolution PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";FUNC OHM, AUTO, .01" 'Set up the math function to convert resistance to temperature PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";MATH CTHRM" 'Trigger the reading PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TRIG SGL" 'Get the reading PRINT #gpibout%, "ENTER " + hp3457addr$ INPUT #gpibin%, tc! 'Put the DVM back in a high impedance state PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" END SUB SUB hp3457cv (c%, v!) '**************************************************************************** 'This routine reads the voltage applied to a specified channel of the 'HP3457 DVM. ' 'Input: ' c%, the DVM channel to read ' 'Output: ' v!, the measured voltage ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '4/21/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Preset the HP3457 PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" 'Set the input source to rear terminal PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TERM REAR" 'Set the channel to read PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";CHAN " + STR$(c%) 'Set the A/D integration time PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";NPLC 10" 'Trigger the reading PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TRIG SGL" 'Get the reading PRINT #gpibout%, "ENTER " + hp3457addr$ INPUT #gpibin%, v! END SUB SUB hp3457init '**************************************************************************** 'This subroutine initializes the HP3457. ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '4/19/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Message PRINT PRINT "Resetting the HP3457..." 'Clear the HP3457 PRINT #gpibout%, "CLEAR " + hp3457addr$ 'Preset PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" 'Display the ID PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";ID?" PRINT #gpibout%, "ENTER " + hp3457addr$ LINE INPUT #gpibin%, id$ PRINT id$ END SUB SUB hp3457preset '**************************************************************************** 'This subroutine presets the HP3457. ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '8/18/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Preset the HP3457 PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" END SUB SUB hp3457readtc (tc!) '**************************************************************************** 'This routine reads the temperature from a thermistor connected to 'the HP3457 DVM. It assumes the subroutine hp3457setuptc has already 'been called to set up the DVM for the measurement. ' 'Output: ' tc!, the measured temperature in degrees Celsius ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '8/18/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Trigger the reading PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TRIG SGL" 'Get the reading PRINT #gpibout%, "ENTER " + hp3457addr$ INPUT #gpibin%, tc! END SUB SUB hp3457readv (v!) '**************************************************************************** 'This routine reads the voltage applied to a specified channel of the 'HP3457 DVM. The meter is assumed to have been already configured. ' 'Output: ' v!, the measured voltage ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '8/18/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Trigger the reading PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TRIG SGL" 'Get the reading PRINT #gpibout%, "ENTER " + hp3457addr$ INPUT #gpibin%, v! END SUB SUB hp3457setuptc (c%) '**************************************************************************** 'This subroutine sets up the HP3457 to read temperatures in deg C from a 'specified channel. ' 'Input: ' c%, the DVM channel to read ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '8/18/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Preset the HP3457 PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" 'Set the input source to rear terminal PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TERM REAR" 'Set the channel to read PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";CHAN " + STR$(c%) 'Set the number of power line cycles to reject noise (affects resolution) PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";NPLC 10" 'Set the function to measure resistance, autorange, % resolution PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";FUNC OHM, AUTO, .01" 'Set up the math function to convert resistance to temperature PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";MATH CTHRM" END SUB SUB hp3457setupv (c%) '**************************************************************************** 'This subroutine sets up the HP3457 to read the voltage from a specified 'channel. ' 'Input: ' c%, the DVM channel to prepare ' 'Inputs from param.inc: ' gpibinP%, GPIB input file number ' gpiboutP%, GPIB output file number ' hp3457addrP%, the HP3457 GPIB address ' 'Zachary Wolf '8/18/94 '**************************************************************************** 'Get the GPIB I/O file numbers and the HP3457 address from the parameters gpibin% = gpibinP% gpibout% = gpiboutP% hp3457addr% = hp3457addrP% 'Put the address number into a string hp3457addr$ = STR$(hp3457addr%) 'Set the GPIB terminators PRINT #gpibout%, "TERM IN CR LF" PRINT #gpibout%, "TERM OUT CR LF EOI" 'Preset the HP3457 PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";PRESET" 'Set the input source to rear terminal PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";TERM REAR" 'Set the channel to read PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";CHAN " + STR$(c%) 'Set the A/D integration time PRINT #gpibout%, "OUTPUT " + hp3457addr$ + ";NPLC 10" END SUB