To use the paper tape reader, simply connect it to a Windows 10, Linux or Mac OS computer via USB. The reader should automatically register as a USB CDC device (communication device class, a virtual serial port).
Start a terminal program of your choice and select the right (virtual) serial port. No need to set the baud rate etc., since no physical serial port is involved. The reader will start sending data as soon as you pull paper tape through.
Before the first operation, or when switching to a new type of paper tape with very different transparency, calibrate the reader as described below.
Two LEDs on the Pro Micro board are used to signal the operating status. They are labelled on the detector PCB:
FEED flashes once for every valid feed hole detected during operation and calibration. CAL indicates that calibration mode is active, or that a calibration is recommended.
CAL indication | meaning |
---|---|
Steady ON | Calibration mode is active |
Flashing, 1 Hz | Waiting for user to start calibration (press CAL button), or for 10 s timeout |
Flashing, 10 Hz | Error during the calibration process |
ON in read mode | Invalid brightness levels have been read (no clear high or low). Recalibration is recommended. |
Press CAL once to view the current calibration. Current calibration values are printed via USB, the CAL LED blinks at 1 Hz.
Press CAL again within 10 seconds to enter calibration mode. You will be prompted via a USB message to start feeding tape, the CAL LED turns on.
Feed tape, beginning within 10 seconds. Approximately 30 cm of sample tape are required. Ideally all data bits should be exercised in the sample, but if no significant contrast is detected for a data channel, averaged thresholds from the other channels will be used. The CAL LED stays on, the FEED LED begins to flash when valid feed holes are seen.
Calibration automatically ends when enough sample tape has been processed, or when one of the 10 second timeouts mentioned above is reached. Results and final status are printed via USB; errors are also signaled by rapid flashing of the CAL LED for 1 second. The CAL LED is then switched off.
Three different tape widths can be set via jumpers. Setting them properly is recommended to avoid “CAL” indications from invalid detection levels at the tape edges, and to mask invalid bits from the output bytes.
Tape width | Tape/bit placement | Jumper settings |
---|---|---|
8 bit | 76543.210 | 5BIT=open, TST=open |
7 bit | - 6543.210 | 5BIT=set, TST=set |
5 bit | - - 432.10 - | 5BIT=set, TST=open |
Note that the 7-bit setting is only required for the – rather uncommon – type of paper tape which is physically only seven rows wide. For this narrower tape, the 7-bit setting masks out any invalid readings from the eighth detector (which looks just at the tape edge). The common 1" wide tape can be read in the 8-bit setting, no matter whether seven or eight rows of holes are actually punched on it.
Setting only the TST jumper will activate test mode, where the raw ADC readings from all 9 channels are printed on the output in an endless loop. From left to right, bits 0 to 7 are displayed, followed by the feedhole signal on the far right. A high value, up to 255, indicates high brightness.
The INV jumper will set the reader to use inverted intensity thresholds, i.e. a logical ‘1’ or an active feed track pulse are signaled by a dark light level. This is useful for reading paper tapes which have not been punched, but printed on thin paper – for demonstrations or tests where real paper tape and a punch device are not available. Since the light levels will be lower in this case, it is recommended to replace the resistor array RN1 by a 22 kOhm array.
TX is not a jumper, but a serial output. This can optionally be used to connect legacy equipment. Please see the following section for details.
Normally, the USB port is used to interface the tape reader to a modern computer. If you want to read paper tapes into a vintage computer without a USB port, you can use the TX pin on the jumper row which sends “real” serial data.
All data read from paper tape will be transmitted as an asynchronous serial data stream: 9600 baud, 8 data bits, no parity, 1 stop bit. Voltage levels are positive: A logical ‘1’ (which is also present at rest) is represented by +5 V, a logical ‘0’ (which is also the start bit of each character) by 0 V.
The baud rate can only be changed by editing the Arduino source code. Look for the SERIAL_INIT()
call; this is a macro which goes back to Serial1.begin()
and accepts the baud rate as a parameter.
To connect to computers with classic RS-232 ports, an external level converter to ±5 V .. ±12 V is needed. These are available off-the-shelf or as a kit. They also invert the signal polarity, making logical ‘1’ a negative voltage as defined in the RS-232 standard.
To provide 5 V power to the level converter, you can omit capacitor C1 and install two more posts (pins) in that position. The outermost pin has +5 V, the next one is another GND pin – see the table at the bottom of this page. You can also power the paper tape reader via this pin if you do not want to use the USB port.
Neither calibration data and prompts nor the raw ADC readings in TST mode will be transmitted via this output. This is deliberate; the idea is to use a modern PC to set up the reader, and not bother the vintage system with these setup data.
Here’s a summary of all pins on the jumper row and their functions:
Pin | Function |
---|---|
+5 V | Power, e.g. for optional external RS-232 level converter |
GND | Ground (0 V) |
5BIT | Jumper to GND: 5 bit or 7 bit tape width |
GND | Ground (0 V) |
INV | Jumper to GND: Use printed paper tape with dark ‘holes’ |
GND | Ground (0 V) |
TST | Jumper to GND: Test mode, transmit raw ADC readings via USB |
GND | Ground (0 V) |
TX | Serial output: TTL level, 9600 8N1 |
GND | Ground (0 V) |