How would you do the UI? Talking to it will lock out all front panel keys except local. You could send GTL after every command, but how do you detect button presses other than SRQ?If you press "Local" it stops responding to commands. I found a trick which makes it possible to know that it doesn't respond without entering LISTEN state.
How do you know if the meter switches range or function? What would the display update rate be like?Current mode is available in status bytes (B command).
What would the display update rate be like?I don't know. We'll see. When I tried to enter commands manually it seemed to be quick enough.
Morse code with SRQ?It's also possible to sniff keypad lines directly, but I prefer it to be GPIB-only.
Some time ago I was thinking about it when I was searching about DIY GPIB interface to connect my 3478A to computer without need to spend lots of money (more than the DMM price) in an adapter.Not exactly. There's no single thing called "DMM remote mode". GPIB remote mode is required to send a command, where only SRQ and Local keys are active. But after that, local control might be restored.
But from what I've read, when the DMM remote mode is activated it stops responding locally. Right?
In my opinion, I do not see problems using remote controls (buttons) and another screen, in fact I think they can bring some advantages, a separate screen would be very interesting in allow more measurements at same time, like std value, min, max, etc...The objective is to use hp3478 as a standalone DMM. And I don't want to make many hardware modifications. I have to respect 30+ years old instrument after all :)
You know some good GPIB DIY project, I think that this is the start of all.I started with this:
Personally, the features I'd want to see would involve ripping out the microcontrollers and analog components and replacing them with something newer, though I'm really not sure if it's worth it.What would be left in there?
I wouldn't mess with most of the analog circuitry (other than substituting ICs). The integrating ADC controller would remain, as would voltage references and precision resistors. The power supply seems fine, and I'm happy with the front panel. The chassis, switching relays, input terminals, fuses, etc. are likely not limiting performance either.Personally, the features I'd want to see would involve ripping out the microcontrollers and analog components and replacing them with something newer, though I'm really not sure if it's worth it.What would be left in there?
In 4 digit relative mode the display update appears to be much faster than you normally get from HP3478A. Possibly it's intentionally limited to make the display readable. I'm not sure if I want to do the same.What would the display update rate be like?I don't know. We'll see. When I tried to enter commands manually it seemed to be quick enough.
You can experiment. But especially on that old LCD increasing the update rate may not help readability. Try observing a value quickly fluctuating between 6 and 7. If you had some way of doing an analog bar graph, a higher update rate might be valuable. Same with any logging or plotting.I've measured actual reading rate and it's not the same as display update. HP3478 has two commands D2 and D3. D2 seems to be buffered, so the display is not updated every time. D3 is like it writes the LCD immediately. And the more often you write the screen, the less reading rate you get. The maximum I could get so far is 75 reading/sec in 3 digit mode with auto zero off.
Cool project, kirill. I've thought about extending the functionality of DMMs and power supplies via GPIB, too. Adding a second display for stats, logging, and graphs would be quite an upgrade for the good ol' 3478A.Thank you for support! I'm thinking to mount atmega328 inside, and stick out an usb or uart connector. Then raspberry pi can be added for logging and graphing.
I wouldn't mess with most of the analog circuitry (other than substituting ICs). The integrating ADC controller would remain, as would voltage references and precision resistors. The power supply seems fine, and I'm happy with the front panel. The chassis, switching relays, input terminals, fuses, etc. are likely not limiting performance either.Personally, the features I'd want to see would involve ripping out the microcontrollers and analog components and replacing them with something newer, though I'm really not sure if it's worth it.What would be left in there?
I was imagining how US$50 parts could best be spent on upgrading the unit.
Super cool project!
BTW, you may want to replace this cap.
(https://i.imgur.com/QlEwNnr.png)
I've had caps like that fail and leak nasty stuff all over the board. IIRC they're known for doing that.
BTW, you may want to replace this cap.
(https://i.imgur.com/QlEwNnr.png)
I've had caps like that fail and leak nasty stuff all over the board. IIRC they're known for doing that.
BTW, you may want to replace this cap.Thank you. I will definitely replace it. I didn't think they are so badly behaved.
I've had caps like that fail and leak nasty stuff all over the board. IIRC they're known for doing that.
Thank you for pointing out this little bugger.There are 4 of them. I think 2 big ones (0.022uF) are not that dangerous, because they are connected across the switch.
There are 4 of them. I think 2 big ones (0.022uF) are not that dangerous, because they are connected across the switch.Are you maybe thinking of another meter? I just took a look at my notes from when I tore down my two 3478A's and I didn't note down seeing any 1000pF caps. Did I miss something?
But the other two 1000pF are across mains.
Location | Capacitance | Voltage | Brand | Notes / Other Markings |
C761 | 3300µF | 25V | SMC | 8827(2) (M)85ºC |
C702 | 330µF | 50V | SMC | 88 C(2) (M)85ºC |
C703 | 330µF | 50V | SMC | 88 C(2) (M)85ºC |
C711 | 1000µF | 25V | SMC | 8835(2) (M)85ºC |
C765 | 0.022µF | 250V | RIFA | Photo (https://photos.app.goo.gl/O0IRZ0XIHsmDP2Rv2) |
C766 | 0.022µF | 250V | RIFA | See Above |
Location | Capacitance | Voltage | Brand | Notes / Other Markings |
C761 | 3300µF | 25V | SMC | 8827(2) (M)85ºC |
C702 | 330µF | 50V | Sprague | 8742(M) 85ºC |
C703 | 330µF | 50V | Sprague | 8742(M) 85ºC |
C711 | 1000µF | 25V | SMC | 8831(2) (M)85ºC |
C765 | 0.022µF | 250V | RIFA | Photo (https://photos.app.goo.gl/aRxHuC6wO7PbKqkH3) |
C766 | 0.022µF | 250V | RIFA | See Above |
A quick video demonstration.This is awesome!
https://drive.google.com/open?id=179wN6CET8ZQY1wQDYIMmN7-N4oslAw8C (https://drive.google.com/open?id=179wN6CET8ZQY1wQDYIMmN7-N4oslAw8C)
Are you maybe thinking of another meter? I just took a look at my notes from when I tore down my two 3478A's and I didn't note down seeing any 1000pF caps. Did I miss something?Those are A1C721 and A1C720. I have an old version of 3478A. Maybe they where changed in newer revisions.
I've starred your repository and plan on experimenting with this at some point in the future.You are welcome :)
Thanks, I took another look and was able to locate them. They are directly between the transformer and the mains input. Removing the GPIB ribbon cable makes them easier to see.Are you maybe thinking of another meter? I just took a look at my notes from when I tore down my two 3478A's and I didn't note down seeing any 1000pF caps. Did I miss something?Those are A1C721 and A1C720. I have an old version of 3478A. Maybe they where changed in newer revisions.
The software part works quite well. So I'm going to use it for some time to see what I want do next.I've been using my "extended" HP3478 for awhile now. All the features work very well. Now I'm asking for an advice on what else to do about this project. Probably I should add some documentation to make it easy to reproduce? I feel a bit uncomfortable about I'm the only one using such a cool thing :)
Thanks kirill. Can you send me the LibreOffice Writer files? It's more efficient making corrections that way rather than have you re-enter them from a list of changes.I just uploaded them to the git. Thanks.
Pull request submitted. I clicked a bit too fast and may have borked it. Let me know.bitseeker, thank you for spending your time on this. It's a very valuable experience to me. I had to revert some spacing changes, because html and odt don't look the same. If you add empty lines in odt to make it better, html becomes too sparse. Tabs also behave differently.
I tried your project on my HP3478A and it doesn't do anything when I press SRQ.I just checked the source... The SRQ key is disabled by default, so you either need to program the provided eep file or enable it with OX1w serial command.
Hi Miti,
It definitely works without an USB-to-UART adapter, but it would be very hard to diagnose any problems without one.
How did you download the firmware then?
The "standard" fuse settings used on those atmega328p boards should work.
However the recommended efuse configuration is at the bottom of the following page:
https://kirill-ka.github.io/hp3478ext/basic-impl.html
Could that be the cause?Yes. Then you need to disable the bootloader with fuse bits...
What's the GPIB address of HP3478A? Is it set to default?
You may try to set PWR ON SRQ DIP switch to see if SRQ annunciator is cleared after power off.
Do you see LSN or TLK annunciators blinking after powering 3478A on?
I'll check fuse config later, but your setting looks right.
The GPIB address was set to 2. I set it to 0 and still nothing. What should it be? I set the PWR ON SRQ and SQR is displayed and stays there.The default address for HP3478A is 23.
LSN and TLK never blink.
That was it, the address was wrong. You should add that to the instructions.Yes, I will. I'm glad you got it working.
Edit: Is the UI diagram in page one up to date? Mine doesn't seem to follow it or I don't understand it.Autohold, diode and temperature functions are missing from it. Other than that, it seems to be correct.
I think I'll put it on a proper PCB and install it in my two meters.Then I owe you to describe how I connected the UART-USB module...
Then I owe you to describe how I connected the UART-USB module...
I got bored today and put together a schematic.It looks good. Thanks.
1. What's the benefit of powering the FT232 from USB only? It is held in reset while USB is not plugged anyway and I save three diodes.The idea is to allow the whole thing to be USB powered.
2. What's D6 doing? Is it a heart beat indicator?Current firmware blinks it when it's in the GPIB listen state.
Not sure the ft232 would have some isolation ?? You may end with ground problems if you take some measurements with the meter and be connected to an computer.Digital part of HP3478A is already isolated from analogue part. I don't see why the USB isolation would be necessary.
... i dont think the ft232 would be held in reset, i have FTDI usb adapters always connected to my pc, until you open connection on com ports, they stand still and are waiting ?? and the coms on the "slave" interfaces are not held in reset too, they function normally.
I have FTDI usb-rs232, but hey have an added buffer bidirectional i/o chip inside. We did had problems of isolation / data lines not pulled correctly and when i made some tests it affected the "slave" instruments circuits.
Not sure the ft232 would have some isolation ?? You may end with ground problems if you take some measurements with the meter and be connected to an computer.
Thats why i push some good isolation circuit for the usb-gpib interface ?? I know, i know its not a 5$ dongle, but when you measure voltage potential between pc ground and interface grounds you may have some surprise(s).
I would have added an small dc-dc 5 volts converter isolator, they have a very small footprint, it would add more isolation, but not on the data signals.
Is the Official HP Agilent usb-gpib has known available schematics ?? since we have so many cloned devices from china.
Usb isolator: 9$ usd
https://www.ebay.com/itm/1500V-USB-to-USB-Isolator-Board-Protection-Isolation-ADUM4160-ADUM3160-Module/152382773951?hash=item237ab89abf:g:2d8AAOSwEzxYbQMG:rk:2:pf:0 (https://www.ebay.com/itm/1500V-USB-to-USB-Isolator-Board-Protection-Isolation-ADUM4160-ADUM3160-Module/152382773951?hash=item237ab89abf:g:2d8AAOSwEzxYbQMG:rk:2:pf:0)
Great news! Thanks. I see you found a proper socket with long pins. I used pin headers meant for Arduino shields. They didn't fit well.
...and that kit is damn expensive.These are pretty cheap:
Edit: It doesn't work with external GPIB adapter in parallel with the extension for me. You may want to look at the code and see if all the lines are high impedance/inputs while waiting for buttons press/serial communication.
I can make some suggestions, if you are open to improvements.Yes, sure, any suggestions are welcome.
1. Timeout so it doesn't stay there forever waiting to select AUTOHOLD, etc.Could you add some background, why do you think it would be useful?
2. Instrument GPIB address auto detection so we're not stuck with address 23 and we don't have to set it manually in the extension board. You can save it in EEPROM and validate it at power up.
Could you add some background, why do you think it would be useful?
If you mistakenly press the SRQ key, I think, it's faster to cycle through menu instead of waiting.
I guess this is meant for installations where you just don't want to use the USB interface at all.
It can be done, but it's a bit more complex than I like it...
By the way, I made it to exit the continuity tester by switching the measurement function.
In CONT mode, if I don't probe anything for awhile, probably about 10 minutes, the display goes blank. That's a feature the instrument if the display isn't updated for about 10 minutes. Please look at "D3text" command. Probably you don't update the display if nothing changes.
Did you upload the hex somewhere?I'm in the process of adding eeprom parameters for buzzer volume and frequency (0 will disable PWM). After that I'm going to release a new version.
Looks like it's a good idea to add a gate pull-down resistor for the buzzer driver mosfet. It gets quite warm then atmega pin is high-Z.
Yes, I already did so. But it's still in hi-Z when the firmware is not running (firmware flashing, bootloader, etc.).Looks like it's a good idea to add a gate pull-down resistor for the buzzer driver mosfet. It gets quite warm then atmega pin is high-Z.I didn't expect that output to be hi-Z but I guess that's how you turn the buzzer on and off, from DDR register. Can you add one line of code to make PB2 digital output once you turn off the buzzer and then PWM output again when you turn it on?
Should be an easy patch to do on the actual pcb's you haveThere's a GND via right next to the gate. I've put a 0603 resistor and it doesn't even look like a bodge :)
Kirill,I guess you didn't check the github project releases.
I still see the old files on Github, the .eep and .hex are dated Aug 2018. Not that I want to update now, I'm very happy with this version. I will probably play with it once I install the USB cable that I ordered from Evilbay.
So happy that HP3478A became my go to meter for every day measurements:I'm happy to hear that. I don't have another meter with an autohold function to compare.
- Buzzer response is very fast, at par with Fluke.
- Autohold is very fast and stable with 3 or 4 digits and reasonably fast with 5 digits.
- Min/Max works well.
I have two more suggestion for improvement:Ok, I'll add this. The reading rate in CONT mode is 78 rdg/sec (may be different with 60 Hz mains). So it's latched for 1/78 sec. I think of adding a parameter (N) so the buzzer will stay on for N/78 sec.
1. Latch buzzer - minimum buzzer time. Fluke does that.
2. EEPROM autoinit - Initialize the EEPROM after a new part is programmed or after an upgrade that adds new EEPROM addresses/content. This may be harder to implement but I don't think you use many EEPROM variables.I don't quite understand what do you want. The firmware uses the default parameter value when it sees FF's instead of something valid. This should work during upgrade as soon as parameters are not rearranged or interpreted in a different way. Recently I've added a script to configure EEPROM image files (.eep). The script may not be so user-friendly, because it requires TCL and avr toolchain installation, but it allows me to include a set of pre-configured eep's in the binary release.
The firmware uses the default parameter value when it sees FF's instead of something valid. This should work during upgrade as soon as parameters are not rearranged or interpreted in a different way.
Since Arduino bootloader doesn't program EEPROM...Hmm. At least some of them do. I need to check if it works for me.
Kirill,Thank you for testing it.
The buzzer doesn't work for me with Ver 1.2 and I tried both EEPROMs, I'm back to Ver 1.1. I use internal driven (DC) buzzer.
I just uploaded r1.2.1, it hopefully fixes the problem.
This upgrade of HP3478 looks awesome :o (I need to do this ). A video showing the new functions would very interesting :-+.
"unsigned char EEMEM uc_valor = 0x33;"
Still doesn't work for me.It should :-// Maybe you didn't add W to save parameters in the EEPROM?
Beside that, it didn't even respond to SRQ key until I programmed the EEPROM.Ok, I'll keep an eye on EEPROM addresses used for variables. So they don't change with the updates unless required.
This is what I meant by "EEPROM Autoinit", after every fresh programming or upgrade, make sure it starts with a default EEPROM that works. This way, once the bootloader is programmed and the fuses configured, we don't need to use AVRISP anymore, everything is done through USB.I did program EEPROM with the bootloader.
avrdude -b 57600 -c arduino -p m328p -P /dev/ttyUSB0 -U eeprom:w:hp3478-ext-dc-buzzer.eep
As I remember, there's a fuse to erase EEPROM before programming the flash. But it shouldn't affect bootloader in any way. I can put some version code in the EEPROM to force initialization if an incompatible version is detected. But I don't think it's needed for now.
Multi-tone continuity as in changing pitch relative to resistance? I like the sound of that (pun somewhat intended).Yes. For now I have a bunch of parameters: thresholds, pwm periods and pulse lengths. After I gather some use case scenarios, I'll try to figure out a more user-friendly configuration.
The idea is great but the buzzer response is not linear so you'll have big variations in the intensity. But you can control the volume as well so it should be doable.Yes, both pitch and volume are configurable.
Using an internally driven buzzer woud solve the PWM output restriction.Then there would be no buzzer control ???
Do you feel pushed?I don't :) At my main job I don't have a direct connection to the users of our product. Even worse, there may be years until my work meets any user at all. So having some feedback is a nice experience to me.
... will know when to stop ??Who knows? ;) Yes, the idea is to have fun of working on the project. And I agree, this is kinda fragile. Thanks for reminding, I try to keep things reasonable.
SETTING COMMAND DESCRIPTION
Obeep_period<period> beep tone used in autohold
Obeep_duty<duty> beep volume used in autohold
Ocont_beep_ta<R-threshold> lower buzzer threshold for continuity mode
Ocont_beep_tb<R-threshold> upper buzzer threshold for continuity mode
Ocont_range<R-range> Ohms range used in continuity mode
Ocont_thr<R-threshold> threshold for continuity mode to start displaying the resistance value
Ocont_latch<latch-cycles> number of measurement cycles to continue buzzing after the measured resistance gone above the cont_thr
Ocont_beep_pa<period> beep tone for cont_beep_ta point
Ocont_beep_da<period> beep volume for cont_beep_ta point
Ocont_beep_pb<period> beep tone for cont_beep_tb point
Ocont_beep_db<period> beep volume for cont_beep_tb point
VALUE RANGE DESCRIPTION
<period> 0-65534 frequency = 16MHz/2/<period>
0 means the buzzer is DC-driven
<duty> 0-127 127 means 50% duty cycle
0 disables the buzzer
for me working values are 5 to 20
<R-threshold> 0-3000 corresponds to the value displayed on the screen in 3-digit mode
<R-range> 0-6 resitance range number-1
refer to the HP3478A programming manual
the default is 1 = 300 Ohm range
<latch-cycles> 0-100 the minimal number of measurement cycles the buzzing continues
one cycle is ~1/75 of second
0 means no latch
OVER CONT CONT CONT
RANGE THR TB TA 0
| | | | |
V V V V V
+----------+------------+---------+-----------+
\ \ \ \
\ \ \ beeps using beep_da & beep_pa
\ \ \
\ \ beeps using values linearly interpolated from beep_pb..beep_pa & beep_db..beep_da
\ \
\ beeps using beep_db & beep_pb
\
displays "> cont_thr" (the actual effective value of cont_thr is used)
great project!Thanks!
it is possible/viable add db measurements,It should be possible, but what do you mean by the dB?
frecuencyNo. HP3478 can't measure frequency.
, and remember the prefered digits for example 4 1/2?Yes, I was thinking of adding some kind of save state/recall state functions. That would be a lot more complex than just saving one parameter, but it would be more logical and universal solution.
Thanks!, i mean dBm (some fluke dmms are refereced to 600Ω) dont know if hardware is adequated :-//Sorry for late reply, I didn't notice the post was edited. I don't know if any DMM would provide a matching low impedance input.
Thanks!, i mean dBm (some fluke dmms are refereced to 600Ω) dont know if hardware is adequated :-//Sorry for late reply, I didn't notice the post was edited. I don't know if any DMM would provide a matching low impedance input.
My Amprobe AM-140A allows for multiple impedance references. All of them require an external termination.
I hope you understand that it would be just a mathematical function, not hardware related.
thank you, now i understand. i was believing was hardware related as i read in fluke 8060a manual.The fluke 8060a manual says that the base specifications for dB modes are the same as DC Volts/AC Volts.
just for curiosity what are/mean the characters in diode test? >3 Volts perhaps?Yes. 3kOhm range used for the diode test. It gives us precise 1mA test current, ~6V open circuit, ~3V measured diode drop at max. >3V is a bit of a lie, because it will measure slightly above 3V.
thank you, now i understand. i was believing was hardware related as i read in fluke 8060a manual.The fluke 8060a manual says that the base specifications for dB modes are the same as DC Volts/AC Volts.
So I assume it's just a math function.
What are you going to use the dB measurements for?
great project!, it is possible/viable add dB measurements, frequency, and remember the prefered digits for example 4 1/2? thats will be great!, by the way there is any source to buy for the project pcbs already populated like drop in solution? @Miti?
best regards.
Pio
great project!, it is possible/viable add dB measurements, frequency, and remember the prefered digits for example 4 1/2? thats will be great!, by the way there is any source to buy for the project pcbs already populated like drop in solution? @Miti?
best regards.
Pio
Sorry, I missed your question. No, I don't have fully populated boards, only bare boards.
thank you very much, do you think can be a business oportunity for you to sell it like a finished product? do you think there is enough demand? i think still are thousands 3478a working out there.
thank you very much, do you think can be a business oportunity for you to sell it like a finished product? do you think there is enough demand? i think still are thousands 3478a working out there.
First of all this is Kirill's project so he should be the one to commercialise it, if he decides to. He must have put much more hours in the SW than I've put in the PCB.
Second, no, I don't see a significant commercial value in this project, designed for a dying multimeter. It is very useful, nice exercise for hobbyists though.
I'm sorry Kirill, I hope you're not offended by what I said. ;D
Edit: I can sell you a board or two if you want. Contact me on the PM if you want.
Hi Kirill,
What compiler do you use? Can it be compiled with AVR Studo? Can you post the hex and eep as you did before?
Thanks!
Kirill,
Most of the externally driven buzzers are single tone, usually the sound intensity decreases significantly outside of the resonant frequency they were designed for. Did you experiment with multiple buzzers, do you have a part number to recommend?
<GPIB> Ocont_ran
1 # 300 Ohm range
<GPIB> Ocont_beep_ta
5 # 0.5 Ohm resistance for beep_pa & beep_da
<GPIB> Ocont_beep_pa
2000 # 8kHz
<GPIB> Ocont_beep_pb
40000 # 400Hz
<GPIB> Ocont_beep_da
15 # 15/256*100% = ~6% duty cycle
<GPIB> Ocont_beep_db
15
<GPIB> Ocont_beep_tb
1000 # 100 Ohm resistance for beep_pb & beep_db
<GPIB> Ocont_thr
1000 # 100 Ohm threshold where it starts buzzing
<GPIB>
I just noticed a bug in handling cont_thr parameter. There's an integer overflow so it triggers at lower value than specified. I'll publish a fix for it soon.
I just noticed a bug in handling cont_thr parameter. There's an integer overflow so it triggers at lower value than specified. I'll publish a fix for it soon.https://github.com/KIrill-ka/hp3478ext/releases/tag/r1.4.1
No, I don’t have a special application. The other day I turned on one of my two meters just to be greeted with “Uncalibrated”, after I just replaced the batteries in the spring. I measured the battery and it was at 22mV. I measured the good one and it was 3.6V so basically right where I left it in March. I went to buy a new battery and out of four that I measured, one was dead, one was at 3.4V, so it was discharging internally, the other two were around 3.67V. You can’t trust anything anymore, bad quality everywhere.I still haven't replaced the battery. My 3478 dated back something like 1984 and the battery is from 1994. Calibration RAM data is kept in a safe place though.
Luckily, I saved the calibration memory before replacing the batteries so I thought, how nice would be just to connect the USB cable and upload the constants back using lmester’s free control program, since the extension is there anyway and it has GPIB capabilities.It can be done with 3478ext in current state. I write my "remote controlling" scripts in Tcl. However, I agree it's much easier to do with a dedicated program.
I’m just trying to be greedy at your expense. :-[Another approach would be to send the 3478ext to lmester to encourage him to support the command set of 3478ext ;D
BTW, I tried your new version with variable tone. I assembled two new boards for that, I didn’t want to jinx the existing ones by replacing the internally driven buzzers, just in case I didn’t like it.For now you can save 2 presets with different settings for the CONT mode. Is it ok for you?
It’s really good, not too much variation in the buzzer level as I expected. However, I have a suggestion, you know by now that I always have one to the desperation of another member here ;).
Most of the time I use the continuity function to check for, well, continuity and that high pitch is bothersome. Can you separate this function in two? Make one “CONT” with a fixed frequency like before, and the other one “SHORT DET” or “CONT VAR” for short detection.
One more thing, the beep in autohold is a bit too long for me and compared to Fluke.
I like the latch though.
Another approach would be to send the 3478ext to lmester to encourage him to support the command set of 3478ext ;D
For now you can save 2 presets with different settings for the CONT mode. Is it ok for you?
It's configurable. Try "Ocont_latch" to see the current setting.Ok, got it. I didn't care to tweak it. What's you suggestion?
I guess that would work but, unless you install two GPIB connectors, in and out, you loose the GPIB interface. The good thing about the internal implementation is that it is completely transparent to the GPIB communication.
I was trying to save two presets, one with fixed pitch for continuity test, and one with variable pitch for short detection. It looks like they are using the same EEPROM addresses as the settings overwrite each other.
i have a new arduino nano v3 clone collecting dust, it can be used for this project in a basic implementation form instead the pro mini + UART to USB adapter combo?Why not? In fact, it's better than "pro mini" variant, because you don't need a separate UART-USB converter. Just be sure that MCU is mega328 @ 16MHz
i have a gpib connector too, my idea is using the arduino externally in a suited enclosure for it and hopefully a funtional buzzer :DThe DC buzzer can be driven directly by the atmega. I'd just add a current limiting resistor. The piezo speaker thing requires a driver (or, possibly, some other schematic to limit the current).
, i think this way i will lost the conectivity (powered via usb)What do you mean by that?
Version 12-24-19
Windows 7 / S-2008 R2 Service Pack 1 Platform ID 2
Config file loaded.
Debug ON.
Command delay = 50ms.
Max COM port = 64.
OC:Open COM33 CheckCom.
CheckCom start COM33
CheckCom end CreateFileA COM33
CheckCom port found
CheckCom end CloseHandle COM33
OC:Open COM33 open port.
OC:Open COM33 OK.
CA:Start CheckAdapter on COM33
CA:Check Prologix GPIB adapter. ProVer =:"GPIB"
QS: Send:"++ver" Reply:""
CA:Prologix not found. ++ver retry for Arduino.
CA:Retry ++ver (Arduino boot delay)
-CA:Retry: Found Prologix adapter (Arduino retry).
CA:Exit checkAdapter on COM33
COM port set to COM33
IG:Start InitGPIB
IG:Find Prologix GPIB adapter.
IG:ProVer srch:"GPIB"
IG:Found Prologix adapter.
IG:set ++mode 1.
IG:set eot_enable 0.
IG:set read timeout:++read_tmo_ms 3000
IG:SetGPIB Address ++addr 23 success.
IG:set EOI 0.
IG:set EOS 0.
IG:Set auto talk mode off: ++auto 0 success.
IGT:QSB result 1
Instrument address set to GPIB 23
Send saved config to instrument
F1
RA
N5
Z1
D1
3478A using program config settings.
Instrument start
Instrument stop/local
and the ++ver response (GPIB).I just wanted it to work with the default settings. Though, I might change it to return the
There is however a "Prologix not found" but the retry finds it, see the attached log.That's normal. Since we use "reset via DTR" same as arduino, ++ver command fails for the first time.
One issue is that once I use the remote control program, it locks all the local controls from the front panel until the instrument is restarted. I don't know if that's by design or is a bug.I'm not sure why it does that (the transcript of data sent and received to/from the serial port would help to find out), but gou should be able to use Local key to unlock the keypad (Do you see RMT annunciator?).
I tested v2.0 with Prologix support, it works well, I didn't see any issue with Luke's free control program. The differences from Girlando's settings are the baud rate (115200) and the ++ver response (GPIB). Other than that everything is the same. There is however a "Prologix not found" but the retry finds it, see the attached log.
One issue is that once I use the remote control program, it locks all the local controls from the front panel until the instrument is restarted. I don't know if that's by design or is a bug.
Thanks for your effort!
if QuerySER("++ver",ProVer$,.2) =0 then
if DBug then print #main.Terminal,"CA:Prologix not found. ++ver retry for Arduino."
call sleep 1400 'Delay for Arduino reboot on COM change
if DBug then print #main.Terminal,"CA:Retry ++ver (Arduino boot delay)"
print #main.Terminal,"-"; 'Give an indication of a Arduino prologix detect retry
if QuerySER(cr$;"++ver",ProVer$,.2) =0 then
if DBug then print #main.Terminal,"CA:Retry ++ver fail" '
else
if DBug then print #main.Terminal,"CA:Retry: Found Prologix adapter (Arduino retry)."
af=0 'Adapter good
end if
else
if DBug then print #main.Terminal,"CA:Found Prologix adapter (No arduino delay)."
af=0 'Adapter good
end if
if af=1 then
close #comm 'Close port if adapter failed
COpen=0
end if
end if
No, it is not in RMT, it is local. I tried pressing Local button multiple times and it doesn't work. The external GPIB works, internal GPIB works, front panel extension functionality is dead until power cycle.
Also, I have code to handle the Arduino reset when the COM port is opened.
and the ++ver response (GPIB).I just wanted it to work with the default settings. Though, I might change it to return the
actual version.
I was trying to save two presets, one with fixed pitch for continuity test, and one with variable pitch for short detection. It looks like they are using the same EEPROM addresses as the settings overwrite each other.
I use a substring search when looking for the response to ++ver. As long as your ++ver response contains "GPIB" my program will detect it.Thanks, I'll do so.
I apologize for the hassle, but is it possible to install this internally and have usb connectivity without making case mods?
What did you choose to pull the power for the arduino from? It looks like straight off th underside of the voltage regulator?Yes, since I have an old style regulator in a TO3 case, I connected a jumper cable straight to the pin of the regulator.
...I just finished reading the rest of the thread and i guess arduino pin header cables are no good? ???Why? Maybe you mean the issues related to the GPIB socket? But there're no cables involved then.
Ah! okay, thank you. I didn't realize the pin length problem was only with the PCB version.I didn't try it like that, so I don't know.
I was going install it like this. https://www.eevblog.com/forum/projects/project-extending-hp3478a-functionality/msg2074201/#msg2074201 (https://www.eevblog.com/forum/projects/project-extending-hp3478a-functionality/msg2074201/#msg2074201)
Last question for now, i hope....Yes. No special support required for individual commands.
Does your adapter support "W" command in gpib-usb, to use it for dumping SRAM calibration data?
Last question for now, i hope....Yes. No special support required for individual commands.
Does your adapter support "W" command in gpib-usb, to use it for dumping SRAM calibration data?
Did you see the following thread? Not only you can dump the calibration data, but also you can decode and tune the individual parameters.
https://www.eevblog.com/forum/testgear/free-hp3478a-multimeter-control-program/ (https://www.eevblog.com/forum/testgear/free-hp3478a-multimeter-control-program/)
I use a substring search when looking for the response to ++ver. As long as your ++ver response contains "GPIB" my program will detect it.Thanks, I'll do so.
Maybe then you could send ++exit before your program terminates. So hp3478ext will exit the prologix interpreter and could take back the control of the multimeter.
Before program exit I send the following commands:
"D1" 'Turn instrument LCD display on
"++auto 0" 'Tell instrument to stop talking
"T1" 'Instrument trigger normal on stop
"++loc" 'instrument to local mode
I have now added "++exit".
This will return an "Unrecognized command" from the real Prologix adapter but won't cause any problems.
Please test it and verify that it's working with your firmware.
Now it would be nice to add Kirill's extended function to your software. ;)
Now it would be nice to add Kirill's extended function to your software. ;)
Luke, beware, it's over 3000 lines of very dense C code already ;)
What I meant was buttons to select your functions but I guess SRQ must be a hard press, does it?
Before program exit I send the following commands:
"D1" 'Turn instrument LCD display on
"++auto 0" 'Tell instrument to stop talking
"T1" 'Instrument trigger normal on stop
"++loc" 'instrument to local mode
I have now added "++exit".
This will return an "Unrecognized command" from the real Prologix adapter but won't cause any problems.
Please test it and verify that it's working with your firmware.
It works for me, thanks!
Now it would be nice to add Kirill's extended function to your software. ;)
I’m worried the fuse settings didn’t program and the boards are fried.You can't program the fuse bits with the serial interface at all. And the fuse settings are not that critical.
I’m worried the fuse settings didn’t program and the boards are fried.You can't program the fuse bits with the serial interface at all. And the fuse settings are not that critical.
But I wonder where the VCC wire does go?
I think it's more likely a power supply issue. May be ether wrong polarity or high voltage.
The GPIB pins should be current limited according to the spec.
Did you check the actual voltage going to the arduino board?
I just noticed that you're messing around the place where the line voltages and the transformer primary side exposed...
The GPIB pins should be current limited according to the spec.It looks like I'm wrong.
3rd try is the charm =)
Turns out my 3478A was on channel 6, not 23 - and on the 3rd Arduino I programmed the EEPROM as well as the hex file. I don't know if one or both steps were necessary. I assume so because my old Arduino's aren't responding to serial.
All's well, tried a few GPIB commands and looks good =)
3rd try is the charm =)
Turns out my 3478A was on channel 6, not 23 - and on the 3rd Arduino I programmed the EEPROM as well as the hex file. I don't know if one or both steps were necessary. I assume so because my old Arduino's aren't responding to serial.
All's well, tried a few GPIB commands and looks good =)
Congratulations, you passed the quest :-+ It makes me think I should start a Q&A section.
However those GPIB address and EEPROM issues do not explain what happened to the first couple of arduino boards?
Are they alive?
I tripped over that GPIB Address 23 as well but I forgot about it. It is somewhere in this trail :-DD
It's a mystery to me as well wit the first two boards, to be honest. I didn't try to make a serial connection to see if they responded before plugging them in, I have tried minimal testing with those two boards and have not been able to get them to respond whatsoever. I get programmer not responding errors with them. I may try to shock some life back into them at another time. i could also send them in a plain envelope to you if you wish to inspect them! postage would be like less than $10 to you for this and if it helps you in any way, i don't mind.Not sure if it would help me, but I'm curious :) I'll pm you the address. I'd post the investigation results here if I get them.
3rd try is the charm =)
Turns out my 3478A was on channel 6, not 23 - and on the 3rd Arduino I programmed the EEPROM as well as the hex file. I don't know if one or both steps were necessary. I assume so because my old Arduino's aren't responding to serial.
All's well, tried a few GPIB commands and looks good =)
Congratulations, you passed the quest :-+ It makes me think I should start a Q&A section.
However those GPIB address and EEPROM issues do not explain what happened to the first couple of arduino boards?
Are they alive?
It's a mystery to me as well wit the first two boards, to be honest. I didn't try to make a serial connection to see if they responded before plugging them in, I have tried minimal testing with those two boards and have not been able to get them to respond whatsoever. I get programmer not responding errors with them. I may try to shock some life back into them at another time. i could also send them in a plain envelope to you if you wish to inspect them! postage would be like less than $10 to you for this and if it helps you in any way, i don't mind.
If they're of no use, no worries, if i can't revive them i will toss them.
By the way, doing two failed attempted installs for the bottom side gave me some good ideas on how to build an Arduino pro really slim with angle headers only. I ended up moving the +5V diode wire over to the 5V point right next to the ground wire in my above picture and get 4.95v off it so I am happy. :D
I was thinking, with long enough ribbon wire, you might be able to sneak the USB TTL connection wires out around the HPIB address dip switches. There seems to be plenty of room around it.
Oh - i almost forgot, the only other difference is that the two times it didn't work, I had the GPIB header from the back panel unplugged. This time , i plugged it back into its socket. I don't see why that should matter.I tripped over that GPIB Address 23 as well but I forgot about it. It is somewhere in this trail :-DD
Yes, thank you; it's your post that made me realize I had to check that! :-+ You deserve credit for sure :phew:
@Mp3
Glad you do it, can you post pictures of your finished installation please?
Best regards.
Pio
@Mp3
Glad you do it, can you post pictures of your finished installation please?
Best regards.
Pio
Hey Pio,
Sure, this is my first install though. I have a 2nd (nicer, and calibrated) 3478A I still need to do the mod on, and I'll probably make it a little nicer this time. Though, by the time i got to my last attempt at this one it was much less of a mess than the first two :D
Some of my thoughts for anyone considering the internal install:
- You will be working in the area where there is line voltage active even with the power off, so do a really good job of making sure the wires you solder will never come loose.
- Open the bottom up and plan to get the Arduino well out of the way of the line voltage area under the plastic cover, so make your wires long enough ( I did not make them long enough to re-install the plastic line voltage warning plate so I went crazy with the Kapton tape)
- The solder for the HPIB pins and the pins themselves don't seem to solder very easily. The solder balls up easily. Just be patient with it and maybe wick some of it up
- Use right angle pin headers for the entire Arduino if you have any hope of getting the bottom panel back on
- I can't prove it, but it might need connections on the top side to work properly, since the two installs I had that didn't work had the HPIB header by the transformer unplugged, and the one that worked had it plugged in. Also, Miti's successful install was a top side install and I think kirill_ka's internal installs are top side as well.
- You can sneak a 5-wire ribbon cable for the USB-TTL out through the HPIB ID DIP switch assembly as there's plenty of room for it to come out of the case.
- There are several options for powering it, I chose to pull 5V from one of the marked test points with a 1n4148.
thank you very much, looks very good. i think a slim case would be very neat and can isolate the arduino against the main board.
what you think? i think there is enough height room between the bottom side of the pcb and the case.
best regards.
Pio
thank you very much, looks very good. i think a slim case would be very neat and can isolate the arduino against the main board.
what you think? i think there is enough height room between the bottom side of the pcb and the case.
best regards.
Pio
Hmm, that looks small enough to fit, you could probably make it work :-+
edit: Maybe the case would fit with some double sided tape in the empty area where the thick ground trace separates the two sides? Not 100% sure but seems like it?
It's a mystery to me as well wit the first two boards, to be honest. I didn't try to make a serial connection to see if they responded before plugging them in, I have tried minimal testing with those two boards and have not been able to get them to respond whatsoever. I get programmer not responding errors with them. I may try to shock some life back into them at another time. i could also send them in a plain envelope to you if you wish to inspect them! postage would be like less than $10 to you for this and if it helps you in any way, i don't mind.Not sure if it would help me, but I'm curious :) I'll pm you the address. I'd post the investigation results here if I get them.
It's a mystery to me as well wit the first two boards, to be honest. I didn't try to make a serial connection to see if they responded before plugging them in, I have tried minimal testing with those two boards and have not been able to get them to respond whatsoever. I get programmer not responding errors with them. I may try to shock some life back into them at another time. i could also send them in a plain envelope to you if you wish to inspect them! postage would be like less than $10 to you for this and if it helps you in any way, i don't mind.Not sure if it would help me, but I'm curious :) I'll pm you the address. I'd post the investigation results here if I get them.
Mp3, I've got the boards. I'm afraid there isn't a lot of mystery there.
One board (with all the pins soldered) is working. I've no problem programming it with both ISP and bootloader interfaces. So I can't tell what was wrong with it. The other one has a solder dag shorting out the resonator.
Thanks for the boards, they always come in handy!
There are 4 of them. I think 2 big ones (0.022uF) are not that dangerous, because they are connected across the switch.
But the other two 1000pF are across mains.
There are 4 of them. I think 2 big ones (0.022uF) are not that dangerous, because they are connected across the switch.
But the other two 1000pF are across mains.
4 of them? I see the two 0.022uF sitting next to the transformer, where are the other two?
No problem, would love to know if you find any quirks from doing a bottom side install.
I would be appreciated if you upload the updated binary, since I am not familiar with the compiling at all.Hi,
Not sure if this has been asked on other post but will the artag style adapter workSorry, I'm not quite sure what do you want.
For the purpose of plugging into gpib externally. I was thinking that would work the same from my understanding. Pretty much just needs 5v supply to arduino and buzzer.The external connection is not a problem. The cheap atmega328p board+USB2UART+connector+bunch of wires will do the job.
For the purpose of plugging into gpib externally. I was thinking that would work the same from my understanding. Pretty much just needs 5v supply to arduino and buzzer.The external connection is not a problem. The cheap atmega328p board+USB2UART+connector+bunch of wires will do the job.
AR488 hardware will not work straight away as it uses different pin assignments (at least).
For the purpose of plugging into gpib externally. I was thinking that would work the same from my understanding. Pretty much just needs 5v supply to arduino and buzzer.The external connection is not a problem. The cheap atmega328p board+USB2UART+connector+bunch of wires will do the job.
AR488 hardware will not work straight away as it uses different pin assignments (at least).
Would it be possible to remap the pins to a custom layout in the AR488 FW to align with the HP3478A Control Software?
I just re-read entire thread and issue that seems to prevent using ar-tag adapter would be from post #105 the piezo/speaker pin.Correct. If the PB2 (or PB1) pin is not available, then more modifications required for the hp3478ext to work. However if the variable tone buzzer is not essential, the firmware can be modified to use any digital pin for the buzzer.
It doesn't seem that the arduino sketch would allow both functions to work in unison due to the pin assignments as well as the user interface for the 3478 control software mcj7247 shows would have to be possibly recoded if you wanted a display.
Also im not even sure a usb powered arduino could drive a speaker directly while performing as a gpib adapter. Never measured current draw from piezo.
Provide an idea to display the time when the multimeter is not operating. Add RTC to the circuit.
Hi,
Does it respond via serial (USB) interface? If it does, the second thing to check is the GPIB address.
It should respond to UART commands without any connections. Just the bare board.
It's good to know, that the UART works. But you'd get the response from the hp3478-ext firmware. Just to know that it's loaded and works.It should respond to UART commands without any connections. Just the bare board.
I think yes it does. If I send text over serial monitor it appears in the console. I don't have experience with Arduino, sorry
I needed load a serial sketch to do that
It's good to know, that the UART works. But you'd get the response from the hp3478-ext firmware. Just to know that it's loaded and works.It should respond to UART commands without any connections. Just the bare board.
I think yes it does. If I send text over serial monitor it appears in the console. I don't have experience with Arduino, sorry
I needed load a serial sketch to do that
It should respond with the <GPIB> prompt.
The connector pinout is standard. Just google "GPIB pinout". You'd find the pictures of the connector with the pin names and numbers.
what software do you use for sending requests to the arduino?kermit
what software do you use for sending requests to the arduino?kermit
Using the following settings:
open port /dev/ttyUSB0
set flow-control none
set carrier-watch off
set speed 115200
set terminal lf-display crlf
connect
I don't think that incorrect settings in the eeprom is an issue here. But I recommend also programming the eeprom (eep file) to be sure.
And please, disconnect the gpib connector. First we need to know that the serial communication is working.
thank you, I think the software is running :):-+
thank you, I think the software is running :):-+
Keep on trying! Eventually it will work :)
The next task is to get a reading from the 3478 through the serial.
Try ++read
thank you! it reads!
so what's next?
Thank you, now it works, just something strange occurs after the self test ok , two different screens, one with the power on sqr switch and other without it active.
Maybe 250ms delay isn't enough.
Any ideas?
best regards.
Pio
Thank you, now it works, just something strange occurs after the self test ok , two different screens, one with the power on sqr switch and other without it active.
Maybe 250ms delay isn't enough.
Any ideas?
best regards.
Pio
Do you power the arduino board externally?
If yes, then those errors are probably normal. The 250ms delay only counts if the atmega and the 3478 are started simultaneously.
Please, monitor the error codes for some time and tell me if something different appears. If they only happen during the start up, I can disable them.
Are the "power on srq" and "no power on srq" errors consistently different?
Pio, It's a bit strange, that you are getting E:2F000005 and E:30000003
Those codes are not happening on the first attempt to send something to the 3478.
So there's a slight chance that the errors indicate some of the GPIB control lines are not wired up correctly.
can disable the displayed error codes via commands at the terminal?Please, try the attached version. I've added the option.
As someone may have noted :) The hp3478ext has a temperature measurement function.
It only supports 1kOhm 3850 ppm/K RTDs. The constants for which are hardcoded.
Yesterday I found a source of cheap sensors: https://aliexpress.com/item/32872179878.html
They look similar to the Honeywell sensor (700-102BAB-B00) that I have.
Aha, I found it, it didn't show up with the input open. However, it is not dynamic for me, it only reads the temperature once when i select the function and doesn't change when I change the resistance. I don't have an RTD, I simulated it with 100Ohm and 82Ohm.It only has 1K RTD constants compiled in. So I'd try 1000 and 820 instead :)
Aha, I found it, it didn't show up with the input open. However, it is not dynamic for me, it only reads the temperature once when i select the function and doesn't change when I change the resistance. I don't have an RTD, I simulated it with 100Ohm and 82Ohm.It only has 1K RTD constants compiled in. So I'd try 1000 and 820 instead :)
I use 1k because it's more suitable for 2 wire measurements.
However, it is not dynamic for me, it only reads the temperature once when i select the function and doesn't change when I change the resistance.Which revision are you using by the way?
Which revision are you using by the way?
It just came up to me that there was a bug fixed in rev2.1.
Recently I checked accuracy with a body thermometer. The readings were rather close (~0.2K difference). I think it's ok as I'm just using generic RTD constants.
For some reason I can't make it work. Do you know why? Have you tried this SW?Hi Miti,
Kirill,
I'm trying your extension with this software:
https://www.eevblog.com/forum/testgear/hp-34401a-standalone-software (https://www.eevblog.com/forum/testgear/hp-34401a-standalone-software)
For some reason I can't make it work. Do you know why? Have you tried this SW?
this is a very interesting project!
Can this hp3478-ext firmware work together with AR488? I'm thinking to install internally a well flashed arduino promini without any ttl-USB conversion circuit, simply stay inside the case, meanwhile if in case I want to do data logging, I can insert the AR488 externally and connect it to PC... my question is, is there any interference between the internal simply hp3478-ext and external connected AR488?
thanks Miti. you mean use the hp3478-ext with ttl-usb circuit without AR488? my thought is to avoid drilling a hole on hp3478A case. or do you have good suggestion to do so? I think the AR488 is a generic gpib to usb adapter can be used on other instrument as well,so it is worth a try.
Can this hp3478-ext firmware work together with AR488?Yes and no. When the hp3478-ext is in passive state, there should be no interference (although I'm not 100% sure).
thanks Miti. you mean use the hp3478-ext with ttl-usb circuit without AR488? my thought is to avoid drilling a hole on hp3478A case. or do you have good suggestion to do so? I think the AR488 is a generic gpib to usb adapter can be used on other instrument as well,so it is worth a try.
Yes, it does involve cutting a hole in the back panel, see reply #73, but then you don’t need the AR488 anymore. You can control it, read an write the calibration constants, upgrade the software.
Thanks for the pictures! Very nice and clean installation.
It's funny that you also find the diode function useful. It's just 3k Ohms mode with the units displayed as V. HP3478A has precise and round current source for Ohms measurement so the reading also can be interpreted as a voltage drop. I decided to add the "diode" as a separate function so I don't have to remember the Ohms range I need to select.
Kirill, I'm interested in how you do this "Ohms interpreted as voltage drop". I have a linear programmable power supply with GPIB interface, what I want to do is to replace the transformer and diode bridge by an adjustable switching power supply, make the switching power output always 5V higher than the programmed output. by this way I can extend the max current from 1A to 5A, now I need to interpret 1A shown on PSU as 5A ... can I do the same as you did for HP3478_ext diode function? I'm not good at C coding, but if you can explain the way in detail, I believe I can try to make the code using Arduino.Sorry, I don't understand what are you trying to do.
Thanks Kirill, it works now but I see those issues as well and my laptop is I7 ;D.
If I set it to fast, beside lagging behind the instrument, I see something that looks like burst reading. It updates fast a number of times and then it freezes for half a second or so. This happens with AR488 as well.
Hello, will be implemented the to do list?
especially the dBm function :)
- Save & restore "ext" functions using presets.That was done already by the way. I forgot to remove it from the list.
Hello, will be implemented the to do list?
especially the dBm function :)
Hi,
Do you think the world is ready for it?
Ok, I'd add it by the end of 2023 ;)- Save & restore "ext" functions using presets.That was done already by the way. I forgot to remove it from the list.
Hi Selevo,
Are you targeting some automated measurements or just want to see the readings?