DIY Portable RGB CRT Test Pattern Generator

by baritonomarchetto in Circuits > Electronics

796 Views, 3 Favorites, 0 Comments

DIY Portable RGB CRT Test Pattern Generator

IMG_20250911_113032_risultato.jpg
IMG_20250911_112949_risultato.jpg
IMG_20250911_112929_risultato.jpg

Lately one of my favourite arcade games started looking weird (:sad:).

When this happens (and if you are "skilled in the art" of keeping up and running arcade cabinets you know it often does) the first thing to determine is where the cause of the issue lies: the game PCB or the monitor?

A good first step is video source replacement with a confirmed working one, just to see if something changes.

What is the best video source for monitor testing? One could ask. Greyed hairs pro technicians would reply with no hesitation "get a CRT pattern generator kid!".

As a tinkerer and not a professional repair guy, I had not such a tool in my box. Yet.

It was time to remedy, so I started lurking the net in the hunt for one of those devices. Soon I had to realize that there's nothing cheap enought for me out there (:sad: again).

It was time to roll something on my own!

After a brief research online I found an interesting project by Nicholas Murray: a CRT test pattern generator based on RP2040 microprocessor. Niiiice! :)

In this instructables I will show you my reinterpretation of that device. I will give a description of it's features and circuits. I will share with you Gerber files so that you can have the necessary PCB manufactured by professionals at the best price around.

Let's go!!

Supplies

Bill of Materials (BOM)

ICs and transitors, microcontrollers

1x 7805T voltage regulator

1x MT3608 step up converter, SOT23-6 footprint

1x RP2040 Zero

Diodes

2x LED, 3mm

1x 1N4004 diode

2x SB120 diode

Resistors

2x 100 ohm resistor

1x 390 ohm resistor

2x 470 ohm resistor

3x 820 ohm resistor

4x 1K0 ohm resistor

5x 2K2 ohm resistor

1x 2K7 ohm resistor

1x 3k3 ohm resistor

1x 10k ohm resistor

1x 62K ohm resistor

Inductors

1x general SMD inductor, 0650 footprint

Capacitors

1x 100uF capacitor (electrolitic)

2x 10uF capacitor (electrolitic)

Others

3x 2 slots WAGO screw clamp

1x Audio Jack, 3.5mm, stereo

1x Momentary switch, B3F 4000 Omron

1x SCART connector (vertical)

1x SS12D00 mini slider switch (1P2T)

2x 8pin headers (female)

1x 7pin headers (female)

1x dual lock strip (Velcro, or something similar. Used to secure the battery)

Features

IMG_20250911_134312_risultato.jpg
IMG_20250911_134315_risultato.jpg
IMG_20250911_134317_risultato.jpg
IMG_20250911_134319_risultato.jpg
IMG_20250911_134259_risultato.jpg

This project emulates the functions of a once-common tool in CRT repair labs. It produce a series of low resolution images (test patterns) useful to check and fine tune CRT raster's geometry, colors, contrast, convergence etc. etc.

It is built around an RP2040 microcontroller board and a few other components.

Some features of the CRT Test Pattern Generator object of this instructable are:

  1. compatibility with low resolution arcade monitors (320x240 @15KHz)
  2. compatibility with EUR- SCART TVs
  3. small footprint
  4. portability (battery operated)
  5. cheap! (is this a feature? For me it is :))

No special components have been used.

As a general rule, I stick with through hole components. They are easier to deal with, especially because they don't ask for special soldering equipment. This project made no ecception and I tryed to use THT only, but in the end it was not possible.

Having SMD components (only two!) makes the project a little bit more difficult to assemble, but anyway doable even if your soldering skills are not top-notch.

Project Challenges

Even if based on an already existing CRT Test Pattern Generator project, the list of features I was in the need for posed some challenges.

RGB-S Video Signal Connector

The original project (but also the PicoVGA library it is based on) adopt a VGA connector to transfer color and sincronization signals to the target monitor.

This connector was common in CRT monitors for PC, but unfortunately not in european CRT TVs, nor in arcade monitors.

SCART is the common choice in RGB TVs (at least here in Europe), which is a strange beast with commutation signals needed to adeguately trigger it's operation modes without a remote control.

SCART is not "active" meaning that it's not internally amplified, but calls for mandatory, static voltages at some of it's pins for normal operation.

Arcade monitors, on the other end, don't have a standard connector for RGB-S signals. Hantarex and other Italian brands (very popular both in Italy and other Countries) most often used 6-pin Molex KK with 2,54 mm spacing, but varied pinouts on the RGB lines through chassis models; Wells Gardner, a well known American monitor supplyer, often adopted a connector with higher spacing; Sanyo (often used by Nintendo) another one, and so on.

Arcade vs SCART TV

Another important thing to notice is that RGB TVs are close-to but different-from arcade monitors. Differences are not limited to the presence of a tuner and the physical appearance of connectors used, but more subtle differences adds like the level of video signals and the input impedence.

Being the original project compatible with RGB-TVs only, extending the use of the tool to arcade monitors calls for a re-definition of correct values for the resistor ladder DAC.

Battery Operation

If you have ever worked in your basement, with little to no surfaces where to place your diagnosis tools and flying cables all around, you know how easy it is to screw things up.

I don't have to tell you how important it is to use portable diagnosys tool, then.

Solutions

IMG_20250911_151756_risultato.jpg

Arcade Monitor

Arcade monitors need higher voltages with respect to home TVs on the RGB lines to display a sufficiently bright image. TVs are rated for 0.7Vpp signals, while arcade monitors 3-5Vpp* (TTL level).

This, in addition to the higher impedence arcade monitors have at their input, makes it necessary to re-calculate the series resistor that make up the ladder DAC.

Luckily, the former library creator Miroslav Nemecek released an excel file with his calculations that helped me define the resistor ladder values for arcade application.

A detailed explanation on how the series resistor values for VGA have been calculated is >>HERE<<.

To calculate the resistor values for arcade monitors I took as base an impedence of 1K ohm and a maximum color signal voltage of 3V for the reference RED and GREEN (Pi Pico GPIOs can output a maximum of 3.3V). I couldn't reach low standard deviations such for VGA, and colors gradients are damn poor on the dark side (it's like 2 bits colors instead of 3). I will try to spot better resistor values in the future. Luckily, bright colors are ok and these are the most used while troubleshooting an arcade monitor.

For what concerns the RGB-S connector, being arcade connectors not standard, I have here adopted screw terminals to lock extension cables with the right female connector on the other side. This extends the compatibility to almost all arcade monitors, even if asking for some preparation before use.

TV SCART Monitor

EUR-SCART monitor are free from the aforementioned impedance and RGB level challenges, being them actually home TV's with the exact same logic of those PicoVGA was developed around.

The SCART standard has anyway specific rules that must be followed in order for a signal to be accepted by the receiving monitor.

One is the so called "blanking" signal (pin 16). This has to be in the 1 - 3V range to tell the monitor "hey, you are now receiving an RGB signal!".

Automatic switching to AV channel is also important because it frees from the use of the remote control. Automatic switching to the AV channel is possible by applying a tension of 9.5 to 10V on SCART pin 8.

Power Supply

The battery of choice for this project is a 9V alkaline battery. I opted for it mainly because of it's dimensions and availability.

A common way to juice the RP2040 Zero is by applying 5V regulated at the power pin. The microcontroller board is not power hungry, nor we have to drive big loads here, so a simple circuit built around a classic 5V voltage regulator is more than enought.

Tensions we have available in a powered pi pico are 3.3V, 5V and the plain B+. What is still missing is the +12V line. To generate such voltage I placed a dedicated, built-in step-up converter circuit.


*In my experience they work well with even lower voltages (1-2Vpp), but something stronger than 0.7V is definitely in the need.

Circuits

SCART pinout.jpeg
5V_reg.png
9V_boost.png

In the following the description of the main circuit blocks.

Main Voltage Source (+5V)

The RP2040 microcontroller board here used (RP2040 Zero) asks for +5V for normal operation, then regulated to 3.3V internally. We need to step down the B+ (9V, unregulated) to +5V (regulated).

A simple way to do this is by using a LM7805 voltage regulator. This is not the most efficient way to do it (better than a voltage divider though!), but works well when only small currents are requested.

The amount of current drawn by the whole circuit in operation is so small, the regulator stay warm, if you are asking :)

AV Switching

In EUR-SCART, automatic AV switching is activated by applying a tension in the 9.5V to 12V range. This makes it possible to avoid the use of a remote control to switch to AV channel, which is very handy.

To generate +12V from our +9V supply I have adopted a very common circuit for DC-DC boost voltage converter. It is based on a MT3608 step-up converter and, if you are an Arduino fellow, most likely have some module based on this same circuit at home :)

The nice thing about this integrated circuit is the possibility to step tensions up to 28V symply by regulating the tension at the feedback input of the IC through an appropriately dimensioned voltage divider. Cool.

Resistor Ladder DAC

A resistor ladder DAC is possibly the most simple DAC one could think of. It is a passive DAC, made only by resistors. In this case, dimensioning takes into consideration the receiving unit (TV or arcade monitor) input impedence and supported voltage levels. It also keeps into consideration the RGB lines driving voltages from microcontroller board's GPIOs. Series resistor and receiving unit impedence form a voltage divider. The color is given by the sum of the 3 (or 2) lines for the same color.

Being arcade monitor and SCART TV input specifications very different, there are actually two indipendent resistor ladder DACs onboard.


SMD Components? No Problem!

IMG_20250911_083322_risultato.jpg
Top+null+SMT025090261749.png
3D_PCB.png

You are very likely aware, at this point, that this project uses two SMD components*: a 22uH inductor and the DC-DC step-up converter (MT3608). These are big enought to be soldered by hand, but in case you are still not confident you can take advantage from the assembly service most PCB manufacurers offer.

In this project I had them assembled by JLCPCB, and I can confirm everything work as it should!

When I ordered my prototipes 22uH inductors in 0650 footprint where not available. I used 15uH and can confirm everything work as it should. Looking at the DC-DC step-up converter datasheet I can see that even 4.7uH inductors could be used, so I must suppose even such a low value will work.

Here are the specifications of the two SMD components of this project. Use them to research in the manufacturer library:

  1. Inductor, 4.7uH or 22uH (or any value in between), 0650 footprint
  2. DC-DC step up converter, MT3608, SOT-23-6 footprint

If the specific components I used at the time of this writing are not available, use an equivalent. The important is the kind of device if it's an IC (oh well...), the rated value if it's a passive component (i.e. resistor, capacitor, inductor, etc.) and it's footprint, in order to match the PCB.

All files necessary for SMD assembly and Gerbers for PCB manufacturing can be downloaded at the Github link in the "Aknowledgments" Step of this instructable.


*Please notice that these two SMD components are used in the +12V generation circuit. Being this only used at SCART level, you can omit them if you are targetting the Arcade application only.

How to Use and Precautions

Normal Operation

This device is very easy to use:

  1. Connect it to your monitor
  2. Turn the device on
  3. Turn the monitor on
  4. Cycle between patterns by pressing the tester on-board button.

These patterns are in 320x240 resolution, and will help you finely tune the geometry, colour and contrast of your arcade monitor or TV.

At the time of this writing, the device can only output negative sync signal.

Firmware Upload

In order to have the Test Pattern Generator working, you are asked to upload a firmware to the microcontroller board (RP20240 Zero).

  1. Download the latest firmware from the original project Github page
  2. Remove the RP2040 Zero from the tester
  3. keep RP2040 Zero "BOOT" button pressed, THEN connect it to the PC. A folder will open.
  4. Copy and paste in that folder the firmware (at version 1.1 in the moment I write).

!!NOTE OF CAUTION!!: RP2040 Zero is a trimmed down version of Pi Pico microcontroller board. One thing that has been left out is the protection diode between USB power and 5V line (or Vsys line, in Raspberry Pi Pico). This means that if you have the battery connected and the tester turned on, by connecting the RP2040 Zero to the PC you will short USB line and the internally generated 5V line.

This is not good. You can damage your PC this way.

As a precaution, remember to upload the firmware with the RP2040 Zero removed from the device, or eventually by keeping the device turned off, or by removing the battery first.

Prototype Issue

My first prototype had a flaw with SCART pinout that prevented it from working (note to self: never trust others footprints!!). I have now spotted and fixed the error. Anyway, I have not a copy of the fixed PCB in my hands so the shared design has to be considered UNTESTED. I will have the PCB manufactured in the near future and will test adeguately the fixed design.

Links and Acknowledgments

IMG_20250911_083351_risultato.jpg
IMG_20250911_083225_risultato.jpg

You can find Nicholas Murray original CRT test pattern generator project at THIS link. Having an already working firmware 100% fitting the task pushed the whole project up a lot, so thanks for sharing!

Nicholas project in turn makes good use of a brilliant library from Miroslav Nemecek. Take a look HERE.

Interesting informations on how to make best use of most of the patterns included in this tester can be found HERE.


A special thanks goes to the nice girls and guys at JLCPCB for sponsoring PCBs manufacturing and assembly of SMD componentss for this module.

Without their contribution this project would have never seen the light, like many others projects of mine now.

In this run they also sponsored the production of a rev.3 of the CV mixer front panel board, the previous two having minor offset design issue. The new panel board design finally fits perfectly the front board.

This lot included also a revision of the Sub-oscillator module main board, where I used a not-so-good footprint for the D flip flop that caused shorts if not soldered with care. Now it's all tested and dumb-proof.

JLCPCB is a high-tech manufacturer specialized in the production of high-reliable and cost-effective PCBs. They offer a flexible PCB assembly service with a huge library of more than 600.000 components in stock at today.

3D printing is part of their portfolio of services so one could create a full finished product, all in one place!

What about nano-coated stencils for your SMD projects? You can take advantage of a coupon and test it for free in these days.

By registering at JLCPCB site via THIS LINK (affiliated link) you will receive a series of coupons for your orders. Registering costs nothing, so it could be the right opportunity to give their service a due try ;)

All files I realized for this project are stored >>HERE<< (Github).