SCRIBER – Hellschreiber on a humble PIC

SCRIBER is an RS232 to Multi-tone Hellschreiber converter in a 14pin DIL PIC16F1615  microcontroller. The output is an audio signal and PTT control designed to connect directly to an SSB transceiver. The audio signal SCRIBER synthesizes will display as text directly on a waterfall display. No decoder is required. The spectraly pure (clean to >50dB) output is well suited for linear amplification to high power in the crowded HF bands.

Multi-tone Hellschreiber is unique in being an inherently variable detection threshold mode – ‘the slower you go the farther you can go’.  SCRIBER takes full advantage of this ability using it’s Bandwidth control which varies both speed and bandwidth in unison over a 100:1 range.

Scriber beacon

Screen shot of Scriber’s output at typing speed in beacon mode showing the spectral purity and text clarity


Poly Phase Multi-tone Hellschreiber (PP/mt Hell)
Full ASCII character set plus 10db ‘lifted’ dot & dash CW characters
100:1 variable speed/bandwidth, 3char/s typing speed to 5Hz bandwidth QRSS
Good text clarity and spectral purity
80 character double Buffered Message input
Message Resend
Beacon mode
Beacon Message store in flash memory.
PTT control of the radio
Tone Invert switch for LSB

User Controls

In keeping with the philosophy of Fuzzy modes, the Bandwidth and Speed controls are analogue (real knobs!) and may be set over a 100:1 range from a fast wideband ‘chat’ at 30 wpm using 500Hz Bandwidth, down to extreme narrow band QRSS at 2 characters/minute and 5 Hz Bandwidth.
This corresponds to a 20dB increase in detection threshold at the slowest speeds.

Sriber BW controlThe effect of varying the Bandwidth control in real time, as the bandwidth is reduced, the speed will decrease and the detection threshold is increased. The above picture shows only a small portion of the 100:1 range of this control.

Scriber Speed controlThe effect of varying the Speed control in real time, bandwidth is not changed but more integration time is available. This is useful when doppler spreading is present or to slow a maximum bandwidth signal to fit a webSDR.

The only other controls are a Beacon on/off switch which will continuously send the message held in the beacon store and a Normal/Invert switch which inverts the characters, useful for sending in lower sideband  or to descending waterfall displays.

Weak Signal Performance

The 3 screen captures below show weak signal’s at various transmitted bandwidths. In each case the waterfall display controls were optimised to match the transmission and the signal level reduced to a level where the image was still unmistakable. The signal levels quoted are for an equivalent single carrier .

Sribe 500Hz BW -125dBm 500Hz BW Typing speed, 30 wpm @ -125dBm on 144MHz

Scriber 50Hz BW -135dBm 50Hz BW  Slow hell, 3 wpm @ -135dBm on 144MHz

Scribe 5Hz BW -145dBm 5Hz BW very slow, 2 char/min @ -145dBm on 144MHz

RS232 message input

SCRIBER accepts standard ASCII  messages upto 80 characters terminated with a <CR> at 9600baud and echo’s the message back to the terminal as it’s being sent. The message is sent on receipt of the <CR> character.

If just a <CR> is input at the prompt, Scriber will resent the last message sent ( useful for a ‘QRZ’ repeat request).

If the first character in the message is an ‘underscore’ ( ‘_’  , 5f hex) the remainder of the message will be stored in flash memory and sent repeatedly when the BEACON switch is ON.

Visual CW Characters

Two little used character pairs have been ‘stolen’ from the full ASCII set and used to send the ‘dot’ and ‘dash’ morse characters.

An ‘open square bracket < [ >’ will send a ‘dot’.   A ‘ close square bracket < ] >’ will send a ‘dash’.  These keys are usually adjacent on a keyboard making manual entry of visual CW easy. The keys are case insensitive.

Both CW symbols are single horizontal lines and have only one tone present so SCRIBER sends these two at a higher output level (lifted by 10dB). If the text characters are lost in the noise it may still be possible to use visual CW.  It is also useful in beacon mode for station identification or as a more visible message end (K) character.

The PC terminal

I use a simple line based RS232 terminal program called Termite which offers a few useful facilities like message store and repeat messages , but any serial terminal or a 2nd micro-controller may be used.

termite1 Scriber’s heading and prompt

termite2 Termite’s simple setup screen

The Scriber’s input is double buffered and will accept a new message whilst a previous message is being sent. Flow control is not implemented, so large streamed ascii files are not supported.

Electrical spec :-

Supply 2.5 to 5.5 volts @ <10mA
Hellschreiber centre frequency 800 Hz +/- 1%
Total signal bandwidth 5Hz to 500Hz settable in 1dB sensitivity steps
Character speed 2 char/min to 3char/sec (100:1 speed range)
Spectral purity > 50dB
Sample Frequency 15.625KHz
PWM O/P 31.25 KHz, 9 bit resolution, centre aligned PWM
RS232 In/Out std ASCII @ 9600baud, 8 bit, 1 stop, no parity

Basic Scriber Circuit
Basic Scriber Circuit

Pic16f1615 Scriber Pin functions

Pin 1 – Vcc +5v supply @ 5mA, Needs to be ‘clean’ to <10mV p-p to prevent supply noise contaminating the spectral purity of the output signal on pin 5.

Pin 2 – Beacon switch, 0v selects beacon mode, this digital input has an internal pull up.

Pin 3 – Invert switch, 0v selects tone inversion (mirror text), this digital input has an internal pull up.

Pin 4 – Reset push button, 0v resets the microcontroller (transmission abort).

Pin 5 – Hellschreiber PWM output – a 31.25 KHz (+/- 1%) square wave is always present on this pin. When no message is being sent (idling) the duty cycle is 50:50. During transmissions the duty cycle is 100% modulated with the 800Hz Hellschreiber signal. The o/p may be used in many ways (see below) but is usually low pass filtered to provide an audio signal. This o/p can source or sink upto 100mA

pin 6 – TX select output – active high during message sending. Used to switch the radio to transmit. may be used to directly drive an opto isolator LED (upto 100mA) or via a transistor/FET inverter to drive a Push to Talk (PTT). A fixed 50mS delay is applied after activation befor the message starts to allow for relay switching times.

pin 7 – TXD – direct 9600baud rs232 (idle = 0v) o/p back to the terminal. this is 0v/5v level rs232, sufficent for short cables.

pin 8 – RXD – 9600 baud message input from the terminal, this is UART polarity (idle= 5v) and requires an inverter to interface to RS232

pin 9 – Speed – Analogue 0 to 5v input, slows the hellschreiber speed below optimum to allow more time integration (5v = fastest)

pin 10 – BW – Analogue 0 to 5v input, sets the helleschreiber signal bandwidth and optimun sending speed for that BW (5v = widest)

pin 11 – not used,  leave unconnected

pin 12 – connect to pin 5 of PicKit 3 for incircuit programming or leave unconnected if not required

pin 13 – connect to pin 4 of PicKit 3 for incircuit programming or leave unconnected if not required

pin 14 – Vss 0V Ground.


********* More details to follow shortly,  (13th Nov 2017) ********