Here's a video where I give the new board a quick test of the new Rotary dialing feature.
This project is a single circuit board solution to managing multiline "1A2" business phones popular in the 1950's - 1980's in the United States and other countries, collectively called "key systems". During that time the phones were managed by large control boxes from AT&T called a "KSU" (Key System Unit) that varied in size from a shoe box to large racks taking up an entire room.
Many of these phones are available in surplus, but can't be used as intended without these cumbersome control boxes. At the time miniaturization started becoming popular, the phone industry took a sharp turn in a radically different direction: after the Bell System was broken up, "digital" phones quickly became popular, so these old phone systems became yesterday's technology quickly.
So my project kinda picks up where the industry left off, had it given those old phones a few more generations; it "miniaturizes" the functions of the KSU into a single circuit board making it much easier to quickly connect up to 4 of these phones, such as for use in small office environment, or to demo the old phones easily.
I've actually switched my own business phone system over to one of these boards with 2 lines and 3 extensions, adding a Viking AR-1 to act as the autoattendant (blocks robocalls) and an answering machine to take calls when no one answers.
This 1A2 "single board KSU" project has evolved over time, resulting in a series of board revisions that accumulated improvements and features as it went. The project started with REV-B, and is now up to REV-H.
REV-E replaces about 50 discrete components that were in REV-B with a single chip CPU ("PIC" chip). And this time I used Sprint Layout 6.0 to construct the board (instead of ExpressPCB), which let me save out Gerber files that could be shopped around to different board printing services, bring the cost of 3 boards down from $380 to $60 or so, greatly reducing the board printing costs. These boards were printed in blue by PCBWay.
One of my beta testers requested I resurrect a bridging feature I'd described I had designed but not yet implemented, allowing one to easily combine two boards to double the lines and extensions. They also asked if rotary phones could be supported for intercom dialing. So I came up with REV-F..
REV-F adds an optional ribbon cable "interlink connector" that allows two boards to be combined with a single 30 pin ribbon cable to manage 4 lines and 8 extensions. There are two 32 pin jumpers to let the user select which board is which. To enable rotary phone support, another PIC chip and optocoupler was added, allowing me to remove the components IC10, RN3, and Q12 through Q15 that were in REV-E. This left room for the connectors and jumpers needed for the new Interlink feature. These boards were printed in purple by PCBWay.
REV-G has a small fix for an issue in Rev-F: when two boards were interlinked, the lamp flashing for hold and ringing wasn't synchronized between the two board's lines. The upper left pin on the interlink connector was changed from an extra ground to carrying the sync signal. Also added: a 10K pullup (R28) for Q6's input, solder pads for JP3 and JP4 were enlarged slightly, surface mount resistors R9/10/11 were given more clearance around Q2, and various traces were moved to simplify routing, but made no electrical change. The cpu1/cpu2 signal tables on the silk screen had their columns aligned better. The first run of these Rev-G boards were printed in Matte black, using WellPCB.
REV-G1 has an electrical fix adding 4 flyback diodes to suppress inductor backcurrents from the buzzers to protect the TIP125 power transistors. Otherwise, changes were made to facilitate easier board assembly: replaced the 4 surface mount resistors with through-hole equivalents (SMD components are annoying to solder), pad sizes increased for CN9/JP3/JP4, extra resistor pads added for different length options, spacing of resistors R25/26/28 increased for easier lead trimming during assembly.
REV-H Removed JP1 as clearance for an on-board 5mm x 20mm glass fuse. Shrank component footprints for C5-C7, R19-R24, R25-R27 so that resistor leads can be folded against the package. Added extra trace clearance around JP3/JP4 pads for T1/R1 and T1 and B8. Added unused pin on SECONDARY (JP4) to drive unused inputs on CPU1 and CPU2 in case firmware needs to know if the current board is configured as a secondary (unused currently, may be needed in future). See this animation animation comparing changes between REV-G1 and newer REV-H boards.
REV-H1 EXT1 connector was offset by 1/2 snap grid unit (6 mils). When rails change board sides, rails include extra copper for via transitions. Added missing part# label for TIP125 EXT1 and below IN4148 diodes. Removed row of test points below interlink connector. Changed drill holes for EXT1-4 to be proper holes, to avoid ambiguity for printers. Changed drill holes for TIP125's to be plated through holes. R1 and R8 hold resistors: added multiple through holes for different sizes. Added pin#1 dots to all DIP packages. Made 0.1uf caps smaller package size, so leads can be bent over the package. Added silkscreen part#s for 33K and 1K line resistors. Updated all part#s to use BULK instead of TAPE REEL values where possible. Changed BUZZ CALL diode pads to include extra pads for a 10 LED bar graph (without having to trim first 2 rows of pins). Changed minimum hole size for board from 0.3mm to 0.8mm. Enlarged all vias and pads that used any hole size below 0.8mm to 0.8mm.
REV-H2 H1 had a badly positioned via at end of EXT1's T1 trace is off by a full grid unit. Removed part#s for non-existant JP1/2 at far right of board, and moved JP3 part# to the component's location. Removed redundant part# for JP3/4 at far right of board; components have this info already. Removed dated PCB: and SCH: filenames from right side of board: never bothered to update them! Enforce DRC (Design Rule Check):
Minimum Distance (mil) (x) Copper: 5.9 (x) Drillings: 19.7 Min/Max: (mil) (x) Drilling Min/Max: 11.8/315.0 (x) Track Min: 6.0 (x) Annular Ring Min: 5.0 (x) Silkscreen Min: 5.0 Miscellaneous: (these are all unchecked) ( ) Silkscreen over pads ( ) Drilling on SMD pads ( ) Pads without soldermask ( ) Soldermask out of padsTODO: Shrink component size for D22-D25, or provide two holes, one for "pins bent over component", the other where they are now.
See this animation comparing changes between REV-H1 and REV-H2 for all, top, bot.
REV-H mainly just added an on board fuse, making it unnecessary to insert an inline fuse into the power supply wire. Trace re-routing was just to improve specs. Adding SECONDARY detect for the two PIC CPUs is just planning for possible future use in firmware, but not used currently.
Otherwise, this revision offers the same features as Revision G and G1:
When combining two boards to provide a total of 4 CO lines / 8 extensions, each extension can be
uniquely dialed on the intercom line via Touch-Tone or Rotary. This page
shows how to interlink two boards.
|User's Manual||User's Manual
Covers Installation, Use, Troubleshooting..
|BOM / Parts List||Bill Of Materials: Digikey parts list with prices + total parts cost|
|PCB Layout File||The editable Sprint 6.0 PCB layout file (used to create Gerbers for printing PCB boards)|
|ExpressSCH Schematic (.sch)||The editable ExpressSCH schematic file|
|Circuit Description||Description of how the circuit works in the various 1A2 modes (Idle, Call, Hold, etc)|
|Gerber/Drill Files (1a2-REV-H.zip)
Gerber/Drill Files (1a2-REV-H3.zip)
|Gerber + Drill files as a zip file|
|How to manage this project||How to load the PCB layout, save Gerbers, print the PCB boards, etc|
|PIC Programming Notes||My loose notes while learning to write the PIC firmware for this project|
Note: There is no difference in the firmware between REV-G1 and REV-H currently; both boards can support the same firmware. It's only if future changes made to firmware make use of the new REV-H feature for detecting the SECONDARY board JP4 setting.
In the MPLAB X IDE, you can create two projects for the PIC16F1709 chip; one project for CPU1, and one for CPU2. In the new CPU1 project, create a new .c file called "cpu1-main.c" and a new include file "Debounce.h", and copy/paste the above 1a2-pic-cpu1-REV-G-firmware.c and Debounce.h files respectively into them. Ditto for the CPU2 project; create a new .c file called "cpu2-main.c" and a new include file "Debounce.h", and copy/paste the above 1a2-pic-cpu2-REV-G-firmware.c and Debounce.h files respectively into them.
The software has no dependence on external libraries; the software is entirely self-contained; all functions provided are in the source code above.
The board logic functions are managed by CPU1 (IC8) include detecting incoming calls, flashing the lamps, powering up and directing the external ring generator, detecting line pickups and hold conditions, and handles some intercom dialing detection and supplies the 60Hz extension buzzing signal. This software uses only 5% of the 1K of data memory, and 17% of the 8K program memory.
The other PIC chip, CPU2 (IC10), handles rotary dialing, and emulates a 7445 for 1-of-8 decoding of the DTMF MT8870 chip. The firmware for CPU2 is a relatively small program.
The "PIC PROGRAM" connectors (JP1 and JP2) let one re-program the PIC chips firmware on-board, without having to remove the chips to program them. Just plug Microchip's PICKit 4 USB programmer (a $50 device) into the appropriate PIC PROGRAM connector to directly program each chip; use JP1 to program CPU1 (IC8), and JP2 to program CPU2 (IC10).
I think the software cost me about $60 USD for a license, but I think you can use the eval to open and do everything but save. $60 is cheap, compared to what most PCB layout software costs. So with this program you can load up the board's PCB Layout File to edit it, generate Gerber + Drill files, and send for printing. I used these instructions for saving out the Gerbers and having the boards printed.
Phone Extension Connector Pinout
Pinout for extensions on a single board.
Pinout for extensions on interlinked boards.