Electronics > Projects, Designs, and Technical Stuff

A SCPI Programmable (Precision) Resistor

(1/10) > >>

I'd like to share a project with you that I've been working on lately: A programmable resistor.

At the time I was looking for a decade resistance box for my small lab. A few days later I decided to build one myself - the goal wasn't to build the most precise and generally best programmable resistor - that task I leave to TME manufacturers. It started more as a quick exercise for two upcoming projects, mostly regarding the machanical design/and software. The project then evolved into something a bit more complicated than I originally anticipated, but most of the early design decisions remained - limiting the performance in some areas, but it's well beyond what I wanted to achieve anyway.

Main requirements were:

* 0 Ohm to 1MOhm in 1 Ohm steps
* Reasonably high accuracy and precision
* A usable user interface with an LED display (nostalgia)
* SCPI Programmable
This meant using a bunch of relays for switching in conjunction with relatively cheap 1206 0.1% 10ppm 0.4"W SMD resistors. Having the option to control all decades individually allowed me to not only calibrate the resistor and show the calibrated resistance value in the display, but also optimize the actual resistance selection based on the calibration values to match the desired value (setpoint) as best as possible (available for 2-wire and 4-wire). This was more an experiment with some obvious and less obvious limitations, but it worked surprisingly well.

I put some emphasis on the "programmable" part, meaning the SCPI interface offers many options, including a list function, a trigger system with bus, internal, external trigger and more.

The first diagram shows the absolute value of the deviation between the setpoint and the value indicated by one of my Agilent 34401A multimeters. The second diagram shows the absolute value of the deviation between the calculated resistance (estimate based on calibration values) and the value indicated by the Agilent 34401A multimeter. Connecting lines between data points for visual purposes only.

You can find a very detailed description regarding the design and capabilities as well as some resources below (so I won't repeat everything here...).

* https://hackaday.io/project/191969-programmable-precision-resistor
* https://github.com/sbstnh/programmable_precision_resistor
* https://sebastianharnisch.de/category/programmable-decade-resistor/
If there is anything you're interested in, let me know.


That's an impressive level of finish on the front and rear panels, very professional looking.  Can you sweep resistances atomically e.g. no open circuits or spurious resistance changes in the opposite direction whilst switching?


that is a great question. Right now I have implemented two switching modes: "fast", meaning switching all relays (almost) at once, and without any intended order; "break-before-make".

So the answer is no. Initially I wanted to have a mode that avoids an "open" during switching, but in the end I didn't bother, because
a) I simply usually don't need it
b) In some applications it might be good enough to just connect a capacitor in parallel with the programmable resistor.
c) With my topology, "monotonicity" during switching isn't achievable in the first place (not generally anyway).

It is certainly possible to improve the switching behavior though.

The first thing I'd consider is to switch the highest non-zero decade first, then the second-highest, ..., so that the resistance change would become smaller and smaller ("inter-decade" switching, if that makes sense).

Changing the resistance from say 2 Ohms to 4 Ohms with no interruption ("intra-decade" switching) could be achieved by switching on the 4 Ohms-path before opening the 2 Ohm path, resulting in 1.33 Ohm as an intermediate state. Or to 8 Ohm first, then to 4 Ohm (1.6 Ohm, 8 Ohm, 2.67 Ohm, 4 Ohm), not really great either, so for me the simpler first solution wins without a doubt... No matter what you do you'll end up with "spurious" or "non-monotonic" resistance changes.

Looks amazing.  Is there a part number for that enclosure, or is it fully custom-designed as well?  Edit: never mind, found it!


--- Quote from: KE5FX on September 06, 2023, 09:05:01 pm ---Looks amazing.

--- End quote ---

It had better for the prices that enclosure fetches!


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod