Introduction: 4 Channels Mixer Module With A440 Reference Generator
This is the updated version of an already published 4 channels mixer.
In this version I have included a 440 Hz tone generator based on ATtiny85 microprocessor and layed down a brand new dedicated faceplate.
In this Instructables I will show you how to realize a simple 4 channel mixer with built-in tone reference generator. I will share with you both main printed circuit board and faceplate files to have them manufactured at the best price around.
Let's start then!
Selected Instructables in this series:
Step 1: The Circuit
The four channel mixer I layed down is based on the simple design by Doepfer which is built around a general pourpouse, high speed JFET dual operational amplifier. Their old DIY page is always a good place to start from!
In addition to that design, I included a basic gain control on the first operational amplifier in order to give some room to balance unavoidable input losses coming from the first stage passive mixer. The four input level potentiometers, indeed, form a passive mixer. The output of the first amplifier is the sum of the four inputs divided by four.
Both amplifiers are configured as inverting. As I said before,the first one has a variable gain, for a maximum overall amplification that is a function of the potentiometer value connected to "gain" headers (circa 2.5x with 250K ohm pot, but this also depends on the level of input signals). This makes up the losses in the first stage passive mixer and gives room for some further amplification.
There are two outputs: the first one is inverting and could be used without worries of mind for AC signals (unbiased signals like i.e. most audio signals); the second one inverts the first, so it's output is non-inverting with respect to the source and is good if you want your signal voltage to stay unchanged (biased signals i.e. an ADSR).
Even if the PCB silk-screen calls a TL072 op-amp, we are not limited to it. You can use any pin compatible amplifier, i.e. LM1458, TL082, NE5532, etc. All these are pin-to-pin equivalent and could be used in place of the TL072.
All components values are silkscreened on the PCB to make assembly easier (I hate reference sheets :)).
The silkscreen shows 50K ohm potentiometers for input level, but you can also use 100K ohm pots in case you have those laying around. This is because those potentiometers are configured as voltage dividers. Different is the case of the gain potentiometer: I made some testing up to 1M ohm, but the level dropped suddently to zero over a certain threshold so 250K is the optimum for me.
Up to here everything is the same as the first version of this mixer, if we exclude some rethinking of the PCB layout. The new feature is the tone generator circuit.
Tone generation circuit is built around a super small but powerful micro controller: the ATtiny85. Apart from its dimensions, this micro controller has the further advantage of being possible to program easily with a common arduino UNO as programmer. In other words: it doesn't need an expensive, dedicated programmer but an Arduino UNO (who doesn't have one by hand! :) )
Headers for ATtiny85 programming are built in the main PCB, so we can program it on-board! See dedicated step for details about programming the ATtiny85.
The cirsuit is such the ATtiny digital tone generator is not noly disabled when not in use, but completely cut from the circuit. This for sure is a welcome design choice for purists :)
Please notice that the mixer PCB here pictured is my first (second) prototype and misses an onboard reference tone volume trimmer. The shared version has it so that you can set the A440 reference volume as you prefer!
Step 2: Main PCB, Faceplate and BOM
The module is made up two boards: the circuit board (described in the previous step) and the panel/face plate board.
I layed down a 3U, 16HP pre-drilled and silkscreened panel for this module. Jack connector holes are dimensioned for 1/4" jack sockets so, if you are adopting the Eurorack standard, it could be better to start from blank panels and drill holes adeguately.
All 3U blank panels I have layed down can be downloaded from HERE (Github). You will find 4HP, 6HP, 8HP, 12HP and 16HP panels. In case you need a blank panel standard measure I have not already done, feel free to ask: I will add it when possible. Zip files contains not only Gerber files, but also board sources (.brd) so you don't have to mess with annoying dimesion standards but only concentrate on holes and silk screens positioning as per your preference (very fun and addictive practice: you have been warned! :D ).
All circuit board components values are silkscreened on the PCB to make assembly easier.
The circuit board is intended to be mounted perpendicular to the front panel.
Follows the list of components (BOM):
5x 100nF non polarized
2x 47pF non polarized (optional)
3x 10uF electrolitic
Resistors and Potentiometers
1x 50K ohm
2x 330 ohm
7x 100K ohm
4x 50K ohm potentiometer
1x 250K ohm potentiometer
Integrated Circuits and Microcontrollers
1x TL072 Op-Amp
1x ATtiny85 microcontrolelr
1x Arduino UNO (for ATtiny85 programming)
1x IDC connector, 8x2 pins
Step 3: ATtiny85 - How to Program
To transform our ATtiny microcontroller into a "perfectly steady" digital tone generator we need to program it.
The ATtiny85 microcontroller cannot be directly programmed with the Arduino IDE like a prototype board, but asks for an intermediate board (Arduino UNO) working as a ISP (In-circuit Serial Programmer).
The procedure is simple if you follow the procedure step by step: don't worry!
1 -Turn your Arduino UNO into a programmer
First step is to make our Arduino UNO ready to work as ISP:
- Open Arduino IDE
- Connect your Arduino UNO to the PC
- Open the ArduinoISP example (File -> Examples -> ArduinoISP)
- Upload ArduinoISP.ino into your Arduino UNO
- Select Tools -> Programmer -> Arduino as ISP
2 -Install ATtiny Core
Now, we must install the ATtiny support package, not present by default in Arduino IDE:
- go to File -> Preferences
- insert the following URL in "Additional Boards Manager URLs", the click OK (see attached picture)
- enter the board manager (Tools -> Board: "Arduino UNO" -> Board Manager). See attached picture. Please notice that the "Board Manager" is not the "Library Manager"! I still feel stupid for opening an issue request on Spence git repository for not figuring out that immediately (dumb me. Doubly donkey for writing it here so that everyone now knows forever...).
- type "attiny" (without question marks) in the search field and install "AttinyCore" by Spence Konde (sse picture).
You should now be able to see the new entry in the Board menu: "AttinyCore".
3 -Connect Arduino UNO and ATtiny85
Now it's time to wire your Arduino UNO board to ATtiny microprocessor. The mixer main board is equipped with a header that allows programming the chip directly on-board. Simply connect your Arduino UNO pins to the corresponding header pins, and go on to the next point (#4).
If you prefer to program your Attiny on breadboard, here are the connections needed:
Arduino Uno – ATtiny85
5V – Pin 8 (Vcc)
Gnd - Pin 4 (Gnd)
Pin 13 – Pin 7 (SCK)
Pin 12 – Pin 6 (MISO)
Pin 11 – Pin 5 (MOSI)
Pin 10 – Pin 1 (Reset)
4 - Upload the sketch
- select Tools -> board -> AttinyCore -> ATtiny45/85 Optiboot
- select Tools -> board -> Clock Source: 8MHz Internal (this could be correctly set by default, but check it)
- open the "A440_toneGen.ino" sketch (download it HERE)
- select Tools -> Burn Bootloader
- Upload the sketch
Notice that you are asked to "burn the bootloader" every time you upload a new sketch
Step 4: Acknowledgments
A special thanks goes to people at JLCPCB who sponsored this work by manufacturing both the mixer main PCB proptotype and aluminum front plate you can see in the pics of this instructable.
JLCPCB is a high-tech manufacturer specializing in the production of high-reliable and cost-effective PCBs. Their customer service is very good and PCBs are the best value for your money.