diff --git a/README.md b/README.md index b6e3d26..e55be31 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,5 @@ Denon PMA-770 (and others) Arduino Control -# About - -This project ultimately seeks to be a "logic control" modification for a -Denon PMA-770; allowing one to do things like change inputs, volume, -balance, and tone using a remote control. - -But that's a long ways down the road; so right now it's goal is to drive -relays and a display to replace the source input switches and input -display. I am designing it around the aforementioned Denon; but it can -obviously work for other units with some modification. - -Schematics and pictures up later. - # History ``` @@ -21,5 +8,114 @@ Schematics and pictures up later. 29-Dec-2019: Version 0.1.1 - Added preliminary IR remote support 30-Dec-2019: Version 0.1.2 - Controls ShiftReset and OutputEnable on 595 to prevent random start-up state. 30-Dec-2019: Version 0.1.3 - Removed ShiftReset function. Replaced with reset circuit onboard. +01-Jan-2020: Added license, media, and proper README. ```` + +# About + +The Denon PMA-770 is a high-end integrated amplfier from the early 80's capable of the usual 100 watts into +8 ohms; and somewhere in the neighborhood of 120 to 140 in to a 4 ohm load. It's a DC coupled amplifier of +"Direct-A" topology. It's got 3 pairs of output transistors, no capacitors in the audio path, and it sounds +outstanding. + +But it's also got this seriously stupid way of working the input switching that has not only caused failure +of most of the inputs; but is silly enough I don't want to bother trying to replace the switches to keep the +original method in tact. In order for the audio to make it in to the amplifier, it relies on connecting through +the "normally closed" contact on the switch "in front" of it. Well the "normally closed" contact has decided it +no longer wants to close and the entirely sealed design has prevented cleaning agents to make it in. + +To add to the stupidity; this unit features a simple segemented LCD display to display the name of the input. +This was a probably a pretty big ordeal in an era where even a single LED lighting up over the name was an +entirely new idea. This display is non-standard and relies on even more contacts in each input switch to throw +pins to AC. Disabling the input switches would disable this display; but the 128x32 OLED looks like it will fit +in the phsical space the existing one does. + +Taking that in to account, I decided to build a relay board driven by an Arduino that would also drive the +display. It also lets me do crazy things like add input selection by remote control...something you weren't +getting back in 1981. Additional modifications like motorized pots for volume could further extend the +remote control function. + +# Hardware + +The basic idea is parallel the actuator contacts of 5 DPDT (or DPST) relays and flip them on one at a time (two +for phono). + +[![Schematic of hardware](/images/schematicsmall.png "Schematic")*Click for full resolution.*][/images/schematic.png] + +Data is shifted in to a 74HC595 and it's parallel outputs are used to control a ULN2803(or 2003) darlington array to +in turn drive a relay. The output of the 74HC595 is controlled by the microcontroller and an RC circuit on the reset +line prevent suprious relays from firing. Every effort has been taken to ensure only one relay will be fired at a time +to prevent damage to other audio components. The 2803/2003 arrays include built in snubber diodes for inductive kick- +back protection. If you should deviate from this schematic and use discreet diodes, you must add these diodes to your +circuit or you will damage the transistors, shift register, and/or Adruino. + +The switch matrix consists of a simple resistor based analog method that merely throws different amounts of voltage thru +resistors. While this allows us to read all of our switches using just one line, it can cause problems should you want to +trigger two buttons. On the PMA-770 this is fine as the original bank of switches are mechanically linked to allow only +one to be active at a time. It is possible to read dual inputs as long as the parallel resistance doesn't cause a value +close to any indvidual switch. I have included a small utility in the /utilities folder that will display the current +ADC integer value to the LCD display. It can be used for just figuring out which resistors to use, or to check behavior +of paralelled resistors (two button press scenario). Using one line for the switch matrix is not set in stone and may +change depending on needs and availability of pins going forward. + +The Phono-1 and Phono-2 inputs are the only time the unit will ever fire two relays. This is because on the original +unit itself; both of these inputs route the phono-stage preamp to the main amplifier while routing the cartridge input to +the phono-stage. + +An 1838 IR sensor is used for remote control function. An additional utility may be written to help with this going forward +but it's possible I may wind up writing a routine for "self-programming". + +Currently I am using an I2C 1602 display just for development purposes. This will be replaced with a 128x32 I2C OLED display +in the future. This display is just a little larger than the display in the Denon; so it shouldn't be any issue to mount it +and format everything to appear in the actual visible space. It is not shown on the schematic; however it is just connected +to 5V, GND, SDA, and SCL lines. + +In the future I will be adding some kind of NVRam storage. This will facilitate actually storing configuration options, remote +programming codes, and to store the last-used input. I may also use this to store graphic data for the OLED display to +emulate the original segmented font display of the Denon. + +# Media + +[![Picture of prototype rig](/images/prototype.jpg "Prototype")*Prototype & Development Build* + +This is a previous revision of the hardware before the power-on reset circuit was added to the 74HC595. The parallel data is +represented by the standard arrangement of LEDs with current-limiting resistors. This is literally all that's required during +development since I'm already very familiar with the 2803 as a driver. + +I'm horrible at making videos in general...but I still made an attempt to show things off. + + +
+ +
+ + + +
+ +
+ + +# License + +Copyright 2020 Jay Moore + +Redistribution and use in source and binary forms, with or without modification, are permitted +provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions +and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/images/prototype.jpg b/images/prototype.jpg new file mode 100644 index 0000000..ef61339 Binary files /dev/null and b/images/prototype.jpg differ diff --git a/images/schematic.png b/images/schematic.png new file mode 100644 index 0000000..bd51690 Binary files /dev/null and b/images/schematic.png differ diff --git a/images/schematicsmall.png b/images/schematicsmall.png new file mode 100644 index 0000000..1e6f605 Binary files /dev/null and b/images/schematicsmall.png differ