Displaying a wide dynamic range quantity - ideas or experience? - Page 1
Forum section: electronics / general

author: duak
author_rank: Super Contributor
timestamp: December 27, 2017, 09:20:34 pm
content: I've had a idea percolating around for a while to build an instrument that, among other things, can measure and display currents from less than 1 uA to over 1 A and resistance from less than 1 ohm to over 10 Mohm with, say 1% accuracy & precision. Of course, an autoranging DMM does the job, but I don't want to wait while it switches range or bobbles back and forth on the transition. My first idea was with a logarithmic value on an analog meter but it doesn't have the resolution I need unless I use a humungus meter movement. Besides, I'll likely use a micro and so possibly an LCD. I sort of remember seeing altimeters in aircraft that have both a digital readout for accuracy & precision with a analog scale moving behind to get the trends, sort of like in the attached image. BTW I would make the analog scale logarithmic, like that on a slide rule.I'd like to hear if anyone has encountered anything like this, or has any thoughts or insight or suggestions.Thx kindly,

author: TerraHertz
author_rank: Super Contributor
timestamp: December 27, 2017, 11:07:55 pm
content: It's the same kind of problem experienced with logic analyzers - very large range, but you want to be able to zoom in to areas of interest. Trouble is 'area of interest' depends on the observer, as much as the signal/data.If you let the display device try to make guesses about how much detail/zoom you want, it will often guess wrong, and in making any guess at all it will cause the display to jump around, which is confusing to the observer since they can't immediately differentiate between view context changes, and actual signal changes. Hence the annoyance of auto-ranging multimeters.Also as you're aware, it's almost impossible to judge trends from numerical displays, with auto-ranging just making that worse.Your idea to use a linear scale graphical meter is a step in the right direction, however it lacks a facility for zoom. Which means that displaying the entire potential signal range isn't possible. And any chosen scale will be inappropriate at times.Fundamentally, in order to get what you want, you have to have user controls for:-1. Zoom. ie the total range to be displayed.2. Tracking, ie making the visible range contain the signal.3. Whether the display device tries to 'help', vs keeping any changes totally under user control. Aka 'Autoscale on/off.'You could also add an option for the displayed scale to be linear or log.If you can find some way to create a display that solves all the requirements without involving user controls, patent it, you'll be rich.But I think it does need controls. Reducing them to an efficient and intuitive minimum, that's the trick.I'd do a scale like in your pic, plus provide buttons:Zoom (then U/D alter the scale range, in 2,5,10 range increments.)Track (Centers the signal, then U/D drift the view window u/d linearly.)Menu (For all the mode settings. U/D/E selects and alters items.)Up & Down & Enter.Those could all be onscreen buttons if using a touchscreen. Or Zoom & Track could be physical click-turn knobs.Trying to minimize the controls to fewer than that would probably make operation more of a pain. The Zoom and Track really need to be right there, with no ambiguation.Btw, a relevant book: The visual display of quantitative information, by Edward R Tufte.Though, it's almost all about displaying static information, not dynamic as in instruments and life-critical cases like aircraft instruments.Edit to add:Once you have a system with menus, and thus some selectable amount of automation (including none), you can add really fancy stuff. Like keeping a history of the signal, and having variable persistence display of that history. Say as a color temperature bar alongside the scale. And a single button to make the meter work out hopefully sensible display zoom and range factors based on the signal history.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: December 28, 2017, 12:46:01 am
content: Does this help any with explaining or thinking about the problem?:https://www.seventransistorlabs.com/Calc/Filter1~.htmlDon't mind the circuit part in this case, just concentrate on the graphing system. Click and drag on the range and span textboxes, and watch as the display changes. Turn on and off log range, and see what that does to the axes at different scales. (I only implemented log tenths -- I meant to do more, but didn't feel like working out how to do it. The linear scale does what I wanted to accomplish, though: a similar number of divisions on screen, no matter what the range.)This is a natural fit for multi-touch systems, which I haven't implemented here, but sounds like the kind of thing you'll be checking out!I think I get what you're talking about, and it's a cool idea.I fear that it's the kind of idea which, executed carefully -- can be amazing, trend-setting even; but even just slightly off, will be frustrating, annoying as fuck, unusable even.So, the problem I think of with a self-adjusting scale is, there are many things you might want to measure, and there's no way for the meter to intuitively know what you want. (A few selectable modes would go a long way here, but each mode needs to be very finely crafted, to avoid being terribly annoying.)The first fundamental is: you're measuring a single point, so what do you have to graph, at all? The graph of a point has zero span, so the axes are strictly redundant! Clearly, you must pull a range from somewhere -- but what?Should the range include zero (or negative values, even)? Should it be located around a point, perhaps around the last so-and-so many recorded points? Should it be based on the histogram, so the range covers the tallest cluster, say?And how fast does the range change, and how? Should it slide smoothly? Or should it change stepwise (as current autoranging displays do), and a position indicator shows location within that range? (Example, Fluke's "analog display" feature.)I think a combination of features will be necessary. A rapidly sliding scale doesn't allow you to read the numbers whizzing by, nor does a scale that's constantly refreshing, flipping between ranges. That's visually confusing and frustrating. You could low-pass the reading, say, and drive the scale position with that; then drive the indicator position with the difference (which is simply the complementary high pass result). The scale range might be set by the readings' statistics, so when it's changing (due to noise or ripple), you show the whole range, perhaps including markers showing min/max, statistical variance, or whatnot.A histogram feature is best exemplified by continuity check: resistance is constantly ping-ponging between min and max value (nearly), and covering the whole range at once (even with a log scale) simply isn't useful to the user. Setting the scale to the dominant cluster might solve that; or it might make it altogether worse, because now you're hiding information from view! Perhaps a two-pane view would be useful, so that a logarithmic overview and an up-close (log or lin) zoom is provided. With indicators showing the zoom range, like the thumbnail view in a zoomed-in editor.As for how to change the scale, that's something to play with as well. It's probably useful to keep it visually grounded -- only change one axis at a time, so the scale zooms out, then back in. Or keep the center grounded, and zoom in place (or perhaps both, so what's being held constant is not the center, or an axis end, but a point say 20% in from the end).I designed my plotter (above) in such a way that axes are freely positionable. That is, as you slide up or down, the labels for round numbers slide around. I've seen other plotters where the axes stay rigidly fixed, while the curve slides around freely; then just before the curve moves out of range,pop-- the axes reposition at the next round number, and so on. For what's supposed to be a smooth scale, the pop would be jarring -- but the idea of having the scale remain fixed, or at least slower, while the indicator moves, seems too valuable to ignore.And on top of all this, the graphics, the history dependency -- it smacks of making a 2D graph instead, whether it's a sliding view or a fixed range (as any graphing DMM does). That makes my example plotter even more relevant, but also makes the issue of data collection, selection and display that much more complicated!I don't know what the optimal combination of these is. Likely you can reach it with enough research -- but it will take time, and you must be willing to be honest with yourself and your testers. You WILL find that some ideas that seemed so good are actually crap, and you will have to discard and rewrite a lot of things. Several times, probably. But you can get an amazing result, in the end, I think.Good luck!Tim

author: duak
author_rank: Super Contributor
timestamp: December 28, 2017, 08:14:22 pm
content: Many thanks to TerraHertz and Tim for taking time to write something so insightful & clear and the suggestions and links are great.After writing the original post, I ran across some examples of tape style readouts with magnifiers to show a greater precision - see attachment.Best wishes for a safe & prosperous 2017 + N where N is >= 0!

author: TerraHertz
author_rank: Super Contributor
timestamp: January 01, 2018, 10:15:39 pm
content: Incidentally, on the wider topic of displaying complex, dynamic information, did you realize how good web browsers are getting, with Javascript canvas features?Take a look at this weather site:https://www.ventusky.com/Play around with the wind animation controls, select various overlays, run time forwards (predictive weather), zoom and pan, etc.For eghttps://www.ventusky.com/?p=31.9;-91.5;3&l=temperature&t=20180101/21&w=softReally amazing. Since it's Javascript, the client-side source code is right there. Minified, but you can use a de-minify tool (eghttp://unminify.com/) to reformat it. If you are interested in the evolution of this code, see:QuoteTeaching myself to use js & canvas to achieve this quality of dynamic graphics, which will then work on any browser-capable platform... definitely a worthy goal. Though not sure I'm capable of it.There's also Mathjax.A question for the js programmers here: what js development & debug utilities do you use?

author: Circlotron
author_rank: Super Contributor
timestamp: January 02, 2018, 01:15:21 am
content: Quote from: duak on December 28, 2017, 08:14:22 pmThat would include 2017...

author: duak
author_rank: Super Contributor
timestamp: January 02, 2018, 05:55:24 pm
content: "That would include 2017..."I didn't want to leave the remainder of 2017 out)

author: Tomorokoshi
author_rank: Super Contributor
timestamp: January 02, 2018, 06:08:17 pm
content: Best wishes for a safe & prosperous 2017!Best wishes for a safe & prosperous 2018!Best wishes for a safe & prosperous 2019!...Best wishes for a safe & prosperous 2143!Best wishes for a safe & prosperous 2144!Best wishes for a safe & prosperous 1889!Best wishes for a safe & prosperous 1890!