Commit | Line | Data |
---|---|---|
f6e94cb2 AT |
1 | # Quick script to use HP 3586C SLM |
2 | # as a rudimentary spectrum analyzer. | |
3 | ||
4 | use Device::SerialPort; | |
5 | ||
6 | # Set up the serial port | |
7 | # 19200, 81N on the USB ftdi driver | |
8 | my $port = Device::SerialPort->new("/dev/ttyUSB0"); | |
9 | $port->databits(8); | |
10 | $port->baudrate(19200); | |
11 | $port->parity("none"); | |
12 | $port->stopbits(1); | |
13 | ||
14 | # Initialize Prologix USB-GPIB Controller | |
15 | $port->write("++mode 1\n"); | |
16 | $port->write("++auto 1\n"); | |
17 | $port->write("++addr 16\n"); | |
18 | ||
19 | # Initialize HP 3586C | |
20 | $port->write("Remote\n"); | |
21 | $port->write("B3\n"); # Set BW Filter | |
22 | $port->write("T1\n"); # Terminate in 50 ohms | |
23 | $port->write("A1\n"); # Average: On | |
24 | ||
25 | # Frequency Sweep Definition | |
26 | $freq_start = 9250; | |
27 | $freq_end = 10250; | |
28 | $freq_increment = 1; | |
29 | $freq_index = $freq_start; | |
30 | while ($freq_index <= $freq_end) { | |
31 | push (@frequency, $freq_index); | |
32 | $freq_index = $freq_index + $freq_increment; | |
33 | } | |
34 | ||
35 | $scan_rep = 70; | |
36 | $scan_index = 1; | |
37 | print "#(kHz) (UNIXtime) (dBm)\n"; | |
38 | print "Freq Time Amplitude\n"; | |
39 | while ($scan_index <= $scan_rep) { | |
40 | print "# Starting Repetition: $scan_index\n"; | |
41 | # Gather and print the measurements | |
42 | # If you want to sweep faster, adjust the two sleep() statements. | |
43 | # Check manual for minimum settling times for your configuration of | |
44 | # BW filter, averaging, etc. | |
45 | foreach $freq (@frequency) { | |
46 | $port->write("FR,$freq,KZ\n"); | |
47 | sleep(6); | |
48 | $port->write("TR\n"); | |
49 | sleep(2); | |
50 | my $char = $port->lookfor(); | |
51 | $char =~ s/N//g; | |
52 | $char =~ s/\r//g; # To match the newlines from the HP 3586C | |
53 | chomp $char; | |
54 | $time = time; | |
55 | print "$freq $time $char \n"; | |
56 | } | |
57 | ||
58 | $scan_index = $scan_index + 1; | |
59 | } |