Go Down

Topic: The Great CRT to Oscilloscope Project! (Read 5849 times) previous topic - next topic

Manticorp

Hello, and welcome to my latest project - turning a small CRT monitor into a fully functional oscilloscope.

The monitor in question is a combined colour TV, radio and cassette player that I hope to rip the innards out of and turn into a nice oscilloscope.

Here's a pic of the device in question:



which I want to turn into something that more resembles this:



The device has quite a few inputs/outputs/controls, to name a few:


  • For Power, it can accept:

    • AC in from 110V to 240V (it has a selector on the side for selecting which)

    • DC in 12V (a rather large barrel plug which I measured to be 6.67mm in diameter)

    • A Proprietary rechargeable battery

    • A gagillion (read: 10) D cell batteries

    • A switch for going from charging the battery to operation

    • A Power switch



  • The TV part has:

    • Aerial in, selectable from the built in aerial or external.

    • Degauss button

    • V-hold (adjusts vertical scan rate I think)

    • Picture brightness (there's a screw hole next to this knob that might also adjust brightness or maybe focus??)

    • Contrast Adjustment

    • Colour Adjustment

    • A little switch that says AFC off/on which I'm not really sure what it does. Wikipedia says this is  "Automatic frequency control"



  • The radio part has the following

    • Remote in (3.5mm)

    • Mic in (3.5mm)

    • Earphone out (3.5mm)

    • An XLR port labelled 'Rec/PB'

    • A switch labelled 'Beat Cut' with 3 positions, used to declick AM recordings, from what I understand.




  • And on the front panel, there's:
    • A Volume knob

    • Tone knob

    • Mixer for mic/radio ratio

    • Switch between casette, radio and tv mode

    • TV tuning with switch between UHF, VHF L and VHF H

    • Radio tuning with switch between MW, LW and FM



  • There's also a small light switch and a counter for the tape player, which has it's own usual play/stop/record controls



I've managed to get my arduino to output stuff to the little screen using the great TVTuner library and hooking the arduino up to the Aerial, so at least we know it works:



Because all analogue TV has been switched off here, I wasn't able to test it otherwise (and I don't have an old VHS player or anything handy!)

I'm going to try and follow this great instructables post where he transformed a regular television into something quite similar.

Improvements I hope to make to this would be to calibrate it vertically to get accurate voltage readings and to be able to adjust the timebase accurately, so maybe instead of having the flyback transformer driving the horizontal frequency, using a different circuit.

It would also be great to switch from magnetic deflection to electrostatic deflection to be able to measure higher frequencies, although this is a big ask.

I have basically two options with this project, either use the arduino to send a signal to the unmodified TV combining the arduino oscilloscope projects with the TV tuner library OR hard wiring in all the oscilloscope functionality.

At the moment I'm leaning toward the latter.

Any help and advice would be much appreciated, I don't have much experience working with these high voltage/frequency circuits!

Stay tuned for updates though!

Here's some more pics of the item, showing inputs/outputs:



H

cr0sh

Personally, I agree with the posters at the electro-tech forum:

http://www.electro-tech-online.com/electronic-projects-design-ideas-reviews/131333-great-crt-oscilloscope-project.html

...IOW, don't waste your time, unless you have a need to learn how to build an analog scope for some reason. Not only will your horizontal timebase be limited, but you'll also run into a host of other issues, plus there's always the chance of electrocution. I would also forget about the idea of converting to electrostatic deflection; that generally needs the plates -inside- the glass envelope of the CRT...

You will likely spend a lot of time and effort to end up with a mediocre system at best; if learning how to build an analog scope is what you are going for, then maybe it might be worth it. Otherwise, save you time and money; there are plenty of used low-cost 2 channel analog scopes out there to be had for fairly cheap.

Otherwise, you might be better off purchasing a DSO nano, or some other kind of DSO kit scope - or build one with the Arduino and a KS0108 graphic LCD.
I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Manticorp

Okay, so I managed to get a very basic Oscilloscope function running on the screen from software. By using a buffer I'm able to get adjustable response speeds.

The way I have it hooked up is to have the input read from analog port 0 and 1. on port 0 is the sensor output and on port 1 is a capacitor used to adjust the size of the buffer.

The limiting factor at the moment is the TVout library, which is very slow on the arduino and has a maximum resolution of 128 pixels wide (the library says 160 but I can't get that to work...)

I don't know what frequency this thing is capable of working it...but to hazard a guess I'd say very low, somewhere around 60Hz with a buffer size of 1 and around  1920Hz with a buffer size of 32.

So, in short, to arduino software approach isn't really viable.

Here's pic of it in operation:



and a short video. It's just hooked up to an LDR at the moment because that's the only thing I had laying around!

Here's the link: http://youtu.be/fekK5Mq1p48

This is as far as I'm willing to go with this, after hearing lots of people talk about it online it just seems too complicated. However, it is nice that I got some working functionality from it, even if it was limited.

Manticorp

Here's the code I was using for the arduino:

Code: [Select]
#include <TVout.h>
#include <fontALL.h>

TVout TV;

float val;
float mval;
int BUFFERSIZE=16;
float buffer[16];

int i;

void setup() {
  TV.begin(PAL,128,96);
  TV.select_font(font6x8);
  TV.clear_screen();
  TV.fill(BLACK);
}

void loop() {
  for(i=0;i<=BUFFERSIZE-1;i++){
    val=analogRead(0);
    mval=map(val,0,1024,0,48);
    val=map(val,0,1024,0,1000);
    buffer[i]=mval;
  }
  toTV(buffer);
  TV.set_cursor(2,88);
  TV.print((val/200));
  TV.print(" v | BFS: ");
  TV.print(BUFFERSIZE);
  BUFFERSIZE=analogRead(1);
  BUFFERSIZE=map(BUFFERSIZE,0,1024,0,(TV.vres()/2));
}

void toTV(float BUFFER[]){
  for(i=1;i<=BUFFERSIZE;i++){
    TV.set_pixel((TV.hres()-i),((TV.vres()/2)-BUFFER[i-1]),1);
    TV.set_pixel((TV.hres()-i),(TV.vres()/2),1);
  }
  TV.shift(BUFFERSIZE,LEFT);
}

cr0sh

Take a look at this project:

http://www.instructables.com/id/Girino-Fast-Arduino-Oscilloscope/

...faster than what you were using, but still slower than a decent analog scope; still, it might be useful...
I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Go Up