Re: HP34702A Ohms converter issues
Hello Greg, it's nice to see you back with a new problem ;-D
Just a quick check, just to make sure the problem is not being caused by some leakage in the mainframe (the 34740): When switched to DC volts, on the 1V range and the input open, does it read 0.000 ? Or how much ? We're checking for leakage in the 10 nanoamps range here. Cheers,
Joel
|
Re: Help to fix power supply (A80) of an old HP 3586A
Hi Paul, thank you.?
It's not clear what you do... what transistors do you mean? A80 board, which is the most part affected? by the NiCd leakage, has only one transistor and three opamps. If for pass transistors you mean the darlington transistors, I am surprised as they are far from the affected area. So I just have to wait for a few days of drying and start running everything. Until now I only posted A80 board pictures as example but I am really worried for the other board (microprocessor board) which has also been affected by the nicd leackage even though to a lesser extent and the even that board received the same vinegar treatment. I'll let you know.
?
|
HP34702A Ohms converter issues
As promised, the followup to my HP3490A repair.? I found this 34702A/34740A at a hamfest for $12 and thought it deserved a home.? Upon hooking it up, the DCV and ACV seemed to measure pretty accurately but the Ohms measurements were way off.? Not too bad on the low ranges, but it eventually went OL at or above the 100K range.? This one has been frustrating. I initially suspected a leaky Q15 (the dual FET) but replacing it and Q16 its current source made no difference.? Maybe U2, the op amp that controls the current?? Nope.? The manual suggests that out of spec on the highest range could be caused by Q11 (JFET) and so I pulled it and it tested bad.? Aha!? Replaced it with a known good part (though not an exact replacement), and it only made a slight improvement.? Now the readings are 2-3x what they should be up to about 100K¦¸ (steadily getting worse at higher resistances) but it still reads OL on a 1M¦¸ resistor. I pulled Q13 and Q14, and they tested OK and nearly identical so I didn't replace them.? The voltages look reasonable; Q14 was questionable in-circuit but it may just be because of the defect disturbing its bias.? It seems to me that the current source is not pushing enough current through the unknown, and that's why it's seeing higher resistances than it should.? I'm trying hard not to just go on replacing parts until it starts working, but I'm about halfway there already.? ;-) 
|
Re: Help to fix power supply (A80) of an old HP 3586A
Been watching the thread and no time to respond till now. Those evil overcharged nicads. Darn thing is they have sent me some great deals on "dead" 3586s. So you are getting good advice from the group. But the base has indeed eaten and damaged lots of components even worse it eats and etches between the components. Makes for seriously strange behavior. What I do to maintain control is run everything on the board with external supplies and fake transistors for the pass transistors since I am not drawing serious current. Just hang npn or pnp transistors off the board not even heat sinks. This lets you deal with the between component leakage easily. The best part eveything is easy to see and get to. Especially when you see a bit of smoke. Yes that happens. On the tarnished black stuff measure the R and see if teh connections good or bad. Take it from there. Lastly I never put batteries back in. The charging circuit is simple and poor. Good luck Paul WB8TSL
|
Does anyone have a couple of 75/50 ohm N pads gathering dust?
I picked up a semi-antique 8754a with a 8502b test set and I'm unearthing various bits of RF gear (SA, 8640b etc) I've accumulated for a project. As a consequence, I need to stock up on various adapters without killing the budget.
Essentially, right now I'm looking for the HP 11852A and B or their equivalents.
thanks! -- Paul Amaranth, GCIH | Manchester MI, USA Aurora Group, Inc. | Security, Systems & Software paul@... | Unix & Windows
|
Re: HP-IB not working on 85680B and unknown option again
At 2019-02-06 01:34 PM, dk1vi wrote:
the unit does not give any
reaction when addressed with correct IB? address. Have checked HB-IB
clock which is OK. I do not have the special extender board, so further
testing inside circuit is almost impossoble. So maybe best would be to
change IC U6 (TMS9914AJTL), U30 (75161) and U31 (DS75160). Or any other
suggestions?
Still wondering, what the options mean. Firmware ROMs are standard
matching the serial prefix.
I'm jumping into the middle of this, not having seen any preceding
discussion, but here are some ideas:
1) The unit might have IEEE-488 disabled in firmware, either as a factory
option, or as a user option. Can you see what address it thinks it's
using on the local display?
2) Any chance you've flipped the sense of the address switches? It's not
uncommon on IEEE-488 to see generic DIP switches labeled On and Off, and
the On position pulls down to 0 whereas the Off position allows that bit
to float to 1, so the numeric value is opposite to what you might
expect.
3) If possible, have your bus controller poll all addresses one at a
time. That might find the unit if it's not at the address you expect, for
whatever reason. My KISS-488 includes that function, precisely for such a
scenario. When your instrument recognizes itself as being addressed, it
should pull \DAC low.
4) It's a bit tedious for extensive troubleshooting, but I've done such
things as checking Vcc, checking chip clocks, etc., inside an instrument
where I can't reach with everything plugged in, by temporarily
tack-soldering some #30 wire wrap wire to pins, leaving it long enough to
connect a scope or meter outside the instrument. You probably don't want
a very long wire hanging off a high frequency line, but you can get away
with this trick usually up to several MHz, which is usually plenty for
these older instruments.
Steve Hendrix
|
Re: Help to fix power supply (A80) of an old HP 3586A
The thing that scares me about this now is that trimpot.? I have
doubts that it has survived.? Might be good to replace that DIP
socket on general principal too.? The other components are likely
OK.
Daun
Daun E. Yeagley II, N8ASB
On 2/6/2019 4:47 PM,
cc@... wrote:
toggle quoted message
Show quoted text
OK, thank you. You all are right, I obviously exaggerated with the
vinegar. I washed a second time as Ed recommends and now it is
improved a little bit. What is remained is the tarnish on the
weldings and the surface of the traces that is not shining like
earlier but I do not see any corrosion or interruptions of the
traces. So... apart of the aesthetics, what can be the problem?
And a second question.... I don't want to use the oven but I
prefer to cool air dried... how many days do you suggest? After
washing I used a jet of compressed air.
|
Re: HP-IB not working on 85680B and unknown option again
Yes, Orin, you are correct. After taking a second (and third)? look, I see that I misread the 'B' for an '8'. Maybe I need some better glases...
|
UPDATE SOLD OT: FS Fundamentals of Vector Network Analysis Book
Thank you all but the book has been sold.
Gedas, W8BYA
Gallery at
Light travels faster than sound....
This is why some people appear bright until you hear them speak.
On 2/6/2019 3:48 PM, Gedas wrote:
toggle quoted message
Show quoted text
FS is a near mint condition book by Michael Hiebel. Considered
one of the engineering standards in the field with 420 pages of
theoretical & practical information with lots of quality
color plots, pictures & tables. It is a hard cover book and
has two dents, one on the top-front & the other on the
bottom-back.....no torn or bent pages & no writing or hand
notes. If interested pse contact me off list. Thank you.
Gedas, W8BYA
Gallery at
Light travels faster than sound....
This is why some people appear bright until you hear them speak.
|
Re: Help to fix power supply (A80) of an old HP 3586A
OK, thank you. You all are right, I obviously exaggerated with the vinegar. I washed a second time as Ed recommends and now it is improved a little bit. What is remained is the tarnish on the weldings and the surface of the traces that is not shining like earlier but I do not see any corrosion or interruptions of the traces. So... apart of the aesthetics, what can be the problem? And a second question.... I don't want to use the oven but I prefer to cool air dried... how many days do you suggest? After washing I used a jet of compressed air. 
|
At 2019-02-06 09:19 AM, peter bunge wrote:
Hi Steve, an HP8714B just sold
for $565 US.
I suspect you paid much less for the 75 ohm version and as much for
shipping..?
Somewhat less, but not all that much. And shipping wasn't bad, as it came
from the same side of the continent as me.
My suggestion is to
keep it and use it with 75/50 pads to learn about it while watching for a
cheap 50 ohm version, not working if you have repair abilities, and use
your 75 ohm version to troubleshoot and repair.
That's my intent exactly, and it'll likely be a while before I'll have
need of that much additional capability.
Do you have the
pads? I have a couple of new Greenpar 502-4718-701, 90-48 that you can
have for the price of shipping. Contact me
offline.
Rats! I already order some and they're enroute. Thanks for the offer,
though.
Be aware that the
75 ohm Type N are different from the 50 ohm Type N and you could damage
them by attaching the wrong one. Someone else may have a better
explanation but 75 ohms seems to explain the different
dimensions.
Yes, someone else already pointed that out to me, and an article on N
connectors on Wikipedia that explains the differences quite well. It
appears HP used some good-quality connectors that are built for 75 ohms,
but have enough compliance in the fingers that grab the inner pin, that
they won't be damaged. Now that I know the difference, I think I'd better
make some time to apply my micrometer to my collection of various N
connectors and adapters, to be sure what's what.
Thanks for all the help!
Steve Hendrix
|
OT: FS Fundamentals of Vector Network Analysis Book
FS is a near mint condition book by Michael Hiebel. Considered
one of the engineering standards in the field with 420 pages of
theoretical & practical information with lots of quality color
plots, pictures & tables. It is a hard cover book and has two
dents, one on the top-front & the other on the
bottom-back.....no torn or bent pages & no writing or hand
notes. If interested pse contact me off list. Thank you.
Gedas, W8BYA
Gallery at
Light travels faster than sound....
This is why some people appear bright until you hear them speak.
|
Re: HP-IB not working on 85680B and unknown option again
FWIW, the option sticker reads '85680B'.? The RF sections of 8568Bs were all marked this way as far as I know.
toggle quoted message
Show quoted text
On Wed, Feb 6, 2019 at 10:34 AM dk1vi < dk1vi@...> wrote: Hello, the unit does not give any reaction when addressed with correct IB? address. Have checked HB-IB clock which is OK. I do not have the special extender board, so further testing inside circuit is almost impossoble. So maybe best would be to change IC U6 (TMS9914AJTL), U30 (75161) and U31 (DS75160). Or any other suggestions? Still wondering, what the options mean. Firmware ROMs are standard matching the serial prefix.
Regards Ernst.
|
HP-IB not working on 85680B and unknown option again
Hello, the unit does not give any reaction when addressed with correct IB? address. Have checked HB-IB clock which is OK. I do not have the special extender board, so further testing inside circuit is almost impossoble. So maybe best would be to change IC U6 (TMS9914AJTL), U30 (75161) and U31 (DS75160). Or any other suggestions? Still wondering, what the options mean. Firmware ROMs are standard matching the serial prefix.
Regards Ernst.
|
Thanks Harvey, I will keep this last reply online for anyone that wants to control one of these impedance meters/analyzers with EZGPIB. I just made some runs with a Chinese Test Fixture which pointed out how many things may need to be changed in the program. There are Series and Parallel modes on the 4192A and the characters that need to be stripped will change. There are several options on what is to be measured such as |Z|, R, L, C for the A display and even more for the B display. Then there are many buttons and features that can be selected. If you don't have one, or at least the manual open, it will be confusing. I wound up with several programs to do different things. I have the HPIB Interface instructions from the manual (pages 3-68 to 3-77 in mine) beside me to refer to the tables. I added a buffer flush because I found that repeated runs kept adding to the buffer from the previous run. Each different run needed some tweeking of the program.. A general interactive program may be possible but not practical. I will add comments before lines that may need to be changed. I would like to hear offline from anyone with a 4192A or 4193A so we can try things together and compare notes. PeterB
toggle quoted message
Show quoted text
On Wed, Feb 6, 2019 at 11:34 AM Harvey White < madyn@...> wrote: On Tue, 5 Feb 2019 11:30:50 -0500, you wrote:
>Thanks Harvey;
>
>I was hoping for a simple answer such as:
>
>Sname:=EZGPIB_ConvertStripToNumber(Sname,Sname,Sname); // where Sname is
>the string
You could write it, but you'd have to do that.
>
>Or some variation that uses commas, colons, quotes, or other punctuation. I
>looked through all the sample code and examples from Ulrich Bangert and
>found nothing (that I understood anyway). I tried some guesses and came to
>the conclusion that this function will not do what I want.
>
>
>
>I went through all the functions and found the
>
>
>
>EZGPIB_ConvertRemove(What:string;FromWhere:string);
>
>Removes all instances of ¡°What¡± in ¡°Where¡±
That's what you want.
what:string says that the first argument we call it what here, is a
string.? It could also be 'this is a string', for constant strings.
FromWhere is also a string, but it can't be in quotes, since it gets
modified.
Note that this function has two, and only two arguments.? You can't
just pack more arguments onto the thing, it won't work.
>
>
>
>This is the total description and a novice programmer, like me, does not
>really understand how to use this when there are no examples. What exactly
>do I put in the brackets? I tried different things until the compiler
>stopped complaining. I probably have it wrong even though it works.
>
EZGPIB_ConvertRemove('NZFN', Answer);? ? ? ? ? ? ? ? // Answer is the
string
That's actually exactly what you should do.
You could also do:
somestring:? ? ? ? ? ? ?string;
somestring := 'NZFN';
EZGPIB_ConvertRemove(somestring, Answer);? ? ? ? ? ? ? ? // Answer is
the string
That works, too.
The advantage to this last one is that you could have a list of things
you wanted to remove (a list of strings), and just substitute that
each time.
If that doesn't make sense, just think that it's sometimes easier to
carry apples in a bag rather than one at a time....? Either, however,
works.
>
>
>I also went through a Pascal tutorial but it does not go beyond simple
>strings. Strings separated by commas may be regarded as an array, or more
>than one string. I am not a programmer and writing a page of code to
>replace three lines is asking for frustration.
Yep, and the only reason that it gets done (properly done) is if
there's a reason why those three lines need to be tweaked into
something universal...
>
>
>
>So the following works
>
>
>
>EZGPIB_ConvertRemove('NZFN', Answer);? ? ? ? ? ? ? ? // Answer is the string
>
>EZGPIB_ConvertRemove('NTDN', Answer);
>
>EZGPIB_ConvertRemove('K', Answer);
>
There's the solution.
>
>
>but with the correct punctuation it might be written as one line such as
>
>
>
>EZGPIB_ConvertRemove('NZFN', Answer; 'NTDN', Answer; 'K', Answer);? // does
>not work
>
And it doesn't work because EZGPIB_ConvertRemove() takes two and only
two arguments.? You don't get around that.
It's possible to write your own pascal function that does that, but
the best syntax would be something like:
EZGPIB_ConvertRemove_ALL('NZFN', 'NTDN', 'K', Answer);? // will work,
but you have to write it
The procedure would be something like:
procedure EZGPIB_ConvertRemove_ALL(s1: string; s2: string; s3 string;
var string answer);
begin
? ? ? ? EZGPIB_ConvertRemove('NZFN',? Answer);
? ? ? ? EZGPIB_ConvertRemove('NTDN',? Answer);
? ? ? ? EZGPIB_ConvertRemove('K', Answer);
end;
which effectively does pretty much what you do in the three calls.
easier to stick with what you have.
>
>
>Attempts at variations gave compile errors like ¡°too many variables¡±
>
and now you know why.....
>
>
>My complete program is not very elegant but is easy to understand and
>modify, and it works.
About the only thing you might want to do is to modify it slightly to
have a procedure to call to strip the answer, or perhaps send
command/get answer/strip unwanted and save.
That comes when you start to add things, and want a slightly different
program structure that's a bit less spread out.
What you have is done just fine, though.?
>
>It sets up the 4192A to display Magnitude, Phase, and Frequency. Then it
>starts with a frequency, and step frequency, and reads 9 times (e.g. 1kHz
>to 9kHz in 1kHz steps), the step frequency is increased and 9 more reads
>are taken (e.g. 10kHz to 90kHz in 10kHz steps), this is repeated again
>(e.g. 100kHz to 900kHz in 100kHz steps). If this was the last loop then 10
>reads can be taken (e.g. 100kHz to 1000kHz in 100kHz steps). All reads are
>appended to the end of a buffer and upon completion the buffer is read to
>memory. Copy and paste makes variations easy so any of the units the 4192A
>can calculate can be read. The 4192A is quite versatile but is 1980
>technology so the 7470A plotter was not yet invented and I have to work
>within the limitations.
>
>The same program with slight modifications will control the HP4193A Vector
>Impedance Meter.
>
>If there is no simple improvement then I will post the program to a file in
>a 4192A folder. Maybe an expert could re-write it to be easier to use. I
>cannot see how to pass variables to the EZGPIB functions and could not find
>suitable examples to follow.
Generally, as in the string example, a variable of the right type can
be passed as an argument, that's just plain pascal, not EZGPIB.
However, (skipping the technical explanation for now), you can either
pass a copy to a routine (routine can change it all it wants, but the
original in the calling routine stays intact); or you can pass it a
reference to the original value, in which case, the routine changes
the original.
Reason for saying that is that the routine has to be written to do
that for you, and you can't just expect it to change stuff when
convenient.? (in the little example I did above, the word "var" tells
the program to behave like that.
Perhaps this helps a bit on the passing variables to an EZGPIB
function.
If you want, we can take this offline, simply because it's starting to
deviate from EZGPIB on an HP instrument to general programming.
Harvey
>
>
>
>This is an interim solution as I would like to move on to a C++ program
>that could be more interactive. Perhaps someone has already written such
>programs in C++.
>
>
>
>My present program is this:
>
>
>Program HP_4192A_Project;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // LF
>Impedance Analyzer
>
>// Note this is a work in progress. It acquires 3 freq decades of Z, phase,
>and Freq
>
>
>
> const filename= 'C:\users\user\My Documents\GPIB
>Prologix\HP4192A_Data.txt';
>
>? ?HP4192A? ? ?=16;
>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// LF Impedance
>Analyzer
>
>? ?Timeout? ?=10.0;
>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//
>
> var Answer:string;
>
>? ? ?i:integer;
>
>
>
>begin
>
>? ezgpib_screenclear;
>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// Clear output console screen
>
>? EZGPIB_ScreenWriteLn('HP 4192A Project');? ? ? ? ? ? ? ? ? ? ? ? ? //
>display title
>
>? EZGPIB_fileclearbuffer;
>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // clear buffer
>
> if EZGPIB_FileExists(Filename)then EZGPIB_fileDelete(Filename); // delete
>old file
>
>? EZGPIB_BusWriteData(HP4192A,'A1B1T3F1');
>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Z, deg, hold/manual trig, display A/B/C
>
>? EZGPIB_BusWriteData(HP4192A,'FR1EN');? ? ? ? ? ? ? ? ? ? ? ? ? // Spot
>Fequ 1 kHz
>
>? EZGPIB_BusWriteData(HP4192A,'SF1EN');? ? ? ? ? ? ? ? ? ? ? ? ? // Step
>1kHz
>
>? EZGPIB_BusWriteData(HP4192A,'ABW0');? ? ? ? ? ? ? ? ? ? ? ? ? // Abort
>Sweep, Manual Sweep
>
>for i:=1 to 9 do
>
>begin;
>
>? EZGPIB_BusWriteData(HP4192A,'EX');? ? ? ? ? ? ? ? ?// Trigger
>
>? EZGPIB_BusWaitForData(HP4192A,Answer,Timeout);? ? // Get data
>
>? EZGPIB_ConvertRemove('NZFN', Answer);? ? ? ? ? ? ? ? ? ? ? ?// delete NZFN
>
>? EZGPIB_ConvertRemove('NTDN', Answer);? ? ? ? ? ? ? ? ? ? ? ?// delete NTDN
>
>? EZGPIB_ConvertRemove('K', Answer);
>? ? ? ? ? ? ? ? // delete K
>
>? EZGPIB_FileAddToBuffer(Answer);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//
>add to buffer
>
>? EZGPIB_ScreenWriteLn(Answer);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //
>Display on screen
>
>? EZGPIB_TimeWaitForMultipleOf(1);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //
>Delay 1 seconds
>
>? EZGPIB_BusWriteData(HP4192A,'W2');? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Step
>up
>
>end;
>
>? EZGPIB_BusWriteData(HP4192A,'SF10EN');? ? ? ? ? ? ? ? ? ? ? ? // Step
>10kHz
>
>for i:=1 to 9 do
>
>begin;
>
>? EZGPIB_BusWriteData(HP4192A,'EX');? ? ? ? ? ? ? ? ?// Trigger
>
>? EZGPIB_BusWaitForData(HP4192A,Answer,Timeout);? ? // Get data
>
>? EZGPIB_ConvertRemove('NZFN', Answer);? ? ? ? ? ? ? ? ? ? ? ?// delete NZFN
>
>? EZGPIB_ConvertRemove('NTDN', Answer);? ? ? ? ? ? ? ? ? ? ? ?// delete NTDN
>
>? EZGPIB_ConvertRemove('K', Answer);
>? ? ? ? ? ? ? ? // delete K
>
>? EZGPIB_FileAddToBuffer(Answer);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//
>add to buffer
>
>? EZGPIB_ScreenWriteLn(Answer);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //
>Display on screen
>
>? EZGPIB_TimeWaitForMultipleOf(1);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //
>Delay 1 seconds
>
>? EZGPIB_BusWriteData(HP4192A,'W2');? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Step
>up
>
>end;
>
>? EZGPIB_BusWriteData(HP4192A,'SF100EN');? ? ? ? ? ? ? ? ? ? ?// Step 100kHz
>
>for i:=1 to 10 do
>
>begin;
>
>? EZGPIB_BusWriteData(HP4192A,'EX');? ? ? ? ? ? ? ? ?// Trigger
>
>? EZGPIB_BusWaitForData(HP4192A,Answer,Timeout);? ? // Get data
>
>? EZGPIB_ConvertRemove('NZFN', Answer);? ? ? ? ? ? ? ? ? ? ? ?// delete NZFN
>
>? EZGPIB_ConvertRemove('NTDN', Answer);? ? ? ? ? ? ? ? ? ? ? ?// delete NTDN
>
>? EZGPIB_ConvertRemove('K', Answer);
>? ? ? ? ? ? ? ? // delete K
>
>? EZGPIB_FileAddToBuffer(Answer);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//
>add to buffer
>
>? EZGPIB_ScreenWriteLn(Answer);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //
>Display on screen
>
>? EZGPIB_TimeWaitForMultipleOf(1);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //
>Delay 1 seconds
>
>? EZGPIB_BusWriteData(HP4192A,'W2');? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Step
>up
>
>end;
>
>? EZGPIB_FileWrite(Filename);
>? ? ? ? ? ? ? ? ? ? ? ? ? ?// write to file
>
>end.
>
>On Tue, Feb 5, 2019 at 12:20 AM Harvey White <madyn@...> wrote:
>
>> On Mon, 04 Feb 2019 15:36:34 -0800, you wrote:
>>
>> What happens if you run the strip program, then copy the result string
>> from the beginning up to the comma?? In pascal, you can find the
>> location of the comma, and delete all the characters before it.? This
>> ought to give you the second part of the string, which you can strip
>> off the beginning.
>>
>> This uses standard pascal functions.
>>
>> Of course, if you could read one thing at a time (NZFN, then NTDN,
>> etc), you could convert each item individually.
>>
>> Another option would be to search the string for NZFN, then replace it
>> by spaces, ditto for NTDN, etc.
>>
>>
>> maybe easier to copy out to substrings.
>>
>> C has a token function that automatically parses things like this, and
>> pascal doesn't (that I know of).
>>
>> You may want to look for parsing programs, just for fun
>>
>> depends on how involved you want to get with the programming.
>>
>> Harvey
>>
>>
>>
>> >I am looking for help from someone experienced with EZGPIB, or possibly
>> Pascal if any of this makes sense. I wrote a program in EZGPIB that is
>> working well to get data from my HP4192A. Each read of data is in the
>> following format which is added to a buffer and, at the end of the program,
>> stored in a file. I think the reads are tab separated but that is not the
>> problem. NZFN+017.78E+03,NTDN-005.38E+00,K+01.000000 To remove unwanted
>> characters (NZFN = |Z|, NTDN = Phase, K = kHz) I
>> used Answer:=EZGPIB_ConvertStripToNumber(Answer); // an EZGPIB function.
>> Answer is a string variable This only strips the first characters so I
>> get +017.78E+03,NTDN-005.38E+00,K+01.000000 I think the comma terminates
>> the string as far as the function is concerned. I don¡¯t know how to make
>> the function remove all unwanted characters. Does anyone know? I tried a
>> different function three times to remove all characters. It works however I
>> should be able to use it once with the proper formatting to do the job but
>> >I don¡¯t know how. Any suggestions? EZGPIB_ConvertRemove('NZFN', Answer);
>> EZGPIB_ConvertRemove('NTDN', Answer); EZGPIB_ConvertRemove('K',
>> Answer); The result is what I am after: +017.78E+03,-005.38E+00,+01.000000
>> >
>> >
>>
>>
>>
>>
>>
>
>
|
On Tue, 5 Feb 2019 11:30:50 -0500, you wrote: Thanks Harvey;
I was hoping for a simple answer such as:
Sname:=EZGPIB_ConvertStripToNumber(Sname,Sname,Sname); // where Sname is the string You could write it, but you'd have to do that. Or some variation that uses commas, colons, quotes, or other punctuation. I looked through all the sample code and examples from Ulrich Bangert and found nothing (that I understood anyway). I tried some guesses and came to the conclusion that this function will not do what I want.
I went through all the functions and found the
EZGPIB_ConvertRemove(What:string;FromWhere:string);
Removes all instances of ¡°What¡± in ¡°Where¡±
That's what you want. what:string says that the first argument we call it what here, is a string. It could also be 'this is a string', for constant strings. FromWhere is also a string, but it can't be in quotes, since it gets modified. Note that this function has two, and only two arguments. You can't just pack more arguments onto the thing, it won't work.
This is the total description and a novice programmer, like me, does not really understand how to use this when there are no examples. What exactly do I put in the brackets? I tried different things until the compiler stopped complaining. I probably have it wrong even though it works.
EZGPIB_ConvertRemove('NZFN', Answer); // Answer is the string That's actually exactly what you should do. You could also do: somestring: string; somestring := 'NZFN'; EZGPIB_ConvertRemove(somestring, Answer); // Answer is the string That works, too. The advantage to this last one is that you could have a list of things you wanted to remove (a list of strings), and just substitute that each time. If that doesn't make sense, just think that it's sometimes easier to carry apples in a bag rather than one at a time.... Either, however, works.
I also went through a Pascal tutorial but it does not go beyond simple strings. Strings separated by commas may be regarded as an array, or more than one string. I am not a programmer and writing a page of code to replace three lines is asking for frustration.
Yep, and the only reason that it gets done (properly done) is if there's a reason why those three lines need to be tweaked into something universal...
So the following works
EZGPIB_ConvertRemove('NZFN', Answer); // Answer is the string
EZGPIB_ConvertRemove('NTDN', Answer);
EZGPIB_ConvertRemove('K', Answer);
There's the solution.
but with the correct punctuation it might be written as one line such as
EZGPIB_ConvertRemove('NZFN', Answer; 'NTDN', Answer; 'K', Answer); // does not work
And it doesn't work because EZGPIB_ConvertRemove() takes two and only two arguments. You don't get around that. It's possible to write your own pascal function that does that, but the best syntax would be something like: EZGPIB_ConvertRemove_ALL('NZFN', 'NTDN', 'K', Answer); // will work, but you have to write it The procedure would be something like: procedure EZGPIB_ConvertRemove_ALL(s1: string; s2: string; s3 string; var string answer); begin EZGPIB_ConvertRemove('NZFN', Answer); EZGPIB_ConvertRemove('NTDN', Answer); EZGPIB_ConvertRemove('K', Answer); end; which effectively does pretty much what you do in the three calls. easier to stick with what you have.
Attempts at variations gave compile errors like ¡°too many variables¡±
and now you know why.....
My complete program is not very elegant but is easy to understand and modify, and it works.
About the only thing you might want to do is to modify it slightly to have a procedure to call to strip the answer, or perhaps send command/get answer/strip unwanted and save. That comes when you start to add things, and want a slightly different program structure that's a bit less spread out. What you have is done just fine, though. It sets up the 4192A to display Magnitude, Phase, and Frequency. Then it starts with a frequency, and step frequency, and reads 9 times (e.g. 1kHz to 9kHz in 1kHz steps), the step frequency is increased and 9 more reads are taken (e.g. 10kHz to 90kHz in 10kHz steps), this is repeated again (e.g. 100kHz to 900kHz in 100kHz steps). If this was the last loop then 10 reads can be taken (e.g. 100kHz to 1000kHz in 100kHz steps). All reads are appended to the end of a buffer and upon completion the buffer is read to memory. Copy and paste makes variations easy so any of the units the 4192A can calculate can be read. The 4192A is quite versatile but is 1980 technology so the 7470A plotter was not yet invented and I have to work within the limitations.
The same program with slight modifications will control the HP4193A Vector Impedance Meter.
If there is no simple improvement then I will post the program to a file in a 4192A folder. Maybe an expert could re-write it to be easier to use. I cannot see how to pass variables to the EZGPIB functions and could not find suitable examples to follow.
Generally, as in the string example, a variable of the right type can be passed as an argument, that's just plain pascal, not EZGPIB. However, (skipping the technical explanation for now), you can either pass a copy to a routine (routine can change it all it wants, but the original in the calling routine stays intact); or you can pass it a reference to the original value, in which case, the routine changes the original. Reason for saying that is that the routine has to be written to do that for you, and you can't just expect it to change stuff when convenient. (in the little example I did above, the word "var" tells the program to behave like that. Perhaps this helps a bit on the passing variables to an EZGPIB function. If you want, we can take this offline, simply because it's starting to deviate from EZGPIB on an HP instrument to general programming. Harvey
This is an interim solution as I would like to move on to a C++ program that could be more interactive. Perhaps someone has already written such programs in C++.
My present program is this:
Program HP_4192A_Project; // LF Impedance Analyzer
// Note this is a work in progress. It acquires 3 freq decades of Z, phase, and Freq
const filename= 'C:\users\user\My Documents\GPIB Prologix\HP4192A_Data.txt';
HP4192A =16; // LF Impedance Analyzer
Timeout =10.0; //
var Answer:string;
i:integer;
begin
ezgpib_screenclear; // Clear output console screen
EZGPIB_ScreenWriteLn('HP 4192A Project'); // display title
EZGPIB_fileclearbuffer; // clear buffer
if EZGPIB_FileExists(Filename)then EZGPIB_fileDelete(Filename); // delete old file
EZGPIB_BusWriteData(HP4192A,'A1B1T3F1'); // Z, deg, hold/manual trig, display A/B/C
EZGPIB_BusWriteData(HP4192A,'FR1EN'); // Spot Fequ 1 kHz
EZGPIB_BusWriteData(HP4192A,'SF1EN'); // Step 1kHz
EZGPIB_BusWriteData(HP4192A,'ABW0'); // Abort Sweep, Manual Sweep
for i:=1 to 9 do
begin;
EZGPIB_BusWriteData(HP4192A,'EX'); // Trigger
EZGPIB_BusWaitForData(HP4192A,Answer,Timeout); // Get data
EZGPIB_ConvertRemove('NZFN', Answer); // delete NZFN
EZGPIB_ConvertRemove('NTDN', Answer); // delete NTDN
EZGPIB_ConvertRemove('K', Answer); // delete K
EZGPIB_FileAddToBuffer(Answer); // add to buffer
EZGPIB_ScreenWriteLn(Answer); // Display on screen
EZGPIB_TimeWaitForMultipleOf(1); // Delay 1 seconds
EZGPIB_BusWriteData(HP4192A,'W2'); // Step up
end;
EZGPIB_BusWriteData(HP4192A,'SF10EN'); // Step 10kHz
for i:=1 to 9 do
begin;
EZGPIB_BusWriteData(HP4192A,'EX'); // Trigger
EZGPIB_BusWaitForData(HP4192A,Answer,Timeout); // Get data
EZGPIB_ConvertRemove('NZFN', Answer); // delete NZFN
EZGPIB_ConvertRemove('NTDN', Answer); // delete NTDN
EZGPIB_ConvertRemove('K', Answer); // delete K
EZGPIB_FileAddToBuffer(Answer); // add to buffer
EZGPIB_ScreenWriteLn(Answer); // Display on screen
EZGPIB_TimeWaitForMultipleOf(1); // Delay 1 seconds
EZGPIB_BusWriteData(HP4192A,'W2'); // Step up
end;
EZGPIB_BusWriteData(HP4192A,'SF100EN'); // Step 100kHz
for i:=1 to 10 do
begin;
EZGPIB_BusWriteData(HP4192A,'EX'); // Trigger
EZGPIB_BusWaitForData(HP4192A,Answer,Timeout); // Get data
EZGPIB_ConvertRemove('NZFN', Answer); // delete NZFN
EZGPIB_ConvertRemove('NTDN', Answer); // delete NTDN
EZGPIB_ConvertRemove('K', Answer); // delete K
EZGPIB_FileAddToBuffer(Answer); // add to buffer
EZGPIB_ScreenWriteLn(Answer); // Display on screen
EZGPIB_TimeWaitForMultipleOf(1); // Delay 1 seconds
EZGPIB_BusWriteData(HP4192A,'W2'); // Step up
end;
EZGPIB_FileWrite(Filename); // write to file
end.
On Tue, Feb 5, 2019 at 12:20 AM Harvey White <madyn@...> wrote:
On Mon, 04 Feb 2019 15:36:34 -0800, you wrote:
What happens if you run the strip program, then copy the result string from the beginning up to the comma? In pascal, you can find the location of the comma, and delete all the characters before it. This ought to give you the second part of the string, which you can strip off the beginning.
This uses standard pascal functions.
Of course, if you could read one thing at a time (NZFN, then NTDN, etc), you could convert each item individually.
Another option would be to search the string for NZFN, then replace it by spaces, ditto for NTDN, etc.
maybe easier to copy out to substrings.
C has a token function that automatically parses things like this, and pascal doesn't (that I know of).
You may want to look for parsing programs, just for fun
depends on how involved you want to get with the programming.
Harvey
I am looking for help from someone experienced with EZGPIB, or possibly Pascal if any of this makes sense. I wrote a program in EZGPIB that is working well to get data from my HP4192A. Each read of data is in the following format which is added to a buffer and, at the end of the program, stored in a file. I think the reads are tab separated but that is not the problem. NZFN+017.78E+03,NTDN-005.38E+00,K+01.000000 To remove unwanted characters (NZFN = |Z|, NTDN = Phase, K = kHz) I used Answer:=EZGPIB_ConvertStripToNumber(Answer); // an EZGPIB function. Answer is a string variable This only strips the first characters so I get +017.78E+03,NTDN-005.38E+00,K+01.000000 I think the comma terminates the string as far as the function is concerned. I don¡¯t know how to make the function remove all unwanted characters. Does anyone know? I tried a different function three times to remove all characters. It works however I should be able to use it once with the proper formatting to do the job but
I don¡¯t know how. Any suggestions? EZGPIB_ConvertRemove('NZFN', Answer); EZGPIB_ConvertRemove('NTDN', Answer); EZGPIB_ConvertRemove('K', Answer); The result is what I am after: +017.78E+03,-005.38E+00,+01.000000
|
Wanted: HP 8340 Or HP 8341 Sig Gen non-working Parts unit
hi, I need an HP 8340 Or HP 8341 Sig Gen ? non-working ?parts unit to repair my unit (multiple issues).
A non-working, but complete ?8340 Or 8341 ?would be good.
Please contact me off-list, thank you, rick
|
N connectors are air dielectric coaxial transmission lines where they mate. Impedance for an air dielectric coaxial line is:
Z0 = 60 ln(r0/ri)
So, a 75 ohm center conductor (ri) is necessarily smaller in diameter than a 50 ohm center conductor for a given size shield diameter (r0).
If you mate a 50 ohm male N connector with a 75 ohm female N connector, the usual result is to break one of the leaves of the center conductor on the female connector.
The same does not apply to typical BNC connectors, as the 50 ohm BNC has a teflon dielectric, but the 75 ohm BNC has an air dielectric, so the center conductors are the same diameter.
More than you wanted to know.
-Chuck Harris
peter bunge via Groups.Io wrote:
toggle quoted message
Show quoted text
Hi Steve, an HP8714B just sold for $565 US. I suspect you paid much less for the 75 ohm version and as much for shipping.. My suggestion is to keep it and use it with 75/50 pads to learn about it while watching for a cheap 50 ohm version, not working if you have repair abilities, and use your 75 ohm version to troubleshoot and repair. Do you have the pads? I have a couple of new Greenpar 502-4718-701, 90-48 that you can have for the price of shipping. Contact me offline. Be aware that the 75 ohm Type N are different from the 50 ohm Type N and you could damage them by attaching the wrong one. Someone else may have a better explanation but 75 ohms seems to explain the different dimensions. PeterB [image: 75_50 ohm pads.JPG]
|
Just to note¡
?
¡®90-48¡¯ is most probably the yeardate/week of manufacture code.
?
Nigel
?
toggle quoted message
Show quoted text
From: [email protected] [mailto:[email protected]]
On Behalf Of peter bunge
Sent: 06 February 2019 14:20
To: [email protected]
Subject: Re: [HP-Agilent-Keysight-equipment] HP8714ET Impedance
?
Hi Steve, an HP8714B just sold for $565 US.
I suspect you paid much less for the 75 ohm version and as much for shipping..?
My suggestion is to keep it and use it with 75/50 pads to learn about it while watching for a cheap 50 ohm version, not working if you have repair abilities, and use your 75 ohm version to troubleshoot and repair.
Do you have the pads? I have a couple of new Greenpar 502-4718-701, 90-48 that you can have for the price of shipping. Contact me offline.
Be aware that the 75 ohm Type N are different from the 50 ohm Type N and you could damage them by attaching the wrong one. Someone else may have a better explanation but 75 ohms seems to explain the different dimensions.
?
On Wed, Feb 6, 2019 at 6:54 AM Steve Hendrix <SteveHx@...> wrote:
At 2019-02-05 03:33 PM, pianovt via Groups.Io wrote:
From an cost standpoint, it would only be worth converting to 50 Ohms if you get the parts for free.
Thank you for the confirmation. That's exactly the sort of expert knowledge I was looking for with my question.
For what it's worth, and I suspect you don't want to hear this, I would suggest returning the 75 Ohm analyzer if you can and waiting until you find one that's right.
For now it makes sense to me to keep it, and count the cost as a cost of my own education. I can learn a whole bunch using this unit, and for now at least, it goes well beyond my needs in terms of precision and dynamic range. If I learn enough, I might decide
I need something fancier, but for now it's a tremendous bargain for me.
Use the minimum loss pads. They will work and you will be able to calibrate the analyzer correctly with a 50 Ohm cal kit,
Thank you for that confirmation. I was hoping for such, but couldn't absolutely prove it in my own head. I need to play with the calibration a bit to fully understand what parameters they're actually saving inside.
but you will lose 2 times 5.7dB in sensitivity on transmission and reflection measurements.
Good, at least I'm on the right track. I not only lose 11.4 dB of dynamic range, but I also have a ready-made attenuator so can put an extra 5.7 dB into the transmission port before I blow anything up. Just a bit more protection against my fumble-fingers!
Thank you for the detailed response to my question!
Steve Hendrix
|
Hi Steve, an HP8714B just sold for $565 US. I suspect you paid much less for the 75 ohm version and as much for shipping..? My suggestion is to keep it and use it with 75/50 pads to learn about it while watching for a cheap 50 ohm version, not working if you have repair abilities, and use your 75 ohm version to troubleshoot and repair. Do you have the pads? I have a couple of new Greenpar 502-4718-701, 90-48 that you can have for the price of shipping. Contact me offline. Be aware that the 75 ohm Type N are different from the 50 ohm Type N and you could damage them by attaching the wrong one. Someone else may have a better explanation but 75 ohms seems to explain the different dimensions. PeterB
toggle quoted message
Show quoted text
On Wed, Feb 6, 2019 at 6:54 AM Steve Hendrix < SteveHx@...> wrote:
At 2019-02-05 03:33 PM, pianovt via Groups.Io wrote:
From an cost standpoint, it
would only be worth converting to 50 Ohms if you get the parts for
free.
Thank you for the confirmation. That's exactly the sort of expert
knowledge I was looking for with my question.
For what it's
worth, and I suspect you don't want to hear this, I would suggest
returning the 75 Ohm analyzer if you can and waiting until you find one
that's right.
For now it makes sense to me to keep it, and count the cost as a cost of
my own education. I can learn a whole bunch using this unit, and for now
at least, it goes well beyond my needs in terms of precision and dynamic
range. If I learn enough, I might decide I need something fancier, but
for now it's a tremendous bargain for me.
Use the minimum
loss pads. They will work and you will be able to calibrate the analyzer
correctly with a 50 Ohm cal kit,
Thank you for that confirmation. I was hoping for such, but couldn't
absolutely prove it in my own head. I need to play with the calibration a
bit to fully understand what parameters they're actually saving
inside.
but you will lose 2
times 5.7dB in sensitivity on transmission and reflection
measurements.
Good, at least I'm on the right track. I not only lose 11.4 dB of dynamic
range, but I also have a ready-made attenuator so can put an extra 5.7 dB
into the transmission port before I blow anything up. Just a bit more
protection against my fumble-fingers!
Thank you for the detailed response to my question!
Steve Hendrix
|