Customizable 20W Amplifier

4 Input, 3 Way Tone Control and Customizable LCD Display

Similar projects worth following
This is the product of a long held desire to build my own amplifier and a failed attempt at some self-powered speakers. The amplifier uses the Adafruit MAX9744 amplifier board for amplification and volume control and is connected to a custom board using the TDA7439 to control inputs and tonal controls. All is powered by an Arduino Nano which interfaces with the buttons and LCD display. All this is housed in a custom 3D printed enclosure.

Input names are user changeable (something I hate about 'real' amplifiers are specific, unchangeable, input names) and all settings are stored in the Arudino's EEPROM and recalled when turned on.

The idea of this project is to make an amplifier that can be customised. Something that annoys me with most amplifiers is that the input names are limited what the designer thought they should be. My home theatre amp has a BluRay input, a DVD/BluRay input, a Game input and so on. While I have one BluRay player, I don't have another and certainly don't have a DVD any more. So the "DVD/BluRay" is actually connected to my media player, but I can't change the name. It is a little thing but something that has always bugged me.

This is a 2 channel amplifier that I designed and made for my slowly expanding "physical media" equipment (so far a tape cassette, DAT, minidisc, vinyl and a RaspberryPi based network media player). As my equipment list grew I needed more than the little powered speakers I was using. I had a MAX9744 based 20W amplifier board by Adafruit that was for a failed project to make a set of powered speakers so that became the basis of the amplifier. the MAX has a few nice features. Firstly it is a digital amp, making it very energy efficient. Secondly it can control the the volume internally, either by using an external potentiometer or via I2C.

Initially I had it running in analogue mode but with the increasing devices I needed a way to switch between them. A little research and I came across the TDA7439DS. This little chip not only has 4 switchable inputs, it also has a 3 way tone control, balance, volume and is controllable via I2C. This opened up the option to use a microcontroller to govern all the parts. Given I have the most experience with the Arduino I went with a Nano as it was something I had on hand and was reasonably small.

So I designed a circuit for the TDA chip that would allow it to connect to the Adafruit amplifier board, the 4 inputs and the Arduino Nano. The Nano then had another board that connected to 5 buttons for dealing with power and the tone and balance controls. It also had a satellite PCB that connects to the input selector buttons and finally a 16x2 LCD character display with an I2C backpack.

Another thing I wanted was to have an output for a VU Visualiser (I refrain from calling it a 'meter' as it isn't calibrated. It is mostly for the flashy lights!) and another output so the currently selected input could be recorded on to a tape cassette. The TDA chip has two outputs, one just after the input selector and the second output after tone controls. The tape output comes from the output just after the multiplexer so it is an exact recreation of the input. The 'VU meter' is taken from the second output that is fed into the amplifier so it shows the actual signal being amplified.

One issue would have been if the TDA chip was controlling the volume, as lowering the volume would make the VU meter also drop down in its response. Fortunately the MAX chip, as we said above, has it's own volume control, that means the output to the VU meter isn't affected by lowering the volume as it happens inside the MAX chip.

The LCD display is used to show the current input selected and the current volume level (or if it is muted). The inputs can all be named up to 14 characters which are stored in the Arduino's EEPROM (along with the current volume, tone and balance settings and the last selected input). Meaning even if powered down it will retain it's settings. All of this is controlled by the buttons and a rotary encoder.


Version 1.2.2 of the Amp Firmware Additional features: Auto detection of RGB backlight LCD controller Backlight timeout RGB Backlight controls Settings menu

x-zip-compressed - 9.86 kB - 09/24/2019 at 18:10


User manual and front/rear panel stickers

x-zip-compressed - 1.33 MB - 08/20/2019 at 16:18


KiCad CAD drawings. Contains the main input/tone control board (DA2004.1), CPU board (DA2004.2) and the input key board (DA2004.3)

x-zip-compressed - 361.72 kB - 08/19/2019 at 15:55



STLs for the amplifier casing

x-zip-compressed - 415.85 kB - 08/19/2019 at 15:52


x-zip-compressed - 7.51 kB - 08/19/2019 at 15:52


  • Firmware Update V1.2.2

    smartroad09/25/2019 at 08:26 0 comments

    Now that I have the RGB backpack for the RGB backlight LCD I have updated the firmware to take advantage of it.

    This new firmware will auto detect if the RGB backpack is connected and if it is detected it will allow additional options in the new Setup menu. This menu (reached by holding the power button down for two seconds) opens to show the current firmware version installed. The multi-control is then used to navigate the other options. If the RGB backpack is detected it will allow you to change the colour of the backlight (16 options, all with amazing names...), the brightness and the saturation level. Technically this allows for about 400 different colours and shades, although in practise there are many that will look very similar! I am considering using a gamma correction for the brightness and saturation as it is linear now which doesn't always look best on our eyes.

    The backlight can be set  to dim/turn off after a period of not being used, options from 1 minute to 30 minutes. If the RGB LCD is used then it will dim the display to 50% of the current brightness settings. Should the LCD be a standard single colour, the backlight will be turned off.

    In the next update I am looking to add the ability to not need the Adafruit amplifier so you can use it or any other amplifier you want should you want more power. To maintain the full feature set I am currently designing a board that will sit between the controller and amp (where the Adafruit amp is connected) to provide the volume control before the amplifier. However the system will be able to run without it, by using the volume control of the TDA7439DS chip, but the VU Meter output would scale with volume rendering it useless. Hopefully I will be able to implement an automatic detection system, like I have for the RGB backlight, so that it doesn't matter which option you want, it should just work out the best way to operate.

  • Updated files

    smartroad08/19/2019 at 16:01 0 comments

    I have split out the files into separate zip's, saves downloading one file just to get the Arduino code (for example). I haven't included gerber files, mostly because they can easily be generated, however would they be useful?

    The electronics zip file now has the 3 circuits to be able to build the amplifier. My next thing is to write a BOM for easier ordering as the circuit diagrams don't show the additional parts needed (RCA connectors, rotary switch etc).

  • Initial Upload - Changing to KiCad

    smartroad08/18/2019 at 15:59 0 comments

    This is the initial upload of all the files for making the amplifier. I recently made the transition from Eagle (which I made the prototypes on) to KiCad so currently the only circuit and PCB available is the main IO and tone board. Over the next week or so I will add in the circuits and PCBs for the Arduino controller and the input buttons. Please be aware: at the current time I have not had these KiCad version made so while they should work there may well be error's creeping in.

    I think I have included everything in the zip file. There are the 3D files for printing. I have included the STL files and some UNTESTED 3MF files for my new Prusa MK3S. The photos you see in the main listing are from my old printer. This is a long print but I think it looks great. Also included are 2 SVG files for the front and rear panels. I had these printed on vinyl (the green lcd picture) and I think they look great, although the blue lcd shows it printed on sticky paper which works just as well. For the feet I used 12x5mm rubber feet.

    The Arduino program in included as well, there are several support libraries needed to go along with the main program. I wrote a small manual on using the amp, assuming that you use the same case as I have of course! At the back it lists the libraries that are needed (I think they are all installable from the Arduino library manager).

    I hope to maybe sell these as a kit, would that be of interest to anyone? The main chip is the only SMT part, it is easy to solder with some extra flux but I would offer to solder it first for the kit.

    Please have a look, I welcome any constructive feedback!

View all 3 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates