The CUno Drive Effects Pedal is the project created in ECEN 1400: Intro to Digital / Analog Electronics with two group members Dylan Oh and Gabriel Coffman-Lee. The guitar pedal takes in an input waveform signal from a guitar, the user then can apply the effects of distortion, tremolo, and tone (which sort of acts like a passive volume). The guitar pedal incorporated a custom designed PCB, a 8 x 8 bicolor LED matrix, an Arduino board (CUno), and several potentiometers (variable resistors) to allow for various levels of customization to the sounds.
Brief Design Overview:
Figure 1 shows the high-level layout of the features in the pedal. Everything is centered around the foot-switch, which determines if the input guitar signal will pass through the effect circuit, or go straight out the other side, which is called ‘bypass’. In one state the pedal will allow the guitar’s waveforms to pass directly through to the output jack with no alterations, however, on the other, the signal will be affected by various levels of distortion, tremolo, and tone. The CUno is connected to the output signal to analyze the data and output the information about the waveform in a visualizer which is being displayed by the 8 x 8 matrix connected via I2C.
PCB / Circuit Design:
Figure 2 shows the PCB Layout and how these analog effects are created.
This circuit uses the 9 V, 600 mA DC power coming from an external device and makes it safer for the circuit to use. The SW-SPDT switch is connected lets the user power either the Tremolo circuit or the distortion circuit. This means that only one circuit can be on at a given moment. A future update to this would be to get both circuits to be powered, and both effects working at the same time.
Input Signal Conditioning
This portion of the PCB acquires the signal from the guitar by the use of a quarter inch jack. Here the signal is “conditioned” by having it pass through a low pass filter which removes much of the high frequencies, hence the name “low pass” asserting that only low frequencies can continue on to the rest of the PCB.
This is where some of the more interesting things happen, here the circuit uses a combination of signal amplification also known as gain, diode clipping, and a potentiometer to create this sound effect. The LF356N operational amplifier is used to bump the input voltage coming from the guitar from around 100-150 mV to approximately 9 V, with a 4.5 peak to peak voltage. The potentiometer here is used to determine the intensity of the gain which is used to create the distortion. The signal then after going through a large gain encounters the diodes which are in opposite directions to clip the bottom and the top off of the waveform. This is what creates the distortion sound essentially, the clipping of the top and bottom. The potentiometer adjusts the level of voltage gain, so if the signal entering the diodes has a very large amplitude, the diodes block a large amount of the signal which means a large distortion. If the distortion potentiometer is all the way down, then the input signal is quite small, so there will little to no clipping by the diodes. Here are a few images to get a better idea of what happens to the signal before and after the distortion.
Example 1: 110Hz at 200mV Peak to Peak
Example 2: 440 Hz at 200mV Peak to Peak
The Tremolo Circuit has 2 parts: Amplification, and the LED Circuit and both come hand in hand to create the effect.
Tremolo Amplifier Circuit:
Whereas in the Distortion Circuit, amplification was adjusted by a potentiometer, here amplification is determined by a photoresistor. The resistance of the photoresistor is determined by the Tremolo LED Circuit. The LED that blinks on and off changes the state of the photoresistor, which changes how much of the signal goes through to be amplified, either all of it or none of it.
Tremolo LED Circuit:
The LED Circuit uses a 555CN timer to make one Green LED blink for a certain amount of time that can be changed based on the 100K linear potentiometer. This Green LED is how the photoresistor in the Tremolo Amplifier Circuit increases and decreases in resistance. In addition to this, there is another green LED which is in parallel and this one connects to the outside of the case so the user can visually perceive the tremolo, as a Green LED turning on and off. And they can see how the potentiometer affects the frequency of the LED turning on / off.
Figure 14: Tremolo In Action:
The Tone Control Circuit was intended to for the user to be able to control the tone coming out of the pedal by a variable R-C circuit, which uses a variable 100K Ω potentiometer. It didn’t quite work out like this, but more or less works as a volume control instead, a very rough volume control.
Figure 16: Visual Example of Tone (On Tremolo) (From Min to Max)
Final PCB Design:
This is the final design of the PCB, created in Altium and produced by Advanced Circuits. It measured about 2.6 inches by 2.0 inches. And included the text.
The enclosure was the 4S6500 purchased from Mammoth Electronics and housed the PCB, the potentiometers, switches, and 8 x 8 matrix. The cuts were drawn out in SolidWorks.
The top of the pedal needed many holes. Drills were used to create the holes needed for the footswitch, SPST, SPDT, and potentiometers. The hole for the 8 x 8 matrix was made by drilling one hole and painstakingly filing out a square.
The back needed a hole for the 9V 800mA power brick to connect to.
Both the right and left sides of the enclosure had the same cutout, these holes were for the quarter inch audio jacks.
Code / Arduino Implementation:
Connections and Goals, and the Outcome:
The Arduino was connected to the 8 x 8 matrix, and the Arduino was supposed to read the voltage of the guitar signal coming out from the PCB. However, one issue was that the voltage coming out from the PCB at the intended locations to be read were far too low to get a good accurate reading, at around 40mV, where the Arduino has a resolution of slightly over 4.7mV. We could not get an op amp circuit here in time, so the Arduino is simply reading the 40mV signal, and perpetual noise from the PCB. In an ideal world, the Arduino would have the whole 5V range to read and gather data from, creating NADC Values from 0 – 1023, whereas it now can only do 0-8 / 0-9. This range of values is not enough of a sample space for the Arduino to get accurate readings.
However, when tested with a waveform generator, the Arduino can read and display interesting results onto the 8 x 8 matrix.
Figure 21: Constant 440Hz Sine Wave being displayed by the Arduino
For the actual program the following resources were used:
- PICCOLO by Adafruit (https://github.com/adafruit/piccolo)
- Adafruit LED Backpack (https://github.com/adafruit/Adafruit_LED_Backpack)
- Adafruit GFX Library (https://github.com/adafruit/Adafruit-GFX-Library)
- ELM-ChaN ffft Library [Fast Fourier Transform] (https://elm-chan.org/works/akilcd/report_e.html)
Frequency was quite difficult to measure, so a Fourier transform was used since it can take a waveform signal and convert it to frequency. The intricacies and mathematics of a Fourier transform are beyond my knowledge, it does seem to work. The program would continuously sample the voltages and would pause for a very brief moment and collect the data from the interval and analyze it and display it to the 8 x 8 matrix, then continue sampling.