Electronics > Projects, Designs, and Technical Stuff

Vector Drawing at XY Oscilloscope Screen at Constant Speed

(1/6) > >>

Yansi:
Hello,

Wanted drawing some vector graphics on X-Y CRT screen, so I was thinking about how to achieve a constant drawing speed, while drawing vector graphics at an XY display screen (such as osmelloscope).  Constant drawing speed should achieve uniform brightness of the whole screen.

After reading about opamp slew rate limiters in TIDU026 application note, I came up with the idea below. Thought how smart that was, with even the two-transistor detector of "finished drawing stroke" to initiate a next point to draw... and then the reality struck - this will not work, at XY mode, where the speed is the vector sum of the speeds of X and Y components.  I mean, square root of a sum of both X and Y speeds squared. So to trashbin my smart circuit goes.



It takes different times to travel deltaX and deltaY, or respectively X and Y must travel at different speed to achieve constant speed of the two vector-combined. One would need to estimate the speed of travel for X and Y at the begining of the stroke. Seems not trivial task to do in analog circuits.

So how this could be solved? Using the X and Y DACs to approximate lines at a proper speed would suck, as the lines would be visibly stepped (unles the DACs would have large resolution and high enough samplerate). Low pass filtering or slew limiting the DAC outputs would distort the picture, due to different times required to travel the deltaX and deltaY distance.

I know, that you can easily these days get a FAST microcontroller, heck even an FPGA with fast enough hi-res DACs to do it all in the digital domain, but my thoughts were "back in the 80s or 90s" mode, how it could be done with a simple 8bit DAC and old 8bit MCU. Say an vectorscope accessory addition for an old 8bit system.

With the circuit above, my idea was to use the transistor output to trigger a next "DMA cycle" to feed DACs with next coordinate position and leave the constant speed drawing to analog circuitry to do its magic.

So is there any clever trick, how to deal with this "constant speed" drawing? Was is ever that much of an issue for vector displays, to be solved as a "problem" at all?

//LTSpice sim in the attachment, if you want to play with it. Ignore C1, i was just fooling around with the circuit for a bit.

MarkT:
Using two differentiators, two squarers and summing the result gives you the speed-squared, so in theory set up a feedback network to maintain this constant and you've done it - however there is no clear variable to be the driven signal, horizontal lines cannot be driven from the y-signal, vertical lines cannot be driven from the x-signal, so you need a parametric variable to drive this which represents progress. Stability analysis isn't going to be easy.

And how you control the signal rate smoothly without creating noise in the differentiators isn't clear.

So much easier to do in the digital domain by simply using the "distance" between successive samples to set the DACs' next update time.

Nominal Animal:
Consider the electron beam having x-axis slew rate \$k \Delta_x\$ and y-axis slew rate of \$k \Delta_y\$, such that the rate correction factor \$k \gt 0\$, and the overall velocity is \$1\$, i.e.
$$1 = \sqrt{(k \Delta_x)^2 + (k \Delta_y)^2}$$
The solution is obviously
$$k = \frac{1}{\sqrt{\Delta_x^2 + \Delta_y^2}}$$
If \$-1 \le \Delta_x \le +1\$ and \$-1 \le \Delta_y \le +1\$, then \$\sqrt{1/2} \approx 0.7071 \le k \le 1\$, i.e. at diagonal lines, \$k\$ decreases 30% from what it is in axis-aligned lines.

If we were to generate the slew rates using a direction \$\varphi\$,
$$\begin{aligned}
\Delta_x &= \cos \varphi \\
\Delta_y &= \sin \varphi \\
\end{aligned}$$
then the solution is constant, \$k = 1\$.

If we have a line segment swept from \$(x_0, y_0)\$ at time \$t = 0\$ to \$(x_1, y_1)\$ at time \$t = T\$ at a constant overall velocity of 1, then
$$\frac{\sqrt{(x_1 - x_0)^2 + (y_1 - y_0)^2}}{T} = 1 \quad \iff \quad T = \sqrt{(x_1 - x_0)^2 + (y_1 - y_0)^2} = \frac{1}{k}$$
because the square root is the Euclidean length of the line segment.  The slew rates are then
$$\begin{aligned}
\Delta_x &= \frac{x_1 - x_0}{T} \\
\Delta_y &= \frac{y_1 - y_0}{T} \\
\end{aligned} \quad \iff \quad \begin{aligned}
\Delta_x &= \frac{x_1 - x_0}{\sqrt{(x_1 - x_0)^2 + (y_1 - y_0)^2}} \\
\Delta_y &= \frac{y_1 - y_0}{\sqrt{(x_1 - x_0)^2 + (y_1 - y_0)^2}} \\
\end{aligned}$$
or alternatively \$\varphi = \operatorname{atan2}(y_1 - y_0, x_1 - x_0)\$ using the two-argument form of arcus tangent (traditionally calculated using CORDIC).  In any case, the electron beam sweep follows \$\tau = t / T\$, \$x = (1-\tau) x_0 + \tau x_1\$, \$y = (1-\tau) y_0 + \tau y_1\$.

Is this necessary?  In CRTs, the perceived intensity is not a linear function of the beam dwell time, because of how the phosphorescence works.  There is even an absolute maximum above which the intensity changes very little.

Yansi:
MarkT: I was thinking not about using differentiator, but rather begin with a difference amplifier to obtain deltaX and deltaY at the beginning of the stroke (while holding old XY coordinate position in some kind of sample&hold maybe?), as inputs for calculating speeds and then use an integrator with voltage-controlled time constant. Anyway, this leads to yet another variant of likely over-engineered nonsense.

Nominal Animal: Thank you for the equations.  Even though the math is relatively simple, the circuit solution seems anything but simple.

I was thinking, whether there were used any clever tricks back in the old days. If all that they relied upon is the saturable (non-linear) characteristic of the phosphor, then it will probably be fine. Need to try some tests, as I wanted to try some more complex graphics, but god knows when I will have the time to try it in practice.  :-/

Guessing, the characteristic of the screen phosphor will also depend a lot on the type of CRT tube, so different may achieve very different result.  ???

CaptDon:
A few decades back there was an arcade game which I think was called space wars. It had a 19" monochrome vector monitor with a 12 bit Burr-Brown bipolar DAC for vertical and horizontal. The monitors were unreliable because the game computer board would get goofy and force the CRT beam way off center which required huge current in the yoke windings and the deflection circuits would burn up. Also the high voltage flyback (which was not part of any deflection circuit) would also burn out due to poor manufacturing quality control. The flyback driver HAD TO BE a TIP41C. Any generic replacement would get screaming hot in seconds and short out. Anyway, all drawing speeds were controlled by the game board in the digital domain and sent via ribbon cable to the monitor. Due to deflection being electromagnetic there were a lot of constraints on the vector drawing to avoid harmful currents in the yoke. This would not be a problem with electrostatic deflection. Basically, if you are drawing a 1 inch line from point A to Point B it will have the same number of pixels no matter what direction it is drawn in so the step 'rate' remains the same however, with an angular line something less than the 'total' number of steps will be applied to the X axis, something less than the total number of steps applied to the Y axis and in some cases the steps will occur simultaneously and in some cases only the X or the Y will increment (or decrement). B.T.W. the resolution of a 12 bit DAC is better than the resolution of the beam of most C.R.T.'s remembering at 650 lines the lines will overlap each other giving the appearance of no lines / no individual pixels. In other words the line pitch could be .001 inch but the beam diameter could be .002 inch so the lines or individual pixels can't be discerned. Hope this rambling gives some insight. Cheers!

Navigation

[0] Message Index

[#] Next page

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