Proton BASIC Compiler - Amateur Radio Repeater Controller

  • Pic® Basic

  • Amateur Radio Repeater Controller

    by John Drew

    There are a number of repeater controllers available on the market, most from the USA although from time to time Australian designs have appeared and been used around the country. Dozens of amateurs must have designed units for their local repeater and not published their designs.

    The writer has been experimenting with controllers since 1971. The first foray was the remote control board for VK5RAD (Adelaide) in 1971, and in 1976 came the entire works for VK5RMN (Port Pirie) built on plug in matrix boards. Later the board etching skills improved for the circuitry of voice repeater VK5RMG (Mount Gambier) and the digipeater VK5RPM (Millicent). The controllers had many NE555s, NE567s, TTL and CMOS gates and diode matrices for callsigns. The 1983 version for VK5RMG had 6 boards in total. The controllers were reliable but they did take a lot of time and effort to design and build. They also took up a lot of space.

    Microprocessors have been around for a long time and many people have successfully used them in controller circuits. The NHRC-4 controller from the USA is a particularly successful design and the South East Radio Group (SERG) purchased two boards and the essential ICs as a kit and these were assembled and used to link the Naracoorte and Mount Gambier Repeaters together in 1999. A UHF link provides the essential communication. They work well but they are relatively expensive.

    When the concept of a gateway to Kingston was suggested at a SERG meeting the author thought “I can do that” and started playing with the 16F84A and an excellent BASIC compiler from Crownhill Associates (UK). The language has many of the qualities of Pascal and is exceptionally powerful. PIC® Basic Plus requires the declaration of variables in advance and makes strong use of sub routines rather than string code etc. It has something in common with the old assembler language but with a very friendly and powerful command set. It compiles some very tight code for the PIC®. Check out the PIC® Basic forum at if you want more information or want to play with the free LITE version. The programmer board used is the P16Pro40 Programmer – the author’s kit came from Oatley Electronics and uses PICALLW software to do the programming. The latter is free if you stick to the 16F84.
    These little PIC® Microcontrollers are very powerful. The common 16F84 has flash memory space for 1024 commands (14 bits in length), it has 64 bytes of electrically erasable data storage (handy for callsigns and timer delays) and 68 bytes of RAM for storing variables. It has an 8-bit bi-directional port and a 5-bit bi-directional port. That’s 13 connections to do clever things with. It all fits in an 18-pin DIL package. Nifty! That’s enough computer talk, now on to the controller.
    Firstly it was necessary to be sure of the requirements. It had to be capable of running a traditional repeater with remote control capability, provide all necessary timers and tone generation, be capable of supporting a gateway or link and, with increasing interference problems in the spectrum, the capacity for CTCSS controlled transmit. The ability to change callsign and timers by remote control was considered desirable. All of this to be achieved with a minimum of components built on a single board within a small box.

    The unit to be described is Version 3. The two previous versions run the Kingston Gateway and the 70cm Mt Gambier Repeater with 29mHz gateway. Version 1 did not include a CTCSS or DTMF decode while Version 2 did not include a low pass filter for the CTCSS. Version 3 represents the gradual evolution of the controller and tidying of some aspects of the circuit. For example it was found that it was not necessary to amplify the audio to the microphone inputs, receivers seem to have plenty of line out audio.
    The controller is designed around the 16F84A PIC®, a MC145436 IC for DTMF control, a combination of a CA3140 op amp operating as a second order low pass filter and a NE567 to detect CTCSS tones while a 4066 CMOS switch controls audio. A LM7805 provides regulated 5 volts to the ICs that require it.
    The choice of a NE567 to decode CTCSS is a practical one as the author has a number on hand, they are cheap and they work OK. There are a small number of specially designed CTCSS chips on the market. They are quite expensive and couldn’t be located in Australia. If a reader is interested in using a proprietary CTCSS chip then a small outboard circuit could be developed. The controller board can interface to an external decoder (see jumper JP3 and pin 12 of the external connector). This latter facility was used for the VK5ROH Version 2 board, as a commercial CTCSS decoder was available courtesy of Col VK5DK.
    The PIC® does all the hard work including the generation of tones, timing, callsign, interpretation of remote controls and of course switching the output pins in accordance with instructions from the receiver mute inputs.
    Using protoboard I took myself through the ‘flashing a LED’ testing programs on to the main features of a controller. LEDS and switches grew in 3 dimensions but the prototype served its purpose and enabled me to build Version 1, now in use at the Kingston Gateway. I used a Dalo pen to create the tracks and etched a board using my home made, windscreen wiper agitated, ferric chloride bath.
    Version 2 of the board introduced the CTCSS and the DTMF on board. The DTMF worked fine but the CTCSS tended to drop in and out with speech. Those of you familiar with CTCSS will know that the added tone is low in level and because of the response of receiver audio pass bands all but disappears if you try to decode it at the top of the volume control. Audio must be taken very early in the audio circuitry, preferably at or shortly after the discriminator. Version 2 badly needed a low pass filter to improve performance, hence the redesign for Version 3.
    Working quietly behind the scenes for Versions 2 and 3 was Russell Lemke VK3ZQB who kindly turned my hand drawn circuits into very nice circuits, boards and parts lists. The project would not be as successful as it is without Russell’s skill with a drafting program and photographic production of boards. Thanks Russell.

    Well how does it work?
    The controller provides all control functions required for a repeater, linked repeater or gateway operation. Typical uses include:
    1. A general repeater controller – duplexed single receiver and single transmitter using a 4-6 cavity system to connect to one antenna. Alternatively separate antenna systems with perhaps a single cavity in TX and RX to reduce desense.
    2. A duplexed repeater with a gateway eg a UHF repeater with a 29mHz gateway
    3. A duplexed 2M repeater linked via UHF to a remote repeater system
    4. A simplex gateway connected to a simplex transceiver that remotely accesses a repeater system (range extender concept).
    • Two mute inputs (i.e. a receiver A and receiver B)
    • Two PTT outputs (LED indicators on board)
    • Onboard DTMF decoder
    • Onboard CTCSS decoder (to meet licensing conditions or remove interference)
    • Timeout timer
    • Callsign generator with timer
    • Tail with mode pips
    • All tones generated on board
    • Remote inhibit of timer
    • Remote inhibit of primary repeater
    • Remote inhibit of gateway (or link)
    • Remote callsign configuration (including call itself)
    • Remote adjustment of callsign delay
    • Remote adjustment of timeout period
    • Uses a PIC® 16F84A for logic control, timing and tone generation.
    • Audio switched with a 4066 quad solid state switch
    • CTCSS decoding with a NE567, low pass filtering with a CA3140
    • DTMF decoding with a MC145436 chip
    • All components are readily available in Australia
    The PIC® (a 16F84A) is provided in programmed form according to user requirements. If you want a copy of the source code and/or the compiled code it is available free from VK5DJ for amateur use (see website Using the supplied hex and EEDATA files constructors can program their own PIC®.
    Memory map of the EEDATA
    0..41 callsign
    42,43,44 passwords in order password1, password2, password3
    45 mute direction (0= both active low, 1=rpt high & simp low,

    2=rpt low & simpl high, 3=both active high)
    46 callsign delay
    47 timeout delay

    48..55 timeout message
    56..63 OK message

    Connection to the real world is through a 12 pin plug mounted on the board
    Pin Description
    1 +12V in (approx 10mA)
    2 DC common ground
    3 Mute input from repeater receiver
    4 Mute input from gateway or link transceiver
    5 Repeater audio in (receiver approx 100mV)
    6 Gateway/link audio in (receiver approx 100mV)
    7 Discriminator of repeater receiver (for CTCSS)
    8 Gateway/link audio out of board (microphone)
    9 Repeater audio out of board (microphone)
    10 Repeater PTT
    11 Simplex PTT
    12 External CTCSS detect input to board

    Detailed description of main interconnector JP4

    Pin 1 is the unregulated supply voltage to the board, nominally +12 volts but should lie between the limits of 8-14 volts for reliable operation.
    Pin 2 is the common ground for power supply, logical inputs and audio lines.
    Pin 3 the repeater receiver mute input is generally programmed for 0V when a signal is received (ie active) and +5 to 15V when the receiver quiet. The line is clamped on the board with a 5.6V zener. Note that the line is held to either +supply line or 0V via a 22k resistor mounted on the board to ensure that if a receiver is not connected the input line has a clear logic level. When constructing the board the pull up resistor OR the pull down resistor (R21) is installed depending on the mute state available from the receiver in use and the appropriate programming of the PIC®.
    If active high from mute then install a pull down resistor (reprogram PIC® for active high). If active low from mute then install a pull up resistor.
    Pin 4 the gateway (or link) transceiver mute input. See notes for pin 3 but R22.
    Pin 5 is the repeater receiver audio in. A capacitor is included on the input in case this line has superimposed DC. Audio levels should be at least 100mV. Pot RV2 controls the level. The top of the volume control in the receiver is an ideal source although some transceivers have an output on a connector for this purpose. It doesn’t matter if the audio is not muted as the board provides this function.
    Pin 6 is the gateway (or link) receiver audio in. See notes for Pin 5 but pot RV1 controls level.
    Pin 7 is audio from the discriminator of the repeater receiver (or the receiver being used for CTCSS input). The audio must be taken at this early point to obtain sufficient CTCSS tone as these low frequencies are both low in deviation and strongly attenuated in the remainder of the receiver chain. Commercial CTCSS decoders use the discriminator or access a low pass filter (eg the Simoco PRF15-20 units). On this board I require separate audio in from the receivers and this comes in on pins 5 and 6.
    Pin 8 is the audio out of the board to the gateway or link microphone. The level is adjustable and depends on the settings of RV2 (received audio) and RV5 (tone outputs for beeps and call sign)
    In standard repeater/gateway/link use both pins 8 and 9 are jumpered together on board (JP6). In the case of an on air cross-linking gateway (eg a uhf gateway into a remote 2m repeater via a simplex connection) JP6 is unjumpered.
    Pin 9 is the audio out of the board to the main repeater microphone. Level depends on RV2 and RV5 when the repeater receiver is in use and RV1 and RV5 when the gateway/link is in use. See Pin 8 notes re JP6 use.
    Pin 10 is the repeater PTT. It assumes that 0V is active. The transistor could sink 20-50mA but a relay should not be switched as there is no protection from transients. The pin sits at +supply volts.
    Pin 11 is the simplex PTT. See notes for pin 10.
    Pin 12 is the output of an external CTCSS board. The pin expects an active high (5 to 15 volts). This is zener protected on board to 5.1V. Jumper JP3 provides for either external CTCSS or internal CTCSS. If the internal CTCSS is not required do not install parts for IC3 (NE567 tone decoder) and IC6 (CA3140 op amp low pass filter).

    INPUT – assuming active low mute setting

    Mute inputs are available at pins 3 and 4 of the main connector. Repeater input overrides the gateway input. On lowering of the mute (received signal) the timer begins. On raising of both mute pins the timer is reset.
    On timeout the board sends ‘TO’ and shuts down the PTT and audio of both transmitters. When both mutes are high the transmitter provides a tail and sends another ‘TO’. The device is again ready for use.

    The PIC® Microcontroller

    The mutes from the primary and secondary receivers are applied to Ports B.4 and B.5 of the microcontroller. The voltage is clamped to no more than 5 volts by the zeners to protect the input of the 16F84 from excessive voltage.
    A zero on a mute indicates that a signal is being received. The mutes are continually polled by the microcontroller at approximately 20msec intervals. Once a mute is open on Port B4 or B.5, the appropriate PTT pin is lowered on Port B.3 or B.2 and at the same time the appropriate audio is switched on through Port B.7 or B.6. The timeout timer starts counting.
    The duplex repeater always has priority.
    When a mute goes high (receiver mute closes) the 16F84 checks to see if a callsign is due, if so it sends a callsign, if not it sends a tail and if appropriate a beep (or two or three – see later). The timeout timer resets to zero. The callsign timer resets if a callsign was sent otherwise it keeps counting. The delays for the callsign and the timeout timer may be remotely changed.
    If a mute stays on for a longer period than allowed by the timeout value the audio is shut down, a ‘TO’ is sent in Morse code (Port A.4 goes high to turn on the audio switch), then the PTT is taken high (Port B.3 and Port B.2) and everything shuts down. When the mute finally goes high this frees the system and a further ‘TO’ is sent in Morse and the repeater/gateway/link is again available.
    The DTMF controller system works in the following way.
    A 145436-decoder chip has an oscillator running at 3.58mHz. This frequency is coupled to the PIC® and so provides clock signals to both the decoder and the chip. DTMF tones are applied to the input pin of the chip through JP2. The jumper on JP2 determines which receiver passes on the DTMF tones. On receiving a valid tone the output pins are sensed by the PIC® through input ports RA0,1,2,3.
    A three-digit address code is sent by DTMF and received on a receiver. For the sake of this document the address sequence will be 987. The address is followed by the control byte and possibly some data.
    1. Inhibits the main transmitter.Inhibits the gateway/link.
    2. Cancels the main timer (useful for the WIA broadcast).
    3. Requires CTCSS input to enable main transmitter (may be programmed to require CTCSS for gateway to meet limitations of some licences.).
    4. Changes callsign (see later for notes).
    5. Change callsign delay (units about 18 secs, HEX 10 gives about 5 mins).
    6. Change timeout delay (units about 18 secs, HEX 0A but use HEX 0B - see later note re 0A)
    7. Gives about 3 mins. Resets controls 1,2,3,4 to default, that is, timer active, gateway on, main TX on, no CTCSS required for main TX)

    Example: If the address was 987 then a control sequence of DTMF ‘9873’ will inhibit the main timer. When the carrier is dropped an ‘OK’ is sent in Morse if the command was successful. The tail will now have two beeps.
    A DTMF sequence of 9878 will re-enable the timer.
    Due to the nature of a DTMF touch tone pad the numerals sent by the pad do not quite align with their value (To complicate things I ran out of ports on the PIC® and therefore couldn’t decode the received tone enable pin, this limited access to 4 bits of data). I needed a zero more than I needed a 10 (HEX A) so I have internally translated the keyboard 0 (actually a 10) to a real 0 and thereby lost HEX A. Because of this the other digits are displaced so you need to use the translation table (Fig 1). This means that when you need the HEX character in column 3 you must push the button in column 1. Messy, but you won’t need to use remote changes very often. In fact after setting up you may never need to use them again.

    LABEL ON DTMF PAD NUMBER SENT NUMBER received by software
    1 Binary 0001 Decimal 1 Hex 1
    2 Binary 0010 Decimal 2 Hex 2
    3 Binary 0011 Decimal 3 Hex 3
    4 Binary 0100 Decimal 4 Hex 4
    5 Binary 0101 Decimal 5 Hex 5
    6 Binary 0110 Decimal 6 Hex 6
    7 Binary 0111 Decimal 7 Hex 7
    8 Binary 1000 Decimal 8 Hex 8
    9 Binary 1001 Decimal 9 Hex 9
    0 Binary 1010 Decimal 10 Hex 0
    * Binary 1011 Decimal 11 Hex B
    # Binary 1100 Decimal 12 Hex C
    A Binary 1101 Decimal 13 Hex D
    B Binary 1110 Decimal 14 Hex E
    C Binary 1111 Decimal 15 Hex F
    D Binary 0000 Decimal 0 Unused
    Fig 1

    If you only have a 12 digit DTMF keyboard you should be able to remote control quite satisfactorily. The author suggests using either 1# or 20 for the value of the dah depending on how you like the sound of dahs. A 1* meets the dah=3 dits definition perfectly but most amateurs prefer a dah a little longer than the recommended 3 times the length of a dit. You may think otherwise.

    Changing the callsign.
    This is FUN! The PIC® program works by reading the delays you enter in EEPROM memory via command 5. (eg send address 987 and the 5)
    Dit = HEX 04
    Dah = HEX 0E
    <EOC> = HEX 50 end of character indicator
    <EOM> = HEX 55. end of message indicator
    These timings may be varied according to the following rules:
    1) a dit and a dah must be less than HEX 30
    2) an <EOC> must be more than HEX 30.
    3) An EOM MUST equal 55.
    4) Each HEX unit of a dit and dah equals approximately 10msecs of tone

    V K 5 E T

    04 04 04 0E 50 0E 04 0E 50 04 04 04 04 04 50 04 50 0E 55
    dit dit dit dah <EOC > dah dit dah <EOC> dit dit dit dit dit <EOC> dit <EOC> dah <EOM>
    To send this to the controller remember to retranslate according to table above – note that a HEX E is sent by hitting the B key.
    98750404040B500B040B5004040404045004500B55 sends VK5ET
    Then drop your transmission. An ‘OK’ signifies provisional success, although if you made a mistake with numbers you may have errors in the callsign. Wait and find out.
    Note the address leads the routine. This routine is a great test of your ability to send a long string of digits and of your keyboard not to bounce! Fortunately you don’t have to do this often. The callsign must not exceed 47 bytes or you will corrupt other information stored in the data area (the other messages and the timer variables). This is unlikely to be a problem as the above example only uses 19 bytes and even VK5RBB/M3 would only use 44 and I can’t think of a longer legitimate callsign in VK.
    You can experiment with the numbers but remember the rules cited above.

    Changing the callsign interval

    The general principle is to send the address followed by a 6 then two characters defining the HEX delay.
    Each unit is about 18 secs so if you want 10 minutes:
    10* 60 / 18 = 33 decimal or HEX 21. You will need to send a 2 then a 1.
    Your control sequence is 987621
    Another example, this time for 15 minutes:
    15*60/18= 50 decimal or HEX 32
    Control sequence is 987632
    If your calculation gives say HEX 1A, then you can send the ‘1’ but not the ‘A’ (see table), you will settle for sending 19 or perhaps 1*

    Changing the timeout interval

    I have used the same rules and strategy as ‘changing the callsign interval’, except that the command is 7 instead of 6.
    Eg a 3 minute timeout is calculated like this:
    3*60/18= 10 or HEX 0A.
    HEX A is not available on the DTMF pad so use * which sends a HEX B (see table) and your delay is about 18 secs longer! No big deal.
    Control sequence is 98770*

    Changing the polarity of the mutes

    The polarity of the mutes is dependent on the wiring of R21, R22 (see above) and the value of the byte at address HEX 2D in the EEDATA. The EEDATA.EEP file needs to be altered to suit and PICALLW has edit facilities.
    Values for the byte at address HEX 2D are:
    0= both mutes active low
    1= repeater mute active high, simplex mute active low
    2= repeater mute active low, simplex mute active high
    3= both mutes active high

    Tail operation
    A tail is provided once both mutes are inactive. This is set at approximately ½ second. As an encouragement for people to wait between transmissions no audio from a receiver is fed through for this time (1/2 sec) even if a mute opens. Audio is fed through during callsigns.
    A beep is provided under certain control circumstances.
    • No beep on tail indicates repeater only operation – gateway/link off
    • 1 beep on tail means gateway/link on
    • 2 beeps on tail indicate timer is inhibited.
    • 3 beeps on tail indicate gateway link on and timer inhibited.
    A tail (either ½ sec or callsign tail) is always generated on the repeater TX.
    Providing the gateway is not inhibited, a tail is generated on the gateway TX if the last mute opening was generated by a CTCSS enabled signal on the repeater receiver, or if the last transmission was on the gateway receiver.

    Call signs

    Call signs are sent every ten minutes (or as changed by remote control) at the end of the over. If a call is not due at the end of the last transmission of a contact one call sign will be sent at the end of the timing period. The repeater will then go silent until the next mute opening. A call will be generated at the end of this mute opening if 10 minutes has expired since the last.

    CTCSS operation

    The values on the circuit suit reception of a 118.8 Hz CTCSS signal. These low frequency signals are attenuated by tailoring of the receiver audio, so the board must take its audio from the discriminator circuit or early in the audio chain before tailoring.
    Changing C7 or R8 changes the CTCSS frequency beyond the range achievable with control RV6. Lower values increase the frequency. LED L4 lights when a correct tone is received. L4 is a useful tune indicator when adjusting RV6.
    For the program written for repeater/gateway operation, the gateway is enabled if the user sends a CTCSS signal. Without the CTCSS the repeater function is normal. This meets a licensing requirement to ‘lock out’ people without the required endorsements for eg 29mHz operation of a gateway.
    Gateway operation is, in effect, in parallel with normal repeater operation providing the CTCSS is sent.
    The CTCSS function can be required for normal repeater access. This may be needed where interference from LIPDs is a problem. See function 4 in remote controls.


    See Jumper section for orientation of the board for this description.
    The CTCSS detect LED is in the North East of the board and lights when there is a valid CTCSS signal received.
    The repeater and simplex PTT LEDs are together in the South East corner. The repeater LED is the northernmost of the pair. The simplex PTT LED is the southernmost of the two. They light when PTT is low (i.e. active).
    The DTMF valid LED is at the bottom (South West) corner of the board by itself and lights when a valid tone pair is received.
    The power on LED is in the North West corner of the board.
    Constructors may choose to mount the LEDs on the front panel of the box.

    JP1 Test Function

    Pin 1 is the output for DTMF decoder (data bit 0) – high if bin 0001 rcvd (see table later but pin 1 is nearest the 7805 voltage regulator)
    Pin 2 is the output for DTMF decoder (data bit 1) – high if bin 0010 rcvd
    Pin 3 is the output for DTMF decoder (data bit 2) – high if bin 0100 rcvd
    Pin 4 is the output for DTMF decoder (data bit 3) – high if bin 1000 rcvd
    Pin 5 is data valid and goes high for a valid tone detect
    Pin 6 is the output of the Xtal oscillator and should be 3.579mHz


    With the board held with components up and the main connector on the left (west) and the voltage regulator at the bottom (south), the trim pot for the CTCSS is to the east. From an imaginary point in the centre of the board the angles locate each jumper.
    H means the jumper lies east/west, V means the jumper lies north/south.
    Position number 1 is always either the northernmost or the easternmost position.
    Position number 2 is the next to the south or west and so on.
    JP1 are test points see above (190 degrees) with pin 1 nearest the 7805
    JP2 controls the source of the audio for the DTMF tones. (300 degrees)
    • H, 1 = repeater receiver audio
    • H, 2 = simplex audio
    JP3 internal or external CTCSS input to 16F84A (75 degrees)
    • V, 1 = external CTCSS decoder
    • V, 2 = internal CTCSS decoder
    JP4 audio source for CTCSS (320 degrees)
    • H, 1 = repeater receiver audio
    • H, 2 = simplex receiver audio
    • H, 3 = discriminator audio from repeater receiver
    JP5 main interconnector – see above (270 degrees)
    JP6 join microphone points (270 degrees)
    • V, 1 on = microphones are joined (gateway/link condition)
    • V, 1 off = microphones separated - single repeater or range extender model.


    PCB File

    Components list

    Drill the mounting holes for your box, and trial mount the board.

    Make the following decisions:
    1. What polarities do the transceiver(s) require? If you have active low mutes install R21, R22 to +5V (examine board). If one (or both) is active high then take R21 and/or R22 to earth. The board provides for this. The program in the PIC® will need to be modified for active high. If the transmitters require active low then everything is fine as is, otherwise the program in the PIC® will need to be changed. If you don’t want to have the program changed then you will need to build external inverters where necessary.
    2. Where do you want to mount the LEDs? If you want to put these on the front of the box then obviously you will install wires rather than the LEDs on the board.
    3. Decide if you will be using CTCSS. If not you will not need the components associated with CA3140 and LM567. But you will need to include JP3, R4, and bridge L4. (You’ll have one less LED so don’t drill your front panel for it!!)
    • Mount the socket for the 16F84 (strongly recommended, you might want an updated program one day).
    • Note notch is to the regulator end. Install the 7 jumpers (from top to bottom of board)
    • Install JP1-6 Install all the resistors but note positions of R21,R22.
    • Solder to upper board and bottom trace where jumpers are required.
    • Install all the capacitors. (solder top and bottom where traces exist.)Install voltage regulator LM7805.Either solder LEDs to board or attach wires for LEDs to be mounted on front panel at a later date.
    • I suggest at least dangling the ‘power on’ LED temporarily on its wires for the next check.Apply +12V to board and ensure that +5V is available in appropriate spots eg pin 4,14 of PIC®.
    • Remove voltage and solder remaining solid-state devices – leave PIC® out of socket for the moment.
    • Install in box and wire the board to the DB25 on the rear of the box. I used pins 1-12 to maintain the integrity of the numbering system.
    • Wire the LEDs located on the front panel and a power switch if you wish. I didn’t use a switch, preferring the control logic to boot up as soon as the rigs have power to avoid unpredictable states in the rigs.

    The following assumes active low situations. If not, you will no doubt work out your own testing procedure by inverting the logic. Pin numbers refer to either the DB25 or JP5 if you followed my advice on connections.
    Temporarily connect the following:
    · Switch R – SPST between pin 3 and earth (pin 2)
    · Switch S – SPST between pin 4 and earth (pin 2)
    · A SPDT switch and a headphone socket to listen to either pin 8 or pin 9 (earth is common)
    · A SPDT switch and a socket to enable audio either from a receiver or an audio generator to direct audio to either pin 5 or pin 6.
    · The capacity to measure the voltages at pins 10 and 11 (the PTT outputs)
    · Connect jumpers – JP2, 1&2 JP4, 1&2 JP3, 1&2

    On power up, the controller is set with gateway off.
    Test logic functions:
    • Headphone listening to repeater mike – pin 9 (Switch R)
    • RV5 half way Close switch R
    • LED2 lights.
    • Open switch R
    • LED2 stays on for ½ sec (or possibly longer if it decides now is a good time for a callsign).
    • Repeat opening and closing R to see if it matches your expectation.
    • Close switch R and leave it on.
    • After about 5 minutes you should hear ‘TO’ in Morse and LED2 should go out when the TO is finished.
    • Open switch R and you should again hear ‘TO’ and LED2 lights as ‘TO’ is sent.
    • The system will again respond to opening and closing of switch R.
    • Wait a little longer and after a Closure/opening of switch R a callsign should be generated. LED2 again indicates the PTT state for the repeater.
    • Use a multimeter to see that pin 9 is going low when the LED2 lights.
    • At other times it should be at about 12V.
    Test DTMF capability:
    Connect a DTMF generator (or a receiver) to the appropriate input (pin 5 with the test jumpers in place). Send a tone, LED 3 should light. If not adjust RV4.
    With no input check the voltage on pins 1,2,3,4 of JP1. These should be at 0V. Send a DTMF C and check that all pins 1,2,3,4 are high.
    If logic and DTMF decode don’t seem to work then check with a CRO that there is a 3.58mHz clock on pin 6 of JP1
    With switch R closed, send the address and a 1 (eg 9871). Open switch R, hear an OK in the headphones, and then note that LED2 no longer responds to switch R (the TX has been inhibited.)
    With switch R closed, send digits 9878 (password+8). Open switch R and hear the OK and LED2 again follows switch R.

    Test CTCSS if installed
    Feed a low level CTCSS tone into the appropriate pin (for the test setup use pin 5 and bridge JP4 bridge H1). I suggest 118.8hz. Adjust both RV6 (freq determination) and level RV3 for lighting of L4. Reduce level and retune RV6 for LED4 to find the most accurate setting of RV6. The level potentiometer will need to be reset when the receivers are finally connected. Note that I strongly recommend that you connect as close as possible to the receiver discriminator as receiver audio chains attenuate CTCSS tones.
    The 567 tend to drop out when there is a whistle or loud speech. The program allows for this and has a hang facility built in. As long as the LED flashes once every couple of seconds the system will work.

    Audio switching:
    With different audio provided to the two receiver output pins, switch R and switch S alternately note the different combinations of audio. Potentiometers RV1 (simplex TX audio) and RV2 (repeater TX audio) adjust levels.

    Connect to your transmitters and receivers. All levels will need to be reset. Connect jumpers as appropriate. Generally JP6 is bridged EXCEPT when you use the board as a range extender or simple gateway. Check general operation. It is at this time that some nice instruments help. Otherwise do what I do, get a group together to monitor your experiments as you adjust levels, flicking to and fro from the direct path to get an idea of similar levels – crude but it works.


    The production board will fit quite nicely in a small instrument case 110*140*35mm (Dick Smith H2512 - $9.75). A DB25 socket mounted on the rear is a simple way of achieving connectivity to the transceivers.
    Last Changes
    See Readme.txt

    General notes

    Note that in the parts overlay and circuit diagram LED L5 is the wrong polarity. It will need to be inverted. In addition, the photographs of the populated board do not show R24 (3M3). A last minute change of circuit for the low pass filter meant that R24 was installed under the board for the prototype board in the photos. The parts layout and board patterns show R24 (3M3) in its new position near IC6. Don’t let my photos of the board confuse you with regard to R24. Also note that the overlays have labels to JP2 and JP4 reversed for repeater and simplex audios.
    I would like to thank Russell VK3ZQB for drawing the circuit so well, the development of the parts lists and layout, and the preparation of the board. Without him the board would be hand drawn, twice the size and have many links. The support of Michael Carra in building a controller and discovering errors in the documentation is also appreciated. Thanks Russell and Michael.

    The described version is now obsolete having been replaced with a PDS powered program and many more features added. There are hundreds of units in use around the world. For a complete description of the latest version see my website:

    All code is available on request.

    John Drew VK5DJ
    January 2004